├── CHANGELOG.md ├── README.md ├── _locales ├── am │ └── messages.json ├── ar │ └── messages.json ├── bg │ └── messages.json ├── bn │ └── messages.json ├── ca │ └── messages.json ├── cs │ └── messages.json ├── da │ └── messages.json ├── de │ └── messages.json ├── el │ └── messages.json ├── en │ └── messages.json ├── es │ └── messages.json ├── et │ └── messages.json ├── fa │ └── messages.json ├── fi │ └── messages.json ├── fil │ └── messages.json ├── fr │ └── messages.json ├── gu │ └── messages.json ├── he │ └── messages.json ├── hi │ └── messages.json ├── hin │ └── messages.json ├── hr │ └── messages.json ├── hu │ └── messages.json ├── id │ └── messages.json ├── it │ └── messages.json ├── ja │ └── messages.json ├── kn │ └── messages.json ├── ko │ └── messages.json ├── lt │ └── messages.json ├── lv │ └── messages.json ├── ml │ └── messages.json ├── mr │ └── messages.json ├── ms │ └── messages.json ├── nb_NO │ └── messages.json ├── nl │ └── messages.json ├── no │ └── messages.json ├── pl │ └── messages.json ├── pt_BR │ └── messages.json ├── pt_PT │ └── messages.json ├── ro │ └── messages.json ├── ru │ └── messages.json ├── sk │ └── messages.json ├── sl │ └── messages.json ├── sr │ └── messages.json ├── sv │ └── messages.json ├── sw │ └── messages.json ├── ta │ └── messages.json ├── te │ └── messages.json ├── th │ └── messages.json ├── tr │ └── messages.json ├── uk │ └── messages.json ├── vi │ └── messages.json ├── zh_CN │ └── messages.json └── zh_TW │ └── messages.json ├── background.js ├── extension-core.js ├── extension-features.js ├── extension-styles.css ├── icons ├── 128.png ├── 16.png ├── 32.png └── 48.png ├── manifest.json ├── py └── locale.py └── ui ├── options.html ├── popup.html ├── satus.css ├── satus.js ├── script.js └── styles.css /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### Changelog 2 | - [x] -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Looper 2 | 3 | Chrome extension. Move your mouse cursor over any video and set loop in a portion/range. 4 | 5 | 6 | ## :earth_americas: Translations 7 | - [ ] [Arabic](https://github.com/victor-savinov/looper/tree/master/_locales/ar) `/ar/` 8 | - [ ] [Amharic](https://github.com/victor-savinov/looper/tree/master/_locales/am) `/am/` 9 | - [ ] [Bulgarian](https://github.com/victor-savinov/looper/tree/master/_locales/bg) `/bg/` 10 | - [ ] [Bengali](https://github.com/victor-savinov/looper/tree/master/_locales/bn) `/bn/` 11 | - [ ] [Catalan](https://github.com/victor-savinov/looper/tree/master/_locales/ca) `/ca/` 12 | - [ ] [Czech](https://github.com/victor-savinov/looper/tree/master/_locales/cs) `/cs/` 13 | - [ ] [Danish](https://github.com/victor-savinov/looper/tree/master/_locales/da) `/da/` 14 | - [ ] [German](https://github.com/victor-savinov/looper/tree/master/_locales/de) `/de/` 15 | - [ ] [Greek](https://github.com/victor-savinov/looper/tree/master/_locales/el) `/el/` 16 | - [x] [English](https://github.com/victor-savinov/looper/tree/master/_locales/en) `/en/` 17 | - [ ] [Spanish](https://github.com/victor-savinov/looper/tree/master/_locales/es) `/es/` 18 | - [ ] [Estonian](https://github.com/victor-savinov/looper/tree/master/_locales/et) `/et/` 19 | - [ ] [Persian](https://github.com/victor-savinov/looper/tree/master/_locales/fa) `/fa/` 20 | - [ ] [Finnish](https://github.com/victor-savinov/looper/tree/master/_locales/fi) `/fi/` 21 | - [ ] [Filipino](https://github.com/victor-savinov/looper/tree/master/_locales/fil) `/fil/` 22 | - [ ] [French](https://github.com/victor-savinov/looper/tree/master/_locales/fr) `/fr/` 23 | - [ ] [Gujarati](https://github.com/victor-savinov/looper/tree/master/_locales/gu) `/gu/` 24 | - [ ] [Hebrew](https://github.com/victor-savinov/looper/tree/master/_locales/he) `/he/` 25 | - [ ] [Hindi](https://github.com/victor-savinov/looper/tree/master/_locales/hi) `/hi/` 26 | - [ ] [Croatian](https://github.com/victor-savinov/looper/tree/master/_locales/hr) `/hr/` 27 | - [ ] [Hungarian](https://github.com/victor-savinov/looper/tree/master/_locales/hu) `/hu/` 28 | - [ ] [Indonesian](https://github.com/victor-savinov/looper/tree/master/_locales/id) `/id/` 29 | - [ ] [Italian](https://github.com/victor-savinov/looper/tree/master/_locales/it) `/it/` 30 | - [ ] [Japanese](https://github.com/victor-savinov/looper/tree/master/_locales/ja) `/ja/` 31 | - [ ] [Kannada](https://github.com/victor-savinov/looper/tree/master/_locales/kn) `/kn/` 32 | - [ ] [Korean](https://github.com/victor-savinov/looper/tree/master/_locales/ko) `/ko/` 33 | - [ ] [Lithuanian](https://github.com/victor-savinov/looper/tree/master/_locales/lt) `/lt/` 34 | - [ ] [Latvian](https://github.com/victor-savinov/looper/tree/master/_locales/lv) `/lv/` 35 | - [ ] [Malayalam](https://github.com/victor-savinov/looper/tree/master/_locales/ml) `/ml/` 36 | - [ ] [Marathi](https://github.com/victor-savinov/looper/tree/master/_locales/mr) `/mr/` 37 | - [ ] [Malay](https://github.com/victor-savinov/looper/tree/master/_locales/ms) `/ms/` 38 | - [ ] [Dutch](https://github.com/victor-savinov/looper/tree/master/_locales/nl) `/nl/` 39 | - [ ] [Norwegian](https://github.com/victor-savinov/looper/tree/master/_locales/no) `/no/` 40 | - [ ] [Polish](https://github.com/victor-savinov/looper/tree/master/_locales/pl) `/pl/` 41 | - [ ] [Portuguese (Brazil)](https://github.com/victor-savinov/looper/tree/master/_locales/pt_BR) `/pt_BR/` 42 | - [ ] [Portuguese (Portugal)](https://github.com/victor-savinov/looper/tree/master/_locales/pt_PT) `/pt_PT/` 43 | - [ ] [Romanian](https://github.com/victor-savinov/looper/tree/master/_locales/ro) `/ro/` 44 | - [x] [Russian](https://github.com/victor-savinov/looper/tree/master/_locales/ru) `/ru/` 45 | - [ ] [Slovak](https://github.com/victor-savinov/looper/tree/master/_locales/sk) `/sk/` 46 | - [ ] [Slovenian](https://github.com/victor-savinov/looper/tree/master/_locales/sl) `/sl/` 47 | - [ ] [Serbian](https://github.com/victor-savinov/looper/tree/master/_locales/sr) `/sr/` 48 | - [x] [Swedish](https://github.com/victor-savinov/looper/tree/master/_locales/sv) `/sv/` 49 | - [ ] [Swahili](https://github.com/victor-savinov/looper/tree/master/_locales/sw) `/sw/` 50 | - [ ] [Tamil](https://github.com/victor-savinov/looper/tree/master/_locales/ta) `/ta/` 51 | - [ ] [Telugu](https://github.com/victor-savinov/looper/tree/master/_locales/te) `/te/` 52 | - [ ] [Thai](https://github.com/victor-savinov/looper/tree/master/_locales/th) `/th/` 53 | - [ ] [Turkish](https://github.com/victor-savinov/looper/tree/master/_locales/tr) `/tr/` 54 | - [ ] [Ukrainian](https://github.com/victor-savinov/looper/tree/master/_locales/uk) `/uk/` 55 | - [ ] [Vietnamese](https://github.com/victor-savinov/looper/tree/master/_locales/vi) `/vi/` 56 | - [ ] [Chinese (China)](https://github.com/victor-savinov/looper/tree/master/_locales/zh_CN) `/zh_CN/` 57 | - [ ] [Chinese (Taiwan)](https://github.com/victor-savinov/looper/tree/master/_locales/zh_TW) `/zh_TW/` 58 | -------------------------------------------------------------------------------- /_locales/am/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/ar/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/bg/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/bn/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/ca/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/cs/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/da/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/de/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/el/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/es/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/et/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/fa/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/fi/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/fil/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/fr/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/gu/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/he/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/hi/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/hin/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/hr/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/hu/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/id/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/it/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/ja/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/kn/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/ko/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/lt/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/lv/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/ml/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/mr/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/ms/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/nb_NO/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/nl/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/no/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/pl/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/pt_BR/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/pt_PT/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/ro/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/ru/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Внешний вид" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Вы действительно хотите экспортировать данные?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Вы действительно хотите испортировать данные?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Цвет фона" 13 | }, 14 | "black": { 15 | "message": "Черный" 16 | }, 17 | "blur": { 18 | "message": "Размытие" 19 | }, 20 | "cancel": { 21 | "message": "Отмена" 22 | }, 23 | "dark": { 24 | "message": "Темная" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Продолжительность" 31 | }, 32 | "export": { 33 | "message": "Экспорт" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Скрыть в полном экране" 37 | }, 38 | "hidePanel": { 39 | "message": "Скрыть панель" 40 | }, 41 | "import": { 42 | "message": "Импорт" 43 | }, 44 | "language": { 45 | "message": "Язык" 46 | }, 47 | "light": { 48 | "message": "Светлая" 49 | }, 50 | "ok": { 51 | "message": "Ок" 52 | }, 53 | "opacity": { 54 | "message": "Прозрачность" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Сброс" 64 | }, 65 | "save": { 66 | "message": "Сохранить" 67 | }, 68 | "shortcuts": { 69 | "message": "Горячие клавиши" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Что-то пошло не так. Попробуйте перезагрузить страницу." 73 | }, 74 | "textColor": { 75 | "message": "Цвет текста" 76 | }, 77 | "theme": { 78 | "message": "Тема" 79 | }, 80 | "time": { 81 | "message": "Время" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/sk/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/sl/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/sr/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/sv/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Utseende" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Är du säker på att du vill exportera datan?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Är du säker på att du vill importera datan?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Bakgrundsfärg" 13 | }, 14 | "black": { 15 | "message": "Svart" 16 | }, 17 | "blur": { 18 | "message": "Suddighet" 19 | }, 20 | "cancel": { 21 | "message": "Avbryt" 22 | }, 23 | "dark": { 24 | "message": "Mörkt" 25 | }, 26 | "description": { 27 | "message": "Bästa loop verktyget. Fungerar på alla hemsidor! Placera muspekaren på vilken video som helst och välj loop-intervall." 28 | }, 29 | "duration": { 30 | "message": "Längd" 31 | }, 32 | "export": { 33 | "message": "Exportera" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Dölj vid helskärm" 37 | }, 38 | "hidePanel": { 39 | "message": "Dölj ruta" 40 | }, 41 | "import": { 42 | "message": "Importera" 43 | }, 44 | "language": { 45 | "message": "Språk" 46 | }, 47 | "light": { 48 | "message": "Ljust" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacitet" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,mär färg" 58 | }, 59 | "primaryColor": { 60 | "message": "Primär färg" 61 | }, 62 | "reset": { 63 | "message": "Nollställ" 64 | }, 65 | "save": { 66 | "message": "Spara" 67 | }, 68 | "shortcuts": { 69 | "message": "Genvägar" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Något blev fel. Försök att uppdatera sidan." 73 | }, 74 | "textColor": { 75 | "message": "Textfärg" 76 | }, 77 | "theme": { 78 | "message": "Tema" 79 | }, 80 | "time": { 81 | "message": "Tid" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/sw/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/ta/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/te/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/th/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/tr/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/uk/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/vi/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/zh_CN/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /_locales/zh_TW/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appearance": { 3 | "message": "Appearance" 4 | }, 5 | "areYouSureYouWantToExportTheData": { 6 | "message": "Are you sure you want to export the data?" 7 | }, 8 | "areYouSureYouWantToImportTheData": { 9 | "message": "Are you sure you want to import the data?" 10 | }, 11 | "backgroundColor": { 12 | "message": "Background color" 13 | }, 14 | "black": { 15 | "message": "Black" 16 | }, 17 | "blur": { 18 | "message": "Blur" 19 | }, 20 | "cancel": { 21 | "message": "Cancel" 22 | }, 23 | "dark": { 24 | "message": "Dark" 25 | }, 26 | "description": { 27 | "message": "Best Loop Tool. Works with all websites! Move your mouse cursor over any video and set loop in a portion/range." 28 | }, 29 | "duration": { 30 | "message": "Duration" 31 | }, 32 | "export": { 33 | "message": "Export" 34 | }, 35 | "hideInFullscreen": { 36 | "message": "Hide in fullscreen" 37 | }, 38 | "hidePanel": { 39 | "message": "Hide panel" 40 | }, 41 | "import": { 42 | "message": "Import" 43 | }, 44 | "language": { 45 | "message": "Language" 46 | }, 47 | "light": { 48 | "message": "Light" 49 | }, 50 | "ok": { 51 | "message": "Ok" 52 | }, 53 | "opacity": { 54 | "message": "Opacity" 55 | }, 56 | "priAryColor": { 57 | "message": "Pri,ary color" 58 | }, 59 | "primaryColor": { 60 | "message": "Primary color" 61 | }, 62 | "reset": { 63 | "message": "Reset" 64 | }, 65 | "save": { 66 | "message": "Save" 67 | }, 68 | "shortcuts": { 69 | "message": "Shortcuts" 70 | }, 71 | "somethingWentWrongTryReloadingThePage": { 72 | "message": "Something went wrong. Try reloading the page." 73 | }, 74 | "textColor": { 75 | "message": "Text color" 76 | }, 77 | "theme": { 78 | "message": "Theme" 79 | }, 80 | "time": { 81 | "message": "Time" 82 | } 83 | } -------------------------------------------------------------------------------- /background.js: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------- 2 | >>> BACKGROUND 3 | ----------------------------------------------------------------- 4 | # Global variable 5 | # Localization 6 | # Listeners 7 | # Storage change 8 | # Message 9 | ---------------------------------------------------------------*/ 10 | 11 | /*-------------------------------------------------------------- 12 | # GLOBAL VARIABLE 13 | --------------------------------------------------------------*/ 14 | 15 | var extension = { 16 | locale: {}, 17 | storage: {} 18 | }; 19 | 20 | 21 | /*-------------------------------------------------------------- 22 | # LOCALIZATION 23 | --------------------------------------------------------------*/ 24 | 25 | function getLocalization(code) { 26 | var language = code || navigator.language; 27 | 28 | if (language.indexOf('en') === 0) { 29 | language = 'en'; 30 | } 31 | 32 | fetch(chrome.runtime.getURL('_locales/' + language + '/messages.json')).then(function (response) { 33 | if (response.ok) { 34 | response.json().then(function (response) { 35 | extension.locale = {}; 36 | 37 | for (var key in response) { 38 | extension.locale[key] = response[key].message; 39 | } 40 | }); 41 | } else { 42 | fetch(chrome.runtime.getURL('_locales/en/messages.json')).then(function (response) { 43 | if (response.ok) { 44 | response.json().then(function (response) { 45 | extension.locale = {}; 46 | 47 | for (var key in response) { 48 | extension.locale[key] = response[key].message; 49 | } 50 | }); 51 | } 52 | }); 53 | } 54 | }); 55 | } 56 | 57 | 58 | /*--------------------------------------------------------------- 59 | # LISTENERS 60 | ---------------------------------------------------------------*/ 61 | 62 | /*-------------------------------------------------------------- 63 | # STORAGE CHANGE 64 | --------------------------------------------------------------*/ 65 | 66 | chrome.storage.onChanged.addListener(function (changes) { 67 | for (var key in changes) { 68 | extension.storage[key] = changes[key].newValue; 69 | } 70 | 71 | getLocalization(extension.storage.language); 72 | }); 73 | 74 | 75 | /*--------------------------------------------------------------- 76 | # MESSAGE 77 | ---------------------------------------------------------------*/ 78 | 79 | chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) { 80 | if (message === 'get-locale') { 81 | var response = extension.locale; 82 | 83 | sendResponse(response); 84 | 85 | return response; 86 | } else if (message === 'get-tab-url') { 87 | var response = { 88 | url: new URL(sender.tab.url).hostname, 89 | id: sender.tab.id 90 | }; 91 | 92 | sendResponse(response); 93 | 94 | return response; 95 | } 96 | }); 97 | 98 | 99 | /*-------------------------------------------------------------- 100 | # INITIALIZATION 101 | --------------------------------------------------------------*/ 102 | 103 | chrome.storage.local.get(function (items) { 104 | extension.storage = items; 105 | 106 | getLocalization(items.language); 107 | }); -------------------------------------------------------------------------------- /extension-styles.css: -------------------------------------------------------------------------------- 1 | /*-------------------------------------------------------------- 2 | >>> FRAME BY FRAME 3 | ---------------------------------------------------------------- 4 | # Document 5 | # Container 6 | # Surface 7 | # Buttons 8 | # Toggle 9 | # Drag And Drop 10 | # Resize 11 | # Slider 12 | --------------------------------------------------------------*/ 13 | 14 | 15 | /*-------------------------------------------------------------- 16 | # DOCUMENT 17 | --------------------------------------------------------------*/ 18 | 19 | html.looper--pointer, 20 | html.looper--pointer * { 21 | cursor: pointer !important; 22 | } 23 | 24 | html.looper--grab, 25 | html.looper--grab * { 26 | cursor: grab !important; 27 | } 28 | 29 | html.looper--grabbing, 30 | html.looper--grabbing * { 31 | cursor: grabbing !important; 32 | } 33 | 34 | html.looper--resize, 35 | html.looper--resize * { 36 | cursor: se-resize !important; 37 | } 38 | 39 | 40 | /*-------------------------------------------------------------- 41 | # CONTAINER 42 | --------------------------------------------------------------*/ 43 | 44 | .looper { 45 | position: fixed !important; 46 | z-index: 2147483647 !important; 47 | visibility: hidden !important; 48 | box-sizing: border-box !important; 49 | pointer-events: none !important; 50 | opacity: 0 !important; 51 | border: 1px solid rgba(0, 0, 0, .8) !important; 52 | box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .8) !important; 53 | } 54 | 55 | .looper--visible, 56 | .looper--busy { 57 | visibility: visible !important; 58 | transition: visibility 175ms, opacity 175ms !important; 59 | opacity: 1 !important; 60 | } 61 | 62 | .looper--sleeping-mode { 63 | visibility: hidden !important; 64 | opacity: 0 !important; 65 | } 66 | 67 | 68 | /*-------------------------------------------------------------- 69 | # SURFACE 70 | --------------------------------------------------------------*/ 71 | 72 | .looper__surface { 73 | font-family: monospace !important; 74 | font-size: 16px !important; 75 | position: absolute !important; 76 | top: 8px !important; 77 | left: 8px !important; 78 | overflow: hidden !important; 79 | flex-direction: column !important; 80 | box-sizing: border-box !important; 81 | padding: 16px 24px !important; 82 | color: #fff !important; 83 | border: 1px solid rgba(82, 82, 82, .9) !important; 84 | border-radius: 8px !important; 85 | background: rgba(41, 41, 41, .8) !important; 86 | justify-content: space-around !important; 87 | align-items: stretch !important; 88 | } 89 | 90 | .looper__surface--hover { 91 | visibility: visible !important; 92 | opacity: 1 !important; 93 | } 94 | 95 | .looper__surface--collapsed { 96 | visibility: hidden !important; 97 | } 98 | 99 | 100 | /*-------------------------------------------------------------- 101 | # BUTTONS 102 | --------------------------------------------------------------*/ 103 | 104 | .looper__button { 105 | position: absolute !important; 106 | visibility: hidden !important; 107 | width: 24px !important; 108 | height: 24px !important; 109 | transition: visibility 225ms, opacity 225ms, border-radius 225ms !important; 110 | opacity: 0 !important; 111 | color: #999 !important; 112 | background: rgb(128, 128, 128, .32) !important; 113 | } 114 | 115 | .looper__button--hover { 116 | color: #fff !important; 117 | } 118 | 119 | .looper__surface--hover .looper__button { 120 | visibility: visible !important; 121 | opacity: 1 !important; 122 | } 123 | 124 | .looper__surface--collapsed .looper__button { 125 | visibility: hidden !important; 126 | opacity: 0 !important; 127 | } 128 | 129 | 130 | /*-------------------------------------------------------------- 131 | # TOGGLE 132 | --------------------------------------------------------------*/ 133 | 134 | .looper__toggle { 135 | top: 0 !important; 136 | left: 0 !important; 137 | border-top-left-radius: 8px !important; 138 | border-bottom-right-radius: 24px !important; 139 | } 140 | 141 | .looper__surface--collapsed .looper__toggle { 142 | visibility: visible !important; 143 | opacity: 1 !important; 144 | } 145 | 146 | .looper__toggle::before, 147 | .looper__toggle::after { 148 | position: absolute !important; 149 | content: '' !important; 150 | color: inherit !important; 151 | background: currentColor !important; 152 | } 153 | 154 | .looper__toggle::before { 155 | top: 7px !important; 156 | left: 7px !important; 157 | width: 8px !important; 158 | height: 2px !important; 159 | transition: transform 175ms !important; 160 | } 161 | 162 | .looper__toggle::after { 163 | top: 7px !important; 164 | left: 7px !important; 165 | width: 2px !important; 166 | height: 8px !important; 167 | transition: transform 175ms !important; 168 | } 169 | 170 | .looper__surface--collapsed .looper__toggle { 171 | border-radius: 50% !important; 172 | } 173 | 174 | .looper__surface--collapsed .looper__toggle::before { 175 | transform: translate(3px, 3px) rotate(-90deg) !important; 176 | } 177 | 178 | .looper__surface--collapsed .looper__toggle::after { 179 | transform: translate(3px, 3px) rotate(90deg) !important; 180 | } 181 | 182 | 183 | /*-------------------------------------------------------------- 184 | # DRAG AND DROP 185 | --------------------------------------------------------------*/ 186 | 187 | .looper__drag-and-drop { 188 | top: 0 !important; 189 | right: 0 !important; 190 | border-top-right-radius: 8px !important; 191 | border-bottom-left-radius: 24px !important; 192 | } 193 | 194 | .looper__drag-and-drop::before, 195 | .looper__drag-and-drop::after { 196 | position: absolute !important; 197 | content: '' !important; 198 | color: inherit !important; 199 | background: currentColor !important; 200 | } 201 | 202 | .looper__drag-and-drop::before { 203 | top: 9px !important; 204 | right: 5px !important; 205 | width: 10px !important; 206 | height: 2px !important; 207 | } 208 | 209 | .looper__drag-and-drop::after { 210 | top: 5px !important; 211 | right: 9px !important; 212 | width: 2px !important; 213 | height: 10px !important; 214 | } 215 | 216 | 217 | /*-------------------------------------------------------------- 218 | # RESIZE 219 | --------------------------------------------------------------*/ 220 | 221 | .looper__resize { 222 | right: 0 !important; 223 | bottom: 0 !important; 224 | border-top-left-radius: 24px !important; 225 | border-bottom-right-radius: 8px !important; 226 | } 227 | 228 | .looper__resize::before, 229 | .looper__resize::after { 230 | position: absolute !important; 231 | content: '' !important; 232 | color: inherit !important; 233 | background: currentColor !important; 234 | } 235 | 236 | .looper__resize::before { 237 | top: 9px !important; 238 | right: 7px !important; 239 | width: 10px !important; 240 | height: 2px !important; 241 | transform: rotate(-45deg) !important; 242 | transform-origin: center right !important; 243 | } 244 | 245 | .looper__resize::after { 246 | top: 14px !important; 247 | right: 6px !important; 248 | width: 5px !important; 249 | height: 2px !important; 250 | transform: rotate(-45deg) !important; 251 | transform-origin: center right !important; 252 | } 253 | 254 | 255 | /*-------------------------------------------------------------- 256 | # SLIDER 257 | --------------------------------------------------------------*/ 258 | 259 | /*html .looper, 260 | html .looper__button { 261 | visibility: visible !important; 262 | transition: visibility 175ms, opacity 175ms !important; 263 | opacity: 1 !important; 264 | }*/ 265 | 266 | .looper__surface { 267 | display: flex !important; 268 | min-width: 320px !important; 269 | min-height: 224px !important; 270 | } 271 | 272 | .looper__panel { 273 | position: relative !important; 274 | height: 48px !important; 275 | padding: 6px !important; 276 | border-radius: 8px !important; 277 | background: rgba(var(--looper-background-color, 0, 0, 0), .24) !important; 278 | } 279 | 280 | .looper__block { 281 | display: flex !important; 282 | box-sizing: border-box !important; 283 | width: 96px !important; 284 | height: 100% !important; 285 | padding: 4px !important; 286 | border-radius: 6px !important; 287 | background: rgba(var(--looper-primary-color, 74, 178, 146), .88) !important; 288 | flex-wrap: wrap !important; 289 | align-items: space-between !important; 290 | } 291 | 292 | .looper__media-type { 293 | font-size: 10px !important; 294 | font-weight: 700 !important; 295 | line-height: 18px !important; 296 | width: max-content !important; 297 | height: 16px !important; 298 | margin: 0 4px 0 0 !important; 299 | padding: 0 4px !important; 300 | color: rgba(var(--looper-primary-color, 74, 178, 146), .88) !important; 301 | border-radius: 4px !important; 302 | background: rgba(var(--looper-background-color, 0, 0, 0), .9) !important; 303 | } 304 | 305 | .looper__source-type { 306 | font-size: 10px !important; 307 | font-weight: 700 !important; 308 | line-height: 14px !important; 309 | width: max-content !important; 310 | height: 12px !important; 311 | padding: 0 2px !important; 312 | color: rgba(var(--looper-background-color, 0, 0, 0), .9) !important; 313 | border: 2px solid rgba(var(--looper-background-color, 0, 0, 0), .9) !important; 314 | border-radius: 4px !important; 315 | } 316 | 317 | .looper__current-time { 318 | font-size: 16px !important; 319 | height: max-content !important; 320 | margin: 2px 0 0 !important; 321 | color: rgba(var(--looper-background-color, 0, 0, 0), .9) !important; 322 | } 323 | 324 | .looper__panel>input { 325 | font-family: monospace !important; 326 | font-size: 14px !important; 327 | line-height: 12px !important; 328 | position: absolute !important; 329 | right: 6px !important; 330 | box-sizing: border-box !important; 331 | width: calc(100% - 114px) !important; 332 | height: 16px !important; 333 | height: 20px !important; 334 | padding: 0 6px !important; 335 | color: rgb(var(--looper-color, 225, 255, 255)) !important; 336 | border: 2px solid rgba(var(--looper-color, 225, 255, 255), .1) !important; 337 | border-radius: 4px !important; 338 | background: transparent !important; 339 | outline: none !important; 340 | } 341 | 342 | .looper__panel>input:nth-child(2) { 343 | top: 6px !important; 344 | } 345 | 346 | .looper__panel>input:nth-child(3) { 347 | bottom: 6px !important; 348 | } 349 | 350 | .looper__container { 351 | position: relative !important; 352 | display: flex !important; 353 | box-sizing: border-box !important; 354 | height: 40px !important; 355 | margin: 16px 8px 0 !important; 356 | padding: 2px 0 0 !important; 357 | align-items: center !important; 358 | } 359 | 360 | .looper__track { 361 | position: absolute !important; 362 | width: 100% !important; 363 | height: 2px !important; 364 | background: rgba(var(--looper-color, 225, 255, 255), .2) !important; 365 | } 366 | 367 | .looper__track::before { 368 | position: absolute !important; 369 | top: -8px !important; 370 | left: 0 !important; 371 | width: 2px !important; 372 | height: 8px !important; 373 | content: '' !important; 374 | background: rgba(var(--looper-color, 225, 255, 255), .2) !important; 375 | } 376 | 377 | .looper__track::after { 378 | position: absolute !important; 379 | top: -8px !important; 380 | right: 0 !important; 381 | width: 2px !important; 382 | height: 8px !important; 383 | content: '' !important; 384 | background: rgba(var(--looper-color, 225, 255, 255), .2) !important; 385 | } 386 | 387 | .looper__percent { 388 | position: absolute !important; 389 | top: -4px !important; 390 | width: 2px !important; 391 | height: 4px !important; 392 | background: rgba(var(--looper-color, 225, 255, 255), .2) !important; 393 | } 394 | 395 | .looper__big-percent { 396 | top: -8px !important; 397 | height: 8px !important; 398 | } 399 | 400 | .looper__thumb { 401 | position: absolute !important; 402 | z-index: 999 !important; 403 | top: -8px !important; 404 | width: 2px !important; 405 | height: 16px !important; 406 | background: rgb(var(--looper-color, 225, 255, 255)) !important; 407 | } 408 | 409 | .looper__segment { 410 | position: absolute !important; 411 | height: 2px !important; 412 | background: rgb(var(--looper-primary-color, 74, 178, 146)) !important; 413 | } 414 | 415 | .looper__pin { 416 | position: absolute !important; 417 | top: -28px !important; 418 | width: 8px !important; 419 | height: 8px !important; 420 | padding: 8px !important; 421 | } 422 | 423 | .looper__pin::before { 424 | position: absolute !important; 425 | top: 8px !important; 426 | left: 8px !important; 427 | width: 8px !important; 428 | height: 8px !important; 429 | content: '' !important; 430 | background: rgb(var(--looper-color, 225, 255, 255)) !important; 431 | } 432 | 433 | .looper__pin--hover::before, 434 | .looper__pin[focus]::before { 435 | background: rgb(var(--looper-primary-color, 74, 178, 146)) !important; 436 | } 437 | 438 | .looper__pin::after { 439 | position: absolute !important; 440 | top: 16px !important; 441 | left: 8px !important; 442 | width: 0 !important; 443 | height: 0 !important; 444 | content: '' !important; 445 | border-top: 4px solid rgb(var(--looper-color, 225, 255, 255)) !important; 446 | border-right: 4px solid transparent !important; 447 | border-left: 4px solid transparent !important; 448 | } 449 | 450 | .looper__pin--hover::after, 451 | .looper__pin[focus]::after { 452 | border-top-color: rgb(var(--looper-primary-color, 74, 178, 146)) !important; 453 | } 454 | 455 | .looper__pin:first-child { 456 | left: 0 !important; 457 | transform: translateX(-50%) !important; 458 | } 459 | 460 | .looper__pin:last-child { 461 | right: 0 !important; 462 | transform: translateX(50%) !important; 463 | } 464 | 465 | .looper__number { 466 | font-family: monospace !important; 467 | font-size: 10px !important; 468 | position: absolute !important; 469 | top: 0 !important; 470 | width: auto !important; 471 | height: 8px !important; 472 | transform: translateX(-50%) !important; 473 | color: rgba(var(--looper-color, 225, 255, 255), .16) !important; 474 | } 475 | 476 | .looper__controls { 477 | display: flex !important; 478 | margin: 16px 0 0 !important; 479 | justify-content: space-between !important; 480 | } 481 | 482 | .looper__control { 483 | padding: 8px !important; 484 | } 485 | 486 | .looper__control>svg { 487 | display: block !important; 488 | width: 24px !important; 489 | height: 24px !important; 490 | fill: rgba(var(--looper-color, 225, 255, 255), .5) !important; 491 | } 492 | 493 | .looper__control--play>svg:nth-child(2) { 494 | display: none !important; 495 | } 496 | 497 | .looper--playing .looper__control--play>svg:nth-child(1) { 498 | display: none !important; 499 | } 500 | 501 | .looper--playing .looper__control--play>svg:nth-child(2) { 502 | display: block !important; 503 | } 504 | 505 | .looper__control--hover>svg { 506 | fill: rgba(var(--looper-color, 225, 255, 255), 1) !important; 507 | } -------------------------------------------------------------------------------- /icons/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-charity/looper/73922c37f43f45aa1ab346628a63c3887cbcb889/icons/128.png -------------------------------------------------------------------------------- /icons/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-charity/looper/73922c37f43f45aa1ab346628a63c3887cbcb889/icons/16.png -------------------------------------------------------------------------------- /icons/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-charity/looper/73922c37f43f45aa1ab346628a63c3887cbcb889/icons/32.png -------------------------------------------------------------------------------- /icons/48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-charity/looper/73922c37f43f45aa1ab346628a63c3887cbcb889/icons/48.png -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "Looper", 4 | "description": "__MSG_description__", 5 | "version": "2.0", 6 | "version_name": "2.0-alpha", 7 | "default_locale": "en", 8 | "icons": { 9 | "16": "icons/16.png", 10 | "32": "icons/32.png", 11 | "48": "icons/48.png", 12 | "128": "icons/128.png" 13 | }, 14 | "background": { 15 | "service_worker": "background.js" 16 | }, 17 | "action": { 18 | "default_popup": "ui/popup.html" 19 | }, 20 | "options_page": "ui/options.html", 21 | "content_scripts": [{ 22 | "all_frames": true, 23 | "css": [ 24 | "extension-styles.css" 25 | ], 26 | "js": [ 27 | "ui/satus.js", 28 | "extension-core.js", 29 | "extension-features.js" 30 | ], 31 | "matches": [ 32 | "" 33 | ], 34 | "run_at": "document_start" 35 | }], 36 | "offline_enabled": true, 37 | "optional_permissions": [ 38 | "downloads" 39 | ], 40 | "permissions": [ 41 | "tabs", 42 | "activeTab", 43 | "storage" 44 | ], 45 | "host_permissions": [ 46 | "" 47 | ] 48 | } -------------------------------------------------------------------------------- /py/locale.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | 4 | # -------------------------------------------------------------- 5 | # >>> TABLE OF CONTENTS: 6 | # -------------------------------------------------------------- 7 | # 1.0 Import modules 8 | # 2.0 Lower camel case 9 | # 3.0 Get list of files 10 | # 4.0 Add item 11 | # 5.0 Remove item 12 | # 6.0 Decode 13 | # 7.0 Add locales 14 | # 8.0 Initialization 15 | # -------------------------------------------------------------- 16 | 17 | # -------------------------------------------------------------- 18 | # 1.0 IMPORT MODULES 19 | # -------------------------------------------------------------- 20 | 21 | import io 22 | import json 23 | import os 24 | import pathlib 25 | import re 26 | import sys 27 | 28 | 29 | # -------------------------------------------------------------- 30 | # 2.0 LOWER CAMEL CASE 31 | # -------------------------------------------------------------- 32 | 33 | def lowerCamelCase(string): 34 | string = re.sub(r"(-|_)+", ' ', string).title() 35 | string = re.sub(r"[^a-zA-Z0-9]", '', string) 36 | 37 | return string[0].lower() + string[1:] 38 | 39 | 40 | # -------------------------------------------------------------- 41 | # 3.0 GET LIST OF FILES 42 | # -------------------------------------------------------------- 43 | 44 | def getListOfFiles(dirName): 45 | allFiles = list() 46 | 47 | for entry in os.listdir(dirName): 48 | fullPath = os.path.join(dirName, entry) 49 | 50 | if not os.path.isdir(fullPath): 51 | allFiles.append(fullPath) 52 | 53 | for entry in os.listdir(dirName): 54 | fullPath = os.path.join(dirName, entry) 55 | 56 | if os.path.isdir(fullPath): 57 | allFiles = allFiles + getListOfFiles(fullPath) 58 | 59 | return allFiles 60 | 61 | 62 | # -------------------------------------------------------------- 63 | # 4.0 ADD ITEM 64 | # -------------------------------------------------------------- 65 | 66 | def addItem(allFiles): 67 | message = input('Enter your message: ') 68 | camelized_message = lowerCamelCase(message) 69 | 70 | for keyFile in allFiles: 71 | with open(keyFile, 'r+') as json_file: 72 | data = json.load(json_file) 73 | 74 | if (camelized_message in data) == False: 75 | data[camelized_message] = {'message': message} 76 | 77 | json_file.seek(0) 78 | json.dump(data, json_file, ensure_ascii=False, indent=4, 79 | sort_keys=True) 80 | json_file.truncate() 81 | 82 | 83 | # -------------------------------------------------------------- 84 | # 5.0 REMOVE ITEM 85 | # -------------------------------------------------------------- 86 | 87 | def removeItem(allFiles): 88 | key = input('Enter your key (lowerCamelCase): ') 89 | 90 | for keyFile in allFiles: 91 | with open(keyFile, 'r+') as json_file: 92 | data = json.load(json_file) 93 | 94 | if key in data: 95 | del data[key] 96 | 97 | json_file.seek(0) 98 | json.dump(data, json_file, ensure_ascii=False, indent=4, 99 | sort_keys=True) 100 | json_file.truncate() 101 | 102 | 103 | # -------------------------------------------------------------- 104 | # 6.0 DECODE 105 | # -------------------------------------------------------------- 106 | 107 | def decodeCharacters(allFiles): 108 | for keyFile in allFiles: 109 | with open(keyFile, 'r+') as json_file: 110 | data = json.load(json_file) 111 | 112 | json_file.seek(0) 113 | json.dump(data, json_file, ensure_ascii=False, indent=4, 114 | sort_keys=True) 115 | json_file.truncate() 116 | 117 | 118 | # -------------------------------------------------------------- 119 | # 7.0 ADD LOCALES 120 | # -------------------------------------------------------------- 121 | 122 | def addLocales(): 123 | locales = [ 124 | 'am', 125 | 'ar', 126 | 'bg', 127 | 'bn', 128 | 'ca', 129 | 'cs', 130 | 'da', 131 | 'de', 132 | 'el', 133 | 'en', 134 | 'es', 135 | 'et', 136 | 'fa', 137 | 'fi', 138 | 'fil', 139 | 'fr', 140 | 'gu', 141 | 'he', 142 | 'hi', 143 | 'hin', 144 | 'hr', 145 | 'hu', 146 | 'id', 147 | 'it', 148 | 'ja', 149 | 'kn', 150 | 'ko', 151 | 'lt', 152 | 'lv', 153 | 'ml', 154 | 'mr', 155 | 'ms', 156 | 'nb_NO', 157 | 'nl', 158 | 'no', 159 | 'pl', 160 | 'pt_BR', 161 | 'pt_PT', 162 | 'ro', 163 | 'ru', 164 | 'sk', 165 | 'sl', 166 | 'sr', 167 | 'sv', 168 | 'sw', 169 | 'ta', 170 | 'te', 171 | 'th', 172 | 'tr', 173 | 'uk', 174 | 'vi', 175 | 'zh_CN', 176 | 'zh_TW' 177 | ] 178 | 179 | for locale in locales: 180 | if not os.path.exists('../_locales/' + locale): 181 | pathlib.Path('../_locales/' + locale).mkdir(parents=True, 182 | exist_ok=True) 183 | 184 | file = io.open('../_locales/' + locale + '/messages.json', 185 | mode='w', encoding='utf-8') 186 | 187 | file.write('{}') 188 | 189 | file.close() 190 | 191 | print(locale) 192 | 193 | 194 | # -------------------------------------------------------------- 195 | # 8.0 INITIALIZATION 196 | # -------------------------------------------------------------- 197 | 198 | allFiles = getListOfFiles('../_locales/') 199 | 200 | for arg in sys.argv: 201 | if arg == '-add': 202 | addItem(allFiles) 203 | elif arg == '-remove': 204 | removeItem(allFiles) 205 | elif arg == '-decode': 206 | decodeCharacters(allFiles) 207 | elif arg == '-generate': 208 | addLocales() -------------------------------------------------------------------------------- /ui/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Looper 7 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ui/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Looper 7 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ui/satus.css: -------------------------------------------------------------------------------- 1 | [hidden]{display:none}body{--satus-primary:#f6b465;--satus-switch-background:rgba(0,0,0,.08);--satus-header-background:#fff;--satus-header-text:#848471;--satus-layers-background:#f6f6f4;--satus-layers-text:#848471;--satus-section-card-background:#fff;--satus-modal-background:#f6f6f4;--satus-modal-text:#848471;--satus-hover:rgba(0, 0, 0, .04);--satus-text-field--background:#e8e8e3;--satus-text-field--border:#d6d6cd;--satus-text-field--text:#848471;--satus-switch-track:#b8b8b8;--satus-switch-track--active:var(--satus-primary);--satus-switch-thumb:#fff;--satus-tabs:#fff;--satus-tooltip:rgba(0,0,0,.4);--satus-sortable-ghost:rgba(0, 0, 0, .80);--satus-sortable-background:#f9cf9f;--satus-sortable-text:#fff;--satus-divider:#e0e0e0;--satus-tabs-background:#e8e8e3;--satus-tabs-foreground:#fff;--satus-context-menu--border:#ccc;--satus-checkbox--background:rgb(90, 90, 73, .08);--satus-checkbox--border:rgb(90, 90, 73, .16);--satus-checkbox--mark:#fff}body[theme=dark]{--satus-primary:#90a5e0;--satus-switch-background:rgba(0,0,0,.08);--satus-header-background:#232b43;--satus-header-text:#bcc4dc;--satus-layers-background:#0e111b;--satus-layers-text:#bcc4dc;--satus-section-card-background:#1d2335;--satus-modal-background:#252e46;--satus-modal-text:#bcc4dc;--satus-hover:rgba(255, 255, 255, .08);--satus-text-field--background:#20273c;--satus-text-field--border:#2e3957;--satus-text-field--text:#c4c4d4;--satus-switch-track:#101219;--satus-switch-track--active:var(--satus-primary);--satus-switch-thumb:#d7dcea;--satus-tooltip:rgba(255,255,255,.4);--satus-sortable-ghost:rgba(255, 255, 255, .8);--satus-sortable-background:var(--satus-primary);--satus-sortable-text:#fff;--satus-divider:#3e4865;--satus-tabs-background:#1f2433;--satus-tabs-foreground:#344165;--satus-context-menu--border:#2e3957;--satus-checkbox--background:rgb(233, 234, 237, .08);--satus-checkbox--border:rgb(233, 234, 237, .16);--satus-checkbox--mark:#fff}body[theme=black]{--satus-primary:#8f8f8f;--satus-switch-background:rgba(255,255,255,.08);--satus-header-background:#1f1f1f;--satus-header-text:#ccc;--satus-layers-background:#000;--satus-layers-text:#ccc;--satus-section-card-background:#1a1a1a;--satus-modal-background:#212121;--satus-modal-text:#ccc;--satus-hover:rgba(255, 255, 255, .08);--satus-text-field--background:#333333;--satus-text-field--border:#525252;--satus-text-field--text:#ccc;--satus-switch-track:#111;--satus-switch-track--active:var(--satus-primary);--satus-switch-thumb:#ddd;--satus-tooltip:rgba(255,255,255,.4);--satus-sortable-ghost:rgba(255, 255, 255, .8);--satus-sortable-background:var(--satus-primary);--satus-sortable-text:#fff;--satus-divider:#444;--satus-tabs-background:#111;--satus-tabs-foreground:#2e2e2e;--satus-context-menu--border:#525252;--satus-checkbox--background:rgb(235, 235, 235, .08);--satus-checkbox--border:rgb(235, 235, 235, .16);--satus-checkbox--mark:#fff}.satus-color-picker{font-size:inherit;position:relative;display:flex;box-sizing:border-box;margin:0;cursor:pointer;color:inherit;border:none;outline:0;background-color:var(--satus-theme-button);justify-content:space-between;-webkit-tap-highlight-color:transparent;align-items:center;-webkit-appearance:none}.satus-color-picker__value{width:22px;height:22px;border:2px solid rgba(0,0,0,.16);border-radius:50%;background:#fff}.satus-modal--color-picker{position:relative}.satus-modal--color-picker .satus-modal__surface{padding-top:0}.satus-color-picker__palette{position:relative;overflow:hidden;width:100%;height:256px;background-color:red}.satus-color-picker__palette:before{position:absolute;top:0;left:0;width:100%;height:100%;content:'';background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,transparent)}.satus-color-picker__cursor{position:absolute;width:5px;height:5px;transform:translate(-50%,-50%);pointer-events:none;border:1px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #000}.satus-modal--color-picker .satus-modal__surface .satus-section--color{margin:8px 16px 0;align-items:center}.satus-color-picker__color{width:32px;height:32px;margin:0 16px 0 0;border:2px solid rgba(0,0,0,.16);border-radius:50%;background:red}.satus-slider.satus-color-picker__hue{padding:0;flex:1}.satus-color-picker__hue .satus-slider__track{height:16px;border-radius:4px;background-image:linear-gradient(90deg,red,#ff2a00,#f50,#ff7f00,#fa0,#ffd400,#ff0,#d4ff00,#af0,#80ff00,#5f0,#2bff00,#0f0,#00ff2b,#0f5,#00ff80,#0fa,#00ffd5,#0ff,#00d4ff,#0af,#007fff,#05f,#002bff,#00f,#2a00ff,#50f,#7f00ff,#a0f,#d400ff,#f0f,#ff00d4,#f0a,#ff0080,#f05,#ff002b,red)}.satus-color-picker__hue .satus-slider__handle{width:16px;height:16px;background:#fff;box-shadow:0 0 4px rgb(0,0,0,.64)}.satus-color-picker__hue .satus-slider__handle:focus::after,.satus-color-picker__hue .satus-slider__track-fill,.satus-color-picker__hue::before{display:none}.satus-main{color:var(--satus-main-text);background:var(--satus-main-background);overflow-y:auto;box-sizing:border-box}.satus-tabs{display:flex;height:26px!important}.satus-tabs__content{position:relative;overflow:hidden;width:100%;height:100%;border:2px solid var(--satus-tabs-background);border-radius:4px;background:var(--satus-tabs-background)}.satus-tabs__selection{position:absolute;z-index:0;top:0;left:0;height:100%;transition:left .25s;border-radius:4px;background:var(--satus-tabs-foreground)}.satus-tabs__button{font:inherit;position:relative;z-index:1;overflow:hidden;height:100%;padding:0 4px;white-space:nowrap;text-overflow:ellipsis;color:inherit;border:none;background:0 0;flex:1}.satus-tabs__button:hover{cursor:pointer}.satus-menubar,.satus-menubar ul{margin:0;padding:0;list-style:none;background:var(--satus-menubar-background);color:var(--satus-menubar-text)}.satus-menubar li>.satus-button{height:32px;font-size:14px}.satus-menubar>li>ul{display:none;position:absolute}.satus-menubar>li>:focus+ul,.satus-menubar>li>ul:hover{display:block}.satus-button{font:inherit;position:relative;display:flex;overflow:hidden;height:48px;margin:0;padding:8px;text-align:left;color:var(--satus-button-text,inherit);border:none;background:var(--satus-button-background,transparent);appearance:none;align-items:center}.satus-button:hover{cursor:pointer;background-color:var(--satus-hover)}.satus-button[hidden]{display:none}.satus-button>svg{min-width:20px}.satus-button>.satus-span--label{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.satus-list{list-style:none;margin:0}.satus-list__item{display:flex;align-items:center;justify-content:space-between;min-height:48px}.satus-list__item>:last-child{text-align:right}.satus-section{display:flex;box-sizing:border-box;flex-wrap:wrap}.satus-section--align-start{align-items:center;justify-content:flex-start}.satus-section--align-end{align-items:center;justify-content:flex-end}.satus-section--space-between{align-items:center;justify-content:space-between}.satus-section--column{flex-direction:column}.satus-section--card{flex-direction:column;box-sizing:border-box;width:100%;max-width:900px;margin:8px auto;padding:8px 0;color:var(--satus-section-card-text);border:1px solid rgba(0,0,0,.1);border-radius:8px;background:var(--satus-section-card-background)}.satus-section--card>:not(.satus-button){box-sizing:border-box;width:100%;min-height:48px;padding:0 16px;text-align:left}.satus-section--card>.satus-radio,.satus-section--card>.satus-select,.satus-section--card>.satus-switch{display:flex;justify-content:space-between;align-items:center}.satus-section--card>.satus-button:hover,.satus-section--card>.satus-radio:hover,.satus-section--card>.satus-select:hover,.satus-section--card>.satus-slider:hover,.satus-section--card>.satus-switch:hover{background-color:var(--satus-hover)}.satus-section--card>.satus-button{padding:0 16px;width:100%}.satus-section--card>.satus-button>svg{width:20px;margin:2px 16px 0 0;color:var(--satus-primary)}::-webkit-scrollbar{width:4px}::-webkit-scrollbar:hover{width:8px}::-webkit-scrollbar-thumb{background:rgba(0,0,0,.3)}.satus-modal{position:absolute;z-index:100;top:0;left:0;display:flex;width:100%;height:100vh;justify-content:center;align-items:center}.satus-modal__scrim{position:absolute;top:0;left:0;width:100%;height:100%;animation:modalFadeIn 150ms linear forwards;opacity:0;background:rgba(0,0,0,.16);backdrop-filter:blur(8px)}.satus-modal__surface{display:flex;overflow-y:auto;flex-direction:column;width:95%;min-width:240px;max-width:560px;max-height:80%;margin:0 16px;padding:12px 16px;transform:scale(.8);animation:modalZoomIn 150ms linear forwards;animation-delay:20ms;opacity:0;color:var(--satus-modal-text);border-radius:6px;background-color:var(--satus-modal-background);box-shadow:inset 0 -1px 1px 1px rgb(0,0,0,.1),0 2px 6px rgb(0,0,0,.15)}.satus-modal__surface .satus-section--actions{display:flex;width:100%;margin:8px 0 0;padding:0;justify-content:flex-end;align-items:center}.satus-modal__surface .satus-section--actions .satus-button{font-weight:500;height:32px;margin-left:8px;padding:0 8px;letter-spacing:.5px;color:var(--satus-primary);border-radius:4px}.satus-modal--closing .satus-modal__scrim{animation:modalFadeOut 70ms linear forwards}.satus-modal--closing .satus-modal__surface{animation:modalZoomOut 70ms linear forwards}.satus-modal--vertical .satus-modal__surface{position:absolute;top:8px;right:8px;left:auto;min-width:200px;max-width:200px;margin:0;padding:8px 0;transform-origin:right top}.satus-modal--vertical .satus-modal__surface>.satus-button,.satus-modal--vertical .satus-modal__surface>.satus-select,.satus-modal--vertical .satus-modal__surface>.satus-switch{display:flex;height:36px;padding:0 16px;align-items:center}.satus-modal--vertical .satus-modal__surface>.satus-tabs{padding:0 12px}.satus-modal--vertical .satus-modal__surface>.satus-span{font-size:13px;font-weight:500;margin:6px 0;padding:0 12px}.satus-modal--vertical .satus-modal__surface>.satus-button:hover,.satus-modal--vertical .satus-modal__surface>.satus-select:hover,.satus-modal--vertical .satus-modal__surface>.satus-switch:hover{background-color:var(--satus-hover)}.satus-modal--vertical .satus-button svg{width:20px;height:18px;margin:0 14px 0 0;opacity:.75;flex:0 0 20px}.satus-modal--vertical .satus-button .satus-span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@keyframes modalFadeIn{from{opacity:0}to{opacity:1}}@keyframes modalFadeOut{from{opacity:1}to{opacity:0}}@keyframes modalZoomIn{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes modalZoomOut{from{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}.satus-checkbox{position:relative;font:inherit;display:flex;color:inherit;border:none;background:0 0;appearance:none;align-items:center;justify-content:flex-start}.satus-checkbox:hover{cursor:pointer;background-color:var(--satus-hover)}.satus-checkbox:focus{outline:0}.satus-checkbox__content{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.satus-checkbox::before{display:flex;min-width:16px;width:16px;height:16px;margin:0 12px 0 0;content:'';border:1px solid var(--satus-checkbox--border);border-radius:6px;background:var(--satus-checkbox--background);align-items:center;justify-content:center}.satus-checkbox[data-value=true]::before{background:var(--satus-primary)}.satus-checkbox[data-value=true]::after{position:absolute;top:20px;left:20px;width:8px;height:4px;content:'';transform:rotate(-45deg);border:2px solid var(--satus-checkbox--mark);border-top:none;border-right:none}.satus-switch{font:inherit;display:flex;transition:background-color 75ms;color:inherit;border:none;outline:0;background-color:transparent;justify-content:space-between;align-items:center}.satus-switch:hover{cursor:pointer}.satus-switch__content{line-height:0;display:flex;align-items:center}.satus-switch__content>svg{width:20px;height:18px;margin:0 14px 0 0;opacity:.75}.satus-switch>i{width:38px;height:20px;transition:background-color 150ms;border-radius:20px;background-color:var(--satus-switch-track);flex:0 0 38px}.satus-section--card .satus-switch>i{margin-left:16px}.satus-switch[data-value=true]>i{background-color:var(--satus-switch-track--active)}.satus-switch>i::before{display:block;width:16px;height:16px;margin:2px;content:'';transition:transform 150ms cubic-bezier(.4,0,.2,1);border-radius:50%;background-color:var(--satus-switch-thumb);will-change:transform}.satus-switch[data-value=true]>i::before{transform:translateX(18px)}.satus-slider{box-sizing:border-box;width:100%;padding:8px 16px 0;outline:0}.satus-slider__container{position:relative;height:32px;width:100%}.satus-slider__track{position:absolute;top:50%;left:0;height:2px;width:100%;transform:translateY(-50%)}.satus-slider__track::before{position:absolute;left:0;top:0;width:100%;height:100%;background:var(--satus-primary);opacity:.24;content:''}.satus-slider__handle:focus::after{content:attr(data-value);position:absolute;left:50%;top:-2px;background:var(--satus-primary);color:#fff;display:block;transform:translate(-50%,-100%);padding:1px 4px;border-radius:4px}.satus-slider__track-fill{position:absolute;left:0;top:0;height:100%;background:var(--satus-primary)}.satus-slider__handle{position:absolute;width:10px;height:10px;background:var(--satus-primary);border-radius:50%;transform:translate(-50%,-50%);top:50%;left:0}.satus-slider__handle::before{content:'';background:var(--satus-primary);position:absolute;left:50%;top:50%;width:1px;height:1px;opacity:0;border-radius:50%;transform:translate(-50%,-50%) scale(1);transition:.2s}.satus-slider:focus .satus-slider__handle::before{transform:translate(-50%,-50%) scale(26);opacity:.24}.satus-shortcut{justify-content:space-between}.satus-shortcut__value{text-transform:uppercase;font-size:11px;opacity:.5}.satus-shortcut__actions{display:flex;justify-content:flex-end}.satus-shortcut__actions .satus-button{height:32px;background:rgba(0,0,0,.15);margin:8px 4px 0;border-radius:8px}.satus-shortcut__actions .satus-button:hover{background:rgba(0,0,0,.25)}.satus-shortcut__primary{display:flex;box-sizing:border-box;width:100%;height:68px;padding:16px;background:rgba(0,0,0,.16);align-items:center}.satus-shortcut__key{display:flex;box-sizing:border-box;min-width:32px;height:32px;padding:4px 8px;border-radius:4px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.15),inset 0 -3px 0 rgba(0,0,0,.1);align-items:center;justify-content:center}.satus-shortcut__plus{position:relative;width:12px;height:12px;margin:8px}.satus-shortcut__plus::before{position:absolute;top:0;left:5px;width:2px;height:12px;content:'';background-color:#aaa}.satus-shortcut__plus::after{position:absolute;top:5px;left:0;width:12px;height:2px;content:'';background-color:#aaa}.satus-shortcut__mouse{position:relative;display:flex;width:28px;height:36px;border-radius:50%;border-top-left-radius:12px;border-top-right-radius:12px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.15),inset 0 -3px 0 rgba(0,0,0,.1)}.satus-shortcut__mouse>div{position:absolute;top:0;left:13px;width:2px;height:11px;border-radius:2px;background:#ccc}.satus-shortcut__mouse::before{position:absolute;top:-4px;left:21px;width:2px;height:18px;content:'';background:#f96754}.satus-shortcut__mouse.false::after{position:absolute;top:-12px;left:17px;width:0;height:0;content:'';border-right:5px solid transparent;border-bottom:8px solid #f96754;border-left:5px solid transparent}.satus-shortcut__mouse.true::after{position:absolute;top:14px;left:17px;width:0;height:0;content:'';border-top:8px solid #f96754;border-right:5px solid transparent;border-left:5px solid transparent}.satus-section_shortcut{width:100%;margin:8px 0 0;justify-content:flex-end}.satus-button_shortcut{font-weight:500;overflow:hidden;height:28px;min-height:28px;margin-right:2px;padding:4px 8px;text-transform:uppercase;color:#f96754;border-radius:4px}.satus-base{display:flex;flex-direction:column;width:100%;height:100%}.satus-text-field{position:relative;padding:0 16px;background-color:var(--satus-text-field--background);border-radius:8px;color:var(--satus-text-field--text);overflow:hidden;display:flex}.satus-text-field__pre{display:flex;position:relative;height:100%;margin:0;padding:0;overflow:hidden;align-items:center;flex:1}.satus-text-field__input{font:inherit;position:absolute;top:0;left:0;width:100%;min-width:0;max-width:none;height:100%;min-height:0;max-height:none;margin:0;padding:0;opacity:0;border:none;appearance:none;z-index:9}.satus-text-field__hidden-text{position:absolute;pointer-events:none;opacity:0}.satus-text-field__text{position:absolute;top:0;left:0;display:flex;height:100%;margin:0;align-items:center}.satus-text-field__cursor{position:absolute;top:6px;left:0;display:none;width:2px;height:25px;animation:blink 1s step-end 8;background:#fa0}.satus-text-field__selection{position:absolute;top:5px;left:0;display:none;width:0;height:25px;border:1px solid rgba(255,255,255,.2);border-radius:3px;background:rgba(255,255,255,.1)}.satus-text-field__input:focus+*+*+*+.satus-text-field__cursor,.satus-text-field__selection:not([disabled]){display:block}@keyframes blink{from,to{opacity:1}50%{opacity:0}}.satus-text-field__text>.group{color:#47ff47;background-color:rgb(71,255,71,.16)}.satus-text-field__text>.character-class{color:#ffc247;background-color:rgb(255,170,0,.16)}.satus-text-field__text>.quantifier{color:#47c2ff;background-color:rgb(71,194,255,.16)}.satus-text-field__text>.anchor{color:#47c2ff;background-color:rgb(71,194,255,.16)}.satus-text-field__text>.metasequence{color:#47ff47;background-color:rgb(71,255,71,.16)}.satus-text-field__text>.text{color:#c4c4d4;background-color:rgb(196,196,212,.16)}.satus-header{z-index:1;display:flex;box-sizing:border-box;height:56px;padding:0 12px;color:var(--satus-header-text);background:var(--satus-header-background);box-shadow:0 1px 2px rgb(47,41,34,.16);align-items:center;justify-content:space-between}.satus-header .satus-button{width:40px;min-width:40px;height:40px;padding:8px;color:inherit;border-radius:50%}.satus-header .satus-section--align-start>*{margin-right:8px}.satus-header .satus-span--title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1}.satus-alert{display:flex;box-sizing:border-box;min-height:48px;margin:8px;padding:8px 16px;border-radius:8px;align-items:center}.satus-alert--error{color:#cf7777;border:1px solid #6f1f1f;background:#501616}.satus-layers{position:relative;overflow:hidden;color:var(--satus-layers-text);background:var(--satus-layers-background);flex:1}.satus-layer{position:absolute;top:0;left:0;display:flex;overflow-y:auto;box-sizing:border-box;width:100%;height:100%;padding:0 12px;flex-wrap:wrap;align-content:flex-start}.satus-divider{height:1px;margin:16px 0 12px;background:var(--satus-divider)}.satus-input[type=password],.satus-input[type=text]{font:inherit;box-sizing:border-box;width:100%;margin:0;padding:0;padding:0 8px;color:var(--satus-text-field--text,inherit);border:none;outline:0;background:0 0;appearance:none;font-size:16px;margin:8px 0;padding:4px 8px;border:1px solid var(--satus-text-field--border);border-radius:4px;background-color:var(--satus-text-field--background)}.satus-aside{color:var(--satus-aside-text);background:var(--satus-aside-background);box-sizing:border-box}.satus-select{position:relative;display:flex;box-sizing:border-box;align-items:center;justify-content:space-between}.satus-select__content{display:flex;align-items:center}.satus-select__content>svg{width:20px;height:18px;margin:0 14px 0 0;opacity:.75}.satus-select__value{margin-left:16px;text-align:right;opacity:.75}.satus-select select{font:inherit;position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;padding:inherit;cursor:pointer;opacity:0;color:inherit;border:none;outline:0;background:0 0;appearance:none}.satus-select:hover{cursor:pointer;background-color:var(--satus-hover)}.satus-modal--contextmenu .satus-modal__scrim{background:0 0;backdrop-filter:none;animation:none;visibility:visible;opacity:1;transform:none}.satus-modal--contextmenu .satus-modal__surface{position:absolute;margin:0;box-sizing:border-box;min-width:200px;max-width:200px;padding:4px 0;border-radius:4px;border:1px solid var(--satus-context-menu--border);box-shadow:none;animation:none;visibility:visible;opacity:1;transform:none}.satus-modal--contextmenu .satus-modal__surface>*{display:flex;height:32px;padding:0 16px;align-items:center}.satus-modal--contextmenu .satus-modal__surface .satus-button svg{width:20px;height:18px;margin:0 14px 0 0;opacity:.75;fill:none;stroke:var(--satus-primary);flex:0 0 20px}.satus-modal--contextmenu .satus-modal__surface .satus-button .satus-span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.satus-pluviam{position:absolute;transform:scale(0);animation-name:pluviam;animation-duration:1s;opacity:var(--satus-pluviam-opacity,.08);border-radius:50%;background:var(--satus-pluviam-background,#000);animation-fill-mode:forwards}@keyframes pluviam{0%{transform:scale(0);opacity:var(--satus-pluviam-opacity,.08)}70%{transform:scale(.8);opacity:var(--satus-pluviam-opacity,.08)}100%{transform:scale(1);opacity:0}}.satus-sortable__chosen{color:var(--satus-sortable-text)!important;background-color:var(--satus-sortable-background)!important}.satus-sortable__ghost{position:fixed!important;z-index:999!important;top:0!important;left:0!important;pointer-events:none!important;box-shadow:0 1px 3px rgb(0,0,0,.2),0 4px 8px rgb(0,0,0,.1),inset 0 0 0 1px rgb(0,0,0,.16);will-change:transform!important;opacity:.8!important} -------------------------------------------------------------------------------- /ui/satus.js: -------------------------------------------------------------------------------- 1 | var satus={components:{},events:{},locale:{strings:{}},storage:{attributes:{},data:{}},append:function(e,t){(t||document.body).appendChild(e)},getAnimationDuration:function(e){return 1e3*Number(window.getComputedStyle(e).getPropertyValue("animation-duration").replace(/[^0-9.]/g,""))},attr:function(e,t){if(t)for(var n in t){var a;e.is_svg?e.setAttributeNS(null,n,t[n]):(a=t[n],-1!==["placeholder","title"].indexOf(n)&&(a=satus.locale.get(a)),e.setAttribute(n,a))}},elementIndex:function(e){return Array.prototype.slice.call(e.parentNode.children).indexOf(e)},data:function(e,t){if(t)for(var n in t)e.dataset[n]=t[n]},properties:function(e,t){if(t)for(var n in t)e[n]=t[n]},camelize:function(e){for(var t="",n=0,a=e.length;nparseInt(e,16)),a={name:"AES-GCM",iv:new Uint8Array(n)};try{var s=(new TextDecoder).decode(await crypto.subtle.decrypt(a,await crypto.subtle.importKey("raw",await crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t)),a,!1,["decrypt"]),new Uint8Array(atob(e.slice(24)).match(/[\s\S]/g).map(e=>e.charCodeAt(0)))))}catch(e){return!1}return s},satus.encrypt=async function(e,t){var n=crypto.getRandomValues(new Uint8Array(12)),a={name:"AES-GCM",iv:n};return Array.from(n).map(e=>("00"+e.toString(16)).slice(-2)).join("")+btoa(Array.from(new Uint8Array(await crypto.subtle.encrypt(a,await crypto.subtle.importKey("raw",await crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t)),a,!1,["encrypt"]),(new TextEncoder).encode(e)))).map(e=>String.fromCharCode(e)).join(""))},satus.isArray=function(e){return!!Array.isArray(e)},satus.isNumber=function(e){return"number"==typeof e&&!1===isNaN(e)},satus.indexOf=function(e,t){var n=0;if(satus.isArray(t))n=t.indexOf(e);else for(;e=e.previousElementSibling;)n++;return n},satus.toIndex=function(e,t,n){satus.isArray(n)&&n.splice(e,0,n.splice(satus.indexOf(t,n),1)[0])},satus.clone=function(e){for(var t=e.cloneNode(!0),n=window.getComputedStyle(e.parentNode),a=window.getComputedStyle(e),s="",o=0,r=a.length;o>> POPUP: 3 | ---------------------------------------------------------------- 4 | # Skeleton 5 | # Functions 6 | # Initialization 7 | --------------------------------------------------------------*/ 8 | 9 | /*-------------------------------------------------------------- 10 | # SKELETON 11 | --------------------------------------------------------------*/ 12 | 13 | var skeleton = { 14 | component: 'base', 15 | 16 | header: { 17 | component: 'header', 18 | 19 | section_1: { 20 | component: 'section', 21 | variant: 'align-start', 22 | 23 | back: { 24 | component: 'button', 25 | attr: { 26 | 'hidden': 'true' 27 | }, 28 | on: { 29 | click: 'layers.back' 30 | }, 31 | 32 | svg: { 33 | component: 'svg', 34 | attr: { 35 | 'viewBox': '0 0 24 24', 36 | 'fill': 'none', 37 | 'stroke-width': '1.5', 38 | 'stroke': 'currentColor' 39 | }, 40 | 41 | path: { 42 | component: 'path', 43 | attr: { 44 | 'd': 'M14 18l-6-6 6-6' 45 | } 46 | } 47 | } 48 | }, 49 | title: { 50 | component: 'span', 51 | variant: 'title' 52 | } 53 | }, 54 | section_2: { 55 | component: 'section', 56 | variant: 'align-end', 57 | 58 | menu: { 59 | component: 'button', 60 | on: { 61 | click: { 62 | component: 'modal', 63 | variant: 'vertical', 64 | 65 | label: { 66 | component: 'span', 67 | text: 'theme' 68 | }, 69 | theme: { 70 | component: 'tabs', 71 | items: [ 72 | 'light', 73 | 'dark', 74 | 'black' 75 | ], 76 | value: 'dark' 77 | }, 78 | divider: { 79 | component: 'divider' 80 | }, 81 | language: { 82 | component: 'select', 83 | on: { 84 | change: function (name, value) { 85 | var self = this; 86 | 87 | satus.ajax('_locales/' + this.querySelector('select').value + '/messages.json', function (response) { 88 | response = JSON.parse(response); 89 | 90 | for (var key in response) { 91 | satus.locale.strings[key] = response[key].message; 92 | } 93 | 94 | self.base.skeleton.header.section_1.title.rendered.textContent = satus.locale.get('languages'); 95 | 96 | self.base.skeleton.layers.rendered.update(); 97 | }); 98 | } 99 | }, 100 | options: [{ 101 | value: 'en', 102 | text: 'English' 103 | }, { 104 | value: 'ru', 105 | text: 'Русский' 106 | }], 107 | 108 | svg: { 109 | component: 'svg', 110 | attr: { 111 | 'viewBox': '0 0 24 24', 112 | 'fill': 'currentColor' 113 | }, 114 | 115 | path: { 116 | component: 'path', 117 | attr: { 118 | 'd': 'M12.9 15l-2.6-2.4c1.8-2 3-4.2 3.8-6.6H17V4h-7V2H8v2H1v2h11.2c-.7 2-1.8 3.8-3.2 5.3-1-1-1.7-2.1-2.3-3.3h-2c.7 1.6 1.7 3.2 3 4.6l-5.1 5L4 19l5-5 3.1 3.1.8-2zm5.6-5h-2L12 22h2l1.1-3H20l1.1 3h2l-4.5-12zm-2.6 7l1.6-4.3 1.6 4.3H16z' 119 | } 120 | } 121 | }, 122 | label: { 123 | component: 'span', 124 | text: 'language' 125 | } 126 | }, 127 | export: { 128 | component: 'button', 129 | on: { 130 | click: function () { 131 | if (location.href.indexOf('/options.html?action=export') !== -1) { 132 | exportData(); 133 | } else { 134 | chrome.tabs.create({ 135 | url: 'ui/options.html?action=export' 136 | }); 137 | } 138 | } 139 | }, 140 | 141 | svg: { 142 | component: 'svg', 143 | attr: { 144 | 'viewBox': '0 0 24 24', 145 | 'fill': 'none', 146 | 'stroke': 'currentColor', 147 | 'stroke-linecap': 'round', 148 | 'stroke-linejoin': 'round', 149 | 'stroke-width': '2' 150 | }, 151 | 152 | path: { 153 | component: 'path', 154 | attr: { 155 | 'd': 'M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12 3v12' 156 | } 157 | } 158 | }, 159 | label: { 160 | component: 'span', 161 | text: 'export' 162 | } 163 | }, 164 | import: { 165 | component: 'button', 166 | on: { 167 | click: function () { 168 | if (location.href.indexOf('/options.html?action=import') !== -1) { 169 | importData(); 170 | } else { 171 | chrome.tabs.create({ 172 | url: 'ui/options.html?action=import' 173 | }); 174 | } 175 | } 176 | }, 177 | 178 | svg: { 179 | component: 'svg', 180 | attr: { 181 | 'viewBox': '0 0 24 24', 182 | 'fill': 'none', 183 | 'stroke': 'currentColor', 184 | 'stroke-linecap': 'round', 185 | 'stroke-linejoin': 'round', 186 | 'stroke-width': '2' 187 | }, 188 | 189 | path: { 190 | component: 'path', 191 | attr: { 192 | 'd': 'M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 15V3' 193 | } 194 | } 195 | }, 196 | label: { 197 | component: 'span', 198 | text: 'import' 199 | } 200 | } 201 | } 202 | }, 203 | 204 | svg: { 205 | component: 'svg', 206 | attr: { 207 | 'viewBox': '0 0 24 24', 208 | 'fill': 'currentColor' 209 | }, 210 | 211 | circle_1: { 212 | component: 'circle', 213 | attr: { 214 | 'cx': '12', 215 | 'cy': '5.25', 216 | 'r': '1' 217 | } 218 | }, 219 | circle_2: { 220 | component: 'circle', 221 | attr: { 222 | 'cx': '12', 223 | 'cy': '12', 224 | 'r': '1' 225 | } 226 | }, 227 | circle_3: { 228 | component: 'circle', 229 | attr: { 230 | 'cx': '12', 231 | 'cy': '18.75', 232 | 'r': '1' 233 | } 234 | } 235 | } 236 | } 237 | } 238 | }, 239 | layers: { 240 | component: 'layers', 241 | on: { 242 | open: function () { 243 | var skeleton = this.path[this.path.length - 1], 244 | parent = skeleton.parent, 245 | section = this.base.skeleton.header.section_1, 246 | is_home = this.path.length <= 1, 247 | title = 'Looper'; 248 | 249 | if (parent) { 250 | if (parent.label) { 251 | title = parent.label.text; 252 | } else if (parent.text) { 253 | title = parent.text; 254 | } 255 | } 256 | 257 | section.back.rendered.hidden = is_home; 258 | section.title.rendered.innerText = satus.locale.get(title); 259 | } 260 | }, 261 | 262 | toolbar: {}, 263 | 264 | section: { 265 | component: 'section', 266 | class: 'satus-section--card', 267 | 268 | appearance: { 269 | component: 'button', 270 | on: { 271 | click: { 272 | component: 'section', 273 | class: 'satus-section--card', 274 | title: 'appearance', 275 | 276 | background_color: { 277 | component: 'color-picker', 278 | text: 'backgroundColor', 279 | value: [0, 0, 0] 280 | }, 281 | text_color: { 282 | component: 'color-picker', 283 | text: 'textColor', 284 | value: [255, 255, 255] 285 | }, 286 | primary_color: { 287 | component: 'color-picker', 288 | text: 'primaryColor', 289 | value: [74, 178, 146] 290 | }, 291 | blur: { 292 | component: 'slider', 293 | text: 'blur', 294 | value: 4, 295 | max: 16, 296 | storage: 'blur' 297 | }, 298 | opacity: { 299 | component: 'slider', 300 | text: 'opacity', 301 | value: .85, 302 | step: .05, 303 | storage: 'opacity' 304 | }, 305 | hide_in_fullscreen: { 306 | component: 'switch', 307 | text: 'hideInFullscreen' 308 | } 309 | } 310 | }, 311 | 312 | icon: { 313 | component: 'svg', 314 | attr: { 315 | 'viewBox': '0 0 24 24', 316 | 'fill': 'var(--satus-primary)' 317 | }, 318 | 319 | path: { 320 | component: 'path', 321 | attr: { 322 | 'd': 'M7 14c-1.66 0-3 1.34-3 3 0 1.31-1.16 2-2 2 .92 1.22 2.49 2 4 2 2.21 0 4-1.79 4-4 0-1.66-1.34-3-3-3zm13.71-9.37-1.34-1.34a.996.996 0 0 0-1.41 0L9 12.25 11.75 15l8.96-8.96a.996.996 0 0 0 0-1.41z' 323 | } 324 | } 325 | }, 326 | label: { 327 | component: 'span', 328 | text: 'appearance' 329 | } 330 | }, 331 | shortcuts: { 332 | component: 'button', 333 | on: { 334 | click: { 335 | component: 'section', 336 | class: 'satus-section--card', 337 | title: 'shortcuts', 338 | 339 | hide_shortcut: { 340 | component: 'shortcut', 341 | text: 'hidePanel', 342 | value: { 343 | keys: { 344 | 72: { 345 | key: 'h' 346 | } 347 | } 348 | } 349 | } 350 | } 351 | }, 352 | 353 | icon: { 354 | component: 'svg', 355 | attr: { 356 | 'viewBox': '0 0 24 24', 357 | 'fill': 'var(--satus-primary)' 358 | }, 359 | 360 | path: { 361 | component: 'path', 362 | attr: { 363 | 'd': 'M20 5H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-9 3h2v2h-2V8zm0 3h2v2h-2v-2zM8 8h2v2H8V8zm0 3h2v2H8v-2zm-1 2H5v-2h2v2zm0-3H5V8h2v2zm9 7H8v-2h8v2zm0-4h-2v-2h2v2zm0-3h-2V8h2v2zm3 3h-2v-2h2v2zm0-3h-2V8h2v2z' 364 | } 365 | } 366 | }, 367 | label: { 368 | component: 'span', 369 | text: 'shortcuts' 370 | } 371 | } 372 | }, 373 | 374 | made_with_love: { 375 | component: 'a', 376 | class: 'made-with-love', 377 | attr: { 378 | target: '_blank', 379 | href: 'https://chrome.google.com/webstore/detail/improve-youtube-open-sour/bnomihfieiccainjcjblhegjgglakjdd' 380 | }, 381 | properties: { 382 | innerHTML: 'Made with by ImprovedTube' 383 | } 384 | } 385 | } 386 | }; 387 | 388 | 389 | /*-------------------------------------------------------------- 390 | # FUNCTIONS 391 | --------------------------------------------------------------*/ 392 | 393 | function exportData() { 394 | if (location.href.indexOf('action=export') !== -1) { 395 | var blob; 396 | 397 | try { 398 | blob = new Blob([JSON.stringify(satus.storage.data)], { 399 | type: 'application/json;charset=utf-8' 400 | }); 401 | } catch (error) { 402 | return modalError(error); 403 | } 404 | 405 | satus.render({ 406 | component: 'modal', 407 | 408 | label: { 409 | component: 'span', 410 | text: 'areYouSureYouWantToExportTheData' 411 | }, 412 | actions: { 413 | component: 'section', 414 | variant: 'actions', 415 | 416 | ok: { 417 | component: 'button', 418 | text: 'ok', 419 | on: { 420 | click: function () { 421 | try { 422 | chrome.permissions.request({ 423 | permissions: ['downloads'] 424 | }, function (granted) { 425 | if (granted) { 426 | chrome.downloads.download({ 427 | url: URL.createObjectURL(blob), 428 | filename: 'looper.json', 429 | saveAs: true 430 | }, function () { 431 | setTimeout(function () { 432 | close(); 433 | }, 1000); 434 | }); 435 | } 436 | }); 437 | } catch (error) { 438 | return modalError(error); 439 | } 440 | 441 | this.parentNode.parentNode.parentNode.close(); 442 | } 443 | } 444 | }, 445 | cancel: { 446 | component: 'button', 447 | text: 'cancel', 448 | on: { 449 | click: function () { 450 | this.parentNode.parentNode.parentNode.close(); 451 | } 452 | } 453 | } 454 | } 455 | }); 456 | } 457 | } 458 | 459 | function importData() { 460 | if (location.href.indexOf('action=import') !== -1) { 461 | satus.render({ 462 | component: 'modal', 463 | 464 | label: { 465 | component: 'span', 466 | text: 'areYouSureYouWantToImportTheData' 467 | }, 468 | actions: { 469 | component: 'section', 470 | variant: 'actions', 471 | 472 | ok: { 473 | component: 'button', 474 | text: 'ok', 475 | on: { 476 | click: function () { 477 | var input = document.createElement('input'); 478 | 479 | input.type = 'file'; 480 | 481 | input.addEventListener('change', function () { 482 | var file_reader = new FileReader(); 483 | 484 | file_reader.onload = function () { 485 | var data = JSON.parse(this.result); 486 | 487 | for (var key in data) { 488 | satus.storage.set(key, data[key]); 489 | } 490 | 491 | close(); 492 | }; 493 | 494 | file_reader.readAsText(this.files[0]); 495 | }); 496 | 497 | input.click(); 498 | 499 | this.parentNode.parentNode.parentNode.close(); 500 | } 501 | } 502 | }, 503 | cancel: { 504 | component: 'button', 505 | text: 'cancel', 506 | on: { 507 | click: function () { 508 | this.parentNode.parentNode.parentNode.close(); 509 | } 510 | } 511 | } 512 | } 513 | }); 514 | } 515 | } 516 | 517 | 518 | /*-------------------------------------------------------------- 519 | # INITIALIZATION 520 | --------------------------------------------------------------*/ 521 | 522 | satus.storage.attributes = { 523 | theme: true 524 | }; 525 | 526 | satus.storage.import(function (items) { 527 | satus.locale.import(items.language, '../_locales/', function () { 528 | chrome.tabs.query({ 529 | active: true, 530 | currentWindow: true 531 | }, function (tabs) { 532 | chrome.tabs.sendMessage(tabs[0].id, { 533 | action: 'init' 534 | }, function (response) { 535 | if (!response) { 536 | skeleton.layers.toolbar = { 537 | component: 'alert', 538 | text: 'somethingWentWrongTryReloadingThePage', 539 | variant: 'error' 540 | }; 541 | } else { 542 | skeleton.layers.toolbar = { 543 | component: 'switch', 544 | class: 'satus-switch--domain', 545 | text: response, 546 | storage: 'domains/' + response, 547 | value: true 548 | }; 549 | } 550 | 551 | satus.render(skeleton); 552 | }); 553 | }); 554 | 555 | exportData(); 556 | importData(); 557 | }); 558 | }); -------------------------------------------------------------------------------- /ui/styles.css: -------------------------------------------------------------------------------- 1 | /*-------------------------------------------------------------- 2 | >>> POPUP: 3 | ---------------------------------------------------------------- 4 | # Body 5 | # Made with love 6 | --------------------------------------------------------------*/ 7 | 8 | /*-------------------------------------------------------------- 9 | # BODY 10 | --------------------------------------------------------------*/ 11 | 12 | body[theme=dark] { 13 | --satus-primary: #7ec8b6; 14 | --satus-switch-background: rgba(0,0,0,.08); 15 | --satus-header-background: #317262; 16 | --satus-header-text: #d4ede7; 17 | --satus-layers-background: #183931; 18 | --satus-layers-text: #d4ede7; 19 | --satus-section-card-background: #317262; 20 | --satus-section-card-text: #d4ede7; 21 | --satus-modal-background: #317262; 22 | --satus-modal-text: #d4ede7; 23 | --satus-hover: rgba(255, 255, 255, .08); 24 | --satus-text-field--background: #e8e8e3; 25 | --satus-text-field--border: #d6d6cd; 26 | --satus-text-field--text: #848471; 27 | --satus-switch-track: rgba(255, 255, 255, .12); 28 | --satus-switch-track--active: var(--satus-primary); 29 | --satus-switch-thumb: #fff; 30 | --satus-tabs: #fff; 31 | --satus-tooltip: rgba(0,0,0,.4); 32 | --satus-sortable-ghost: rgba(0, 0, 0, .80); 33 | --satus-sortable-background: #f9cf9f; 34 | --satus-sortable-text: #fff; 35 | --satus-divider: #3d8f7a; 36 | --satus-tabs-background: #317262; 37 | --satus-tabs-foreground: #4aac94; 38 | --satus-context-menu--border: #ccc; 39 | --satus-checkbox--background: rgb(90, 90, 73, .08); 40 | --satus-checkbox--border: rgb(90, 90, 73, .16); 41 | --satus-checkbox--mark: #fff; 42 | } 43 | 44 | body:not([theme=dark]):not([theme=black]) { 45 | --satus-switch--domain-background: #ffefd5; 46 | --satus-switch--domain-border: #f9e0b8; 47 | --satus-switch--domain-color: #ad7622; 48 | --satus-switch--domain-background-focus: #ffefd5; 49 | --satus-switch--domain-border-focus: #f9e0b8; 50 | --satus-switch--domain-color-focus: #ad7622; 51 | } 52 | 53 | body[theme=black] { 54 | --satus-switch--domain-background: #1c2d36; 55 | --satus-switch--domain-border: #233843; 56 | --satus-switch--domain-color: #7d95a1; 57 | --satus-switch--domain-background-focus: #233843; 58 | --satus-switch--domain-border-focus: #2a4350; 59 | --satus-switch--domain-color-focus: #899ea9; 60 | } 61 | 62 | .satus-header { 63 | font-size: 15px; 64 | font-weight: 600; 65 | } 66 | 67 | .satus-header { 68 | font-size: 15px; 69 | font-weight: 600; 70 | } 71 | 72 | .satus-switch--domain { 73 | width: 100%; 74 | margin: 8px 0 0; 75 | height: 48px; 76 | padding: 0 16px; 77 | transition: 150ms; 78 | color: var(--satus-switch--domain-color); 79 | border: 1px solid var(--satus-switch--domain-border); 80 | border-radius: 8px; 81 | background-color: var(--satus-switch--domain-background); 82 | } 83 | 84 | .satus-switch--domain:focus, 85 | .satus-switch--domain:hover { 86 | color: var(--satus-switch--domain-color-focus); 87 | border-color: var(--satus-switch--domain-border-focus); 88 | background-color: var(--satus-switch--domain-background-focus); 89 | } 90 | 91 | .satus-switch--domain[data-value='true'] .satus-switch__thumb { 92 | background-color: #375a6c; 93 | } 94 | 95 | .satus-alert { 96 | width: 100%; 97 | margin: 8px 0 0; 98 | } 99 | 100 | .satus-section--label { 101 | font-size: 14px; 102 | font-weight: 600; 103 | } 104 | 105 | 106 | /*-------------------------------------------------------------- 107 | # MADE WITH LOVE 108 | --------------------------------------------------------------*/ 109 | 110 | .made-with-love { 111 | font-size: 13px; 112 | font-weight: 600; 113 | position: absolute; 114 | bottom: 16px; 115 | left: 50%; 116 | width: 100%; 117 | height: auto; 118 | min-height: auto; 119 | padding: 0; 120 | cursor: pointer; 121 | transition: 150ms; 122 | transform: translateX(-50%); 123 | text-align: center; 124 | text-decoration: none; 125 | color: #8f8fb7; 126 | justify-content: center; 127 | } 128 | 129 | .satus-base[data-hide-made-with-love=true] .made-with-love { 130 | display: none; 131 | } 132 | 133 | .made-with-love svg { 134 | position: relative; 135 | top: 4px; 136 | width: 16px; 137 | height: 16px; 138 | fill: #d62121; 139 | } 140 | 141 | .satus.dark .made-with-love svg { 142 | fill: #704343; 143 | } 144 | 145 | .made-with-love span { 146 | margin: 0 0 0 4px; 147 | } --------------------------------------------------------------------------------