├── .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 | 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 |
8 | Select a Memento
9 |
10 |
11 |
12 |
13 | Archive Page To...
14 |
15 |
16 |
17 | < Go Back
18 |
19 |
20 | Back to Live Web
21 | Navigate to
22 | First
23 | Previous
24 | •
25 | Next
26 | Last
27 | memento
28 |
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 |
10 |
11 |
12 |
13 |
21 |
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 |
45 | Memento Aggregator
46 |
47 | https://memgator.cs.odu.edu
48 | https://aggregator.matkelly.com
49 | https://mementoweb.org
50 | localhost (MemGator via WAIL)
51 |
52 |
53 |
54 |
55 | Additional Archives
56 |
57 | localhost via WAIL
58 |
59 | Not yet implemented
60 |
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 | Remove
73 |
74 |
75 | Remove All
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 | add
90 |
91 |
92 |
93 |
94 | Save Ignore List
95 | Clear Ignore List
96 |
97 |
98 |
99 |
100 |
101 | Restore Defaults
102 | Done
103 |
104 |
105 |
106 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/mink-plugin/options.js:
--------------------------------------------------------------------------------
1 | /* global chrome, $ */
2 |
3 | var debug = true
4 |
5 | const tmDropdownString = ' ↓ Mink has TimeMaps for... ↓ '
6 | const tmDropdownNoTimemapsString = '--- No TimeMaps available --- '
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 `${buttonText} ${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(`Add to Ignore List Cancel `)
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('Nevermind ');
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(`${originalURI} `)
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 |
--------------------------------------------------------------------------------