├── .codeclimate.yml ├── .github └── workflows │ └── lint.yml ├── .gitignore ├── .jshintignore ├── .jshintrc ├── .stylelintrc.json ├── .travis.yml ├── CONTRIBUTING.md ├── LICENSE ├── PrivacyPolicy.md ├── README.md ├── meta ├── README │ └── minksettings_2.5.5.3.png ├── allListedArchives.psd ├── archiveNowTemplate.psd ├── chromeWebStore.png ├── mementologo.psd ├── minkLogo proto.psd ├── minkLogo.psd ├── minkLogo_eye.psd ├── minkLogo_marvel_withPaddingForPromo.png ├── mink_marvel.psd ├── mink_marvel_300_noTrans.png ├── promo1400x560.png ├── promo1440x560.psd ├── promo440x280.png ├── promo920x680.png ├── screenshots │ ├── complex │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ └── 5.png │ ├── complex2.0 │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ └── 4.png │ ├── simple │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ └── 6.png │ └── simple2.0 │ │ ├── 1.png │ │ ├── 1withCutout.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ └── 6.png └── spinning.psd ├── mink-plugin ├── content.js ├── css │ ├── minkui.css │ ├── options.css │ └── select2.css ├── font-awesome-4.0.3 │ ├── css │ │ ├── font-awesome-modified.css │ │ ├── font-awesome.css │ │ └── font-awesome.min.css │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ └── fontawesome-webfont.woff │ ├── less │ │ ├── bordered-pulled.less │ │ ├── core.less │ │ ├── fixed-width.less │ │ ├── font-awesome.less │ │ ├── icons.less │ │ ├── larger.less │ │ ├── list.less │ │ ├── mixins.less │ │ ├── path.less │ │ ├── rotated-flipped.less │ │ ├── spinning.less │ │ ├── stacked.less │ │ └── variables.less │ └── scss │ │ ├── _bordered-pulled.scss │ │ ├── _core.scss │ │ ├── _fixed-width.scss │ │ ├── _icons.scss │ │ ├── _larger.scss │ │ ├── _list.scss │ │ ├── _mixins.scss │ │ ├── _path.scss │ │ ├── _rotated-flipped.scss │ │ ├── _spinning.scss │ │ ├── _stacked.scss │ │ ├── _variables.scss │ │ └── font-awesome.scss ├── images │ ├── ajax-loader.gif │ ├── archives │ │ ├── ait.png │ │ ├── allListedArchives.png │ │ ├── allListedArchives_success.png │ │ ├── archiveisLogo.png │ │ ├── archiveisLogo_success.png │ │ ├── dropdown_ais.png │ │ ├── dropdown_ia.png │ │ ├── dropdown_wc.png │ │ ├── ia.png │ │ ├── iaLogo.png │ │ ├── iaLogo_success.png │ │ ├── ice.png │ │ └── is.png │ ├── cancel.png │ ├── icon-on-19.png │ ├── icon-on.png │ ├── icon.png │ ├── icon128.png │ ├── icon128_error.png │ ├── icon128flipped.png │ ├── icon16.png │ ├── icon48.png │ ├── lock.png │ ├── lock2-closed.png │ ├── lock2-open.png │ ├── mLogo19.png │ ├── mLogo19_isAMemento.png │ ├── mLogo38.png │ ├── mLogo38_isAMemento.png │ ├── mementoLogo-19px-30.png │ ├── mementoLogo-19px-37_5.png │ ├── mementoLogo-19px-45.png │ ├── mementoLogos │ │ ├── mLogo19_15.png │ │ ├── mLogo19_22.5.png │ │ ├── mLogo19_30.png │ │ ├── mLogo19_37.5.png │ │ ├── mLogo19_45.png │ │ ├── mLogo19_52.5.png │ │ ├── mLogo19_60.png │ │ ├── mLogo19_7.5.png │ │ ├── mLogo38_15.png │ │ ├── mLogo38_22.5.png │ │ ├── mLogo38_30.png │ │ ├── mLogo38_37.5.png │ │ ├── mLogo38_45.png │ │ ├── mLogo38_52.5.png │ │ ├── mLogo38_60.png │ │ ├── mLogo38_7.5.png │ │ └── mLogo_animated.gif │ ├── minkLogo19.png │ ├── minkLogo19_disabled.png │ ├── minkLogo19_ignorelisted.png │ ├── minkLogo19_noMementos2.png │ ├── minkLogo38.png │ ├── minkLogo38_disabled.png │ ├── minkLogo38_ignorelisted.png │ ├── minkLogo38_noMementos.png │ ├── minkLogo38_noMementos2.png │ ├── minkLogo38_working.png │ ├── minkLogo_128.png │ ├── minkLogo_300.png │ ├── mink_marvel_128.png │ ├── mink_marvel_16.png │ ├── mink_marvel_256.png │ ├── mink_marvel_300.png │ ├── mink_marvel_48.png │ ├── mink_marvel_512.png │ ├── mink_marvel_80.png │ ├── spinner.gif │ └── spinning.gif ├── jquery.miller.js │ ├── COPYING │ ├── README.md │ ├── jquery.miller.css │ └── miller.js ├── js │ ├── date.js │ ├── displayMinkUI.js │ ├── jquery-3.4.1.min.js │ ├── jquery-3.4.1.min.map │ └── select2 │ │ ├── select2.min.css │ │ └── select2.min.js ├── manifest.json ├── mink.js ├── minkui.html ├── options.html ├── options.js ├── style.css └── timemap.js └── package.json /.codeclimate.yml: -------------------------------------------------------------------------------- 1 | languages: 2 | Ruby: false 3 | JavaScript: true 4 | Python: false 5 | PHP: false 6 | exclude_paths: 7 | - "meta/*" 8 | - "mink-plugin/font-awesome-4.0.3/*" 9 | - "mink-plugin/highchartsdata.js" 10 | - "mink-plugin/images/*" 11 | - "mink-plugin/jquery.miller.js/*" 12 | - "mink-plugin/js/jquery-3.4.1.min.js" -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint 2 | 3 | on: 4 | - push 5 | - pull_request 6 | 7 | jobs: 8 | lint: 9 | if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository 10 | runs-on: ubuntu-latest 11 | name: Lint the CSS 12 | steps: 13 | - uses: actions/checkout@v3 14 | - uses: actions-hub/stylelint@master 15 | env: 16 | PATTERN: "./mink-plugin/css/*.css" -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore all dotfiles... 2 | .* 3 | 4 | # Node meta 5 | node_modules/ 6 | package-lock.json 7 | 8 | # except for .gitignore 9 | !.gitignore 10 | !.codeclimate.yml 11 | !.jshintrc 12 | !.jshintignore 13 | !.travis.yml 14 | !.stylelintrc.json 15 | !.github/ 16 | 17 | -------------------------------------------------------------------------------- /.jshintignore: -------------------------------------------------------------------------------- 1 | mink-plugin/d3.v3/* 2 | mink-plugin/jquery.miller.js/* 3 | mink-plugin/js/select2/* 4 | mink-plugin/js/date.js -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "esversion": 6, 3 | "debug" : true, 4 | "loopfunc" : true, 5 | "latedef" : false, 6 | "curly" : true, 7 | "nonstandard" : true, 8 | "asi" : true, 9 | "jquery" : true, 10 | "devel" : true, 11 | "browser" : true, 12 | "iterator": true, 13 | "globals" : { 14 | "chrome" : true 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "stylelint-use-logical" 4 | ], 5 | "rules": { 6 | "csstools/use-logical": ["always", {"except": ["float"]}] 7 | }, 8 | "ignoreFiles": [ 9 | "mink-plugin/css/select2.css" 10 | ] 11 | } -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '11' 4 | - 'node' 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to CONTRIBUTING.md 2 | 3 | First off, thank you for taking the time to contribute! 4 | 5 | All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. 6 | 7 | > And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about: 8 | > - Star the project 9 | > - Tweet/Post about it 10 | > - Refer this project in your project's README 11 | > - Mention the project at local meetups and tell your friends/colleagues 12 | 13 | 14 | ## Table of Contents 15 | 16 | - [Code of Conduct](#code-of-conduct) 17 | - [I Have a Question](#i-have-a-question) 18 | - [I Want To Contribute](#i-want-to-contribute) 19 | - [Reporting Bugs](#reporting-bugs) 20 | - [Suggesting Enhancements](#suggesting-enhancements) 21 | - [Your First Code Contribution](#your-first-code-contribution) 22 | - [Improving The Documentation](#improving-the-documentation) 23 | - [Styleguides](#styleguides) 24 | - [Commit Messages](#commit-messages) 25 | - [Join The Project Team](#join-the-project-team) 26 | 27 | 28 | ## Code of Conduct 29 | 30 | This project and everyone participating in it is governed by the 31 | [CONTRIBUTING.md Code of Conduct](blob/master/CODE_OF_CONDUCT.md). 32 | By participating, you are expected to uphold this code. Please report unacceptable behavior 33 | to <>. 34 | 35 | 36 | ## I Have a Question 37 | 38 | > If you want to ask a question, we assume that you have read the available [Documentation](). 39 | 40 | Before you ask a question, it is best to search for existing [Issues](/issues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. 41 | 42 | If you then still feel the need to ask a question and need clarification: 43 | 44 | - Open an [Issue](/issues/new). 45 | - Provide as much context as you can about what you are running into. 46 | - Provide project and platform versions (OS, browser version, etc), depending on what seems relevant. 47 | 48 | We will then take care of the issue as soon as possible. 49 | 50 | 51 | 52 | ## I Want To Contribute 53 | 54 | > ### Legal Notice 55 | > When contributing to this project, you must agree that you have authored 100% of the content, that you have the necessary rights to the content and that the content you contribute may be provided under the project license. 56 | 57 | ### Reporting Bugs 58 | 59 | 60 | #### Before Submitting a Bug Report 61 | 62 | A good bug report should not leave others needing to chase you up for more information. Therefore, we ask you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible. 63 | 64 | - Make sure that you are using the latest version. 65 | - Determine if your bug is really a bug and not an error on your side e.g. using incompatible environment components/versions (Make sure that you have read the [documentation](). If you are looking for support, you might want to check [this section](#i-have-a-question)). 66 | - To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in the [bug tracker](issues?q=label%3Abug). 67 | - Also make sure to search the Internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue. 68 | - Collect information about the bug: 69 | - Stack trace (Traceback) 70 | - OS, Platform and Version (Windows, Linux, macOS, x86, ARM) 71 | - Possibly your input and the output 72 | - Can you reliably reproduce the issue? And can you also reproduce it with older versions? 73 | 74 | 75 | #### How Do I Submit a Good Bug Report? 76 | 77 | We use GitHub issues to track bugs and errors. If you run into an issue with the project: 78 | 79 | - Open an [Issue](/issues/new). 80 | - Explain the behavior you would expect and the actual behavior. 81 | - Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to recreate the issue on their own. This usually includes your code. For good bug reports you should isolate the problem and create a reduced test case. 82 | - Provide the information you collected in the previous section. 83 | 84 | Once it is filed: 85 | 86 | - The project team will label the issue accordingly. 87 | - A team member will try to reproduce the issue with your provided steps. If there are no reproduction steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced. 88 | - If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#your-first-code-contribution). 89 | 90 | 91 | 92 | 93 | ### Suggesting Enhancements 94 | 95 | This section guides you through submitting an enhancement suggestion for CONTRIBUTING.md, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions. 96 | 97 | 98 | #### Before Submitting an Enhancement 99 | 100 | - Make sure that you are using the latest version. 101 | - Read the [documentation]() carefully and find out if the functionality is already covered, maybe by an individual configuration. 102 | - Perform a [search](/issues) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. 103 | - Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we want features that will be useful to the majority of our users and not just a small subset. If you're just targeting a minority of users, consider writing an add-on/plugin library. 104 | 105 | 106 | #### How Do I Submit a Good Enhancement Suggestion? 107 | 108 | Enhancement suggestions are tracked as [GitHub issues](/issues). 109 | 110 | - Use a **clear and descriptive title** for the issue to identify the suggestion. 111 | - Provide a **step-by-step description of the suggested enhancement** in as many details as possible. 112 | - **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you. 113 | - You may want to **include screenshots and animated GIFs** which help you demonstrate the steps or point out the part which the suggestion is related to. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux. 114 | - **Explain why this enhancement would be useful** to most CONTRIBUTING.md users. You may also want to point out the other projects that solved it better and which could serve as inspiration. 115 | 116 | 117 | ### Improving The Documentation 118 | 119 | Any improvement to the documentation is welcomed from an overhaul of the organization to a correct of the most subtle typo. 120 | 121 | 122 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Mat Kelly 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PrivacyPolicy.md: -------------------------------------------------------------------------------- 1 | # Privacy Policy 2 | 3 | Mink reads the URI you requested and submits this URI as a parameter to a 4 | Memento aggregator. A Memento TimeMap is returned and cached in your copy of 5 | Google Chrome for quick recall when you visit the page again instead of needing 6 | to query the Memento aggregator. Beyond TimeMap caching, Mink does not send 7 | URIs you visit to any service other than the Memento aggregator. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Mink logo
Integrate the Live and Archived Web Viewing Experience

3 | 4 |

5 | 6 |
7 |

8 | 9 | 10 | Mink is a Google Chrome extension that uses the [Memento protocol](https://tools.ietf.org/html/rfc7089) to indicate that a page a user is viewing on the live web has an archived copy and to give the user access to the copy. If no copies exist, the extension provides one-button access to preserve the page in various web archives and to easily view the page once it has been preserved. 11 | 12 | ## Features 13 | 14 | - Seemlessly see how well-archived a live web page is while browsing. 15 | - Using the interface, quickly navigate to past captures of the page and traverse available captures from multiple web archive. 16 | - No captures? No problem! With a single button click, Mink will submit the web page you are currently viewing to multiple web archives. 17 | - Too many captures? When the set gets large, Mink intutitively organizes the set of captures for easy, hierarchical, time-based selection. 18 | 19 | ## Installation 20 | 21 | * Go to the [Chrome Web Store](https://chrome.google.com/webstore/detail/mink/jemoalkmipibchioofomhkgimhofbbem) 22 | * Click "Add to Chrome" to install Mink. 23 | * Once installed, click the Mink icon in the Chrome toolbar to see how well-archived the current page is and navigate to the past. 24 | 25 | ## Usage 26 | 27 | The extension works by querying the archives when you browse the web. For each page you visit, Mink sends an asynchronous request to a Memento aggregator and displays the number of mementos (web pages for the URL in the archives) using a badge over the Mink/Memento icon in the browser's button bar. 28 | 29 | ### Selecting a Memento 30 | 31 | For web pages with few mementos, the dropdown menu is the most accessible way to view the memento in a web archive (e.g., [Internet Archive's Wayback Machine](http://web.archive.org/)). To do this, click the Mink button bar icon, select the date/time from the dropdown and click the "View" button. When viewing a memento, selecting the icon again will return an interface that allows you to navigate to other mementos or quickly return to the live web. 32 | 33 | ### No mementos? No problem! 34 | 35 | If no mementos exist in the archive, the extension will indicate this with a red "no mementos" icon and give the option to submit the URL to various web archives for preservation. 36 | 37 | ## Examples 38 | 1. [A niche site with few mementos](https://github.com/machawk1/Mink/wiki/Examples#use-case-1-a-niche-site-with-few-mementos) 39 | 1. [A popular site with many mementos](https://github.com/machawk1/Mink/wiki/Examples#use-case-2-a-popular-site-with-many-mementos) 40 | 41 | ## Development 42 | 43 | Chrome supports debugging extensions by loading them from the local file system. To do this, go to `Window > Extensions`, enabled the `Developer mode` switch, click the `Load unpacked` button, and select the `mink-plugin` directory in the working directory clone of this repository. 44 | 45 | For packaging the extension and releasing a new version, enter the `mink-plugin` directory, type 46 | 47 |
zip -r /where/to/store/resulting/mink.zip *
48 | 49 | ...access the [Chrome Developer Dashboard](https://chrome.google.com/webstore/developer/dashboard/) and upload the `.zip` to the Mink entry. 50 | 51 | ## Configuration 52 | 53 | Settings are available to customize Mink's functions and data retention including: 54 | 55 | * Customizing the source of the Memento aggregator Memento aggregators. 56 | * Tailoring the TimeMap caching setting for efficient querying. 57 | * Defining Ignore Lists for sites where you don't want Mink to run. 58 | 59 | To access these setting, right click on the Mink icon and select Options. 60 | 61 | 62 | 63 | # Contributing 64 | 65 | Contributions welcomed. Please see the CONTRIBUTING.md file in this repository for more information. 66 | 67 | ### Citing Project 68 | 69 | This project was originally presented at the ACM/IEEE Joint Conference on Digital Libraries ([Read the PDF](https://matkelly.com/papers/2014_dl_mink.pdf)) and can be cited as follows: 70 | 71 | > Mat Kelly, Michael L. Nelson, and Michele C. Weigle, __"Mink: Integrating the Live and Archived Web Viewing Experience Using Web Browsers and Memento,"__ In _Proceedings of the ACM/IEEE Joint Conference on Digital Libraries (JCDL)_, pages 469-470, London, England, September 2014. 72 | 73 | ```bib 74 | @INPROCEEDINGS { kelly-dl2014-mink, 75 | AUTHOR = { Mat Kelly and Michael L. Nelson and Michele C. Weigle }, 76 | TITLE = { Mink: Integrating the Live and Archived Web Viewing Experience Using Web Browsers and Memento }, 77 | BOOKTITLE = { Proceedings of the ACM/IEEE Joint Conference on Digital Libraries (JCDL) }, 78 | YEAR = { 2014 }, 79 | MONTH = { 9 }, 80 | ADDRESS = { London, UK }, 81 | PAGES = {469--470}, 82 | DOI = {10.1109/JCDL.2014.6970229} 83 | } 84 | ``` 85 | 86 | 87 | ## License 88 | 89 | MIT 90 | -------------------------------------------------------------------------------- /meta/README/minksettings_2.5.5.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/README/minksettings_2.5.5.3.png -------------------------------------------------------------------------------- /meta/allListedArchives.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/allListedArchives.psd -------------------------------------------------------------------------------- /meta/archiveNowTemplate.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/archiveNowTemplate.psd -------------------------------------------------------------------------------- /meta/chromeWebStore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/chromeWebStore.png -------------------------------------------------------------------------------- /meta/mementologo.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/mementologo.psd -------------------------------------------------------------------------------- /meta/minkLogo proto.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/minkLogo proto.psd -------------------------------------------------------------------------------- /meta/minkLogo.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/minkLogo.psd -------------------------------------------------------------------------------- /meta/minkLogo_eye.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/minkLogo_eye.psd -------------------------------------------------------------------------------- /meta/minkLogo_marvel_withPaddingForPromo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/minkLogo_marvel_withPaddingForPromo.png -------------------------------------------------------------------------------- /meta/mink_marvel.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/mink_marvel.psd -------------------------------------------------------------------------------- /meta/mink_marvel_300_noTrans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/mink_marvel_300_noTrans.png -------------------------------------------------------------------------------- /meta/promo1400x560.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/promo1400x560.png -------------------------------------------------------------------------------- /meta/promo1440x560.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/promo1440x560.psd -------------------------------------------------------------------------------- /meta/promo440x280.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/promo440x280.png -------------------------------------------------------------------------------- /meta/promo920x680.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/promo920x680.png -------------------------------------------------------------------------------- /meta/screenshots/complex/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/complex/1.png -------------------------------------------------------------------------------- /meta/screenshots/complex/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/complex/2.png -------------------------------------------------------------------------------- /meta/screenshots/complex/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/complex/3.png -------------------------------------------------------------------------------- /meta/screenshots/complex/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/complex/4.png -------------------------------------------------------------------------------- /meta/screenshots/complex/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/complex/5.png -------------------------------------------------------------------------------- /meta/screenshots/complex2.0/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/complex2.0/1.png -------------------------------------------------------------------------------- /meta/screenshots/complex2.0/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/complex2.0/2.png -------------------------------------------------------------------------------- /meta/screenshots/complex2.0/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/complex2.0/3.png -------------------------------------------------------------------------------- /meta/screenshots/complex2.0/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/complex2.0/4.png -------------------------------------------------------------------------------- /meta/screenshots/simple/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple/1.png -------------------------------------------------------------------------------- /meta/screenshots/simple/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple/2.png -------------------------------------------------------------------------------- /meta/screenshots/simple/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple/3.png -------------------------------------------------------------------------------- /meta/screenshots/simple/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple/4.png -------------------------------------------------------------------------------- /meta/screenshots/simple/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple/5.png -------------------------------------------------------------------------------- /meta/screenshots/simple/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple/6.png -------------------------------------------------------------------------------- /meta/screenshots/simple2.0/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple2.0/1.png -------------------------------------------------------------------------------- /meta/screenshots/simple2.0/1withCutout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple2.0/1withCutout.png -------------------------------------------------------------------------------- /meta/screenshots/simple2.0/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple2.0/2.png -------------------------------------------------------------------------------- /meta/screenshots/simple2.0/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple2.0/3.png -------------------------------------------------------------------------------- /meta/screenshots/simple2.0/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple2.0/4.png -------------------------------------------------------------------------------- /meta/screenshots/simple2.0/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple2.0/5.png -------------------------------------------------------------------------------- /meta/screenshots/simple2.0/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/screenshots/simple2.0/6.png -------------------------------------------------------------------------------- /meta/spinning.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/meta/spinning.psd -------------------------------------------------------------------------------- /mink-plugin/content.js: -------------------------------------------------------------------------------- 1 | /* global chrome, $, Timemap */ 2 | 3 | const debug = false 4 | 5 | // var proxy = 'http://timetravel.mementoweb.org/timemap/link/' 6 | // var memgator_proxy = 'http://memgator.cs.odu.edu/timemap/link/' 7 | // var aggregator_wdi_json = 'http://labs.mementoweb.org/timemap/json/' 8 | let memgatorHosts = [ 9 | 'https://memgator.cs.odu.edu', 10 | 'https://aggregator.matkelly.com'] 11 | 12 | // Set aggregators if specified in options 13 | chrome.storage.local.get('aggregators', function (ls) { 14 | if (ls.aggregators) { 15 | memgatorHosts = ls.aggregators 16 | } 17 | }) 18 | const memgatorJsonEndpoint = '/timemap/json/' 19 | 20 | // var aggregator_wdi_link = 'http://labs.mementoweb.org/timemap/link/' 21 | // var aggregator_diy_link = 'http://timetravel.mementoweb.org/timemap/link/' 22 | // var aggregator_diy_json = 'http://timetravel.mementoweb.org/timemap/json/' 23 | 24 | let hostI = 0 // Aggregator host to use, change in fallback 25 | 26 | let animateBrowserActionIcon = false 27 | let animationTimer 28 | 29 | // TODO: check if in ignore list 30 | // getIgnorelist() 31 | 32 | // Faux promises for enabling/disabling UI 33 | const setIgnorelisted = function () { setActiveBasedOnIgnorelistedProperty(displayUIBasedOnContext) } 34 | const setInitialStateWithChecks = function () { setActiveBasedOnDisabledProperty(setIgnorelisted) } 35 | 36 | setInitialStateWithChecks() 37 | 38 | function log (...messages) { 39 | if (inDevelopmentMode()) { 40 | for (const msg of messages) { 41 | console.log(msg) 42 | } 43 | } 44 | // console.trace() 45 | } 46 | 47 | function inDevelopmentMode () { 48 | return !('update_url' in chrome.runtime.getManifest()) 49 | } 50 | 51 | function logGroup (groupName, ...messages) { 52 | if (!debug) { return } 53 | 54 | console.group(groupName) 55 | log(messages) 56 | console.groupEnd() 57 | } 58 | 59 | function setActiveBasedOnDisabledProperty (cb) { 60 | chrome.storage.local.get('disabled', function (items) { 61 | if (items.disabled) { 62 | chrome.runtime.sendMessage({ method: 'stopWatchingRequests' }, function (response) {}) 63 | } else { 64 | cb() 65 | } 66 | }) 67 | } 68 | 69 | function setActiveBasedOnIgnorelistedProperty (cb) { 70 | chrome.storage.local.get('ignorelist', function (items) { 71 | if (!items.ignorelist) { 72 | cb() 73 | return 74 | } 75 | 76 | for (let ii = items.ignorelist.length - 1; ii >= 0; ii--) { 77 | const documentHostname = (new window.URL(document.URL)).hostname 78 | const ignorelistEntryHostname = (new window.URL(items.ignorelist[ii])).hostname 79 | if (documentHostname === ignorelistEntryHostname) { 80 | chrome.runtime.sendMessage({ method: 'stopWatchingRequestsIgnorelisted' }) 81 | return 82 | } 83 | } 84 | 85 | cb() 86 | }) 87 | } 88 | 89 | function normalDisplayUIBC (items) { 90 | const hasATimeMapInCache = items.timemaps && items.timemaps[document.URL] 91 | 92 | if (hasATimeMapInCache) { 93 | const isAMemento = items.timemaps[document.URL].datetime 94 | 95 | if (isAMemento) { 96 | chrome.runtime.sendMessage({ 97 | method: 'setBadge', 98 | text: '', 99 | iconPath: { 100 | 38: chrome.extension.getURL('images/mLogo38_isAMemento.png'), 101 | 19: chrome.extension.getURL('images/mLogo19_isAMemento.png') 102 | } 103 | }) 104 | } else { // Live web page revisited w/ a TM in cache 105 | log('Live web page revisited with a TM in cache') 106 | 107 | if (!items.timemaps[document.URL].timemap && items.timemaps[document.URL].timegate && 108 | items.timemaps[document.URL].mementos && items.timemaps[document.URL].mementos.length === 0) { 109 | // DBPedia specifies its own TG but lists no mementos/TM 110 | getTMThenCall(document.URL, function () { 111 | displayUIBasedOnStoredTimeMap(items.timemaps[document.URL]) 112 | }) 113 | } else { 114 | displayUIBasedOnStoredTimeMap(items.timemaps[document.URL]) 115 | } 116 | } 117 | } else { // Not a Memento, no TM in cache 118 | log('Not a memento, no TimeMap in cache') 119 | 120 | log(`Checking if aggregator at ${memgatorHosts[hostI]} is alive`) 121 | checkAggregatorHealthAndSet(hostI).then(_ => { 122 | log(`Getting URL ${document.URL} with aggregator ${memgatorHosts[hostI]}`) 123 | getMementos(document.URL) 124 | }) 125 | } 126 | } 127 | 128 | function checkAggregatorHealthAndSet (aggregatorIndex) { 129 | if (aggregatorIndex >= memgatorHosts.length) { 130 | log('Exhausted all aggregators') 131 | return 132 | } 133 | 134 | const url = memgatorHosts[aggregatorIndex] 135 | const timeout = 2000 136 | const aborter = new window.AbortController() 137 | const signal = aborter.signal 138 | 139 | const options = { mode: 'no-cors', signal } 140 | 141 | return window.fetch(url, options) 142 | .then(setTimeout(() => { aborter.abort() }, timeout)) 143 | .catch(error => { 144 | log(`${url} appears to be down, incrementing host counter`) 145 | log(error) 146 | hostI += 1 147 | }) 148 | } 149 | 150 | function displayUIBasedOnContext () { 151 | log('displayUIBasedOnContext()', document.URL) 152 | 153 | chrome.storage.local.get('headers', function (itemsh) { 154 | chrome.storage.local.get('timemaps', function (items) { 155 | const headers = itemsh.headers[document.URL] 156 | let mementoDateTimeHeader 157 | let linkHeaderAsString 158 | const notStoredInCache = Object.keys(items).length === 0 || !items.timemaps.hasOwnProperty(document.URL) 159 | /* 160 | special consideration deets.tabId will be -1 if the request is not related to a tab 161 | case 1: no link header, no datetime 162 | case 2: link header, no datetime 163 | case 3: link header, datetime 164 | */ 165 | log(headers) 166 | for (let headerI = 0; headerI < headers.length; headerI++) { 167 | // First line: previously deleting attribute (link header) leaves null 168 | if (headers[headerI] == null) { continue } 169 | if (headers[headerI].name.toLowerCase() === 'memento-datetime') { 170 | mementoDateTimeHeader = headers[headerI].value 171 | } else if (headers[headerI].name.toLowerCase() === 'link') { 172 | linkHeaderAsString = headers[headerI].value 173 | } 174 | } 175 | let tm 176 | if (!linkHeaderAsString && !mementoDateTimeHeader) { // Case 1 177 | normalDisplayUIBC(items) 178 | log('No linkheader and no memento date time header') 179 | } else if (linkHeaderAsString && !mementoDateTimeHeader) { // Case 2 180 | logGroup('Headers Present', '✅ Link', '❌ Memento-Datetime') 181 | 182 | if (notStoredInCache) { 183 | let specifiedTimegate = false 184 | let specifiedTimemap = false 185 | log('Adding Link header specified to cache') 186 | 187 | tm = new Timemap(linkHeaderAsString) 188 | 189 | log(`TimeGate header value: ${tm.timegate}`) 190 | 191 | if (tm.timegate) { // Specified own TimeGate, query this 192 | logGroup('Headers Present', '✅ TimeGate') 193 | 194 | specifiedTimegate = true 195 | 196 | chrome.runtime.sendMessage({ 197 | method: 'findTMURI', timegate: tm.timegate 198 | }) 199 | } 200 | 201 | if (tm.timemap && !specifiedTimegate) { // e.g., w3c wiki 202 | logGroup('Headers Present', '✅ TimeMap', '❌ TimeGate') 203 | 204 | chrome.runtime.sendMessage({ 205 | method: 'fetchTimeMap', value: tm.timemap 206 | }) 207 | specifiedTimemap = true 208 | } 209 | 210 | if (!specifiedTimegate && !specifiedTimemap) { 211 | // Case for when there is a link but nothing about memento is there 212 | normalDisplayUIBC(items) 213 | } 214 | } else { 215 | normalDisplayUIBC(items) 216 | } 217 | } else if (mementoDateTimeHeader) { // Case 3 218 | if (notStoredInCache) { 219 | tm = new Timemap(linkHeaderAsString) 220 | tm.datetime = mementoDateTimeHeader 221 | 222 | log('Case 3: Link header and datetime', tm) 223 | 224 | chrome.runtime.sendMessage({ 225 | method: 'setTimemapInStorageAndCall', tm, url: document.URL 226 | }) 227 | } else { 228 | log('Case 3: Link header, datetime in cache') 229 | 230 | normalDisplayUIBC(items) 231 | } 232 | } 233 | }) 234 | }) 235 | } 236 | 237 | function getTMThenCall (uri, cb) { 238 | $.ajax({ 239 | url: uri 240 | }).done(function (data, textStatus, xhr) { 241 | let tm = new Timemap(xhr.getResponseHeader('Link')) 242 | if (tm.timemap) { 243 | chrome.runtime.sendMessage({ 244 | method: 'fetchTimeMap', 245 | value: tm.timemap 246 | }, cb) 247 | return 248 | } 249 | 250 | if (tm.mementos && tm.mementos.length < 3 && tm.timegate) { 251 | const nextURI = tm.timegate 252 | tm = null 253 | getTMThenCall(nextURI, cb) 254 | } else { 255 | cb() 256 | } 257 | }) 258 | } 259 | 260 | function displayUIBasedOnStoredTimeMap (tmDataIn) { 261 | log('displayUIBasedOnStoredTimeMap()') 262 | chrome.runtime.sendMessage({ 263 | method: 'setTMData', 264 | value: tmDataIn 265 | }) 266 | 267 | log(tmDataIn) 268 | const mementoCountFromCache = tmDataIn.mementos.list.length 269 | chrome.runtime.sendMessage({ method: 'setBadgeText', value: '' + mementoCountFromCache }) 270 | } 271 | 272 | function getIgnorelist (cb) { 273 | const callbackArguments = arguments 274 | chrome.storage.local.get('ignorelist', function (items) { 275 | log('Current ignore list: ', items) 276 | 277 | if (!cb) { 278 | log('no callback specified for getIgnorelist();') 279 | return 280 | } 281 | 282 | cb(items, callbackArguments[1]) 283 | }) 284 | } 285 | 286 | function addToIgnorelist (currentIgnorelist, uriIn) { 287 | const uri = uriIn 288 | const save = { 289 | ignorelist: null 290 | } 291 | 292 | if ($.isEmptyObject(currentIgnorelist)) { 293 | save.ignorelist = [] 294 | } else { 295 | save.ignorelist = currentIgnorelist.ignorelist 296 | } 297 | 298 | if (!save.ignorelist) { 299 | save.ignorelist = [] 300 | } 301 | 302 | // TODO (#191): Normalize uriIn? 303 | 304 | // Check if URI is already in ignore list before adding 305 | if (save.ignorelist.indexOf(uriIn) > -1) { 306 | log('URI already in ignorelist', save.ignorelist) 307 | 308 | return 309 | } 310 | 311 | log('Previous ignore list contents:', save.ignorelist) 312 | save.ignorelist.push(uriIn) 313 | log('Current ignore list contents:', save.ignorelist) 314 | 315 | chrome.storage.local.set(save, 316 | function () { 317 | log(`Done adding ${uri} to ignore list. Prev ignore list:`, currentIgnorelist) 318 | 319 | getIgnorelist() 320 | } 321 | ) 322 | } 323 | 324 | chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { 325 | log(`in listener with ${request.method}`) 326 | 327 | if (request.method === 'addToIgnorelist') { 328 | getIgnorelist(addToIgnorelist, request.uri) // And add uri 329 | return 330 | } 331 | 332 | if (request.method === 'stopAnimatingBrowserActionIcon') { 333 | clearTimeout(animationTimer) 334 | animateBrowserActionIcon = false 335 | return 336 | } 337 | 338 | if (request.method === 'displayUIStoredTM') { 339 | log('got message displayUIStoredTM()') 340 | 341 | displayUIBasedOnStoredTimeMap(request.data) 342 | } 343 | 344 | if (request.method === 'startTimer') { 345 | log('Got startTimer') 346 | 347 | chrome.runtime.sendMessage({ 348 | method: 'setBadge', 349 | text: '', 350 | iconPath: { 351 | 38: clockIcons38[clockIcons38.length - 1], 352 | 19: clockIcons19[clockIcons19.length - 1] 353 | } 354 | }) 355 | chrome.runtime.sendMessage({ method: 'setBadgeText', text: '' }, function (response) { 356 | }) 357 | animateBrowserActionIcon = true 358 | setTimeout(animatePageActionIcon, 500) 359 | } 360 | 361 | if (request.method === 'stopAnimatingBrowserActionIcon') { 362 | clearTimeout(animationTimer) 363 | animateBrowserActionIcon = false 364 | return 365 | } 366 | 367 | if (request.method === 'showArchiveNowUI') { 368 | return 369 | } 370 | 371 | if (request.method === 'displayThisMementoData') { 372 | // Parse the data received from the secure source and display the number of mementos 373 | if (request.data.timemap_uri) { // e.g., twitter.com 374 | chrome.runtime.sendMessage({ 375 | method: 'fetchSecureSitesTimeMap', 376 | value: request.data.timemap_uri.json_format 377 | }, function (response) { 378 | log('We have a response!') // This will not occur due to async exec in mink.js 379 | }) 380 | return 381 | } 382 | return 383 | } 384 | 385 | if (request.method === 'displayUI') { 386 | log(request.timegate, request.timemap, request.uri, '-----', 'no special handling, calling fallthrough') 387 | 388 | displayUIBasedOnContext() 389 | } 390 | 391 | if (request.method === 'showViewingMementoInterface') { 392 | log('We will show the "return to live web" interface but it is not implemented yet') 393 | } 394 | 395 | if (request.method === 'clearLinkHeaderAndDisplayUI') { 396 | // This occurs when a previous attempt to fetch a TimeGate specified in a Link header fails but allows 397 | // some functionality to proceed instead of failing hard. See #308 398 | chrome.storage.local.get('headers', function (storedHeaders) { 399 | let headers = storedHeaders.headers[document.URL] 400 | console.log(storedHeaders) 401 | for (let header in headers) { 402 | if (headers[header].name.toUpperCase() === 'LINK') { 403 | delete headers[header] 404 | break 405 | } 406 | } 407 | storedHeaders.headers[document.URL] = headers 408 | console.log(storedHeaders) 409 | 410 | chrome.storage.local.set(storedHeaders, displayUIBasedOnContext) 411 | }) 412 | } 413 | }) 414 | 415 | function getMementos (uri) { 416 | log('getMementosWithTimemap()') 417 | const timemapLocation = `${memgatorHosts[hostI]}${memgatorJsonEndpoint}${uri}` 418 | 419 | chrome.runtime.sendMessage({ 420 | method: 'setBadge', 421 | text: '', 422 | iconPath: { 423 | 38: clockIcons38[clockIcons38.length - 1], 424 | 19: clockIcons19[clockIcons19.length - 1] 425 | } 426 | }) 427 | 428 | chrome.runtime.sendMessage({ method: 'setBadgeText', text: '' }, function (response) {}) 429 | 430 | animateBrowserActionIcon = true 431 | 432 | setTimeout(animatePageActionIcon, 500) 433 | 434 | log('in getMementos, sending "fetchTimeMap" message') 435 | chrome.runtime.sendMessage({ 436 | method: 'fetchTimeMap', 437 | value: timemapLocation 438 | }) 439 | } 440 | 441 | const clockIcons38 = [chrome.extension.getURL('images/mementoLogos/mLogo38_7.5.png'), 442 | chrome.extension.getURL('images/mementoLogos/mLogo38_15.png'), 443 | chrome.extension.getURL('images/mementoLogos/mLogo38_22.5.png'), 444 | chrome.extension.getURL('images/mementoLogos/mLogo38_30.png'), 445 | chrome.extension.getURL('images/mementoLogos/mLogo38_37.5.png'), 446 | chrome.extension.getURL('images/mementoLogos/mLogo38_45.png'), 447 | chrome.extension.getURL('images/mementoLogos/mLogo38_52.5.png'), 448 | chrome.extension.getURL('images/mementoLogos/mLogo38_60.png')] 449 | const clockIcons19 = [chrome.extension.getURL('images/mementoLogos/mLogo19_7.5.png'), 450 | chrome.extension.getURL('images/mementoLogos/mLogo19_15.png'), 451 | chrome.extension.getURL('images/mementoLogos/mLogo19_22.5.png'), 452 | chrome.extension.getURL('images/mementoLogos/mLogo19_30.png'), 453 | chrome.extension.getURL('images/mementoLogos/mLogo19_37.5.png'), 454 | chrome.extension.getURL('images/mementoLogos/mLogo19_45.png'), 455 | chrome.extension.getURL('images/mementoLogos/mLogo19_52.5.png'), 456 | chrome.extension.getURL('images/mementoLogos/mLogo19_60.png')] 457 | let iteration = clockIcons38.length - 1 458 | 459 | function animatePageActionIcon () { 460 | if (!animateBrowserActionIcon) { 461 | clearTimeout(animationTimer) 462 | return 463 | } 464 | chrome.runtime.sendMessage({ 465 | method: 'setBadge', 466 | text: '', 467 | iconPath: { '38': clockIcons38[iteration], '19': clockIcons19[iteration] } 468 | }) 469 | iteration-- 470 | 471 | if (iteration < 0) { iteration = clockIcons38.length - 1 } 472 | animationTimer = setTimeout(animatePageActionIcon, 250) 473 | // TODO: know when to stop this 474 | } 475 | -------------------------------------------------------------------------------- /mink-plugin/css/minkui.css: -------------------------------------------------------------------------------- 1 | #minkWrapper { 2 | margin: 0; 3 | padding: 0; 4 | font-family: Helvetica, Arial, sans-serif; 5 | font-size: 12px; 6 | text-align: start; 7 | } 8 | 9 | #minkuiX { 10 | inline-size: 100%; 11 | block-size: 80px; 12 | background-color: #eef; 13 | margin: 0; 14 | inset-block-start: 0; 15 | inset-inline-start: 0; 16 | position: fixed; 17 | padding: 5px; 18 | z-index:2147483647 !important; 19 | line-height: 1.1em; 20 | color: #000; 21 | font-size: 13px; 22 | font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; 23 | text-align: start; 24 | } 25 | 26 | #minkuiX #minkLogo { 27 | block-size: 100%; 28 | float: left; 29 | z-index: 2; 30 | position: relative; 31 | } 32 | 33 | #minkuiX #minkStatus { 34 | inline-size: 100%; 35 | position: absolute; 36 | inset-block-end: 0; 37 | inset-inline-start: 0; 38 | margin: 0; 39 | padding: 0; 40 | background-color: #ccf; 41 | z-index: 1; 42 | block-size: 1.2em; 43 | border-block-start: 1px solid #bbf; 44 | border-block-end: 2px solid #aaf; 45 | } 46 | 47 | #minkuiX #minkStatus ul { 48 | list-style-type: none; 49 | margin: 0; 50 | padding: 0; 51 | inline-size: 700px; 52 | } 53 | 54 | #minkuiX #minkStatus li { 55 | inline-size: 100px; 56 | float: left; 57 | text-align: center; 58 | vertical-align: middle; 59 | padding: 0; 60 | margin: 0; 61 | } 62 | #minkuiX #minkStatus li#options { 63 | position: absolute; 64 | inset-inline-end: 0; 65 | } 66 | 67 | #minkuiX #minkStatus li#options:hover { 68 | cursor: pointer; 69 | } 70 | 71 | #minkuiX #minkStatus li span { 72 | border-radius: 10px; 73 | padding: 2px 8px 2px 8px; 74 | margin: 2px 0px 0px 0px; 75 | } 76 | 77 | #minkuiX #minkStatus li.active { 78 | background-color: white; 79 | font-weight: bold; 80 | border-radius: 10px; 81 | } 82 | #minkuiX #minkStatus li span:hover { 83 | cursor: pointer; 84 | text-decoration: underline; 85 | } 86 | #minkuiX #minkStatus li#stepsTitle span:hover { 87 | cursor: default; 88 | text-decoration: none; 89 | } 90 | #minkuiX #minkStatus li#stepsTitle { 91 | inline-size: 200px; 92 | text-align: end; 93 | } 94 | 95 | h1 { 96 | font-size: 14px; 97 | font-family: 'Futura', 'Century Gothic', AppleGothic, sans-serif; 98 | } 99 | 100 | #minkuiX .noMementos { 101 | display: none; 102 | } 103 | 104 | .archiveNowInterface { 105 | inline-size: 50px; 106 | block-size: 50px; 107 | vertical-align: top; 108 | position: relative; 109 | z-index: 5; 110 | } 111 | 112 | #goBackButton { 113 | inline-size: auto; 114 | block-size: 1.75em; 115 | margin-inline-start: 3.0em; 116 | } 117 | 118 | .hidden { 119 | display: none; 120 | } 121 | 122 | .archiveLogo { 123 | opacity: 0.75; 124 | } 125 | 126 | .archiveLogo:hover { 127 | cursor: pointer; 128 | opacity: 1.0; 129 | } 130 | 131 | #archivelogo_ala { 132 | margin-inline-start: 1.0em; 133 | } 134 | 135 | #drilldownBox { 136 | border: 1px solid #999; 137 | padding: 2px; 138 | z-index: 1; 139 | font-family: Arial, sans-serif; 140 | background-color: white; 141 | margin-inline-start: 210px; 142 | inset-block-start: 91px; 143 | position: absolute; 144 | border-block-start: 5px solid #aaf; 145 | border-block-bottom: 5px solid #aaf; 146 | } 147 | 148 | #drilldownBox ul { 149 | list-style-type: none; 150 | inline-size: 100px; 151 | float: left; 152 | padding: 0; 153 | background-color: white; 154 | max-block-size: 500px; 155 | overflow-x: hidden; 156 | overflow-y: auto; 157 | margin-block-start: 0; 158 | margin-block-end: 0; 159 | } 160 | 161 | #drilldownBox ul li, #drilldownBox ul li a { 162 | list-style-type: none; 163 | padding: 0; 164 | margin: 0; 165 | inline-size: 90px; 166 | text-decoration: none; 167 | color: inherit; 168 | } 169 | 170 | #drilldownBox ul li:hover { 171 | background-color: #ddddff; 172 | cursor: pointer; 173 | } 174 | 175 | #drilldownBox ul li.selectedOption { 176 | background-color: #ddddff; 177 | border-inline-end: 3px solid #aaf; 178 | } 179 | 180 | #drilldownBox ul li span.memCount { 181 | float: inline-end; 182 | font-family: Monaco, Courier, sans-serif; 183 | padding: 0px 3px; 184 | margin-inline-end: 5px; 185 | border-radius: 2px; 186 | line-height: 10px; 187 | } 188 | 189 | .disabled { 190 | color: #999; 191 | } 192 | 193 | button.viewingMemento { 194 | text-decoration: underline; 195 | } 196 | 197 | button#backToLiveWeb { 198 | margin-inline-end: 1.5em; 199 | } 200 | -------------------------------------------------------------------------------- /mink-plugin/css/options.css: -------------------------------------------------------------------------------- 1 | html {scroll-behavior: smooth;} 2 | 3 | body { 4 | margin: 0; 5 | padding: 0; 6 | color: #222; 7 | font-size: 14px; 8 | } 9 | 10 | nav { 11 | background: linear-gradient(180deg, #fff 0%, #eee 10%); 12 | background-color: #eeeeee; 13 | inline-size: 25%; 14 | block-size: 100%; 15 | padding-block-start: 5%; 16 | position: fixed; 17 | inset-block-start: 100px; 18 | } 19 | 20 | nav ul { 21 | list-style-type: none; 22 | padding-inline-start: 1.0em; 23 | text-align: start; 24 | } 25 | 26 | nav ul li { 27 | block-size: 15%; 28 | padding-inline-end: 5%; 29 | margin-block-end: 1.0em; 30 | } 31 | 32 | nav ul li a { 33 | font-size: 1.2em; 34 | text-decoration: none; 35 | color: #333; 36 | } 37 | 38 | nav ul li a:hover { 39 | color: #00f; 40 | cursor: pointer; 41 | } 42 | 43 | nav ul li p { 44 | font-size: 1.0em; 45 | margin: 0; 46 | padding: 0; 47 | color: #555; 48 | font-family: Times, serif; 49 | font-style: italic; 50 | } 51 | 52 | #logo { 53 | inline-size: 25%; 54 | text-align: center; 55 | position: fixed; 56 | inset-block-start: 10px; 57 | inset-inline-start: 10px; 58 | z-index: 2; 59 | } 60 | 61 | #logo img { 62 | inline-size: 128px; 63 | } 64 | 65 | main { 66 | margin-inline-start: 26%; 67 | } 68 | 69 | h1, h3 { 70 | font-weight: normal; 71 | margin: 0; 72 | padding: 0; 73 | } 74 | 75 | h3 { 76 | font-size: 1.3em; 77 | font-family: Arial, sans-serif; 78 | } 79 | 80 | p { 81 | font-family: Times, sans-serif; 82 | } 83 | 84 | 85 | main { 86 | margin-block-end: 100.0em; 87 | } 88 | 89 | main h3 { 90 | margin-block-start: 1.0em; 91 | } 92 | 93 | main section > p { 94 | background-color: #f7f7f7; 95 | padding: 5px; 96 | margin-block-start: 0; 97 | border: 1px solid #f0f0f0; 98 | margin-inline-end: 1.0em; 99 | } 100 | 101 | fieldset { 102 | margin-inline-end: 1.0em; 103 | } 104 | 105 | .glyphicon-plus-sign { 106 | font-size: 18px; 107 | } 108 | 109 | .nevermind { 110 | color: white; 111 | background-color: red; 112 | font-weight: bold; 113 | margin-inline-start: 1.0em; 114 | inline-size: 1.0em; 115 | block-size: 1.0em; 116 | border-radius: 15px; 117 | } 118 | 119 | ul { 120 | margin-inline-start: 0; 121 | padding-inline-start: 0; 122 | list-style-type: none; 123 | } 124 | 125 | li { 126 | vertical-align: middle; 127 | } 128 | 129 | button { 130 | margin-inline-end: 0.5em; 131 | } 132 | 133 | .strike span { 134 | text-decoration: line-through; 135 | background-color: #ffdddd 136 | } 137 | 138 | button#save { 139 | color: blue; 140 | } 141 | 142 | button#save.disabled { 143 | color: #999; 144 | } 145 | 146 | #add { 147 | float: inline-end; 148 | } 149 | span.note { 150 | color: #999; 151 | font-size: 0.8em; 152 | padding-inline-start: 1.0em; 153 | font-style: italic; 154 | } -------------------------------------------------------------------------------- /mink-plugin/css/select2.css: -------------------------------------------------------------------------------- 1 | .select2-container { 2 | box-sizing: border-box; 3 | display: inline-block; 4 | margin: 0; 5 | position: relative; 6 | vertical-align: middle; } 7 | .select2-container .select2-selection--single { 8 | box-sizing: border-box; 9 | cursor: pointer; 10 | display: block; 11 | height: 28px; 12 | user-select: none; 13 | -webkit-user-select: none; } 14 | .select2-container .select2-selection--single .select2-selection__rendered { 15 | display: block; 16 | padding-left: 8px; 17 | padding-right: 20px; 18 | overflow: hidden; 19 | text-overflow: ellipsis; 20 | white-space: nowrap; } 21 | .select2-container .select2-selection--single .select2-selection__clear { 22 | position: relative; } 23 | .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { 24 | padding-right: 8px; 25 | padding-left: 20px; } 26 | .select2-container .select2-selection--multiple { 27 | box-sizing: border-box; 28 | cursor: pointer; 29 | display: block; 30 | min-height: 32px; 31 | user-select: none; 32 | -webkit-user-select: none; } 33 | .select2-container .select2-selection--multiple .select2-selection__rendered { 34 | display: inline-block; 35 | overflow: hidden; 36 | padding-left: 8px; 37 | text-overflow: ellipsis; 38 | white-space: nowrap; } 39 | .select2-container .select2-search--inline { 40 | float: left; } 41 | .select2-container .select2-search--inline .select2-search__field { 42 | box-sizing: border-box; 43 | border: none; 44 | font-size: 100%; 45 | margin-top: 5px; 46 | padding: 0; } 47 | .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { 48 | -webkit-appearance: none; } 49 | 50 | .select2-dropdown { 51 | background-color: white; 52 | border: 1px solid #aaa; 53 | border-radius: 4px; 54 | box-sizing: border-box; 55 | display: block; 56 | position: absolute; 57 | left: -100000px; 58 | width: 100%; 59 | z-index: 1051; } 60 | 61 | .select2-results { 62 | display: block; } 63 | 64 | .select2-results__options { 65 | list-style: none; 66 | margin: 0; 67 | padding: 0; } 68 | 69 | .select2-results__option { 70 | padding: 6px; 71 | user-select: none; 72 | -webkit-user-select: none; } 73 | .select2-results__option[aria-selected] { 74 | cursor: pointer; } 75 | 76 | .select2-container--open .select2-dropdown { 77 | left: 0; } 78 | 79 | .select2-container--open .select2-dropdown--above { 80 | border-bottom: none; 81 | border-bottom-left-radius: 0; 82 | border-bottom-right-radius: 0; } 83 | 84 | .select2-container--open .select2-dropdown--below { 85 | border-top: none; 86 | border-top-left-radius: 0; 87 | border-top-right-radius: 0; } 88 | 89 | .select2-search--dropdown { 90 | display: block; 91 | padding: 4px; } 92 | .select2-search--dropdown .select2-search__field { 93 | padding: 4px; 94 | width: 100%; 95 | box-sizing: border-box; } 96 | .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { 97 | -webkit-appearance: none; } 98 | .select2-search--dropdown.select2-search--hide { 99 | display: none; } 100 | 101 | .select2-close-mask { 102 | border: 0; 103 | margin: 0; 104 | padding: 0; 105 | display: block; 106 | position: fixed; 107 | left: 0; 108 | top: 0; 109 | min-height: 100%; 110 | min-width: 100%; 111 | height: auto; 112 | width: auto; 113 | opacity: 0; 114 | z-index: 99; 115 | background-color: #fff; 116 | filter: alpha(opacity=0); } 117 | 118 | .select2-hidden-accessible { 119 | border: 0 !important; 120 | clip: rect(0 0 0 0) !important; 121 | -webkit-clip-path: inset(50%) !important; 122 | clip-path: inset(50%) !important; 123 | height: 1px !important; 124 | overflow: hidden !important; 125 | padding: 0 !important; 126 | position: absolute !important; 127 | width: 1px !important; 128 | white-space: nowrap !important; } 129 | 130 | .select2-container--default .select2-selection--single { 131 | background-color: #fff; 132 | border: 1px solid #aaa; 133 | border-radius: 4px; } 134 | .select2-container--default .select2-selection--single .select2-selection__rendered { 135 | color: #444; 136 | line-height: 28px; } 137 | .select2-container--default .select2-selection--single .select2-selection__clear { 138 | cursor: pointer; 139 | float: right; 140 | font-weight: bold; } 141 | .select2-container--default .select2-selection--single .select2-selection__placeholder { 142 | color: #999; } 143 | .select2-container--default .select2-selection--single .select2-selection__arrow { 144 | height: 26px; 145 | position: absolute; 146 | top: 1px; 147 | right: 1px; 148 | width: 20px; } 149 | .select2-container--default .select2-selection--single .select2-selection__arrow b { 150 | border-color: #888 transparent transparent transparent; 151 | border-style: solid; 152 | border-width: 5px 4px 0 4px; 153 | height: 0; 154 | left: 50%; 155 | margin-left: -4px; 156 | margin-top: -2px; 157 | position: absolute; 158 | top: 50%; 159 | width: 0; } 160 | 161 | .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { 162 | float: left; } 163 | 164 | .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { 165 | left: 1px; 166 | right: auto; } 167 | 168 | .select2-container--default.select2-container--disabled .select2-selection--single { 169 | background-color: #eee; 170 | cursor: default; } 171 | .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { 172 | display: none; } 173 | 174 | .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { 175 | border-color: transparent transparent #888 transparent; 176 | border-width: 0 4px 5px 4px; } 177 | 178 | .select2-container--default .select2-selection--multiple { 179 | background-color: white; 180 | border: 1px solid #aaa; 181 | border-radius: 4px; 182 | cursor: text; } 183 | .select2-container--default .select2-selection--multiple .select2-selection__rendered { 184 | box-sizing: border-box; 185 | list-style: none; 186 | margin: 0; 187 | padding: 0 5px; 188 | width: 100%; } 189 | .select2-container--default .select2-selection--multiple .select2-selection__rendered li { 190 | list-style: none; } 191 | .select2-container--default .select2-selection--multiple .select2-selection__clear { 192 | cursor: pointer; 193 | float: right; 194 | font-weight: bold; 195 | margin-top: 5px; 196 | margin-right: 10px; 197 | padding: 1px; } 198 | .select2-container--default .select2-selection--multiple .select2-selection__choice { 199 | background-color: #e4e4e4; 200 | border: 1px solid #aaa; 201 | border-radius: 4px; 202 | cursor: default; 203 | float: left; 204 | margin-right: 5px; 205 | margin-top: 5px; 206 | padding: 0 5px; } 207 | .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { 208 | color: #999; 209 | cursor: pointer; 210 | display: inline-block; 211 | font-weight: bold; 212 | margin-right: 2px; } 213 | .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { 214 | color: #333; } 215 | 216 | .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { 217 | float: right; } 218 | 219 | .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { 220 | margin-left: 5px; 221 | margin-right: auto; } 222 | 223 | .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { 224 | margin-left: 2px; 225 | margin-right: auto; } 226 | 227 | .select2-container--default.select2-container--focus .select2-selection--multiple { 228 | border: solid black 1px; 229 | outline: 0; } 230 | 231 | .select2-container--default.select2-container--disabled .select2-selection--multiple { 232 | background-color: #eee; 233 | cursor: default; } 234 | 235 | .select2-container--default.select2-container--disabled .select2-selection__choice__remove { 236 | display: none; } 237 | 238 | .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { 239 | border-top-left-radius: 0; 240 | border-top-right-radius: 0; } 241 | 242 | .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { 243 | border-bottom-left-radius: 0; 244 | border-bottom-right-radius: 0; } 245 | 246 | .select2-container--default .select2-search--dropdown .select2-search__field { 247 | border: 1px solid #aaa; } 248 | 249 | .select2-container--default .select2-search--inline .select2-search__field { 250 | background: transparent; 251 | border: none; 252 | outline: 0; 253 | box-shadow: none; 254 | -webkit-appearance: textfield; } 255 | 256 | .select2-container--default .select2-results > .select2-results__options { 257 | max-height: 200px; 258 | overflow-y: auto; } 259 | 260 | .select2-container--default .select2-results__option[role=group] { 261 | padding: 0; } 262 | 263 | .select2-container--default .select2-results__option[aria-disabled=true] { 264 | color: #999; } 265 | 266 | .select2-container--default .select2-results__option[aria-selected=true] { 267 | background-color: #ddd; } 268 | 269 | .select2-container--default .select2-results__option .select2-results__option { 270 | padding-left: 1em; } 271 | .select2-container--default .select2-results__option .select2-results__option .select2-results__group { 272 | padding-left: 0; } 273 | .select2-container--default .select2-results__option .select2-results__option .select2-results__option { 274 | margin-left: -1em; 275 | padding-left: 2em; } 276 | .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { 277 | margin-left: -2em; 278 | padding-left: 3em; } 279 | .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { 280 | margin-left: -3em; 281 | padding-left: 4em; } 282 | .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { 283 | margin-left: -4em; 284 | padding-left: 5em; } 285 | .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { 286 | margin-left: -5em; 287 | padding-left: 6em; } 288 | 289 | .select2-container--default .select2-results__option--highlighted[aria-selected] { 290 | background-color: #5897fb; 291 | color: white; } 292 | 293 | .select2-container--default .select2-results__group { 294 | cursor: default; 295 | display: block; 296 | padding: 6px; } 297 | 298 | .select2-container--classic .select2-selection--single { 299 | background-color: #f7f7f7; 300 | border: 1px solid #aaa; 301 | border-radius: 4px; 302 | outline: 0; 303 | background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); 304 | background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); 305 | background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); 306 | background-repeat: repeat-x; 307 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } 308 | .select2-container--classic .select2-selection--single:focus { 309 | border: 1px solid #5897fb; } 310 | .select2-container--classic .select2-selection--single .select2-selection__rendered { 311 | color: #444; 312 | line-height: 28px; } 313 | .select2-container--classic .select2-selection--single .select2-selection__clear { 314 | cursor: pointer; 315 | float: right; 316 | font-weight: bold; 317 | margin-right: 10px; } 318 | .select2-container--classic .select2-selection--single .select2-selection__placeholder { 319 | color: #999; } 320 | .select2-container--classic .select2-selection--single .select2-selection__arrow { 321 | background-color: #ddd; 322 | border: none; 323 | border-left: 1px solid #aaa; 324 | border-top-right-radius: 4px; 325 | border-bottom-right-radius: 4px; 326 | height: 26px; 327 | position: absolute; 328 | top: 1px; 329 | right: 1px; 330 | width: 20px; 331 | background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); 332 | background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); 333 | background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); 334 | background-repeat: repeat-x; 335 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } 336 | .select2-container--classic .select2-selection--single .select2-selection__arrow b { 337 | border-color: #888 transparent transparent transparent; 338 | border-style: solid; 339 | border-width: 5px 4px 0 4px; 340 | height: 0; 341 | left: 50%; 342 | margin-left: -4px; 343 | margin-top: -2px; 344 | position: absolute; 345 | top: 50%; 346 | width: 0; } 347 | 348 | .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { 349 | float: left; } 350 | 351 | .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { 352 | border: none; 353 | border-right: 1px solid #aaa; 354 | border-radius: 0; 355 | border-top-left-radius: 4px; 356 | border-bottom-left-radius: 4px; 357 | left: 1px; 358 | right: auto; } 359 | 360 | .select2-container--classic.select2-container--open .select2-selection--single { 361 | border: 1px solid #5897fb; } 362 | .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { 363 | background: transparent; 364 | border: none; } 365 | .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { 366 | border-color: transparent transparent #888 transparent; 367 | border-width: 0 4px 5px 4px; } 368 | 369 | .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { 370 | border-top: none; 371 | border-top-left-radius: 0; 372 | border-top-right-radius: 0; 373 | background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); 374 | background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); 375 | background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); 376 | background-repeat: repeat-x; 377 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } 378 | 379 | .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { 380 | border-bottom: none; 381 | border-bottom-left-radius: 0; 382 | border-bottom-right-radius: 0; 383 | background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); 384 | background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); 385 | background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); 386 | background-repeat: repeat-x; 387 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } 388 | 389 | .select2-container--classic .select2-selection--multiple { 390 | background-color: white; 391 | border: 1px solid #aaa; 392 | border-radius: 4px; 393 | cursor: text; 394 | outline: 0; } 395 | .select2-container--classic .select2-selection--multiple:focus { 396 | border: 1px solid #5897fb; } 397 | .select2-container--classic .select2-selection--multiple .select2-selection__rendered { 398 | list-style: none; 399 | margin: 0; 400 | padding: 0 5px; } 401 | .select2-container--classic .select2-selection--multiple .select2-selection__clear { 402 | display: none; } 403 | .select2-container--classic .select2-selection--multiple .select2-selection__choice { 404 | background-color: #e4e4e4; 405 | border: 1px solid #aaa; 406 | border-radius: 4px; 407 | cursor: default; 408 | float: left; 409 | margin-right: 5px; 410 | margin-top: 5px; 411 | padding: 0 5px; } 412 | .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { 413 | color: #888; 414 | cursor: pointer; 415 | display: inline-block; 416 | font-weight: bold; 417 | margin-right: 2px; } 418 | .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { 419 | color: #555; } 420 | 421 | .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { 422 | float: right; 423 | margin-left: 5px; 424 | margin-right: auto; } 425 | 426 | .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { 427 | margin-left: 2px; 428 | margin-right: auto; } 429 | 430 | .select2-container--classic.select2-container--open .select2-selection--multiple { 431 | border: 1px solid #5897fb; } 432 | 433 | .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { 434 | border-top: none; 435 | border-top-left-radius: 0; 436 | border-top-right-radius: 0; } 437 | 438 | .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { 439 | border-bottom: none; 440 | border-bottom-left-radius: 0; 441 | border-bottom-right-radius: 0; } 442 | 443 | .select2-container--classic .select2-search--dropdown .select2-search__field { 444 | border: 1px solid #aaa; 445 | outline: 0; } 446 | 447 | .select2-container--classic .select2-search--inline .select2-search__field { 448 | outline: 0; 449 | box-shadow: none; } 450 | 451 | .select2-container--classic .select2-dropdown { 452 | background-color: white; 453 | border: 1px solid transparent; } 454 | 455 | .select2-container--classic .select2-dropdown--above { 456 | border-bottom: none; } 457 | 458 | .select2-container--classic .select2-dropdown--below { 459 | border-top: none; } 460 | 461 | .select2-container--classic .select2-results > .select2-results__options { 462 | max-height: 200px; 463 | overflow-y: auto; } 464 | 465 | .select2-container--classic .select2-results__option[role=group] { 466 | padding: 0; } 467 | 468 | .select2-container--classic .select2-results__option[aria-disabled=true] { 469 | color: grey; } 470 | 471 | .select2-container--classic .select2-results__option--highlighted[aria-selected] { 472 | background-color: #3875d7; 473 | color: white; } 474 | 475 | .select2-container--classic .select2-results__group { 476 | cursor: default; 477 | display: block; 478 | padding: 6px; } 479 | 480 | .select2-container--classic.select2-container--open .select2-dropdown { 481 | border-color: #5897fb; } 482 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/css/font-awesome.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.0.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857142858em;text-align:center}.fa-ul{padding-left:0;margin-left:2.142857142857143em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;top:.14285714285714285em;text-align:center}.fa-li.fa-lg{left:-1.8571428571428572em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-asc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-desc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-reply-all:before{content:"\f122"}.fa-mail-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"} -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/font-awesome-4.0.3/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/font-awesome-4.0.3/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/font-awesome-4.0.3/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/font-awesome-4.0.3/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .@{fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font-family: FontAwesome; 7 | font-style: normal; 8 | font-weight: normal; 9 | line-height: 1; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | } 13 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "spinning"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: -@fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon-rotate(@degrees, @rotation) { 5 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); 6 | -webkit-transform: rotate(@degrees); 7 | -moz-transform: rotate(@degrees); 8 | -ms-transform: rotate(@degrees); 9 | -o-transform: rotate(@degrees); 10 | transform: rotate(@degrees); 11 | } 12 | 13 | .fa-icon-flip(@horiz, @vert, @rotation) { 14 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); 15 | -webkit-transform: scale(@horiz, @vert); 16 | -moz-transform: scale(@horiz, @vert); 17 | -ms-transform: scale(@horiz, @vert); 18 | -o-transform: scale(@horiz, @vert); 19 | transform: scale(@horiz, @vert); 20 | } 21 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 9 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 10 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 11 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/spinning.less: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: spin 2s infinite linear; 6 | -moz-animation: spin 2s infinite linear; 7 | -o-animation: spin 2s infinite linear; 8 | animation: spin 2s infinite linear; 9 | } 10 | 11 | @-moz-keyframes spin { 12 | 0% { -moz-transform: rotate(0deg); } 13 | 100% { -moz-transform: rotate(359deg); } 14 | } 15 | @-webkit-keyframes spin { 16 | 0% { -webkit-transform: rotate(0deg); } 17 | 100% { -webkit-transform: rotate(359deg); } 18 | } 19 | @-o-keyframes spin { 20 | 0% { -o-transform: rotate(0deg); } 21 | 100% { -o-transform: rotate(359deg); } 22 | } 23 | @-ms-keyframes spin { 24 | 0% { -ms-transform: rotate(0deg); } 25 | 100% { -ms-transform: rotate(359deg); } 26 | } 27 | @keyframes spin { 28 | 0% { transform: rotate(0deg); } 29 | 100% { transform: rotate(359deg); } 30 | } 31 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/less/variables.less: -------------------------------------------------------------------------------- 1 | // Variables 2 | // -------------------------- 3 | 4 | @fa-font-path: "../fonts"; 5 | //@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.0.3/fonts"; // for referencing Bootstrap CDN font files directly 6 | @fa-css-prefix: fa; 7 | @fa-version: "4.0.3"; 8 | @fa-border-color: #eee; 9 | @fa-inverse: #fff; 10 | @fa-li-width: (30em / 14); 11 | 12 | @fa-var-glass: "\f000"; 13 | @fa-var-music: "\f001"; 14 | @fa-var-search: "\f002"; 15 | @fa-var-envelope-o: "\f003"; 16 | @fa-var-heart: "\f004"; 17 | @fa-var-star: "\f005"; 18 | @fa-var-star-o: "\f006"; 19 | @fa-var-user: "\f007"; 20 | @fa-var-film: "\f008"; 21 | @fa-var-th-large: "\f009"; 22 | @fa-var-th: "\f00a"; 23 | @fa-var-th-list: "\f00b"; 24 | @fa-var-check: "\f00c"; 25 | @fa-var-times: "\f00d"; 26 | @fa-var-search-plus: "\f00e"; 27 | @fa-var-search-minus: "\f010"; 28 | @fa-var-power-off: "\f011"; 29 | @fa-var-signal: "\f012"; 30 | @fa-var-cog: "\f013"; 31 | @fa-var-trash-o: "\f014"; 32 | @fa-var-home: "\f015"; 33 | @fa-var-file-o: "\f016"; 34 | @fa-var-clock-o: "\f017"; 35 | @fa-var-road: "\f018"; 36 | @fa-var-download: "\f019"; 37 | @fa-var-arrow-circle-o-down: "\f01a"; 38 | @fa-var-arrow-circle-o-up: "\f01b"; 39 | @fa-var-inbox: "\f01c"; 40 | @fa-var-play-circle-o: "\f01d"; 41 | @fa-var-repeat: "\f01e"; 42 | @fa-var-refresh: "\f021"; 43 | @fa-var-list-alt: "\f022"; 44 | @fa-var-lock: "\f023"; 45 | @fa-var-flag: "\f024"; 46 | @fa-var-headphones: "\f025"; 47 | @fa-var-volume-off: "\f026"; 48 | @fa-var-volume-down: "\f027"; 49 | @fa-var-volume-up: "\f028"; 50 | @fa-var-qrcode: "\f029"; 51 | @fa-var-barcode: "\f02a"; 52 | @fa-var-tag: "\f02b"; 53 | @fa-var-tags: "\f02c"; 54 | @fa-var-book: "\f02d"; 55 | @fa-var-bookmark: "\f02e"; 56 | @fa-var-print: "\f02f"; 57 | @fa-var-camera: "\f030"; 58 | @fa-var-font: "\f031"; 59 | @fa-var-bold: "\f032"; 60 | @fa-var-italic: "\f033"; 61 | @fa-var-text-height: "\f034"; 62 | @fa-var-text-width: "\f035"; 63 | @fa-var-align-left: "\f036"; 64 | @fa-var-align-center: "\f037"; 65 | @fa-var-align-right: "\f038"; 66 | @fa-var-align-justify: "\f039"; 67 | @fa-var-list: "\f03a"; 68 | @fa-var-outdent: "\f03b"; 69 | @fa-var-indent: "\f03c"; 70 | @fa-var-video-camera: "\f03d"; 71 | @fa-var-picture-o: "\f03e"; 72 | @fa-var-pencil: "\f040"; 73 | @fa-var-map-marker: "\f041"; 74 | @fa-var-adjust: "\f042"; 75 | @fa-var-tint: "\f043"; 76 | @fa-var-pencil-square-o: "\f044"; 77 | @fa-var-share-square-o: "\f045"; 78 | @fa-var-check-square-o: "\f046"; 79 | @fa-var-arrows: "\f047"; 80 | @fa-var-step-backward: "\f048"; 81 | @fa-var-fast-backward: "\f049"; 82 | @fa-var-backward: "\f04a"; 83 | @fa-var-play: "\f04b"; 84 | @fa-var-pause: "\f04c"; 85 | @fa-var-stop: "\f04d"; 86 | @fa-var-forward: "\f04e"; 87 | @fa-var-fast-forward: "\f050"; 88 | @fa-var-step-forward: "\f051"; 89 | @fa-var-eject: "\f052"; 90 | @fa-var-chevron-left: "\f053"; 91 | @fa-var-chevron-right: "\f054"; 92 | @fa-var-plus-circle: "\f055"; 93 | @fa-var-minus-circle: "\f056"; 94 | @fa-var-times-circle: "\f057"; 95 | @fa-var-check-circle: "\f058"; 96 | @fa-var-question-circle: "\f059"; 97 | @fa-var-info-circle: "\f05a"; 98 | @fa-var-crosshairs: "\f05b"; 99 | @fa-var-times-circle-o: "\f05c"; 100 | @fa-var-check-circle-o: "\f05d"; 101 | @fa-var-ban: "\f05e"; 102 | @fa-var-arrow-left: "\f060"; 103 | @fa-var-arrow-right: "\f061"; 104 | @fa-var-arrow-up: "\f062"; 105 | @fa-var-arrow-down: "\f063"; 106 | @fa-var-share: "\f064"; 107 | @fa-var-expand: "\f065"; 108 | @fa-var-compress: "\f066"; 109 | @fa-var-plus: "\f067"; 110 | @fa-var-minus: "\f068"; 111 | @fa-var-asterisk: "\f069"; 112 | @fa-var-exclamation-circle: "\f06a"; 113 | @fa-var-gift: "\f06b"; 114 | @fa-var-leaf: "\f06c"; 115 | @fa-var-fire: "\f06d"; 116 | @fa-var-eye: "\f06e"; 117 | @fa-var-eye-slash: "\f070"; 118 | @fa-var-exclamation-triangle: "\f071"; 119 | @fa-var-plane: "\f072"; 120 | @fa-var-calendar: "\f073"; 121 | @fa-var-random: "\f074"; 122 | @fa-var-comment: "\f075"; 123 | @fa-var-magnet: "\f076"; 124 | @fa-var-chevron-up: "\f077"; 125 | @fa-var-chevron-down: "\f078"; 126 | @fa-var-retweet: "\f079"; 127 | @fa-var-shopping-cart: "\f07a"; 128 | @fa-var-folder: "\f07b"; 129 | @fa-var-folder-open: "\f07c"; 130 | @fa-var-arrows-v: "\f07d"; 131 | @fa-var-arrows-h: "\f07e"; 132 | @fa-var-bar-chart-o: "\f080"; 133 | @fa-var-twitter-square: "\f081"; 134 | @fa-var-facebook-square: "\f082"; 135 | @fa-var-camera-retro: "\f083"; 136 | @fa-var-key: "\f084"; 137 | @fa-var-cogs: "\f085"; 138 | @fa-var-comments: "\f086"; 139 | @fa-var-thumbs-o-up: "\f087"; 140 | @fa-var-thumbs-o-down: "\f088"; 141 | @fa-var-star-half: "\f089"; 142 | @fa-var-heart-o: "\f08a"; 143 | @fa-var-sign-out: "\f08b"; 144 | @fa-var-linkedin-square: "\f08c"; 145 | @fa-var-thumb-tack: "\f08d"; 146 | @fa-var-external-link: "\f08e"; 147 | @fa-var-sign-in: "\f090"; 148 | @fa-var-trophy: "\f091"; 149 | @fa-var-github-square: "\f092"; 150 | @fa-var-upload: "\f093"; 151 | @fa-var-lemon-o: "\f094"; 152 | @fa-var-phone: "\f095"; 153 | @fa-var-square-o: "\f096"; 154 | @fa-var-bookmark-o: "\f097"; 155 | @fa-var-phone-square: "\f098"; 156 | @fa-var-twitter: "\f099"; 157 | @fa-var-facebook: "\f09a"; 158 | @fa-var-github: "\f09b"; 159 | @fa-var-unlock: "\f09c"; 160 | @fa-var-credit-card: "\f09d"; 161 | @fa-var-rss: "\f09e"; 162 | @fa-var-hdd-o: "\f0a0"; 163 | @fa-var-bullhorn: "\f0a1"; 164 | @fa-var-bell: "\f0f3"; 165 | @fa-var-certificate: "\f0a3"; 166 | @fa-var-hand-o-right: "\f0a4"; 167 | @fa-var-hand-o-left: "\f0a5"; 168 | @fa-var-hand-o-up: "\f0a6"; 169 | @fa-var-hand-o-down: "\f0a7"; 170 | @fa-var-arrow-circle-left: "\f0a8"; 171 | @fa-var-arrow-circle-right: "\f0a9"; 172 | @fa-var-arrow-circle-up: "\f0aa"; 173 | @fa-var-arrow-circle-down: "\f0ab"; 174 | @fa-var-globe: "\f0ac"; 175 | @fa-var-wrench: "\f0ad"; 176 | @fa-var-tasks: "\f0ae"; 177 | @fa-var-filter: "\f0b0"; 178 | @fa-var-briefcase: "\f0b1"; 179 | @fa-var-arrows-alt: "\f0b2"; 180 | @fa-var-users: "\f0c0"; 181 | @fa-var-link: "\f0c1"; 182 | @fa-var-cloud: "\f0c2"; 183 | @fa-var-flask: "\f0c3"; 184 | @fa-var-scissors: "\f0c4"; 185 | @fa-var-files-o: "\f0c5"; 186 | @fa-var-paperclip: "\f0c6"; 187 | @fa-var-floppy-o: "\f0c7"; 188 | @fa-var-square: "\f0c8"; 189 | @fa-var-bars: "\f0c9"; 190 | @fa-var-list-ul: "\f0ca"; 191 | @fa-var-list-ol: "\f0cb"; 192 | @fa-var-strikethrough: "\f0cc"; 193 | @fa-var-underline: "\f0cd"; 194 | @fa-var-table: "\f0ce"; 195 | @fa-var-magic: "\f0d0"; 196 | @fa-var-truck: "\f0d1"; 197 | @fa-var-pinterest: "\f0d2"; 198 | @fa-var-pinterest-square: "\f0d3"; 199 | @fa-var-google-plus-square: "\f0d4"; 200 | @fa-var-google-plus: "\f0d5"; 201 | @fa-var-money: "\f0d6"; 202 | @fa-var-caret-down: "\f0d7"; 203 | @fa-var-caret-up: "\f0d8"; 204 | @fa-var-caret-left: "\f0d9"; 205 | @fa-var-caret-right: "\f0da"; 206 | @fa-var-columns: "\f0db"; 207 | @fa-var-sort: "\f0dc"; 208 | @fa-var-sort-asc: "\f0dd"; 209 | @fa-var-sort-desc: "\f0de"; 210 | @fa-var-envelope: "\f0e0"; 211 | @fa-var-linkedin: "\f0e1"; 212 | @fa-var-undo: "\f0e2"; 213 | @fa-var-gavel: "\f0e3"; 214 | @fa-var-tachometer: "\f0e4"; 215 | @fa-var-comment-o: "\f0e5"; 216 | @fa-var-comments-o: "\f0e6"; 217 | @fa-var-bolt: "\f0e7"; 218 | @fa-var-sitemap: "\f0e8"; 219 | @fa-var-umbrella: "\f0e9"; 220 | @fa-var-clipboard: "\f0ea"; 221 | @fa-var-lightbulb-o: "\f0eb"; 222 | @fa-var-exchange: "\f0ec"; 223 | @fa-var-cloud-download: "\f0ed"; 224 | @fa-var-cloud-upload: "\f0ee"; 225 | @fa-var-user-md: "\f0f0"; 226 | @fa-var-stethoscope: "\f0f1"; 227 | @fa-var-suitcase: "\f0f2"; 228 | @fa-var-bell-o: "\f0a2"; 229 | @fa-var-coffee: "\f0f4"; 230 | @fa-var-cutlery: "\f0f5"; 231 | @fa-var-file-text-o: "\f0f6"; 232 | @fa-var-building-o: "\f0f7"; 233 | @fa-var-hospital-o: "\f0f8"; 234 | @fa-var-ambulance: "\f0f9"; 235 | @fa-var-medkit: "\f0fa"; 236 | @fa-var-fighter-jet: "\f0fb"; 237 | @fa-var-beer: "\f0fc"; 238 | @fa-var-h-square: "\f0fd"; 239 | @fa-var-plus-square: "\f0fe"; 240 | @fa-var-angle-double-left: "\f100"; 241 | @fa-var-angle-double-right: "\f101"; 242 | @fa-var-angle-double-up: "\f102"; 243 | @fa-var-angle-double-down: "\f103"; 244 | @fa-var-angle-left: "\f104"; 245 | @fa-var-angle-right: "\f105"; 246 | @fa-var-angle-up: "\f106"; 247 | @fa-var-angle-down: "\f107"; 248 | @fa-var-desktop: "\f108"; 249 | @fa-var-laptop: "\f109"; 250 | @fa-var-tablet: "\f10a"; 251 | @fa-var-mobile: "\f10b"; 252 | @fa-var-circle-o: "\f10c"; 253 | @fa-var-quote-left: "\f10d"; 254 | @fa-var-quote-right: "\f10e"; 255 | @fa-var-spinner: "\f110"; 256 | @fa-var-circle: "\f111"; 257 | @fa-var-reply: "\f112"; 258 | @fa-var-github-alt: "\f113"; 259 | @fa-var-folder-o: "\f114"; 260 | @fa-var-folder-open-o: "\f115"; 261 | @fa-var-smile-o: "\f118"; 262 | @fa-var-frown-o: "\f119"; 263 | @fa-var-meh-o: "\f11a"; 264 | @fa-var-gamepad: "\f11b"; 265 | @fa-var-keyboard-o: "\f11c"; 266 | @fa-var-flag-o: "\f11d"; 267 | @fa-var-flag-checkered: "\f11e"; 268 | @fa-var-terminal: "\f120"; 269 | @fa-var-code: "\f121"; 270 | @fa-var-reply-all: "\f122"; 271 | @fa-var-mail-reply-all: "\f122"; 272 | @fa-var-star-half-o: "\f123"; 273 | @fa-var-location-arrow: "\f124"; 274 | @fa-var-crop: "\f125"; 275 | @fa-var-code-fork: "\f126"; 276 | @fa-var-chain-broken: "\f127"; 277 | @fa-var-question: "\f128"; 278 | @fa-var-info: "\f129"; 279 | @fa-var-exclamation: "\f12a"; 280 | @fa-var-superscript: "\f12b"; 281 | @fa-var-subscript: "\f12c"; 282 | @fa-var-eraser: "\f12d"; 283 | @fa-var-puzzle-piece: "\f12e"; 284 | @fa-var-microphone: "\f130"; 285 | @fa-var-microphone-slash: "\f131"; 286 | @fa-var-shield: "\f132"; 287 | @fa-var-calendar-o: "\f133"; 288 | @fa-var-fire-extinguisher: "\f134"; 289 | @fa-var-rocket: "\f135"; 290 | @fa-var-maxcdn: "\f136"; 291 | @fa-var-chevron-circle-left: "\f137"; 292 | @fa-var-chevron-circle-right: "\f138"; 293 | @fa-var-chevron-circle-up: "\f139"; 294 | @fa-var-chevron-circle-down: "\f13a"; 295 | @fa-var-html5: "\f13b"; 296 | @fa-var-css3: "\f13c"; 297 | @fa-var-anchor: "\f13d"; 298 | @fa-var-unlock-alt: "\f13e"; 299 | @fa-var-bullseye: "\f140"; 300 | @fa-var-ellipsis-h: "\f141"; 301 | @fa-var-ellipsis-v: "\f142"; 302 | @fa-var-rss-square: "\f143"; 303 | @fa-var-play-circle: "\f144"; 304 | @fa-var-ticket: "\f145"; 305 | @fa-var-minus-square: "\f146"; 306 | @fa-var-minus-square-o: "\f147"; 307 | @fa-var-level-up: "\f148"; 308 | @fa-var-level-down: "\f149"; 309 | @fa-var-check-square: "\f14a"; 310 | @fa-var-pencil-square: "\f14b"; 311 | @fa-var-external-link-square: "\f14c"; 312 | @fa-var-share-square: "\f14d"; 313 | @fa-var-compass: "\f14e"; 314 | @fa-var-caret-square-o-down: "\f150"; 315 | @fa-var-caret-square-o-up: "\f151"; 316 | @fa-var-caret-square-o-right: "\f152"; 317 | @fa-var-eur: "\f153"; 318 | @fa-var-gbp: "\f154"; 319 | @fa-var-usd: "\f155"; 320 | @fa-var-inr: "\f156"; 321 | @fa-var-jpy: "\f157"; 322 | @fa-var-rub: "\f158"; 323 | @fa-var-krw: "\f159"; 324 | @fa-var-btc: "\f15a"; 325 | @fa-var-file: "\f15b"; 326 | @fa-var-file-text: "\f15c"; 327 | @fa-var-sort-alpha-asc: "\f15d"; 328 | @fa-var-sort-alpha-desc: "\f15e"; 329 | @fa-var-sort-amount-asc: "\f160"; 330 | @fa-var-sort-amount-desc: "\f161"; 331 | @fa-var-sort-numeric-asc: "\f162"; 332 | @fa-var-sort-numeric-desc: "\f163"; 333 | @fa-var-thumbs-up: "\f164"; 334 | @fa-var-thumbs-down: "\f165"; 335 | @fa-var-youtube-square: "\f166"; 336 | @fa-var-youtube: "\f167"; 337 | @fa-var-xing: "\f168"; 338 | @fa-var-xing-square: "\f169"; 339 | @fa-var-youtube-play: "\f16a"; 340 | @fa-var-dropbox: "\f16b"; 341 | @fa-var-stack-overflow: "\f16c"; 342 | @fa-var-instagram: "\f16d"; 343 | @fa-var-flickr: "\f16e"; 344 | @fa-var-adn: "\f170"; 345 | @fa-var-bitbucket: "\f171"; 346 | @fa-var-bitbucket-square: "\f172"; 347 | @fa-var-tumblr: "\f173"; 348 | @fa-var-tumblr-square: "\f174"; 349 | @fa-var-long-arrow-down: "\f175"; 350 | @fa-var-long-arrow-up: "\f176"; 351 | @fa-var-long-arrow-left: "\f177"; 352 | @fa-var-long-arrow-right: "\f178"; 353 | @fa-var-apple: "\f179"; 354 | @fa-var-windows: "\f17a"; 355 | @fa-var-android: "\f17b"; 356 | @fa-var-linux: "\f17c"; 357 | @fa-var-dribbble: "\f17d"; 358 | @fa-var-skype: "\f17e"; 359 | @fa-var-foursquare: "\f180"; 360 | @fa-var-trello: "\f181"; 361 | @fa-var-female: "\f182"; 362 | @fa-var-male: "\f183"; 363 | @fa-var-gittip: "\f184"; 364 | @fa-var-sun-o: "\f185"; 365 | @fa-var-moon-o: "\f186"; 366 | @fa-var-archive: "\f187"; 367 | @fa-var-bug: "\f188"; 368 | @fa-var-vk: "\f189"; 369 | @fa-var-weibo: "\f18a"; 370 | @fa-var-renren: "\f18b"; 371 | @fa-var-pagelines: "\f18c"; 372 | @fa-var-stack-exchange: "\f18d"; 373 | @fa-var-arrow-circle-o-right: "\f18e"; 374 | @fa-var-arrow-circle-o-left: "\f190"; 375 | @fa-var-caret-square-o-left: "\f191"; 376 | @fa-var-dot-circle-o: "\f192"; 377 | @fa-var-wheelchair: "\f193"; 378 | @fa-var-vimeo-square: "\f194"; 379 | @fa-var-try: "\f195"; 380 | @fa-var-plus-square-o: "\f196"; 381 | 382 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font-family: FontAwesome; 7 | font-style: normal; 8 | font-weight: normal; 9 | line-height: 1; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | } 13 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon-rotate($degrees, $rotation) { 5 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); 6 | -webkit-transform: rotate($degrees); 7 | -moz-transform: rotate($degrees); 8 | -ms-transform: rotate($degrees); 9 | -o-transform: rotate($degrees); 10 | transform: rotate($degrees); 11 | } 12 | 13 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 14 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); 15 | -webkit-transform: scale($horiz, $vert); 16 | -moz-transform: scale($horiz, $vert); 17 | -ms-transform: scale($horiz, $vert); 18 | -o-transform: scale($horiz, $vert); 19 | transform: scale($horiz, $vert); 20 | } 21 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 9 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 10 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 11 | //src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/_spinning.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: spin 2s infinite linear; 6 | -moz-animation: spin 2s infinite linear; 7 | -o-animation: spin 2s infinite linear; 8 | animation: spin 2s infinite linear; 9 | } 10 | 11 | @-moz-keyframes spin { 12 | 0% { -moz-transform: rotate(0deg); } 13 | 100% { -moz-transform: rotate(359deg); } 14 | } 15 | @-webkit-keyframes spin { 16 | 0% { -webkit-transform: rotate(0deg); } 17 | 100% { -webkit-transform: rotate(359deg); } 18 | } 19 | @-o-keyframes spin { 20 | 0% { -o-transform: rotate(0deg); } 21 | 100% { -o-transform: rotate(359deg); } 22 | } 23 | @-ms-keyframes spin { 24 | 0% { -ms-transform: rotate(0deg); } 25 | 100% { -ms-transform: rotate(359deg); } 26 | } 27 | @keyframes spin { 28 | 0% { transform: rotate(0deg); } 29 | 100% { transform: rotate(359deg); } 30 | } 31 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/_variables.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | // -------------------------- 3 | 4 | $fa-font-path: "../fonts" !default; 5 | //$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.0.3/fonts" !default; // for referencing Bootstrap CDN font files directly 6 | $fa-css-prefix: fa !default; 7 | $fa-version: "4.0.3" !default; 8 | $fa-border-color: #eee !default; 9 | $fa-inverse: #fff !default; 10 | $fa-li-width: (30em / 14) !default; 11 | 12 | $fa-var-glass: "\f000"; 13 | $fa-var-music: "\f001"; 14 | $fa-var-search: "\f002"; 15 | $fa-var-envelope-o: "\f003"; 16 | $fa-var-heart: "\f004"; 17 | $fa-var-star: "\f005"; 18 | $fa-var-star-o: "\f006"; 19 | $fa-var-user: "\f007"; 20 | $fa-var-film: "\f008"; 21 | $fa-var-th-large: "\f009"; 22 | $fa-var-th: "\f00a"; 23 | $fa-var-th-list: "\f00b"; 24 | $fa-var-check: "\f00c"; 25 | $fa-var-times: "\f00d"; 26 | $fa-var-search-plus: "\f00e"; 27 | $fa-var-search-minus: "\f010"; 28 | $fa-var-power-off: "\f011"; 29 | $fa-var-signal: "\f012"; 30 | $fa-var-cog: "\f013"; 31 | $fa-var-trash-o: "\f014"; 32 | $fa-var-home: "\f015"; 33 | $fa-var-file-o: "\f016"; 34 | $fa-var-clock-o: "\f017"; 35 | $fa-var-road: "\f018"; 36 | $fa-var-download: "\f019"; 37 | $fa-var-arrow-circle-o-down: "\f01a"; 38 | $fa-var-arrow-circle-o-up: "\f01b"; 39 | $fa-var-inbox: "\f01c"; 40 | $fa-var-play-circle-o: "\f01d"; 41 | $fa-var-repeat: "\f01e"; 42 | $fa-var-refresh: "\f021"; 43 | $fa-var-list-alt: "\f022"; 44 | $fa-var-lock: "\f023"; 45 | $fa-var-flag: "\f024"; 46 | $fa-var-headphones: "\f025"; 47 | $fa-var-volume-off: "\f026"; 48 | $fa-var-volume-down: "\f027"; 49 | $fa-var-volume-up: "\f028"; 50 | $fa-var-qrcode: "\f029"; 51 | $fa-var-barcode: "\f02a"; 52 | $fa-var-tag: "\f02b"; 53 | $fa-var-tags: "\f02c"; 54 | $fa-var-book: "\f02d"; 55 | $fa-var-bookmark: "\f02e"; 56 | $fa-var-print: "\f02f"; 57 | $fa-var-camera: "\f030"; 58 | $fa-var-font: "\f031"; 59 | $fa-var-bold: "\f032"; 60 | $fa-var-italic: "\f033"; 61 | $fa-var-text-height: "\f034"; 62 | $fa-var-text-width: "\f035"; 63 | $fa-var-align-left: "\f036"; 64 | $fa-var-align-center: "\f037"; 65 | $fa-var-align-right: "\f038"; 66 | $fa-var-align-justify: "\f039"; 67 | $fa-var-list: "\f03a"; 68 | $fa-var-outdent: "\f03b"; 69 | $fa-var-indent: "\f03c"; 70 | $fa-var-video-camera: "\f03d"; 71 | $fa-var-picture-o: "\f03e"; 72 | $fa-var-pencil: "\f040"; 73 | $fa-var-map-marker: "\f041"; 74 | $fa-var-adjust: "\f042"; 75 | $fa-var-tint: "\f043"; 76 | $fa-var-pencil-square-o: "\f044"; 77 | $fa-var-share-square-o: "\f045"; 78 | $fa-var-check-square-o: "\f046"; 79 | $fa-var-arrows: "\f047"; 80 | $fa-var-step-backward: "\f048"; 81 | $fa-var-fast-backward: "\f049"; 82 | $fa-var-backward: "\f04a"; 83 | $fa-var-play: "\f04b"; 84 | $fa-var-pause: "\f04c"; 85 | $fa-var-stop: "\f04d"; 86 | $fa-var-forward: "\f04e"; 87 | $fa-var-fast-forward: "\f050"; 88 | $fa-var-step-forward: "\f051"; 89 | $fa-var-eject: "\f052"; 90 | $fa-var-chevron-left: "\f053"; 91 | $fa-var-chevron-right: "\f054"; 92 | $fa-var-plus-circle: "\f055"; 93 | $fa-var-minus-circle: "\f056"; 94 | $fa-var-times-circle: "\f057"; 95 | $fa-var-check-circle: "\f058"; 96 | $fa-var-question-circle: "\f059"; 97 | $fa-var-info-circle: "\f05a"; 98 | $fa-var-crosshairs: "\f05b"; 99 | $fa-var-times-circle-o: "\f05c"; 100 | $fa-var-check-circle-o: "\f05d"; 101 | $fa-var-ban: "\f05e"; 102 | $fa-var-arrow-left: "\f060"; 103 | $fa-var-arrow-right: "\f061"; 104 | $fa-var-arrow-up: "\f062"; 105 | $fa-var-arrow-down: "\f063"; 106 | $fa-var-share: "\f064"; 107 | $fa-var-expand: "\f065"; 108 | $fa-var-compress: "\f066"; 109 | $fa-var-plus: "\f067"; 110 | $fa-var-minus: "\f068"; 111 | $fa-var-asterisk: "\f069"; 112 | $fa-var-exclamation-circle: "\f06a"; 113 | $fa-var-gift: "\f06b"; 114 | $fa-var-leaf: "\f06c"; 115 | $fa-var-fire: "\f06d"; 116 | $fa-var-eye: "\f06e"; 117 | $fa-var-eye-slash: "\f070"; 118 | $fa-var-exclamation-triangle: "\f071"; 119 | $fa-var-plane: "\f072"; 120 | $fa-var-calendar: "\f073"; 121 | $fa-var-random: "\f074"; 122 | $fa-var-comment: "\f075"; 123 | $fa-var-magnet: "\f076"; 124 | $fa-var-chevron-up: "\f077"; 125 | $fa-var-chevron-down: "\f078"; 126 | $fa-var-retweet: "\f079"; 127 | $fa-var-shopping-cart: "\f07a"; 128 | $fa-var-folder: "\f07b"; 129 | $fa-var-folder-open: "\f07c"; 130 | $fa-var-arrows-v: "\f07d"; 131 | $fa-var-arrows-h: "\f07e"; 132 | $fa-var-bar-chart-o: "\f080"; 133 | $fa-var-twitter-square: "\f081"; 134 | $fa-var-facebook-square: "\f082"; 135 | $fa-var-camera-retro: "\f083"; 136 | $fa-var-key: "\f084"; 137 | $fa-var-cogs: "\f085"; 138 | $fa-var-comments: "\f086"; 139 | $fa-var-thumbs-o-up: "\f087"; 140 | $fa-var-thumbs-o-down: "\f088"; 141 | $fa-var-star-half: "\f089"; 142 | $fa-var-heart-o: "\f08a"; 143 | $fa-var-sign-out: "\f08b"; 144 | $fa-var-linkedin-square: "\f08c"; 145 | $fa-var-thumb-tack: "\f08d"; 146 | $fa-var-external-link: "\f08e"; 147 | $fa-var-sign-in: "\f090"; 148 | $fa-var-trophy: "\f091"; 149 | $fa-var-github-square: "\f092"; 150 | $fa-var-upload: "\f093"; 151 | $fa-var-lemon-o: "\f094"; 152 | $fa-var-phone: "\f095"; 153 | $fa-var-square-o: "\f096"; 154 | $fa-var-bookmark-o: "\f097"; 155 | $fa-var-phone-square: "\f098"; 156 | $fa-var-twitter: "\f099"; 157 | $fa-var-facebook: "\f09a"; 158 | $fa-var-github: "\f09b"; 159 | $fa-var-unlock: "\f09c"; 160 | $fa-var-credit-card: "\f09d"; 161 | $fa-var-rss: "\f09e"; 162 | $fa-var-hdd-o: "\f0a0"; 163 | $fa-var-bullhorn: "\f0a1"; 164 | $fa-var-bell: "\f0f3"; 165 | $fa-var-certificate: "\f0a3"; 166 | $fa-var-hand-o-right: "\f0a4"; 167 | $fa-var-hand-o-left: "\f0a5"; 168 | $fa-var-hand-o-up: "\f0a6"; 169 | $fa-var-hand-o-down: "\f0a7"; 170 | $fa-var-arrow-circle-left: "\f0a8"; 171 | $fa-var-arrow-circle-right: "\f0a9"; 172 | $fa-var-arrow-circle-up: "\f0aa"; 173 | $fa-var-arrow-circle-down: "\f0ab"; 174 | $fa-var-globe: "\f0ac"; 175 | $fa-var-wrench: "\f0ad"; 176 | $fa-var-tasks: "\f0ae"; 177 | $fa-var-filter: "\f0b0"; 178 | $fa-var-briefcase: "\f0b1"; 179 | $fa-var-arrows-alt: "\f0b2"; 180 | $fa-var-users: "\f0c0"; 181 | $fa-var-link: "\f0c1"; 182 | $fa-var-cloud: "\f0c2"; 183 | $fa-var-flask: "\f0c3"; 184 | $fa-var-scissors: "\f0c4"; 185 | $fa-var-files-o: "\f0c5"; 186 | $fa-var-paperclip: "\f0c6"; 187 | $fa-var-floppy-o: "\f0c7"; 188 | $fa-var-square: "\f0c8"; 189 | $fa-var-bars: "\f0c9"; 190 | $fa-var-list-ul: "\f0ca"; 191 | $fa-var-list-ol: "\f0cb"; 192 | $fa-var-strikethrough: "\f0cc"; 193 | $fa-var-underline: "\f0cd"; 194 | $fa-var-table: "\f0ce"; 195 | $fa-var-magic: "\f0d0"; 196 | $fa-var-truck: "\f0d1"; 197 | $fa-var-pinterest: "\f0d2"; 198 | $fa-var-pinterest-square: "\f0d3"; 199 | $fa-var-google-plus-square: "\f0d4"; 200 | $fa-var-google-plus: "\f0d5"; 201 | $fa-var-money: "\f0d6"; 202 | $fa-var-caret-down: "\f0d7"; 203 | $fa-var-caret-up: "\f0d8"; 204 | $fa-var-caret-left: "\f0d9"; 205 | $fa-var-caret-right: "\f0da"; 206 | $fa-var-columns: "\f0db"; 207 | $fa-var-sort: "\f0dc"; 208 | $fa-var-sort-asc: "\f0dd"; 209 | $fa-var-sort-desc: "\f0de"; 210 | $fa-var-envelope: "\f0e0"; 211 | $fa-var-linkedin: "\f0e1"; 212 | $fa-var-undo: "\f0e2"; 213 | $fa-var-gavel: "\f0e3"; 214 | $fa-var-tachometer: "\f0e4"; 215 | $fa-var-comment-o: "\f0e5"; 216 | $fa-var-comments-o: "\f0e6"; 217 | $fa-var-bolt: "\f0e7"; 218 | $fa-var-sitemap: "\f0e8"; 219 | $fa-var-umbrella: "\f0e9"; 220 | $fa-var-clipboard: "\f0ea"; 221 | $fa-var-lightbulb-o: "\f0eb"; 222 | $fa-var-exchange: "\f0ec"; 223 | $fa-var-cloud-download: "\f0ed"; 224 | $fa-var-cloud-upload: "\f0ee"; 225 | $fa-var-user-md: "\f0f0"; 226 | $fa-var-stethoscope: "\f0f1"; 227 | $fa-var-suitcase: "\f0f2"; 228 | $fa-var-bell-o: "\f0a2"; 229 | $fa-var-coffee: "\f0f4"; 230 | $fa-var-cutlery: "\f0f5"; 231 | $fa-var-file-text-o: "\f0f6"; 232 | $fa-var-building-o: "\f0f7"; 233 | $fa-var-hospital-o: "\f0f8"; 234 | $fa-var-ambulance: "\f0f9"; 235 | $fa-var-medkit: "\f0fa"; 236 | $fa-var-fighter-jet: "\f0fb"; 237 | $fa-var-beer: "\f0fc"; 238 | $fa-var-h-square: "\f0fd"; 239 | $fa-var-plus-square: "\f0fe"; 240 | $fa-var-angle-double-left: "\f100"; 241 | $fa-var-angle-double-right: "\f101"; 242 | $fa-var-angle-double-up: "\f102"; 243 | $fa-var-angle-double-down: "\f103"; 244 | $fa-var-angle-left: "\f104"; 245 | $fa-var-angle-right: "\f105"; 246 | $fa-var-angle-up: "\f106"; 247 | $fa-var-angle-down: "\f107"; 248 | $fa-var-desktop: "\f108"; 249 | $fa-var-laptop: "\f109"; 250 | $fa-var-tablet: "\f10a"; 251 | $fa-var-mobile: "\f10b"; 252 | $fa-var-circle-o: "\f10c"; 253 | $fa-var-quote-left: "\f10d"; 254 | $fa-var-quote-right: "\f10e"; 255 | $fa-var-spinner: "\f110"; 256 | $fa-var-circle: "\f111"; 257 | $fa-var-reply: "\f112"; 258 | $fa-var-github-alt: "\f113"; 259 | $fa-var-folder-o: "\f114"; 260 | $fa-var-folder-open-o: "\f115"; 261 | $fa-var-smile-o: "\f118"; 262 | $fa-var-frown-o: "\f119"; 263 | $fa-var-meh-o: "\f11a"; 264 | $fa-var-gamepad: "\f11b"; 265 | $fa-var-keyboard-o: "\f11c"; 266 | $fa-var-flag-o: "\f11d"; 267 | $fa-var-flag-checkered: "\f11e"; 268 | $fa-var-terminal: "\f120"; 269 | $fa-var-code: "\f121"; 270 | $fa-var-reply-all: "\f122"; 271 | $fa-var-mail-reply-all: "\f122"; 272 | $fa-var-star-half-o: "\f123"; 273 | $fa-var-location-arrow: "\f124"; 274 | $fa-var-crop: "\f125"; 275 | $fa-var-code-fork: "\f126"; 276 | $fa-var-chain-broken: "\f127"; 277 | $fa-var-question: "\f128"; 278 | $fa-var-info: "\f129"; 279 | $fa-var-exclamation: "\f12a"; 280 | $fa-var-superscript: "\f12b"; 281 | $fa-var-subscript: "\f12c"; 282 | $fa-var-eraser: "\f12d"; 283 | $fa-var-puzzle-piece: "\f12e"; 284 | $fa-var-microphone: "\f130"; 285 | $fa-var-microphone-slash: "\f131"; 286 | $fa-var-shield: "\f132"; 287 | $fa-var-calendar-o: "\f133"; 288 | $fa-var-fire-extinguisher: "\f134"; 289 | $fa-var-rocket: "\f135"; 290 | $fa-var-maxcdn: "\f136"; 291 | $fa-var-chevron-circle-left: "\f137"; 292 | $fa-var-chevron-circle-right: "\f138"; 293 | $fa-var-chevron-circle-up: "\f139"; 294 | $fa-var-chevron-circle-down: "\f13a"; 295 | $fa-var-html5: "\f13b"; 296 | $fa-var-css3: "\f13c"; 297 | $fa-var-anchor: "\f13d"; 298 | $fa-var-unlock-alt: "\f13e"; 299 | $fa-var-bullseye: "\f140"; 300 | $fa-var-ellipsis-h: "\f141"; 301 | $fa-var-ellipsis-v: "\f142"; 302 | $fa-var-rss-square: "\f143"; 303 | $fa-var-play-circle: "\f144"; 304 | $fa-var-ticket: "\f145"; 305 | $fa-var-minus-square: "\f146"; 306 | $fa-var-minus-square-o: "\f147"; 307 | $fa-var-level-up: "\f148"; 308 | $fa-var-level-down: "\f149"; 309 | $fa-var-check-square: "\f14a"; 310 | $fa-var-pencil-square: "\f14b"; 311 | $fa-var-external-link-square: "\f14c"; 312 | $fa-var-share-square: "\f14d"; 313 | $fa-var-compass: "\f14e"; 314 | $fa-var-caret-square-o-down: "\f150"; 315 | $fa-var-caret-square-o-up: "\f151"; 316 | $fa-var-caret-square-o-right: "\f152"; 317 | $fa-var-eur: "\f153"; 318 | $fa-var-gbp: "\f154"; 319 | $fa-var-usd: "\f155"; 320 | $fa-var-inr: "\f156"; 321 | $fa-var-jpy: "\f157"; 322 | $fa-var-rub: "\f158"; 323 | $fa-var-krw: "\f159"; 324 | $fa-var-btc: "\f15a"; 325 | $fa-var-file: "\f15b"; 326 | $fa-var-file-text: "\f15c"; 327 | $fa-var-sort-alpha-asc: "\f15d"; 328 | $fa-var-sort-alpha-desc: "\f15e"; 329 | $fa-var-sort-amount-asc: "\f160"; 330 | $fa-var-sort-amount-desc: "\f161"; 331 | $fa-var-sort-numeric-asc: "\f162"; 332 | $fa-var-sort-numeric-desc: "\f163"; 333 | $fa-var-thumbs-up: "\f164"; 334 | $fa-var-thumbs-down: "\f165"; 335 | $fa-var-youtube-square: "\f166"; 336 | $fa-var-youtube: "\f167"; 337 | $fa-var-xing: "\f168"; 338 | $fa-var-xing-square: "\f169"; 339 | $fa-var-youtube-play: "\f16a"; 340 | $fa-var-dropbox: "\f16b"; 341 | $fa-var-stack-overflow: "\f16c"; 342 | $fa-var-instagram: "\f16d"; 343 | $fa-var-flickr: "\f16e"; 344 | $fa-var-adn: "\f170"; 345 | $fa-var-bitbucket: "\f171"; 346 | $fa-var-bitbucket-square: "\f172"; 347 | $fa-var-tumblr: "\f173"; 348 | $fa-var-tumblr-square: "\f174"; 349 | $fa-var-long-arrow-down: "\f175"; 350 | $fa-var-long-arrow-up: "\f176"; 351 | $fa-var-long-arrow-left: "\f177"; 352 | $fa-var-long-arrow-right: "\f178"; 353 | $fa-var-apple: "\f179"; 354 | $fa-var-windows: "\f17a"; 355 | $fa-var-android: "\f17b"; 356 | $fa-var-linux: "\f17c"; 357 | $fa-var-dribbble: "\f17d"; 358 | $fa-var-skype: "\f17e"; 359 | $fa-var-foursquare: "\f180"; 360 | $fa-var-trello: "\f181"; 361 | $fa-var-female: "\f182"; 362 | $fa-var-male: "\f183"; 363 | $fa-var-gittip: "\f184"; 364 | $fa-var-sun-o: "\f185"; 365 | $fa-var-moon-o: "\f186"; 366 | $fa-var-archive: "\f187"; 367 | $fa-var-bug: "\f188"; 368 | $fa-var-vk: "\f189"; 369 | $fa-var-weibo: "\f18a"; 370 | $fa-var-renren: "\f18b"; 371 | $fa-var-pagelines: "\f18c"; 372 | $fa-var-stack-exchange: "\f18d"; 373 | $fa-var-arrow-circle-o-right: "\f18e"; 374 | $fa-var-arrow-circle-o-left: "\f190"; 375 | $fa-var-caret-square-o-left: "\f191"; 376 | $fa-var-dot-circle-o: "\f192"; 377 | $fa-var-wheelchair: "\f193"; 378 | $fa-var-vimeo-square: "\f194"; 379 | $fa-var-try: "\f195"; 380 | $fa-var-plus-square-o: "\f196"; 381 | 382 | -------------------------------------------------------------------------------- /mink-plugin/font-awesome-4.0.3/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "spinning"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /mink-plugin/images/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/ajax-loader.gif -------------------------------------------------------------------------------- /mink-plugin/images/archives/ait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/ait.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/allListedArchives.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/allListedArchives.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/allListedArchives_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/allListedArchives_success.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/archiveisLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/archiveisLogo.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/archiveisLogo_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/archiveisLogo_success.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/dropdown_ais.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/dropdown_ais.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/dropdown_ia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/dropdown_ia.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/dropdown_wc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/dropdown_wc.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/ia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/ia.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/iaLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/iaLogo.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/iaLogo_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/iaLogo_success.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/ice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/ice.png -------------------------------------------------------------------------------- /mink-plugin/images/archives/is.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/archives/is.png -------------------------------------------------------------------------------- /mink-plugin/images/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/cancel.png -------------------------------------------------------------------------------- /mink-plugin/images/icon-on-19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/icon-on-19.png -------------------------------------------------------------------------------- /mink-plugin/images/icon-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/icon-on.png -------------------------------------------------------------------------------- /mink-plugin/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/icon.png -------------------------------------------------------------------------------- /mink-plugin/images/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/icon128.png -------------------------------------------------------------------------------- /mink-plugin/images/icon128_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/icon128_error.png -------------------------------------------------------------------------------- /mink-plugin/images/icon128flipped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/icon128flipped.png -------------------------------------------------------------------------------- /mink-plugin/images/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/icon16.png -------------------------------------------------------------------------------- /mink-plugin/images/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/icon48.png -------------------------------------------------------------------------------- /mink-plugin/images/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/lock.png -------------------------------------------------------------------------------- /mink-plugin/images/lock2-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/lock2-closed.png -------------------------------------------------------------------------------- /mink-plugin/images/lock2-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/lock2-open.png -------------------------------------------------------------------------------- /mink-plugin/images/mLogo19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mLogo19.png -------------------------------------------------------------------------------- /mink-plugin/images/mLogo19_isAMemento.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mLogo19_isAMemento.png -------------------------------------------------------------------------------- /mink-plugin/images/mLogo38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mLogo38.png -------------------------------------------------------------------------------- /mink-plugin/images/mLogo38_isAMemento.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mLogo38_isAMemento.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogo-19px-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogo-19px-30.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogo-19px-37_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogo-19px-37_5.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogo-19px-45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogo-19px-45.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo19_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo19_15.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo19_22.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo19_22.5.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo19_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo19_30.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo19_37.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo19_37.5.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo19_45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo19_45.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo19_52.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo19_52.5.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo19_60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo19_60.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo19_7.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo19_7.5.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo38_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo38_15.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo38_22.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo38_22.5.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo38_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo38_30.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo38_37.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo38_37.5.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo38_45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo38_45.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo38_52.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo38_52.5.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo38_60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo38_60.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo38_7.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo38_7.5.png -------------------------------------------------------------------------------- /mink-plugin/images/mementoLogos/mLogo_animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mementoLogos/mLogo_animated.gif -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo19.png -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo19_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo19_disabled.png -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo19_ignorelisted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo19_ignorelisted.png -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo19_noMementos2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo19_noMementos2.png -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo38.png -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo38_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo38_disabled.png -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo38_ignorelisted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo38_ignorelisted.png -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo38_noMementos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo38_noMementos.png -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo38_noMementos2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo38_noMementos2.png -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo38_working.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo38_working.png -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo_128.png -------------------------------------------------------------------------------- /mink-plugin/images/minkLogo_300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/minkLogo_300.png -------------------------------------------------------------------------------- /mink-plugin/images/mink_marvel_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mink_marvel_128.png -------------------------------------------------------------------------------- /mink-plugin/images/mink_marvel_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mink_marvel_16.png -------------------------------------------------------------------------------- /mink-plugin/images/mink_marvel_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mink_marvel_256.png -------------------------------------------------------------------------------- /mink-plugin/images/mink_marvel_300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mink_marvel_300.png -------------------------------------------------------------------------------- /mink-plugin/images/mink_marvel_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mink_marvel_48.png -------------------------------------------------------------------------------- /mink-plugin/images/mink_marvel_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mink_marvel_512.png -------------------------------------------------------------------------------- /mink-plugin/images/mink_marvel_80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/mink_marvel_80.png -------------------------------------------------------------------------------- /mink-plugin/images/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/spinner.gif -------------------------------------------------------------------------------- /mink-plugin/images/spinning.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/machawk1/Mink/fcae2ff13de247cf75a3985881b2645551c4613f/mink-plugin/images/spinning.gif -------------------------------------------------------------------------------- /mink-plugin/jquery.miller.js/COPYING: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010-2011, Frédéric Hardy. All rights reserved. 2 | Redistribution and use in source and binary forms, with or without 3 | modification, are permitted provided that the following conditions are met: 4 | 5 | * Redistributions of source code must retain the above copyright 6 | notice, this list of conditions and the following disclaimer. 7 | * Redistributions in binary form must reproduce the above copyright 8 | notice, this list of conditions and the following disclaimer in the 9 | documentation and/or other materials provided with the distribution. 10 | * Neither the name of Frédéric Hardy nor the names of its contributors 11 | may be used to endorse or promote products derived from this software 12 | without specific prior written permission. 13 | 14 | THIS SOFTWARE IS PROVIDED BY FRÉDÉRIC HARDY AND CONTRIBUTORS ``AS IS'' AND ANY 15 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 | DISCLAIMED. IN NO EVENT SHALL FRÉDÉRIC HARDY AND CONTRIBUTORS BE LIABLE FOR ANY 18 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 23 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | -------------------------------------------------------------------------------- /mink-plugin/jquery.miller.js/README.md: -------------------------------------------------------------------------------- 1 | # jQuery.miller.js 2 | 3 | ## An implementation of [Miller columns](http://en.wikipedia.org/wiki/Miller_columns) with [jQuery](http://jquery.com)! 4 | 5 | It's a work in progress, so use it carefully! 6 | If you want to see this plugin in action, there is a [demo](http://mgbx.net/demomiller). 7 | 8 | ## Features 9 | 10 | * Ajax call to retrieve data. 11 | * Keyboard navigation. 12 | * Full customizable preview pane. 13 | * Full customizable toolbar. 14 | * Redimensionable columns. 15 | 16 | ## How to use it ? 17 | 18 | There is no dependencies needed to use this plugin. 19 | To use it: 20 | 1. Clone the repository or download the source in a directory. 21 | 2. Add this line in the head of your html page:-- 22 | 23 | ``` html 24 | 25 | ``` 26 | 27 | 3. Add a `div` in the body of your html page. 28 | 4. Add these lines at the end of the body of your html page: 29 | 30 | ``` html 31 | 32 | 33 | ``` 34 | 35 | 5. Create a JavaScript script with this content and add it t the end of the body of your html page: 36 | 37 | ``` JavaScript 38 | $(document).ready(function() { $('div').miller() }); 39 | ``` 40 | 41 | You can pass an object litteral to the `miller` function to customize behavior of the plugin. 42 | The default values are : 43 | 44 | ``` JavaScript 45 | { 46 | url: function(id) { return id; }, // generate url for ajax call, id is the value of the node ID 47 | minWidth: 40, // minimum width of one column 48 | tabindex: 0, // default tabindex if it is undefined on the DOM element 49 | carroussel: false, // If set to true, the user will go to the first item of the column if it use ↓ on the last item 50 | toolbar: { 51 | options: {} // Add callbacks here to handle actions in the toolbar, see the demo for more informations 52 | }, 53 | pane: { 54 | options: {} // Add callbacks here to handle actions in the pane, see the demo for more informations 55 | } 56 | } 57 | ``` 58 | 59 | The ajax call must return a JSON array with the following structure: 60 | 61 | ``` JavaScript 62 | [ 63 | { 'id': 'ID of node 1', 'name': 'Name of node 1', 'parent': false }, // this node has no child 64 | { 'id': 'ID of node 2', 'name': 'Name of node 2', 'parent': true }, // this node has some children 65 | { 'id': 'ID of node 3', 'name': 'Name of node 3', 'parent': false }, // this node has no child 66 | // and so on… 67 | ] 68 | 69 | ``` 70 | -------------------------------------------------------------------------------- /mink-plugin/jquery.miller.js/jquery.miller.css: -------------------------------------------------------------------------------- 1 | .miller 2 | { 3 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 4 | font-size: 0.8em; 5 | position: relative; 6 | border: solid 1px #ddd; 7 | border-radius: 4px; 8 | padding: 0; 9 | margin-bottom: 20px; 10 | width: 600px; 11 | height: 169px; 12 | background: #f5f5f5; 13 | outline: 0; 14 | -moz-user-select: none; 15 | -khtml-user-select: none; 16 | -webkit-user-select: none; 17 | user-select: none; 18 | } 19 | 20 | .miller div.columns 21 | { 22 | position: absolute; 23 | width: 100%; 24 | height: 129px; 25 | left: 0; 26 | top: 20px; 27 | padding: 0; 28 | margin: 0; 29 | overflow: auto; 30 | } 31 | 32 | .miller div.path 33 | { 34 | position: absolute; 35 | border-bottom: solid 1px #ddd; 36 | margin: 0; 37 | left: 0; 38 | top: 0; 39 | background: #fff; 40 | width: 100%; 41 | height: 20px; 42 | font-size: 0.6em; 43 | line-height: 20px; 44 | overflow: auto; 45 | z-index: 9999; 46 | } 47 | 48 | .miller div.path span 49 | { 50 | margin-left: 0.5em; 51 | padding-left: 1.5em; 52 | padding-right: 0.5em; 53 | background-image: url('../images/chevron-black.png'); 54 | background-repeat: no-repeat; 55 | background-position: 0 50%; 56 | white-space: nowrap; 57 | cursor: pointer; 58 | } 59 | 60 | .miller div.toolbar 61 | { 62 | position: absolute; 63 | border-top: solid 1px #ddd; 64 | margin: 0; 65 | left: 0; 66 | bottom: 0; 67 | background: #fff; 68 | width: 100%; 69 | height: 20px; 70 | font-size: 0.6em; 71 | line-height: 20px; 72 | overflow: auto; 73 | z-index: 9999; 74 | } 75 | 76 | .miller div.toolbar span 77 | { 78 | padding-left: 1em; 79 | padding-right: 1em; 80 | cursor: pointer; 81 | } 82 | 83 | .miller div.columns ul 84 | { 85 | box-shadow: #aaa 4px 0 8px 0px; 86 | position: absolute; 87 | border-right: solid 1px #ddd; 88 | padding: 0; 89 | margin: 0; 90 | background: #fcfcfc; 91 | overflow: auto; 92 | width: 100px; 93 | height: 100%; 94 | } 95 | 96 | .miller li 97 | { 98 | border: solid 1px #fff; 99 | padding-left: 0.5em; 100 | padding-right: 0.5em; 101 | list-style-type: none; 102 | cursor: pointer; 103 | height: 25px; 104 | line-height: 25px; 105 | } 106 | 107 | .miller li.parent 108 | { 109 | background-image: url('../images/chevron-black.png'); 110 | background-repeat: no-repeat; 111 | background-position: 100% 50%; 112 | } 113 | 114 | .miller li.parentLoading 115 | { 116 | color: #fff; 117 | background: #08c; 118 | background-image: url('../images/loader.gif'); 119 | background-repeat: no-repeat; 120 | background-position: 100% 50%; 121 | } 122 | 123 | .miller li.parentSelected 124 | { 125 | color: #fff; 126 | background: #08c; 127 | background-image: url('../images/chevron-white.png'); 128 | background-repeat: no-repeat; 129 | background-position: 100% 50%; 130 | } 131 | 132 | .miller li.selected 133 | { 134 | color: #fff; 135 | background: #08c; 136 | } 137 | 138 | .miller div.grip 139 | { 140 | cursor: col-resize; 141 | position: absolute; 142 | width: 2px; 143 | height: 100%; 144 | background-image: url('../images/grip.png'); 145 | background-color: #000; 146 | background-repeat: repeat-y; 147 | background-position: 0 0; 148 | } 149 | 150 | .miller ul.pane 151 | { 152 | background: #fff; 153 | } 154 | 155 | .miller ul.pane li 156 | { 157 | margin: 0; 158 | padding: 0; 159 | cursor: pointer; 160 | font-size: 11px; 161 | font-weight: normal; 162 | letter-spacing: normal; 163 | line-height: 20px; 164 | text-align: center; 165 | vertical-align: middle; 166 | border: none; 167 | } 168 | 169 | .miller ul.pane li 170 | { 171 | width: 100%; 172 | } 173 | -------------------------------------------------------------------------------- /mink-plugin/jquery.miller.js/miller.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | const methods = { 3 | 'getPath': function () { 4 | let path = [] 5 | 6 | $.each($(this).find('div.path span'), function (key, node) { 7 | path.push({ 'id': $(node).data('id'), 'name': $(node).text() }) 8 | } 9 | ) 10 | 11 | return path 12 | } 13 | } 14 | 15 | $.fn.miller = function (mixed) { 16 | if ( methods[mixed] ) { 17 | return methods[mixed].apply(this, Array.prototype.slice.call(arguments, 1)) 18 | } else { 19 | let miller = this 20 | let hasFocus = false 21 | let currentAjaxRequest = null 22 | let settings = $.extend(true, { 23 | 'url': function (id) { return id }, 24 | 'tabindex': 0, 25 | 'minWidth': 40, 26 | 'carrousel': false, 27 | 'toolbar': { 28 | 'options': {} 29 | }, 30 | 'pane': { 31 | 'options': {} 32 | } 33 | }, 34 | mixed 35 | ) 36 | 37 | if (!miller.attr('tabindex')) { 38 | miller.attr('tabindex', settings.tabindex) 39 | } 40 | 41 | miller 42 | .addClass('miller') 43 | .focus(function () { hasFocus = true }) 44 | .blur(function () { hasFocus = false }) 45 | 46 | let path = $('
', { 'class': 'path' }).appendTo(miller) 47 | let columns = $('
', { 'class': 'columns' }).appendTo(miller) 48 | 49 | let toolbar = null 50 | 51 | if (!$.isEmptyObject(settings.toolbar.options)) { 52 | let toolbar = $('
', { 'class': 'toolbar' }) 53 | .appendTo(miller) 54 | } 55 | 56 | let currentLine = null 57 | 58 | // document.addEventListener('keydown', (event) => { 59 | $(document).keypress(function (event) { 60 | if (hasFocus && currentLine && event.which != 37 && event.which != 38 && event.which != 39 && event.which != 40) { 61 | var newCurrentLine = currentLine.parent().children().filter(function () { return $(this).text().match(new RegExp('^' + String.fromCharCode(event.which))) }).first() 62 | 63 | if (newCurrentLine.length) { 64 | currentLine = newCurrentLine.click() 65 | } 66 | } 67 | } 68 | ) 69 | 70 | $(document).keydown(function (event) { 71 | if (hasFocus && currentLine && (event.which == 37 || event.which == 38 || event.which == 39 || event.which == 40)) { 72 | let newCurrentLine = [] 73 | let scrollTop = currentLine.parent().scrollTop() 74 | 75 | switch (event.which) { 76 | case 37: 77 | newCurrentLine = currentLine.parent().prev().prev().find('li.parentSelected') 78 | break 79 | 80 | case 38: 81 | newCurrentLine = currentLine.prev() 82 | 83 | if (!newCurrentLine.length && settings.carrousel) { 84 | newCurrentLine = currentLine.parent().find('li:last') 85 | scrollTop = newCurrentLine.position().top 86 | } 87 | break 88 | 89 | case 39: 90 | newCurrentLine = currentLine.parent().next().next().find('li:first') 91 | break 92 | 93 | case 40: 94 | newCurrentLine = currentLine.next() 95 | 96 | if (!newCurrentLine.length && settings.carrousel) { 97 | newCurrentLine = currentLine.parent().find('li:first') 98 | scrollTop = 0 99 | } 100 | break 101 | } 102 | 103 | if (newCurrentLine.length && !newCurrentLine.parent().hasClass('pane')) { 104 | currentLine = newCurrentLine.click() 105 | } 106 | 107 | return false 108 | } 109 | } 110 | ) 111 | 112 | let removeNextColumns = function () { 113 | let line = $(this) 114 | 115 | let column = line.parent() 116 | 117 | column.nextAll().slice(1).remove() 118 | 119 | column 120 | .find('li') 121 | .removeClass('selected parentSelected') 122 | 123 | line.addClass(line.hasClass('parent') ? 'parentSelected' : 'selected') 124 | 125 | let node = $('', { 'text': line.text() }) 126 | .data('id', line.data('id')) 127 | .click(function () { 128 | columns 129 | .children() 130 | .slice((($(this).index() * 2) + 4)) 131 | .remove() 132 | columns 133 | .children('ul:last') 134 | .find('li') 135 | .removeClass('parentSelected') 136 | path 137 | .children() 138 | .slice($(this).index() + 1) 139 | .remove() 140 | } 141 | ) 142 | .appendTo(path) 143 | 144 | let child = column.index() 145 | 146 | child -= (child - (child / 2)) 147 | 148 | path.scrollLeft(node.position().left).children().slice(child, -1).remove() 149 | } 150 | 151 | let buildColumn = function (lines) { 152 | if (lines == null) { 153 | $('li.parentLoading').remove() 154 | } else { 155 | if (currentLine && toolbar) { 156 | toolbar.children().remove() 157 | 158 | $.each(settings.toolbar.options, function (key, callback) { 159 | $('', { 'text': key }) 160 | .click(function () { callback.call(miller, currentLine.data('id')) }) 161 | .appendTo(toolbar) 162 | } 163 | ) 164 | } 165 | 166 | if (currentLine) { 167 | let currentColumn = currentLine.parent() 168 | let scroll = 0 169 | let scrollTop = currentColumn.scrollTop() 170 | let topOfCurrentLine = currentLine.position().top 171 | 172 | if (topOfCurrentLine < 0) { 173 | scroll = topOfCurrentLine 174 | } else { 175 | let bottomOfCurrentLine = currentLine.position().top + currentLine.height() 176 | let heightOfCurrentColumn = currentColumn.height() 177 | 178 | if (bottomOfCurrentLine > heightOfCurrentColumn) { 179 | scroll = bottomOfCurrentLine - heightOfCurrentColumn 180 | } 181 | } 182 | 183 | currentColumn.scrollTop(scrollTop + scroll) 184 | } 185 | 186 | let width = 0 187 | let lastGrip = columns.children('div.grip:last')[0] 188 | 189 | if (lastGrip) { 190 | lastGrip = $(lastGrip) 191 | width = lastGrip.position().left + lastGrip.width() + columns.scrollLeft() 192 | } 193 | 194 | if (lines.length <= 0) { 195 | let line = $('li.parentLoading') 196 | .removeClass('parent') 197 | .addClass('selected') 198 | 199 | if (!$.isEmptyObject(settings.pane.options)) { 200 | let pane = $('
    ') 201 | .css({ 'top': 0, 'left': width }) 202 | .addClass('pane') 203 | 204 | let id = line.data('id') 205 | 206 | $.each(settings.pane.options, function (key, callback) { 207 | $('
  • ', { 'text': key }) 208 | .click(function () { callback.call(miller, currentLine.data('id')) }) 209 | .appendTo(pane) 210 | } 211 | ) 212 | 213 | columns 214 | .append(pane) 215 | .scrollLeft(width + pane.width()) 216 | } 217 | } else { 218 | $('li.parentLoading').addClass('parentSelected') 219 | 220 | let column = $('
      ').css({ 'top': 0, 'left': width }) 221 | 222 | $.each(lines, function (id, data) { 223 | let line = $('
    • ', { 'text': data['name'] }) 224 | .data('id', data['id']) 225 | .click(removeNextColumns) 226 | .click(getLines) 227 | .appendTo(column) 228 | 229 | if (data['parent']) { 230 | line.addClass('parent') 231 | } 232 | } 233 | ) 234 | 235 | columns 236 | .append(column) 237 | .scrollLeft(width += column.width()) 238 | .append( 239 | $('
      ', { 'class': 'grip' }) 240 | .css({ 'top': 0, 'left': width }) 241 | .mousedown(function (event) { 242 | let x = event.pageX 243 | let cursor = columns.css('cursor') 244 | 245 | columns 246 | .css('cursor', 'col-resize') 247 | .mousemove(function (event) { 248 | let delta = event.pageX - x 249 | let newWidth = column.width() + delta 250 | 251 | if (newWidth > settings.minWidth) { 252 | column 253 | .width(newWidth) 254 | .nextAll() 255 | .each(function () { 256 | $(this).css('left', $(this).position().left + delta + columns.scrollLeft()) 257 | } 258 | ) 259 | } 260 | 261 | x = event.pageX 262 | } 263 | ) 264 | .mouseup(function () { 265 | columns 266 | .off('mousemove') 267 | .css('cursor', cursor) 268 | } 269 | ) 270 | } 271 | ) 272 | ) 273 | } 274 | } 275 | } 276 | 277 | let getLines = function (event) { 278 | if (currentAjaxRequest) { 279 | currentAjaxRequest.abort() 280 | } 281 | 282 | currentLine = $(event.currentTarget) 283 | .removeClass('parentSelected') 284 | .addClass('parentLoading') 285 | 286 | currentAjaxRequest = $.getJSON(settings.url($(this).data('id')), buildColumn) 287 | .always(function () { 288 | currentLine 289 | .removeClass('parentLoading') 290 | 291 | currentAjaxRequest = null 292 | } 293 | ) 294 | .fail(function () {}) 295 | 296 | } 297 | 298 | $.getJSON(settings.url(), buildColumn) 299 | 300 | return miller 301 | } 302 | } 303 | })(jQuery) 304 | -------------------------------------------------------------------------------- /mink-plugin/js/select2/select2.min.css: -------------------------------------------------------------------------------- 1 | .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} 2 | -------------------------------------------------------------------------------- /mink-plugin/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | "name": "Mink - Integrate Live & Archived Web +Memento", 4 | "short_name": "Mink", 5 | "version": "2.5.5.3", 6 | "description": "Integrating the Live and Archived Web Viewing Experience Using Memento", 7 | "homepage_url": "https://matkelly.com/mink", 8 | "author": "Mat Kelly ", 9 | "background": { 10 | "scripts": ["js/jquery-3.4.1.min.js","js/date.js","timemap.js","mink.js"], 11 | "persistent": true 12 | }, 13 | "browser_action": { 14 | "default_title": "Mink - Integrating the Live and Archived Web", 15 | "default_icon": { 16 | "19": "images/minkLogo19.png", 17 | "38": "images/minkLogo38.png"} 18 | }, 19 | 20 | "icons": { 21 | "16": "images/mink_marvel_16.png", 22 | "48": "images/mink_marvel_48.png", 23 | "128": "images/mink_marvel_128.png", 24 | "256": "images/mink_marvel_256.png", 25 | "512": "images/mink_marvel_512.png" 26 | }, 27 | "permissions": [ 28 | "webRequest", 29 | "", 30 | "tabs", 31 | "storage", 32 | "notifications", 33 | "contextMenus", 34 | "activeTab", 35 | "unlimitedStorage" 36 | ], 37 | "content_scripts": [ 38 | { 39 | "js": [ 40 | "js/jquery-3.4.1.min.js","js/select2/select2.min.js", 41 | "jquery.miller.js/miller.js", 42 | 43 | "content.js","timemap.js"], 44 | "matches": ["http://*/*", "https://*/*"], 45 | "css": ["style.css", 46 | "font-awesome-4.0.3/css/font-awesome-modified.css","js/select2/select2.min.css", 47 | "jquery.miller.js/jquery.miller.css","css/select2.css" 48 | 49 | ] 50 | } 51 | ], 52 | "content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'", 53 | "minimum_chrome_version": "40", 54 | "options_ui": { 55 | "page": "options.html", 56 | "open_in_tab": true, 57 | "chrome_style": false 58 | }, 59 | "web_accessible_resources": [ 60 | 61 | "images/mementoLogo-19px-30.png", "images/mementoLogo-19px-37_5.png", "images/mementoLogo-19px-45.png", "images/mementoLogo38_working.png", "images/icon-on-19.png","images/icon128.png","images/icon128flipped.png","images/icon128_error.png", 62 | "images/minkLogo38_noMementos.png", 63 | "images/m38_isAMemento.png", 64 | "images/archives/iaLogo.png","images/archives/archiveisLogo.png","images/archives/allListedArchives.png", 65 | "images/archives/iaLogo_success.png","images/archives/archiveisLogo_success.png", 66 | "images/spinner.gif", 67 | "images/archives/allListedArchives_success.png", 68 | "images/mementoLogos/mLogo38_7.5.png","images/mementoLogos/mLogo38_15.png","images/mementoLogos/mLogo38_22.5.png","images/mementoLogos/mLogo38_30.png","images/mementoLogos/mLogo38_37.5.png","images/mementoLogos/mLogo38_45.png","images/mementoLogos/mLogo38_52.5.png","images/mementoLogos/mLogo38_60.png", 69 | 70 | "images/mementoLogos/mLogo19_7.5.png","images/mementoLogos/mLogo19_15.png","images/mementoLogos/mLogo19_22.5.png","images/mementoLogos/mLogo19_30.png","images/mementoLogos/mLogo19_37.5.png","images/mementoLogos/mLogo19_45.png","images/mementoLogos/mLogo19_52.5.png","images/mementoLogos/mLogo19_60.png", 71 | 72 | "images/archives/ia.png", 73 | "style.css", 74 | "js/jquery-3.4.1.min.js", 75 | "js/date.js", 76 | 77 | "js/select2/select2.min.js","js/select2/select2.min.css", 78 | "js/displayMinkUI.js", "minkui.html", "css/minkui.css", "images/minkLogo_300.png", 79 | "images/mink_marvel_80.png", 80 | 81 | "images/archives/dropdown_ia.png", "images/archives/dropdown_ais.png", "images/archives/dropdown_wc.png", "css/select2.css", 82 | 83 | "jquery.miller.js/miller.js","jquery.miller.js/jquery.miller.css", 84 | "font-awesome-4.0.3/css/font-awesome-modified.css", 85 | "font-awesome-4.0.3/fonts/fontawesome-webfont.eot", 86 | "font-awesome-4.0.3/fonts/fontawesome-webfont.svg", 87 | "font-awesome-4.0.3/fonts/fontawesome-webfont.ttf", 88 | "font-awesome-4.0.3/fonts/fontawesome-webfont.woff", 89 | "font-awesome-4.0.3/fonts/fontAwesome.otf" 90 | ] 91 | } 92 | -------------------------------------------------------------------------------- /mink-plugin/minkui.html: -------------------------------------------------------------------------------- 1 |
      2 |
      3 | 4 |

      mementos available.

      5 | 6 |
      7 | 10 | 11 | 12 | 19 | 29 | 30 | 31 | 32 |
      33 |
        34 |
      • List mementos by:
      • 35 |
      • Dropdown
      • 36 |
      • Drilldown
      • 37 | 38 |
      • options
      • 39 |
      40 |
      41 | 42 |
      43 |
      44 | -------------------------------------------------------------------------------- /mink-plugin/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Mink options 5 | 6 | 7 | 8 | 9 | 12 | 22 | 23 |
      24 |
      25 |

      Mink

      26 | 27 |

      Mink is a Google Chrome extension that uses the Memento 28 | protocol to indicate that a page a user is viewing on the live web has an archived copy and to give the 29 | user access to the copy. If no copies exist, the extension provides one-button access to preserve the page 30 | in various web archives and to easily view the page once it has been preserved. 31 |

      32 | 33 |
      34 |
      35 |

      Archival Sources

      36 | 37 |

      Mink requests archival captures (mementos) for the URI currently being viewed from a source of archives. By 38 | default, a Memento aggregator is used. When a user requests a list of mementos from an aggregator, the 39 | aggregator in turn relays this request to a set of archives. An aggregator is not mandatory but simplifies 40 | the configuration. Mink is setup to use the Memento aggregator at https://memgator.cs.odu.edu by default. 41 | This can be changed below by changing the aggregator as well as adding or removing additional archival 42 | sources.

      43 | 44 | 53 | 54 | 61 |
      62 | 63 |
      64 |

      Cached TimeMaps

      65 | 66 |

      A request for a TimeMap, which contains archival captures, can take some time for an archival source to 67 | provide. Mink retains these TimeMaps until enough newer TimeMaps are received or the cache is cleared. This 68 | section allows you to manipulate the cache.

      69 |
      70 | Cached TimeMaps 71 | 72 | 73 | 74 |

      75 | 76 |
      77 |
      78 |
      79 | 80 |

      Ignore List

      81 | 82 |

      You may not want Mink to run on certain sites. On these sites, no request will be sent to the archival 83 | sources (above) to get a list of captures. This can be useful for sites like Gmail, which you would not 84 | expect archives to have a copy due to the authentication requirement when accessing the site on the live 85 | Web.

      86 | 87 |
      88 | Ignore List (do not run Mink on these URIs) 89 | 90 |
        91 | 92 |

        93 | 94 | 95 | 96 | 97 |
        98 | 99 | 100 |
        101 | 102 | 103 |
        104 | 105 | 106 |
        107 |
        108 | 109 | -------------------------------------------------------------------------------- /mink-plugin/options.js: -------------------------------------------------------------------------------- 1 | /* global chrome, $ */ 2 | 3 | var debug = true 4 | 5 | const tmDropdownString = '' 6 | const tmDropdownNoTimemapsString = '' 7 | 8 | function restoreOptions () { 9 | chrome.storage.local.get('ignorelist', function (items) { 10 | $(items.ignorelist).each(function (i, v) { 11 | $('#options').append(getListItemHTML(v, 'glyphicon-remove')) 12 | }) 13 | updateSaveButtonStatus() 14 | updateRemoveAllIgnorelistButtonStatus() 15 | 16 | $('.remove').click(function () { 17 | if ($(this).hasClass('glyphicon-remove')) { 18 | $(this).parent().addClass('strike') 19 | $(this).toggleClass('glyphicon-remove glyphicon-ok') 20 | } else { 21 | $(this).toggleClass('glyphicon-ok glyphicon-remove') 22 | $(this).parent().removeClass('strike') 23 | } 24 | updateSaveButtonStatus() 25 | updateRemoveAllIgnorelistButtonStatus() 26 | }) 27 | }) 28 | 29 | chrome.storage.local.get('aggregators', function (ls) { 30 | let dropdownOptions = document.querySelector('#aggregator').options 31 | for (let i = 0; i < dropdownOptions.length; i++) { 32 | if (dropdownOptions[i].value == ls.aggregators[0]) { 33 | document.querySelector('#aggregator').selectedIndex = i 34 | break 35 | } 36 | } 37 | }) 38 | } 39 | 40 | function getListItemHTML (uri, classIn, buttonText) { 41 | if (!buttonText) { 42 | buttonText = '' 43 | } 44 | return `
      • ${uri}
      • ` 45 | } 46 | 47 | function clearIgnorelist () { 48 | chrome.storage.local.set({ ignorelist: [] }) 49 | document.location.reload() 50 | } 51 | 52 | function saveIgnorelist (dontReload) { 53 | const ignorelistJSON = {} 54 | const uris = [] 55 | $('#options li:not(.strike) span').each(function () { 56 | uris.push($(this).text()) 57 | }) 58 | 59 | ignorelistJSON.ignorelist = uris 60 | chrome.storage.local.set(ignorelistJSON) 61 | $('.newEntry').removeClass('newEntry') // Disable indicator for unsaved data 62 | updateSaveButtonStatus() 63 | 64 | if (!dontReload) { 65 | document.location.reload() 66 | } 67 | } 68 | 69 | function saveAggregatorSource () { 70 | let dropdown = document.querySelector('#aggregator') 71 | let availableOptions = [dropdown.options[dropdown.selectedIndex].value] 72 | 73 | for (let i = 0; i < dropdown.options.length; i++) { 74 | if (!dropdown.options[i].disabled && i != dropdown.selectedIndex) { 75 | availableOptions.push(dropdown.options[i].value) 76 | } 77 | } 78 | if (debug) { 79 | console.log(`Setting aggregator chain to ${availableOptions.join(',')}`) 80 | } 81 | chrome.storage.local.set({ 'aggregators': availableOptions }) 82 | } 83 | 84 | function updateSaveButtonStatus () { 85 | const saveIgnorelistButton = $('#saveIgnorelist') 86 | if ($('.glyphicon-ok').length > 0 || $('.newEntry').length > 0) { 87 | saveIgnorelistButton.removeAttr('disabled').removeClass('disabled') 88 | } else { 89 | saveIgnorelistButton.attr('disabled', 'disabled').addClass('disabled') 90 | } 91 | } 92 | 93 | function updateRemoveAllIgnorelistButtonStatus () { 94 | const clearIgnorelistButton = $('#clearIgnorelist') 95 | if (debug) { 96 | const lis = $('#options li') 97 | console.log(lis.length) 98 | console.log(lis) 99 | } 100 | if ($('#options li').length > 0) { 101 | clearIgnorelistButton.removeAttr('disabled').removeClass('disabled') 102 | } else { 103 | clearIgnorelistButton.attr('disabled', 'disabled').addClass('disabled') 104 | } 105 | } 106 | 107 | function createAddURIBinder () { 108 | $('#add').click(function () { 109 | addMinkIgnorelistToBeSavedLI() 110 | bindAddIgnorelistEntryUI() 111 | }) 112 | } 113 | 114 | function bindAddIgnorelistEntryUI () { 115 | $('.uriTextField').keyup(function () { 116 | const uriFieldValue = $(this).val() 117 | if (uriFieldValue.length === 0) { 118 | $(this).parent().find('button.addToIgnorelist').attr('disabled', true) 119 | } else { 120 | $(this).parent().find('button.addToIgnorelist').removeAttr('disabled') 121 | } 122 | }) 123 | $('.addToIgnorelist').click(addToIgnorelistToBeSaved) 124 | $('.cancelAddToIgnorelist').click(removeFromIgnorelistToBeSaved) 125 | } 126 | 127 | function addMinkIgnorelistToBeSavedLI (valIn) { 128 | if (!valIn) { 129 | valIn = '' 130 | } 131 | $('#options').prepend(`
      • `) 132 | } 133 | 134 | function addToIgnorelistToBeSaved () { 135 | let uri = $(this).parent().find('.uriTextField').val() 136 | if (uri.substr(0, 4) !== 'http') { 137 | uri = `http://${uri}` 138 | } 139 | 140 | $(this).parent().replaceWith(getListItemHTML(uri, 'glyphicon-remove newItem')) 141 | const newItem = $('.newItem') 142 | newItem.click(removeEntry) 143 | newItem.removeClass('newItem').parent().addClass('newEntry') 144 | // $('.newEntry').append(''); 145 | updateSaveButtonStatus() 146 | } 147 | 148 | function removeFromIgnorelistToBeSaved () { 149 | $(this).parent().remove() 150 | } 151 | 152 | function removeEntry () { 153 | $(this).parent().remove() 154 | updateSaveButtonStatus() 155 | } 156 | 157 | function populatedCachedTimeMapsUI () { 158 | chrome.storage.local.get('timemaps', function (items) { 159 | if (debug) { 160 | console.log('items in the TM localstorage') 161 | console.log(items) 162 | } 163 | 164 | const tms = items.timemaps 165 | 166 | const keys = tms ? Object.keys(tms) : 0 167 | // let uriPluralityString = keys.length === 1 ? 'URI' : 'URIs' 168 | 169 | const cachedTimeMapsUI = $('#cachedTimemaps') 170 | if (keys.length) { 171 | cachedTimeMapsUI.append(tmDropdownString) 172 | for (let tm = 0; tm < keys.length; tm++) { 173 | let originalURI = tms[keys[tm]].original_uri 174 | if (!tms[keys[tm]].original_uri) { 175 | originalURI = keys[tm] 176 | } 177 | cachedTimeMapsUI.append(``) 178 | } 179 | enableRemoveButtons(false, '#removeAllTMsFromCache') 180 | cachedTimeMapsUI.change(enableRemoveButtonsBasedOnDropdown) 181 | } else { 182 | cachedTimeMapsUI.append(tmDropdownNoTimemapsString) 183 | enableRemoveButtons(true, '#cachedTimemaps, #removeAllTMsFromCache') 184 | } 185 | enableRemoveButtonsBasedOnDropdown() 186 | }) 187 | } 188 | 189 | function updateMementoCount () { 190 | chrome.storage.local.get('timemaps', function (items) { 191 | const selectedURI = document.querySelector('#cachedTimemaps').value 192 | const count = items.timemaps[selectedURI].mementos.list.length 193 | let plurality = 's' 194 | if (count === 1) { 195 | plurality = '' 196 | } 197 | document.querySelector('#mementoCount').innerHTML = `${count} memento${plurality} available` 198 | }) 199 | } 200 | 201 | function resetMementoCount () { 202 | document.querySelector('#mementoCount').innerHTML = '' 203 | } 204 | 205 | function enableRemoveButtons (disable, additionalIdsIn) { 206 | let additionalIds = '' 207 | if (additionalIdsIn) { 208 | additionalIds = `,${additionalIdsIn}` 209 | } 210 | const buttonIds = `#removeSelectedTMFromCache, #removeSelectedTMFromCacheAndIgnorelist${additionalIds}` 211 | $(buttonIds).prop('disabled', disable) 212 | } 213 | 214 | function enableRemoveButtonsBasedOnDropdown () { 215 | const selectedIndex = $(this).find('option:selected').index() 216 | if (selectedIndex > 0) { // -1 would be valid with the verbose conditional 217 | enableRemoveButtons(false) 218 | updateMementoCount() 219 | } else { // Selected index is 0, disable 220 | enableRemoveButtons(true) 221 | resetMementoCount() 222 | } 223 | } 224 | 225 | function removeTMFromCache (originalURI) { 226 | chrome.storage.local.get('timemaps', function (items) { 227 | const tms = items.timemaps 228 | delete tms[originalURI] 229 | chrome.storage.local.set({ timemaps: tms }, 230 | function () { 231 | console.log('Cache updated, updating UI') 232 | $('#cachedTimemaps').empty() 233 | populatedCachedTimeMapsUI() 234 | } 235 | ) 236 | }) 237 | } 238 | 239 | function clearTimemapCache () { 240 | chrome.storage.local.set({ timemaps: {} }, 241 | function () { 242 | console.log('Remove all cached TMs') 243 | $('#cachedTimemaps').empty() 244 | populatedCachedTimeMapsUI() 245 | } 246 | ) 247 | 248 | chrome.storage.local.set({ headers: {} }, 249 | function () { 250 | console.log('Remove headers') 251 | } 252 | ) 253 | } 254 | 255 | function saveAndCloseOptionsPanel () { 256 | saveIgnorelist() 257 | saveAggregatorSource() 258 | // window.close() 259 | } 260 | 261 | function restoreDefaults () { 262 | clearIgnorelist() 263 | clearTimemapCache() 264 | resetAggregatorSelection() 265 | } 266 | 267 | 268 | function resetAggregatorSelection () { 269 | let dropdown = document.querySelector('#aggregator') 270 | dropdown.selectedIndex = 0 271 | saveAggregatorSource() 272 | } 273 | 274 | 275 | function removeSelectedURIFromTimeMapCache () { 276 | const oURI = $('#cachedTimemaps option:selected').text() 277 | removeTMFromCache(oURI) 278 | } 279 | 280 | function addSelectedURIToIgnorelist () { 281 | const oURI = $('#cachedTimemaps option:selected').text() 282 | $('#options').append(`
      • ${oURI}>
      • `) 283 | } 284 | 285 | document.addEventListener('DOMContentLoaded', restoreOptions) 286 | document.addEventListener('DOMContentLoaded', createAddURIBinder) 287 | document.addEventListener('DOMContentLoaded', populatedCachedTimeMapsUI) 288 | 289 | document.querySelector('#removeSelectedTMFromCache').addEventListener('click', removeSelectedURIFromTimeMapCache) 290 | 291 | /* Not yet well-positioned in the GUI 292 | document.querySelector('#removeSelectedTMFromCacheAndIgnorelist').addEventListener('click', function () { 293 | addSelectedURIToIgnorelist() 294 | const dontReloadAfterSavingIgnorelist = true 295 | saveIgnorelist(dontReloadAfterSavingIgnorelist) 296 | removeSelectedURIFromTimeMapCache() 297 | }) 298 | */ 299 | 300 | document.querySelector('#removeAllTMsFromCache').addEventListener('click', clearTimemapCache) 301 | document.querySelector('#saveIgnorelist').addEventListener('click', saveIgnorelist) 302 | document.querySelector('#clearIgnorelist').addEventListener('click', clearIgnorelist) 303 | document.querySelector('#doneButton').addEventListener('click', saveAndCloseOptionsPanel) 304 | document.querySelector('#restoreDefaultsButton').addEventListener('click', restoreDefaults) 305 | -------------------------------------------------------------------------------- /mink-plugin/style.css: -------------------------------------------------------------------------------- 1 | @media print { 2 | #minkContainer *, * #minkContainer {display: none;} 3 | } 4 | 5 | #mLogo {width: 50px; display: none; top: 0; z-index: 999998; position: relative;} 6 | #minkContainer {position: fixed; bottom: 5px; right: 5px;text-align: center; width: 100px; z-index: 9999; font-size: 12px; border: 0; height: 50px;} 7 | * #minkContainer, #minkContainer * {top: auto; left: auto;} /* Fix #62 */ 8 | 9 | #archiveOptions {position: absolute; top: 0; left: 0; margin-left: 0; margin-top: 10px; width: 725px; background-color: #ccc; z-index: 98; text-align: left; 10 | padding: 5px; background: linear-gradient(to right, #bbbbbb, rgba(187,187,187,0.75)); opacity: 0.0; font-weight: bold; border-radius: 4px; height: 1.75em; 11 | } 12 | #mdts, #dateUIButton, #helpButton {margin-left: 1.0em;} 13 | #prevMementoButton,#fetchLabel {margin-left: 1.5em;} 14 | 15 | #datepickerContainer {position: absolute; top: 5px; left: 40%; text-align: center; width: 100px; z-index: 10000; background-color: white;} 16 | #datepickerOptions {position: absolute; top: 0; left: 0; margin-top: 0; width: 725px; min-height: 50%; background-color: #ccc; z-index: 98; text-align: left; 17 | padding: 5px; 18 | background: linear-gradient(to bottom, #999999, rgba(187,187,187,0.75)); 19 | 20 | font-weight: bold; border-radius: 4px; 21 | } 22 | #datepickerOptions ul {list-style-type: none;} 23 | #countOverLogo {position: absolute; right: 20px; bottom: 0; text-align: right; padding: 0 7px 0 7px; color: blue; z-index: 999999; margin: 0; font-weight: bold; 24 | font-family: Arial, sans-serif; font-size: 18px; border-radius: 25px; letter-spacing: normal; 25 | opacity: 0.9; display: none; background: #ddd; box-shadow: 0 2px 5px #888888; 26 | } 27 | #countOverLogo:hover {cursor: pointer; background-color: #999;} 28 | 29 | #archiveNow {margin-left: 0.5em;} 30 | #archiveNowOptions button:enabled {border: 4px double black; background-color: white; outline: 0;} 31 | #archiveNowOptions button:disabled {border: 4px dashed #999;} 32 | #archiveNowOptions button:enabled:hover {cursor: pointer; border: 4px solid black;} 33 | #archiveNowOptions button.archiveNowSuccess {border: 4px solid green; background-color: green; color: white; font-weight: bold;} 34 | #archiveNowOptions button.archiveNowSuccess:hover {background-color: #006600; border: 4px solid #006600;} 35 | 36 | /* D3 style */ 37 | .bar {fill: steelblue;} 38 | 39 | .axis text {font: 10px sans-serif;} 40 | 41 | .axis path, 42 | .axis line { 43 | fill: none; 44 | stroke: #000; 45 | shape-rendering: crispEdges; 46 | } 47 | .x.axis path {display: none;} 48 | 49 | /* - initially hide viz */ 50 | #csvdata {display: none;} 51 | 52 | #info {position: relative; z-index: 2;} 53 | 54 | #largerNumberButtons {position: absolute; z-index: 1; top: -25px; left: 125px; background-color: #ccc; border-radius: 10px; border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom: 1px double #999; width: 300px; height: 2.0em;} 55 | #largerNumberButtons>p {float: left; padding: 0 5px 0 5px; font-size: 12px; padding-top: 3px;} 56 | #largerNumberButtons p, #largerNumberButtons button, #largerNumberButtons input[type=submit], #largerNumberButtons input[type=button] {margin-bottom: 0; color: black;} 57 | #largerNumberButtons button.disabled {opacity: 0.5; border: 1px dashed black;} 58 | .largeNumberOfMementoOption { padding: 3px 5px; font-weight: bold; display: block; border: 1px solid black; border-radius: 10px; background-color: white; line-height: 1.2em; box-shadow: 0 2px 5px #888888; outline: 0; float: left;} 59 | .largeNumberOfMementoOption span {color: #999;} 60 | .activeButton span {color: black;} 61 | 62 | .largeNumberOfMementoOption:hover, 63 | .largeNumberOfMementoOption:hover span, 64 | .activeButton:hover span {background-color: #0000ff; color: white; cursor: pointer;} 65 | .largeNumberOfMementoOption[disabled]:hover, 66 | .largeNumberOfMementoOption[disabled]:active, 67 | .largeNumberOfMementoOption[disabled='disabled']:hover, 68 | .largeNumberOfMementoOption[disabled='disabled']:hover span {cursor: not-allowed; background-color: white; color: #999;} 69 | 70 | 71 | 72 | #drilldownBox {border: 1px solid #999; padding: 2px; position: absolute; z-index: 1; left: 125px; font-family: Arial, sans-serif; background-color: white;} 73 | #drilldownBox ul {list-style-type: none; width: 100px; float: left; padding: 0; background-color: white; max-height: 500px; overflow-x: hidden; overflow-y: auto;} 74 | #drilldownBox ul li {list-style-type: none; padding: 0; margin: 0; width: 90px;} 75 | #drilldownBox ul li:hover {background-color: #ddddff; cursor: pointer;} 76 | #drilldownBox ul li.selectedOption {background-color: #ddddff;} 77 | #drilldownBox ul li span.memCount {float: right; font-family: Monaco, Courier, sans-serif; padding: 0 3px; margin-right: 5px; border-radius: 2px; font-size: 10px; margin-top: 3px; line-height: 10px;} 78 | 79 | 80 | /* Do not display UI elements for non-selected view of list of mementos */ 81 | .hiddenUI {display: none;} 82 | 83 | /* This isn't working, the image ought to be pulled from the extension, not the current page */ 84 | /* option.ia {background-image: url('images/archives/ia.png');}*/ 85 | 86 | /* } End @media screen */ 87 | -------------------------------------------------------------------------------- /mink-plugin/timemap.js: -------------------------------------------------------------------------------- 1 | /* global log */ 2 | // debug = false 3 | 4 | function isValidURL (string) { 5 | try { 6 | return new URL(string) instanceof URL 7 | } catch (_) { 8 | return false 9 | } 10 | } 11 | 12 | function Timemap (fromString) { 13 | log('In timemap.js') 14 | let timemap, timegate, original, url, self 15 | this.str = fromString 16 | if (!this.str) { 17 | log('Data passed in was null') 18 | 19 | return 20 | } 21 | 22 | // Check if the string passed in is an Object, e.g., https://github.com/ 23 | const strIsAnObject = (typeof this.str === 'object') && (this.str !== null) 24 | 25 | if (strIsAnObject) { 26 | log('Handle fromString as an object, akin to github.com') 27 | // this = this.str 28 | } 29 | 30 | const linkHeaderEntries = this.str.split(',') 31 | 32 | const mementoRelTimegateExpression = /rel=.*timegate.*/gi 33 | const mtimegateregex = new RegExp(mementoRelTimegateExpression) // Regex to get timegate 34 | 35 | const mementoRelTimemapExpression = /rel=.*timemap.*/gi 36 | const mtimemapregex = new RegExp(mementoRelTimemapExpression) // Regex to get timemap 37 | 38 | const mementoRelOriginalExpression = /rel=.*original.*/gi 39 | const moriginalregex = new RegExp(mementoRelOriginalExpression) // Regex to get original 40 | 41 | const mementoRelMementoExpression = /rel=.*memento[^a-zA-Z].*/gi 42 | const mementoregex = new RegExp(mementoRelMementoExpression) // Regex to get a memento 43 | 44 | const mementoRelSelfExpression = /rel=.*self.*/gi 45 | const mselfregex = new RegExp(mementoRelSelfExpression) // Regex to get self 46 | 47 | this.mementos = [] 48 | 49 | for (let lhe = 0; lhe < linkHeaderEntries.length; lhe++) { 50 | const partsOfEntry = linkHeaderEntries[lhe].split(';') 51 | 52 | for (let partOfEntry = 0; partOfEntry < partsOfEntry.length; partOfEntry++) { 53 | if (isValidURL(partsOfEntry[partOfEntry].slice(1, -1))) { 54 | url = partsOfEntry[partOfEntry] 55 | } 56 | 57 | /* Splitting into multiple ifs instead of if-else allows for e.g., rel="timegate original" */ 58 | if (partsOfEntry[partOfEntry].match(mtimegateregex)) { 59 | timegate = url 60 | log(`Found TimeGate: ${url}`) 61 | } 62 | if (partsOfEntry[partOfEntry].match(mtimemapregex)) { 63 | timemap = url 64 | log(`Found TimeMap: ${url}`) 65 | } 66 | if (partsOfEntry[partOfEntry].match(moriginalregex)) { 67 | original = url 68 | log(`Found orig: ${url}`) 69 | } 70 | if (partsOfEntry[partOfEntry].match(mselfregex)) { 71 | self = url 72 | log(`Found self: ${url}`) 73 | } 74 | if (partsOfEntry[partOfEntry].match(mementoregex)) { 75 | this.mementos.push(new Memento(linkHeaderEntries[lhe] + linkHeaderEntries[lhe + 1])) 76 | } 77 | } 78 | } 79 | 80 | if (timemap) { this.timemap = sanitizeMementoURI(timemap) } 81 | if (timegate) { this.timegate = sanitizeMementoURI(timegate) } 82 | if (original) { this.original = sanitizeMementoURI(original) } 83 | if (self) { this.self = sanitizeMementoURI(self) } 84 | 85 | if (!timemap && !timegate && !original) { 86 | log('Link header exists, but we did not find a TimeMap, TimeGate or original value in the header.', 87 | 'link header: ', this.str, linkHeaderEntries, linkHeaderEntries) 88 | } 89 | 90 | // Rm raw data after parsing 91 | delete this.str 92 | } 93 | 94 | function Memento (fromStr) { 95 | this.str = fromStr 96 | this.first = false 97 | this.last = false 98 | this.next = null 99 | this.prev = null 100 | 101 | if (!fromStr) { return } 102 | 103 | this.uri = this.str.substring(this.str.indexOf('<') + 1, this.str.indexOf('>')) 104 | this.datetime = this.str.substr(this.str.indexOf('datetime')) // Abbreviation to just include datetime string and on 105 | this.datetime = this.datetime.substr(this.datetime.indexOf('"')).replace(/"/g, '').trim() 106 | 107 | const mementoRelFirstExpression = /rel=.*first.*/gi 108 | const mfirstregex = new RegExp(mementoRelFirstExpression) // Regex to get first 109 | 110 | const mementoRelLastExpression = /rel=.*last.*/gi 111 | const mlastregex = new RegExp(mementoRelLastExpression) // Regex to get last 112 | 113 | const mementoRelNextExpression = /rel=.*next.*/gi 114 | const mnextregex = new RegExp(mementoRelNextExpression) // Regex to get next 115 | 116 | const mementoRelPrevExpression = /rel=.*prev.*/gi 117 | const mprevregex = new RegExp(mementoRelPrevExpression) // Regex to get next 118 | 119 | if (fromStr.match(mfirstregex)) { 120 | this.first = true 121 | } 122 | if (fromStr.match(mlastregex)) { 123 | this.last = true 124 | } 125 | if (fromStr.match(mnextregex)) { 126 | this.next = true 127 | } 128 | if (fromStr.match(mprevregex)) { 129 | this.prev = true 130 | } 131 | } 132 | 133 | /* *************************** 134 | PUT BELOW IN UTIL.JS 135 | *************************** */ 136 | 137 | function sanitizeMementoURI (mURI) { 138 | let ret = mURI.trim() 139 | if (ret.substr(0, 1) === '<' && ret.substr(ret.length - 1, 1) === '>') { 140 | ret = ret.substr(1, ret.length - 2) // Remove first and last characters 141 | } 142 | return ret 143 | } 144 | 145 | this.timemap = Timemap 146 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Mink", 3 | "description": "Integrate the Live & Archived Web +Memento", 4 | "author": { 5 | "email": "mink@matkelly.com", 6 | "name": "Mat Kelly", 7 | "url": "https://matkelly.com" 8 | }, 9 | "keywords": [ 10 | "archive", 11 | "web archive", 12 | "web archiving", 13 | "memento", 14 | "aggregation" 15 | ], 16 | "license": "MIT", 17 | "repository": { 18 | "type": "git", 19 | "url": "git://github.com/machawk1/mink.git" 20 | }, 21 | "scripts": { 22 | "test": "standard" 23 | }, 24 | "devDependencies": { 25 | "codecov": "^3.1.0", 26 | "standard": "^17.1.0", 27 | "stylelint": "^14.14.0", 28 | "stylelint-config-standard": "^29.0.0", 29 | "stylelint-use-logical": "^2.0.0" 30 | }, 31 | "standard": { 32 | "ignore": [ 33 | "mink-plugin/js/date.js", 34 | "mink-plugin/jquery.miller.js/*", 35 | "mink-plugin/d3.v3/*", 36 | "mink-plugin/d3.makechart.js" 37 | ] 38 | } 39 | } 40 | --------------------------------------------------------------------------------