├── dist
├── Protael.zip
└── protael.css
├── doc
├── img
│ ├── glyphicons-halflings.png
│ └── glyphicons-halflings-white.png
├── scripts
│ ├── linenumber.js
│ ├── prettify
│ │ ├── lang-css.js
│ │ ├── Apache-License-2.0.txt
│ │ └── prettify.js
│ ├── toc.js
│ ├── bootstrap-tab.js
│ └── bootstrap-dropdown.js
├── styles
│ ├── prettify-jsdoc.css
│ ├── prettify-tomorrow.css
│ ├── jsdoc-default.css
│ ├── sunlight.default.css
│ └── sunlight.dark.css
├── index.html
├── namespaces.list.html
├── classes.list.html
├── global.html
├── Protael.Protael.html
├── Protael.html
└── Protael.Paper.html
├── TODO.md
├── history.md
├── .gitignore
├── README.md
├── package.json
├── conf
└── jsdoc.conf.json
├── LICENSE.md
├── lib
├── LICENSE_FileSaver_Blob.md
├── saveSvgAsPng.js
└── FileSaver_Blob.js
├── protaelSeed.html
├── Gruntfile.js
├── css
└── protael.css
├── json
├── graphs.json
├── bnab.json
├── allFeaturesExample.json
└── bnab_BG505.SOSIP.664_DQ208458_base.json
└── index.html
/dist/Protael.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanshu/protaeljs/HEAD/dist/Protael.zip
--------------------------------------------------------------------------------
/doc/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanshu/protaeljs/HEAD/doc/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/doc/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanshu/protaeljs/HEAD/doc/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/TODO.md:
--------------------------------------------------------------------------------
1 | #Protael TODOs
2 |
3 | ==============
4 |
5 | - [ ] add comments to public API functions
6 | - [ ] add tests
7 | - [ ] change domain name
--------------------------------------------------------------------------------
/history.md:
--------------------------------------------------------------------------------
1 | #1.1.0
2 |
3 | * Stable release
4 | * Added qtracks tooltips showing current value
5 |
6 |
7 | #0.1.0
8 |
9 | * Initial beta release
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /public_html/node_modules/
2 | /nbproject/
3 | /public_html/build/
4 | /public_html/TODO.md
5 | /public_html/dist/
6 | /config/
7 | /node_modules/
8 | /public_html/
9 | /build/
--------------------------------------------------------------------------------
/doc/scripts/linenumber.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | var counter = 0;
3 | var numbered;
4 | var source = document.getElementsByClassName('prettyprint source');
5 |
6 | if (source && source[0]) {
7 | source = source[0].getElementsByTagName('code')[0];
8 |
9 | numbered = source.innerHTML.split('\n');
10 | numbered = numbered.map(function(item) {
11 | counter++;
12 | return '' + item;
13 | });
14 |
15 | source.innerHTML = numbered.join('\n');
16 | }
17 | })();
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Protael
2 | ==============
3 |
4 | [](https://gitter.im/sanshu/protaeljs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](http://dx.doi.org/10.5281/zenodo.14840)
5 |
6 |
7 |
8 | Protael is a vector graphics library for displaying various biological sequence
9 | related data on web pages.
10 |
11 |
12 | ##Documentation
13 |
14 | Documentation and usage example could be found on [Protael website] (http://protael.org/).
15 |
16 |
17 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "protael",
3 | "version": "1.1.0",
4 | "description": "Protein vector vizualization Library",
5 | "main": "./dist/protael.1.1.0.min.js",
6 | "repository": {
7 | "type": "git",
8 | "url": "git@github.com:sanshu/protaeljs.git"
9 | },
10 | "author": "Mayya Sedova",
11 | "license": "Apache License v2",
12 | "devDependencies": {
13 | "grunt": "^0.4.5",
14 | "grunt-concat-css": "^0.3.1",
15 | "grunt-contrib-clean": "^0.5.0",
16 | "grunt-contrib-compress": "^0.10.0",
17 | "grunt-contrib-concat": "^0.5.0",
18 | "grunt-contrib-copy": "^0.5.0",
19 | "grunt-contrib-uglify": "~0.2.0",
20 | "grunt-exec": "~0.4.2",
21 | "grunt-jsdoc": "^0.5.6",
22 | "snapsvg": "^0.3.0"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/conf/jsdoc.conf.json:
--------------------------------------------------------------------------------
1 | {
2 | "tags": {
3 | "allowUnknownTags": true
4 | },
5 | "plugins": [],
6 | "templates": {
7 | "template" : "./node_modules/grunt-jsdoc/node_modules/ink-docstrap/template",
8 | "cleverLinks": false,
9 | "monospaceLinks": false,
10 | "dateFormat": "ddd MMM Do YYYY",
11 | "outputSourceFiles": true,
12 | "outputSourcePath": true,
13 | "systemName": "Protael",
14 | "footer": "",
15 | "copyright": "© 2014 ",
16 | "navType": "vertical",
17 | "theme": "flatly",
18 | "linenums": true,
19 | "collapseSymbols": false,
20 | "inverseNav": true,
21 | "highlightTutorialCode": true,
22 | "protocol": "fred://"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/doc/scripts/prettify/lang-css.js:
--------------------------------------------------------------------------------
1 | PR.registerLangHandler(PR.createSimpleLexer([
2 | ["pln", /^[\t\n\f\r ]+/, null, " \t\r\n"]
3 | ], [
4 | ["str", /^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/, null],
5 | ["str", /^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/, null],
6 | ["lang-css-str", /^url\(([^"')]*)\)/i],
7 | ["kwd", /^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i, null],
8 | ["lang-css-kw", /^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],
9 | ["com", /^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],
10 | ["com", /^(?:<\!--|--\>)/],
11 | ["lit", /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],
12 | ["lit", /^#[\da-f]{3,6}/i],
13 | ["pln", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],
14 | ["pun", /^[^\s\w"']+/]
15 | ]), ["css"]);
16 | PR.registerLangHandler(PR.createSimpleLexer([], [
17 | ["kwd", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]
18 | ]), ["css-kw"]);
19 | PR.registerLangHandler(PR.createSimpleLexer([], [
20 | ["str", /^[^"')]+/]
21 | ]), ["css-str"]);
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014-2015 Mayya Sedova
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 |
--------------------------------------------------------------------------------
/lib/LICENSE_FileSaver_Blob.md:
--------------------------------------------------------------------------------
1 | Copyright © 2014 [Eli Grey][1].
2 |
3 | Permission is hereby granted, free of charge, to any person
4 | obtaining a copy of this software and associated documentation
5 | files (the "Software"), to deal in the Software without
6 | restriction, including without limitation the rights to use,
7 | copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the
9 | Software is furnished to do so, subject to the following
10 | conditions:
11 |
12 | The above copyright notice and this permission notice shall be
13 | included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 | OTHER DEALINGS IN THE SOFTWARE.
23 |
24 |
25 | [1]: http://eligrey.com
26 |
--------------------------------------------------------------------------------
/doc/styles/prettify-jsdoc.css:
--------------------------------------------------------------------------------
1 | /* JSDoc prettify.js theme */
2 |
3 | /* plain text */
4 | .pln {
5 | color: #000000;
6 | font-weight: normal;
7 | font-style: normal;
8 | }
9 |
10 | /* string content */
11 | .str {
12 | color: #006400;
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
17 | /* a keyword */
18 | .kwd {
19 | color: #000000;
20 | font-weight: bold;
21 | font-style: normal;
22 | }
23 |
24 | /* a comment */
25 | .com {
26 | font-weight: normal;
27 | font-style: italic;
28 | }
29 |
30 | /* a type name */
31 | .typ {
32 | color: #000000;
33 | font-weight: normal;
34 | font-style: normal;
35 | }
36 |
37 | /* a literal value */
38 | .lit {
39 | color: #006400;
40 | font-weight: normal;
41 | font-style: normal;
42 | }
43 |
44 | /* punctuation */
45 | .pun {
46 | color: #000000;
47 | font-weight: bold;
48 | font-style: normal;
49 | }
50 |
51 | /* lisp open bracket */
52 | .opn {
53 | color: #000000;
54 | font-weight: bold;
55 | font-style: normal;
56 | }
57 |
58 | /* lisp close bracket */
59 | .clo {
60 | color: #000000;
61 | font-weight: bold;
62 | font-style: normal;
63 | }
64 |
65 | /* a markup tag name */
66 | .tag {
67 | color: #006400;
68 | font-weight: normal;
69 | font-style: normal;
70 | }
71 |
72 | /* a markup attribute name */
73 | .atn {
74 | color: #006400;
75 | font-weight: normal;
76 | font-style: normal;
77 | }
78 |
79 | /* a markup attribute value */
80 | .atv {
81 | color: #006400;
82 | font-weight: normal;
83 | font-style: normal;
84 | }
85 |
86 | /* a declaration */
87 | .dec {
88 | color: #000000;
89 | font-weight: bold;
90 | font-style: normal;
91 | }
92 |
93 | /* a variable name */
94 | .var {
95 | color: #000000;
96 | font-weight: normal;
97 | font-style: normal;
98 | }
99 |
100 | /* a function name */
101 | .fun {
102 | color: #000000;
103 | font-weight: bold;
104 | font-style: normal;
105 | }
106 |
107 | /* Specify class=linenums on a pre to get line numbering */
108 | ol.linenums {
109 | margin-top: 0;
110 | margin-bottom: 0;
111 | }
112 |
--------------------------------------------------------------------------------
/protaelSeed.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Starter : Protael
10 |
11 |
12 |
13 |
14 |
16 |
18 |
20 |
21 |
22 |
23 |
24 |
25 |
42 |
43 |
44 | This is a starter page for you Protael data visualization
45 | Edit your protein object and paste it into <script> tag, then reload this page. You can use Protael JSON generator.
46 | JQuery, JQueryUI and SnapSVG will be loaded from CDN.
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/doc/styles/prettify-tomorrow.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Theme */
2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
3 | /* Pretty printing styles. Used with prettify.js. */
4 | /* SPAN elements with the classes below are added by prettyprint. */
5 | /* plain text */
6 | .pln {
7 | color: #4d4d4c; }
8 |
9 | @media screen {
10 | /* string content */
11 | .str {
12 | color: #718c00; }
13 |
14 | /* a keyword */
15 | .kwd {
16 | color: #8959a8; }
17 |
18 | /* a comment */
19 | .com {
20 | color: #8e908c; }
21 |
22 | /* a type name */
23 | .typ {
24 | color: #4271ae; }
25 |
26 | /* a literal value */
27 | .lit {
28 | color: #f5871f; }
29 |
30 | /* punctuation */
31 | .pun {
32 | color: #4d4d4c; }
33 |
34 | /* lisp open bracket */
35 | .opn {
36 | color: #4d4d4c; }
37 |
38 | /* lisp close bracket */
39 | .clo {
40 | color: #4d4d4c; }
41 |
42 | /* a markup tag name */
43 | .tag {
44 | color: #c82829; }
45 |
46 | /* a markup attribute name */
47 | .atn {
48 | color: #f5871f; }
49 |
50 | /* a markup attribute value */
51 | .atv {
52 | color: #3e999f; }
53 |
54 | /* a declaration */
55 | .dec {
56 | color: #f5871f; }
57 |
58 | /* a variable name */
59 | .var {
60 | color: #c82829; }
61 |
62 | /* a function name */
63 | .fun {
64 | color: #4271ae; } }
65 | /* Use higher contrast and text-weight for printable form. */
66 | @media print, projection {
67 | .str {
68 | color: #060; }
69 |
70 | .kwd {
71 | color: #006;
72 | font-weight: bold; }
73 |
74 | .com {
75 | color: #600;
76 | font-style: italic; }
77 |
78 | .typ {
79 | color: #404;
80 | font-weight: bold; }
81 |
82 | .lit {
83 | color: #044; }
84 |
85 | .pun, .opn, .clo {
86 | color: #440; }
87 |
88 | .tag {
89 | color: #006;
90 | font-weight: bold; }
91 |
92 | .atn {
93 | color: #404; }
94 |
95 | .atv {
96 | color: #060; } }
97 | /* Style */
98 | /*
99 | pre.prettyprint {
100 | background: white;
101 | font-family: Menlo, Monaco, Consolas, monospace;
102 | font-size: 12px;
103 | line-height: 1.5;
104 | border: 1px solid #ccc;
105 | padding: 10px; }
106 | */
107 |
108 | /* Specify class=linenums on a pre to get line numbering */
109 | ol.linenums {
110 | margin-top: 0;
111 | margin-bottom: 0; }
112 |
113 | /* IE indents via margin-left */
114 | li.L0,
115 | li.L1,
116 | li.L2,
117 | li.L3,
118 | li.L4,
119 | li.L5,
120 | li.L6,
121 | li.L7,
122 | li.L8,
123 | li.L9 {
124 | /* */ }
125 |
126 | /* Alternate shading for lines */
127 | li.L1,
128 | li.L3,
129 | li.L5,
130 | li.L7,
131 | li.L9 {
132 | /* */ }
133 |
--------------------------------------------------------------------------------
/doc/scripts/toc.js:
--------------------------------------------------------------------------------
1 | (function($) {
2 | $.fn.toc = function(options) {
3 | var self = this;
4 | var opts = $.extend({}, jQuery.fn.toc.defaults, options);
5 |
6 | var container = $(opts.container);
7 | var headings = $(opts.selectors, container);
8 | var headingOffsets = [];
9 | var activeClassName = opts.prefix+'-active';
10 |
11 | var scrollTo = function(e) {
12 | if (opts.smoothScrolling) {
13 | e.preventDefault();
14 | var elScrollTo = $(e.target).attr('href');
15 | var $el = $(elScrollTo);
16 |
17 | $('body,html').animate({ scrollTop: $el.offset().top }, 400, 'swing', function() {
18 | location.hash = elScrollTo;
19 | });
20 | }
21 | $('li', self).removeClass(activeClassName);
22 | $(e.target).parent().addClass(activeClassName);
23 | };
24 |
25 | //highlight on scroll
26 | var timeout;
27 | var highlightOnScroll = function(e) {
28 | if (timeout) {
29 | clearTimeout(timeout);
30 | }
31 | timeout = setTimeout(function() {
32 | var top = $(window).scrollTop(),
33 | highlighted;
34 | for (var i = 0, c = headingOffsets.length; i < c; i++) {
35 | if (headingOffsets[i] >= top) {
36 | $('li', self).removeClass(activeClassName);
37 | highlighted = $('li:eq('+(i-1)+')', self).addClass(activeClassName);
38 | opts.onHighlight(highlighted);
39 | break;
40 | }
41 | }
42 | }, 50);
43 | };
44 | if (opts.highlightOnScroll) {
45 | $(window).bind('scroll', highlightOnScroll);
46 | highlightOnScroll();
47 | }
48 |
49 | return this.each(function() {
50 | //build TOC
51 | var el = $(this);
52 | var ul = $('');
53 | headings.each(function(i, heading) {
54 | var $h = $(heading);
55 | headingOffsets.push($h.offset().top - opts.highlightOffset);
56 |
57 | //add anchor
58 | var anchor = $('').attr('id', opts.anchorName(i, heading, opts.prefix)).insertBefore($h);
59 |
60 | //build TOC item
61 | var a = $('')
62 | .text(opts.headerText(i, heading, $h))
63 | .attr('href', '#' + opts.anchorName(i, heading, opts.prefix))
64 | .bind('click', function(e) {
65 | scrollTo(e);
66 | el.trigger('selected', $(this).attr('href'));
67 | });
68 |
69 | var li = $('')
70 | .addClass(opts.itemClass(i, heading, $h, opts.prefix))
71 | .append(a);
72 |
73 | ul.append(li);
74 | });
75 | el.html(ul);
76 | });
77 | };
78 |
79 |
80 | jQuery.fn.toc.defaults = {
81 | container: 'body',
82 | selectors: 'h1,h2,h3',
83 | smoothScrolling: true,
84 | prefix: 'toc',
85 | onHighlight: function() {},
86 | highlightOnScroll: true,
87 | highlightOffset: 100,
88 | anchorName: function(i, heading, prefix) {
89 | return prefix+i;
90 | },
91 | headerText: function(i, heading, $heading) {
92 | return $heading.text();
93 | },
94 | itemClass: function(i, heading, $heading, prefix) {
95 | return prefix + '-' + $heading[0].tagName.toLowerCase();
96 | }
97 |
98 | };
99 |
100 | })(jQuery);
101 |
--------------------------------------------------------------------------------
/Gruntfile.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2014 msedova.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | module.exports = function(grunt) {
17 | grunt.initConfig({
18 | pkg: grunt.file.readJSON('package.json'),
19 | clean: ["build/", "dist/"],
20 | uglify: {
21 | options: {
22 | banner: '/*! <%= pkg.name %> <%= pkg.version %>\n<%= grunt.template.today("yyyy-mm-dd") %> */\n'
23 | },
24 | build: {
25 | src: 'src/<%= pkg.name %>.js',
26 | dest: 'build/<%= pkg.name %>.<%= pkg.version %>.min.js'
27 | }
28 | },
29 | jsdoc : {
30 | main : {
31 | src: ['src/*.js', 'test/*.js'],
32 | options: {
33 | destination: 'doc',
34 | configure : "./conf/jsdoc.conf.json",
35 | template : "./node_modules/grunt-jsdoc/node_modules/ink-docstrap/template"
36 | }
37 | }
38 | },
39 | // make a zipfile for "download" link
40 | compress: {
41 | main: {
42 | options: {
43 | archive: 'dist/Protael.zip'
44 | },
45 | files: [
46 | {expand: true, src: ['*'], cwd: 'build', dest: '<%= pkg.name %>/js'}, // minified js
47 | {expand: true, src: ['*'], cwd: 'lib', dest: '<%= pkg.name %>/js/vendor'}, // js libraries
48 | {expand: true, src: ['protael.css'], cwd: 'css', dest: '<%= pkg.name %>/css', filter: 'isFile'}, // css
49 | {src: ['./protaelSeed.html'], dest: '<%= pkg.name %>/'} // template
50 | ]
51 | }
52 | },
53 | copy: {
54 | main: {
55 | files: [{expand: true,
56 | cwd: 'src/',
57 | src: '<%= pkg.name %>.js',
58 | dest: 'dist/',
59 | flatten: true,
60 | filter: 'isFile'
61 | },{expand: true,
62 | cwd: 'build/',
63 | src: '*.js',
64 | dest: 'dist/',
65 | flatten: true,
66 | filter: 'isFile'
67 | },{expand: true,
68 | cwd: 'css/',
69 | src: '*.css',
70 | dest: 'dist/',
71 | flatten: true,
72 | filter: 'isFile'
73 | }
74 | ]
75 | }
76 | }
77 | });
78 |
79 | grunt.loadNpmTasks('grunt-contrib-clean');
80 | grunt.loadNpmTasks('grunt-contrib-copy');
81 | grunt.loadNpmTasks('grunt-contrib-uglify');
82 | grunt.loadNpmTasks('grunt-contrib-compress');
83 | grunt.loadNpmTasks('grunt-contrib-concat');
84 | grunt.loadNpmTasks('grunt-jsdoc');
85 |
86 | // Default task(s).
87 | grunt.registerTask('default', ['clean', 'jsdoc','uglify', 'compress', 'copy']);
88 | };
89 |
--------------------------------------------------------------------------------
/doc/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Protael Index
7 |
8 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Protael
22 |
23 |
24 | -
25 | Classes
27 |
28 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | Index
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
105 |
106 |
107 |
108 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
--------------------------------------------------------------------------------
/doc/scripts/bootstrap-tab.js:
--------------------------------------------------------------------------------
1 | /* ========================================================
2 | * bootstrap-tab.js v2.3.0
3 | * http://twitter.github.com/bootstrap/javascript.html#tabs
4 | * ========================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ======================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* TAB CLASS DEFINITION
27 | * ==================== */
28 |
29 | var Tab = function (element) {
30 | this.element = $(element)
31 | }
32 |
33 | Tab.prototype = {
34 |
35 | constructor: Tab
36 |
37 | , show: function () {
38 | var $this = this.element
39 | , $ul = $this.closest('ul:not(.dropdown-menu)')
40 | , selector = $this.attr('data-target')
41 | , previous
42 | , $target
43 | , e
44 |
45 | if (!selector) {
46 | selector = $this.attr('href')
47 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
48 | }
49 |
50 | if ( $this.parent('li').hasClass('active') ) return
51 |
52 | previous = $ul.find('.active:last a')[0]
53 |
54 | e = $.Event('show', {
55 | relatedTarget: previous
56 | })
57 |
58 | $this.trigger(e)
59 |
60 | if (e.isDefaultPrevented()) return
61 |
62 | $target = $(selector)
63 |
64 | this.activate($this.parent('li'), $ul)
65 | this.activate($target, $target.parent(), function () {
66 | $this.trigger({
67 | type: 'shown'
68 | , relatedTarget: previous
69 | })
70 | })
71 | }
72 |
73 | , activate: function ( element, container, callback) {
74 | var $active = container.find('> .active')
75 | , transition = callback
76 | && $.support.transition
77 | && $active.hasClass('fade')
78 |
79 | function next() {
80 | $active
81 | .removeClass('active')
82 | .find('> .dropdown-menu > .active')
83 | .removeClass('active')
84 |
85 | element.addClass('active')
86 |
87 | if (transition) {
88 | element[0].offsetWidth // reflow for transition
89 | element.addClass('in')
90 | } else {
91 | element.removeClass('fade')
92 | }
93 |
94 | if ( element.parent('.dropdown-menu') ) {
95 | element.closest('li.dropdown').addClass('active')
96 | }
97 |
98 | callback && callback()
99 | }
100 |
101 | transition ?
102 | $active.one($.support.transition.end, next) :
103 | next()
104 |
105 | $active.removeClass('in')
106 | }
107 | }
108 |
109 |
110 | /* TAB PLUGIN DEFINITION
111 | * ===================== */
112 |
113 | var old = $.fn.tab
114 |
115 | $.fn.tab = function ( option ) {
116 | return this.each(function () {
117 | var $this = $(this)
118 | , data = $this.data('tab')
119 | if (!data) $this.data('tab', (data = new Tab(this)))
120 | if (typeof option == 'string') data[option]()
121 | })
122 | }
123 |
124 | $.fn.tab.Constructor = Tab
125 |
126 |
127 | /* TAB NO CONFLICT
128 | * =============== */
129 |
130 | $.fn.tab.noConflict = function () {
131 | $.fn.tab = old
132 | return this
133 | }
134 |
135 |
136 | /* TAB DATA-API
137 | * ============ */
138 |
139 | $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
140 | e.preventDefault()
141 | $(this).tab('show')
142 | })
143 |
144 | }(window.jQuery);
--------------------------------------------------------------------------------
/css/protael.css:
--------------------------------------------------------------------------------
1 | text
2 | {
3 | pointer-events: none !important;
4 | }
5 | .protael_toolbar {
6 | font-size: 75%;
7 | vertical-align: middle;
8 | margin-bottom: 10px;
9 | }
10 | .protael_toolbar div {
11 | margin: 4px;
12 | margin-top: 10px;
13 | }
14 | .protael_resizable {
15 | padding: .1em;
16 | padding-bottom: .7em;
17 | /*overflow: hidden ;*/
18 | margin-bottom: 30px;
19 | width:100%;
20 | height:100%;
21 | }
22 | .protael_zoomslider{
23 | width: 200px;
24 | display:inline-block;
25 | clear:none;
26 | }
27 | .protael_svg {
28 | padding: 0em;
29 | padding-top: 10px;
30 | margin: 0em;
31 | overflow: scroll;
32 | width: 100%;
33 | height: 100%
34 | }
35 | .protael_selection_inp{}
36 | .pl-zoomer {
37 | position: absolute;
38 | background: aquamarine;
39 | float: left;
40 | left: 5px;
41 | top: 115px;
42 | display: block;
43 | border: green 5px;
44 | width: 15px;
45 | }
46 | #xdialog {
47 | font-size: 80%;
48 | }
49 | #xdialog textArea {
50 | font-family: monospace;
51 | width:100%;
52 | }
53 | .ui-tooltip {
54 | border: 1px solid white;
55 | background: rgba(20, 20, 20, 1);
56 | color: white;
57 | max-width: 400px;
58 | font-size: smaller !important;
59 | }
60 | .ui-slider .ui-slider-handle {
61 | width: .6em;
62 | height: 1.1em;
63 | cursor: -webkit-grab;
64 | border-radius: 0px 0px 20px 20px;
65 | }
66 | .ui-slider-horizontal .ui-slider-handle {
67 | margin-left: -.85em;
68 | }
69 | .ui-slider-horizontal .ui-slider-range {
70 | margin-left: -.85em;
71 | }
72 | .ui-widget {
73 | font-family: Verdana, Arial, sans-serif;
74 | font-size: 1em;
75 | }
76 | .ui-slider-horizontal {
77 | height: .3em;
78 | }
79 | .protael_slider {
80 | border-bottom: 0px;
81 | border-left: 0px;
82 | border-right: 0px;
83 | }
84 | /*Protael link*/
85 | #prref{
86 | fill: #18bc9c;
87 | text-anchor:end;
88 | font-size: 8px;
89 | }
90 | #prref:hover {
91 | cursor: pointer;
92 | }
93 | /* GRAPH ELEMENTS*/
94 | .protael_svg svg{
95 | background: #FFF;
96 | -webkit-user-select: none; /* Chrome all / Safari all */
97 | -moz-user-select: none; /* Firefox all */
98 | -ms-user-select: none; /* IE 10+ */
99 | }
100 | /* Features*/
101 | .pl-ftrack{
102 | text-anchor: left;
103 | /* font-style: normal;
104 | font-variant: normal;
105 | font-weight: normal;
106 | font-size: 7px;
107 | line-height: normal; */
108 | font-family: Arial;
109 | }
110 | .pl-ftrack-label{
111 | font-size: 14px;
112 | text-anchor: start;
113 | }
114 | .pl-feature {
115 | fill: blue;
116 | stroke: #bbb
117 | }
118 | .pl-feature:hover {
119 | stroke-width: 3px
120 | }
121 | .pl-feature-label {
122 | stroke:none !important;
123 | stroke-width:0px;
124 | fill: #000;
125 | }
126 | .pl-highlight{
127 | fill:#FF0 !important;
128 | }
129 |
130 | /* Main sequence and alignments*/
131 | .pl-seqline{
132 | stroke: #BBB;
133 | fill: #BBB;
134 | stroke-width:2px
135 | }
136 | .pl-seqline:hover{
137 | stroke-width:4px
138 | }
139 |
140 | /* Grid lines */
141 | #gridlines{
142 | stroke-width: 1px;
143 | fill: none
144 | }
145 | .pl-grid-label{
146 | /*alignment-baseline:bottom;*/
147 | text-anchor: middle;
148 | font: 10px Arial;
149 | fill: #000
150 | }
151 | .pl-grid-minor {
152 | stroke: #eee
153 | }
154 | .pl-grid-major {
155 | stroke: #ccc
156 | }
157 |
158 | .pl-chart{/*this class for marking qtrack group only, will not affect appearance*/}
159 | .pl-chart-top, .pl-chart-bottom{
160 | stroke:none;
161 | stroke-width: 1px;
162 | stroke-dasharray: "5,5";
163 | }
164 | .pl-chart-scalelbl{
165 | font-size: 9px;
166 | text-shadow: white 0.1em 0.1em 0.5em
167 | }
168 | .pl-chart-label{
169 | font-size: 14px;
170 | text-anchor: start;
171 | fill:#000;
172 | }
173 | .pl-chart-area{
174 | stroke-width: 0.1;
175 | stroke-linejoin: round;
176 | stroke-linecap: butt;
177 | opacity: 0.7;
178 | }
179 | .pl-chart-center{
180 | stroke:#BBB;
181 | stroke-width: 1px;
182 | stroke-dasharray: "5,5";
183 | }
184 | .pl-bridge {
185 | font-size: 10px;
186 | font-family: Arial;
187 | text-anchor: middle;
188 | stroke-width: 2;
189 | stroke-linejoin: round;
190 | stroke-linecap: round;
191 | }
192 | .pl-marker{/*this class for marking group only, do not use to change appearance*/}
--------------------------------------------------------------------------------
/dist/protael.css:
--------------------------------------------------------------------------------
1 | text
2 | {
3 | pointer-events: none !important;
4 | }
5 | .protael_toolbar {
6 | font-size: 75%;
7 | vertical-align: middle;
8 | margin-bottom: 10px;
9 | }
10 | .protael_toolbar div {
11 | margin: 4px;
12 | margin-top: 10px;
13 | }
14 | .protael_resizable {
15 | padding: .1em;
16 | padding-bottom: .7em;
17 | /*overflow: hidden ;*/
18 | margin-bottom: 30px;
19 | width:100%;
20 | height:100%;
21 | }
22 | .protael_zoomslider{
23 | width: 200px;
24 | display:inline-block;
25 | clear:none;
26 | }
27 | .protael_svg {
28 | padding: 0em;
29 | padding-top: 10px;
30 | margin: 0em;
31 | overflow: scroll;
32 | width: 100%;
33 | height: 100%
34 | }
35 | .protael_selection_inp{}
36 | .pl-zoomer {
37 | position: absolute;
38 | background: aquamarine;
39 | float: left;
40 | left: 5px;
41 | top: 115px;
42 | display: block;
43 | border: green 5px;
44 | width: 15px;
45 | }
46 | #xdialog {
47 | font-size: 80%;
48 | }
49 | #xdialog textArea {
50 | font-family: monospace;
51 | width:100%;
52 | }
53 | .ui-tooltip {
54 | border: 1px solid white;
55 | background: rgba(20, 20, 20, 1);
56 | color: white;
57 | max-width: 400px;
58 | font-size: smaller !important;
59 | }
60 | .ui-slider .ui-slider-handle {
61 | width: .6em;
62 | height: 1.1em;
63 | cursor: -webkit-grab;
64 | border-radius: 0px 0px 20px 20px;
65 | }
66 | .ui-slider-horizontal .ui-slider-handle {
67 | margin-left: -.85em;
68 | }
69 | .ui-slider-horizontal .ui-slider-range {
70 | margin-left: -.85em;
71 | }
72 | .ui-widget {
73 | font-family: Verdana, Arial, sans-serif;
74 | font-size: 1em;
75 | }
76 | .ui-slider-horizontal {
77 | height: .3em;
78 | }
79 | .protael_slider {
80 | border-bottom: 0px;
81 | border-left: 0px;
82 | border-right: 0px;
83 | }
84 | /*Protael link*/
85 | #prref{
86 | fill: #18bc9c;
87 | text-anchor:end;
88 | font-size: 8px;
89 | }
90 | #prref:hover {
91 | cursor: pointer;
92 | }
93 | /* GRAPH ELEMENTS*/
94 | .protael_svg svg{
95 | background: #FFF;
96 | -webkit-user-select: none; /* Chrome all / Safari all */
97 | -moz-user-select: none; /* Firefox all */
98 | -ms-user-select: none; /* IE 10+ */
99 | }
100 | /* Features*/
101 | .pl-ftrack{
102 | text-anchor: left;
103 | /* font-style: normal;
104 | font-variant: normal;
105 | font-weight: normal;
106 | font-size: 7px;
107 | line-height: normal; */
108 | font-family: Arial;
109 | }
110 | .pl-ftrack-label{
111 | font-size: 14px;
112 | text-anchor: start;
113 | }
114 | .pl-feature {
115 | fill: blue;
116 | stroke: #bbb
117 | }
118 | .pl-feature:hover {
119 | stroke-width: 3px
120 | }
121 | .pl-feature-label {
122 | stroke:none !important;
123 | stroke-width:0px;
124 | fill: #000;
125 | }
126 | .pl-highlight{
127 | fill:#FF0 !important;
128 | }
129 |
130 | /* Main sequence and alignments*/
131 | .pl-seqline{
132 | stroke: #BBB;
133 | fill: #BBB;
134 | stroke-width:2px
135 | }
136 | .pl-seqline:hover{
137 | stroke-width:4px
138 | }
139 |
140 | /* Grid lines */
141 | #gridlines{
142 | stroke-width: 1px;
143 | fill: none
144 | }
145 | .pl-grid-label{
146 | /*alignment-baseline:bottom;*/
147 | text-anchor: middle;
148 | font: 10px Arial;
149 | fill: #000
150 | }
151 | .pl-grid-minor {
152 | stroke: #eee
153 | }
154 | .pl-grid-major {
155 | stroke: #ccc
156 | }
157 |
158 | .pl-chart{/*this class for marking qtrack group only, will not affect appearance*/}
159 | .pl-chart-top, .pl-chart-bottom{
160 | stroke:none;
161 | stroke-width: 1px;
162 | stroke-dasharray: "5,5";
163 | }
164 | .pl-chart-scalelbl{
165 | font-size: 9px;
166 | text-shadow: white 0.1em 0.1em 0.5em
167 | }
168 | .pl-chart-label{
169 | font-size: 14px;
170 | text-anchor: start;
171 | fill:#000;
172 | }
173 | .pl-chart-area{
174 | stroke-width: 0.1;
175 | stroke-linejoin: round;
176 | stroke-linecap: butt;
177 | opacity: 0.7;
178 | }
179 | .pl-chart-center{
180 | stroke:#BBB;
181 | stroke-width: 1px;
182 | stroke-dasharray: "5,5";
183 | }
184 | .pl-bridge {
185 | font-size: 10px;
186 | font-family: Arial;
187 | text-anchor: middle;
188 | stroke-width: 2;
189 | stroke-linejoin: round;
190 | stroke-linecap: round;
191 | }
192 | .pl-marker{/*this class for marking group only, do not use to change appearance*/}
--------------------------------------------------------------------------------
/doc/namespaces.list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Protael Namespaces
7 |
8 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
Namespaces
52 |
53 |
54 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 | Namespaces
114 |
115 |
116 | - Protael
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
152 |
153 |
154 |
155 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
--------------------------------------------------------------------------------
/doc/scripts/bootstrap-dropdown.js:
--------------------------------------------------------------------------------
1 | /* ============================================================
2 | * bootstrap-dropdown.js v2.3.2
3 | * http://getbootstrap.com/2.3.2/javascript.html#dropdowns
4 | * ============================================================
5 | * Copyright 2013 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================ */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* DROPDOWN CLASS DEFINITION
27 | * ========================= */
28 |
29 | var toggle = '[data-toggle=dropdown]'
30 | , Dropdown = function (element) {
31 | var $el = $(element).on('click.dropdown.data-api', this.toggle)
32 | $('html').on('click.dropdown.data-api', function () {
33 | $el.parent().removeClass('open')
34 | })
35 | }
36 |
37 | Dropdown.prototype = {
38 |
39 | constructor: Dropdown
40 |
41 | , toggle: function (e) {
42 | var $this = $(this)
43 | , $parent
44 | , isActive
45 |
46 | if ($this.is('.disabled, :disabled')) return
47 |
48 | $parent = getParent($this)
49 |
50 | isActive = $parent.hasClass('open')
51 |
52 | clearMenus()
53 |
54 | if (!isActive) {
55 | if ('ontouchstart' in document.documentElement) {
56 | // if mobile we we use a backdrop because click events don't delegate
57 | $('').insertBefore($(this)).on('click', clearMenus)
58 | }
59 | $parent.toggleClass('open')
60 | }
61 |
62 | $this.focus()
63 |
64 | return false
65 | }
66 |
67 | , keydown: function (e) {
68 | var $this
69 | , $items
70 | , $active
71 | , $parent
72 | , isActive
73 | , index
74 |
75 | if (!/(38|40|27)/.test(e.keyCode)) return
76 |
77 | $this = $(this)
78 |
79 | e.preventDefault()
80 | e.stopPropagation()
81 |
82 | if ($this.is('.disabled, :disabled')) return
83 |
84 | $parent = getParent($this)
85 |
86 | isActive = $parent.hasClass('open')
87 |
88 | if (!isActive || (isActive && e.keyCode == 27)) {
89 | if (e.which == 27) $parent.find(toggle).focus()
90 | return $this.click()
91 | }
92 |
93 | $items = $('[role=menu] li:not(.divider):visible a', $parent)
94 |
95 | if (!$items.length) return
96 |
97 | index = $items.index($items.filter(':focus'))
98 |
99 | if (e.keyCode == 38 && index > 0) index-- // up
100 | if (e.keyCode == 40 && index < $items.length - 1) index++ // down
101 | if (!~index) index = 0
102 |
103 | $items
104 | .eq(index)
105 | .focus()
106 | }
107 |
108 | }
109 |
110 | function clearMenus() {
111 | $('.dropdown-backdrop').remove()
112 | $(toggle).each(function () {
113 | getParent($(this)).removeClass('open')
114 | })
115 | }
116 |
117 | function getParent($this) {
118 | var selector = $this.attr('data-target')
119 | , $parent
120 |
121 | if (!selector) {
122 | selector = $this.attr('href')
123 | selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
124 | }
125 |
126 | $parent = selector && $(selector)
127 |
128 | if (!$parent || !$parent.length) $parent = $this.parent()
129 |
130 | return $parent
131 | }
132 |
133 |
134 | /* DROPDOWN PLUGIN DEFINITION
135 | * ========================== */
136 |
137 | var old = $.fn.dropdown
138 |
139 | $.fn.dropdown = function (option) {
140 | return this.each(function () {
141 | var $this = $(this)
142 | , data = $this.data('dropdown')
143 | if (!data) $this.data('dropdown', (data = new Dropdown(this)))
144 | if (typeof option == 'string') data[option].call($this)
145 | })
146 | }
147 |
148 | $.fn.dropdown.Constructor = Dropdown
149 |
150 |
151 | /* DROPDOWN NO CONFLICT
152 | * ==================== */
153 |
154 | $.fn.dropdown.noConflict = function () {
155 | $.fn.dropdown = old
156 | return this
157 | }
158 |
159 |
160 | /* APPLY TO STANDARD DROPDOWN ELEMENTS
161 | * =================================== */
162 |
163 | $(document)
164 | .on('click.dropdown.data-api', clearMenus)
165 | .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
166 | .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
167 | .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
168 |
169 | }(window.jQuery);
170 |
--------------------------------------------------------------------------------
/doc/classes.list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Protael Classes
7 |
8 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Protael
22 |
23 |
24 | -
25 | Classes
27 |
28 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
Classes
60 |
61 |
62 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 | Classes
120 |
121 |
122 | - Protael
123 |
124 |
125 | - Paper
126 |
127 |
128 | - Protael
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
166 |
167 |
168 |
169 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
--------------------------------------------------------------------------------
/json/graphs.json:
--------------------------------------------------------------------------------
1 | {
2 | "comment": "JSON object for testing different graph types",
3 | "sequence": "MSDFDEFERQLNENKQERDKENRHRKRSHSRSRSRDRKRRSRSRDRRNRDQRSASRDRRRRSKPLTRGA",
4 | "qtracks": [
5 | {
6 | "label": "Single color; area",
7 | "color": "yellow",
8 | "type": "area",
9 | "values": [
10 | 1, 0.7, 0.5, 0.4, 0.5, 1, 0.9, 0.8, 0.7, 0.4,
11 | 0.2, 0.1, 0, 0, 1, 0.9, 0.7, 0.5, 0.3, 0.1,
12 | 0, -0.2, -0.4, -0.4, -0.8, -1, -0.8, -0.6, -0.2, 2,
13 | 0.8, 0.9, 0.96, 0.96, 0.95, 0, 0.88, 0.8, 0.3, 0.73,
14 | 0.7, 0.5, 0.4, 0.5, 0.9, 0.99, 0.6, 0.995, 0.998, 0.998,
15 | 0.998, -0.4, -0.4, -0.8, -0.2, -1, -0.8, -0.6, -0.2, 0,
16 | 0.998, 0.7, 0.75, 0.6, 0.3, 0.2, 1, 2, -1
17 | ],
18 | "topY": 65
19 | },
20 | {
21 | "label": "3-points gradient fill; area-spline",
22 | "color": [
23 | "yellow",
24 | "green",
25 | "red"
26 | ],
27 | "type": "area-spline",
28 | "values": [
29 | 1, 0.7, 0.5, 0.4, 0.5, 1, 0.9, 0.8, 0.7, 0.4,
30 | 0.2, 0.1, 0, 0, 1, 0.9, 0.7, 0.5, 0.3, 0.1,
31 | 0, -0.2, -0.4, -0.4, -0.8, -1, -0.8, -0.6, -0.2, 2,
32 | 0.8, 0.9, 0.96, 0.96, 0.95, 0, 0.88, 0.8, 0.3, 0.73,
33 | 0.7, 0.5, 0.4, 0.5, 0.9, 0.99, 0.6, 0.995, 0.998, 0.998,
34 | 0.998, -0.4, -0.4, -0.8, -0.2, -1, -0.8, -0.6, -0.2, 0,
35 | 0.998, 0.7, 0.75, 0.6, 0.3, 0.2, 1, 2, -1
36 | ]
37 | },
38 | {
39 | "label": "2-points gradient fill; area-spline",
40 | "color": [
41 | "yellow",
42 | "red"
43 | ],
44 | "values": [
45 | 1, 0.7, 0.5, 0.4, 0.5, 1, 0.9, 0.8, 0.7, 0.4,
46 | 0.2, 0.1, 0, 0, 1, 0.9, 0.7, 0.5, 0.3, 0.1,
47 | 0, -0.2, -0.4, -0.4, -0.8, -1, -0.8, -0.6, -0.2, 2,
48 | 0.8, 0.9, 0.96, 0.96, 0.95, 0, 0.88, 0.8, 0.3, 0.73,
49 | 0.7, 0.5, 0.4, 0.5, 0.9, 0.99, 0.6, 0.995, 0.998, 0.998,
50 | 0.998, -0.4, -0.4, -0.8, -0.2, -1, -0.8, -0.6, -0.2, 0,
51 | 0.998, 0.7, 0.75, 0.6, 0.3, 0.2, 1, 2, -1
52 | ]
53 | }, {
54 | "label": "Single color; spline",
55 | "color": "red",
56 | "type": "spline",
57 | "values": [
58 | 1, 0.7, 0.5, 0.4, 0.5, 1, 0.9, 0.8, 0.7, 0.4,
59 | 0.2, 0.1, 0, 0, 1, 0.9, 0.7, 0.5, 0.3, 0.1,
60 | 0, -0.2, -0.4, -0.4, -0.8, -1, -0.8, -0.6, -0.2, 2,
61 | 0.8, 0.9, 0.96, 0.96, 0.95, 0, 0.88, 0.8, 0.3, 0.73,
62 | 0.7, 0.5, 0.4, 0.5, 0.9, 0.99, 0.6, 0.995, 0.998, 0.998,
63 | 0.998, -0.4, -0.4, -0.8, -0.2, -1, -0.8, -0.6, -0.2, 0,
64 | 0.998, 0.7, 0.75, 0.6, 0.3, 0.2, 1, 2, -1
65 | ]
66 | },
67 | {
68 | "label": "3-points gradient fill; column",
69 | "color": [
70 | "yellow",
71 | "green",
72 | "red"
73 | ],
74 | "type": "column",
75 | "values": [
76 | 1, 0.7, 0.5, 0.4, 0.5, 1, 0.9, 0.8, 0.7, 0.4,
77 | 0.2, 0.1, 0, 0, 1, 0.9, 0.7, 0.5, 0.3, 0.1,
78 | 0, -0.2, -0.4, -0.4, -0.8, -1, -0.8, -0.6, -0.2, 2,
79 | 0.8, 0.9, 0.96, 0.96, 0.95, 0, 0.88, 0.8, 0.3, 0.73,
80 | 0.7, 0.5, 0.4, 0.5, 0.9, 0.99, 0.6, 0.995, 0.998, 0.998,
81 | 0.998, -0.4, -0.4, -0.8, -0.2, -1, -0.8, -0.6, -0.2, 0,
82 | 0.998, 0.7, 0.75, 0.6, 0.3, 0.2, 1, 2, -1
83 | ]
84 | },
85 | {
86 | "label": "2-points gradient fill; column",
87 | "color": [
88 | "yellow",
89 | "red"
90 | ],
91 | "type": "column",
92 | "values": [
93 | 1, 0.7, 0.5, 0.4, 0.5, 1, 0.9, 0.8, 0.7, 0.4,
94 | 0.2, 0.1, 0, 0, 1, 0.9, 0.7, 0.5, 0.3, 0.1,
95 | 0, -0.2, -0.4, -0.4, -0.8, -1, -0.8, -0.6, -0.2, 2,
96 | 0.8, 0.9, 0.96, 0.96, 0.95, 0, 0.88, 0.8, 0.3, 0.73,
97 | 0.7, 0.5, 0.4, 0.5, 0.9, 0.99, 0.6, 0.995, 0.998, 0.998,
98 | 0.998, -0.4, -0.4, -0.8, -0.2, -1, -0.8, -0.6, -0.2, 0,
99 | 0.998, 0.7, 0.75, 0.6, 0.3, 0.2, 1, 2, -1
100 | ]
101 | }, {
102 | "label": "2-points gradient; line",
103 | "color": [
104 | "green",
105 | "red"
106 | ],
107 | "type": "line",
108 | "values": [
109 | 1, 0.7, 0.5, 0.4, 0.5, 1, 0.9, 0.8, 0.7, 0.4,
110 | 0.2, 0.1, 0, 0, 1, 0.9, 0.7, 0.5, 0.3, 0.1,
111 | 0, -0.2, -0.4, -0.4, -0.8, -1, -0.8, -0.6, -0.2, 2,
112 | 0.8, 0.9, 0.96, 0.96, 0.95, 0, 0.88, 0.8, 0.3, 0.73,
113 | 0.7, 0.5, 0.4, 0.5, 0.9, 0.99, 0.6, 0.995, 0.998, 0.998,
114 | 0.998, -0.4, -0.4, -0.8, -0.2, -1, -0.8, -0.6, -0.2, 0,
115 | 0.998, 0.7, 0.75, 0.6, 0.3, 0.2, 1, 2, -1
116 | ]
117 | }
118 | ]
119 | }
120 |
--------------------------------------------------------------------------------
/doc/global.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Protael Global
7 |
8 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Protael
22 |
23 |
24 | -
25 | Global
27 |
28 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
Global
52 |
53 |
54 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 | Members
116 |
117 |
118 |
119 | -
120 |
Protael
121 |
122 |
123 |
124 | -
125 |
126 |
127 | Protael object
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 | - Source:
157 | -
158 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
210 |
211 |
212 |
213 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
--------------------------------------------------------------------------------
/doc/styles/jsdoc-default.css:
--------------------------------------------------------------------------------
1 | html
2 | {
3 | overflow: auto;
4 | background-color: #fff;
5 | }
6 |
7 | body
8 | {
9 | font: 14px "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans serif;
10 | line-height: 130%;
11 | color: #000;
12 | background-color: #fff;
13 | }
14 |
15 | a {
16 | color: #444;
17 | }
18 |
19 | a:visited {
20 | color: #444;
21 | }
22 |
23 | a:active {
24 | color: #444;
25 | }
26 |
27 | header
28 | {
29 | display: block;
30 | padding: 6px 4px;
31 | }
32 |
33 | .class-description {
34 | font-style: italic;
35 | font-family: Palatino, 'Palatino Linotype', serif;
36 | font-size: 130%;
37 | line-height: 140%;
38 | margin-bottom: 1em;
39 | margin-top: 1em;
40 | }
41 |
42 | #main {
43 | float: left;
44 | width: 100%;
45 | }
46 |
47 | section
48 | {
49 | display: block;
50 |
51 | background-color: #fff;
52 | padding: 12px 24px;
53 | border-bottom: 1px solid #ccc;
54 | margin-right: 240px;
55 | }
56 |
57 | .variation {
58 | display: none;
59 | }
60 |
61 | .optional:after {
62 | content: "opt";
63 | font-size: 60%;
64 | color: #aaa;
65 | font-style: italic;
66 | font-weight: lighter;
67 | }
68 |
69 | nav
70 | {
71 | display: block;
72 | float: left;
73 | margin-left: -230px;
74 | margin-top: 28px;
75 | width: 220px;
76 | border-left: 1px solid #ccc;
77 | padding-left: 9px;
78 | }
79 |
80 | nav ul {
81 | font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif;
82 | font-size: 100%;
83 | line-height: 17px;
84 | padding:0;
85 | margin:0;
86 | list-style-type:none;
87 | }
88 |
89 | nav h2 a, nav h2 a:visited {
90 | color: #A35A00;
91 | text-decoration: none;
92 | }
93 |
94 | nav h3 {
95 | margin-top: 12px;
96 | }
97 |
98 | nav li {
99 | margin-top: 6px;
100 | }
101 |
102 | nav a {
103 | color: #5C5954;
104 | }
105 |
106 | nav a:visited {
107 | color: #5C5954;
108 | }
109 |
110 | nav a:active {
111 | color: #5C5954;
112 | }
113 |
114 | footer {
115 | display: block;
116 | padding: 6px;
117 | margin-top: 12px;
118 | font-style: italic;
119 | font-size: 90%;
120 | }
121 |
122 | h1
123 | {
124 | font-size: 200%;
125 | font-weight: bold;
126 | letter-spacing: -0.01em;
127 | margin: 6px 0 9px 0;
128 | }
129 |
130 | h2
131 | {
132 | font-size: 170%;
133 | font-weight: bold;
134 | letter-spacing: -0.01em;
135 | margin: 6px 0 3px 0;
136 | }
137 |
138 | h3
139 | {
140 | font-size: 150%;
141 | font-weight: bold;
142 | letter-spacing: -0.01em;
143 | margin-top: 16px;
144 | margin: 6px 0 3px 0;
145 | }
146 |
147 | h4
148 | {
149 | font-size: 130%;
150 | font-weight: bold;
151 | letter-spacing: -0.01em;
152 | margin-top: 16px;
153 | margin: 18px 0 3px 0;
154 | color: #A35A00;
155 | }
156 |
157 | h5, .container-overview .subsection-title
158 | {
159 | font-size: 120%;
160 | font-weight: bold;
161 | letter-spacing: -0.01em;
162 | margin: 8px 0 3px -16px;
163 | }
164 |
165 | h6
166 | {
167 | font-size: 100%;
168 | letter-spacing: -0.01em;
169 | margin: 6px 0 3px 0;
170 | font-style: italic;
171 | }
172 |
173 | .ancestors { color: #999; }
174 | .ancestors a
175 | {
176 | color: #999 !important;
177 | text-decoration: none;
178 | }
179 |
180 | .important
181 | {
182 | font-weight: bold;
183 | color: #950B02;
184 | }
185 |
186 | .yes-def {
187 | text-indent: -1000px;
188 | }
189 |
190 | .type-signature {
191 | color: #aaa;
192 | }
193 |
194 | .name, .signature {
195 | font-family: Consolas, "Lucida Console", Monaco, monospace;
196 | }
197 |
198 | .details { margin-top: 14px; border-left: 2px solid #DDD; }
199 | .details dt { width:100px; float:left; padding-left: 10px; padding-top: 6px; }
200 | .details dd { margin-left: 50px; }
201 | .details ul { margin: 0; }
202 | .details ul { list-style-type: none; }
203 | .details li { margin-left: 30px; padding-top: 6px; }
204 | .details pre.prettyprint { margin: 0 }
205 | .details .object-value { padding-top: 0; }
206 |
207 | .description {
208 | margin-bottom: 1em;
209 | margin-left: -16px;
210 | margin-top: 1em;
211 | }
212 |
213 | .code-caption
214 | {
215 | font-style: italic;
216 | font-family: Palatino, 'Palatino Linotype', serif;
217 | font-size: 107%;
218 | margin: 0;
219 | }
220 |
221 | .prettyprint
222 | {
223 | border: 1px solid #ddd;
224 | width: 80%;
225 | overflow: auto;
226 | }
227 |
228 | .prettyprint.source {
229 | width: inherit;
230 | }
231 |
232 | .prettyprint code
233 | {
234 | font-family: Consolas, 'Lucida Console', Monaco, monospace;
235 | font-size: 100%;
236 | line-height: 18px;
237 | display: block;
238 | padding: 4px 12px;
239 | margin: 0;
240 | background-color: #fff;
241 | color: #000;
242 | border-left: 3px #ddd solid;
243 | }
244 |
245 | .prettyprint code span.line
246 | {
247 | display: inline-block;
248 | }
249 |
250 | .params, .props
251 | {
252 | border-spacing: 0;
253 | border: 0;
254 | border-collapse: collapse;
255 | }
256 |
257 | .params .name, .props .name, .name code {
258 | color: #A35A00;
259 | font-family: Consolas, 'Lucida Console', Monaco, monospace;
260 | font-size: 100%;
261 | }
262 |
263 | .params td, .params th, .props td, .props th
264 | {
265 | border: 1px solid #ddd;
266 | margin: 0px;
267 | text-align: left;
268 | vertical-align: top;
269 | padding: 4px 6px;
270 | display: table-cell;
271 | }
272 |
273 | .params thead tr, .props thead tr
274 | {
275 | background-color: #ddd;
276 | font-weight: bold;
277 | }
278 |
279 | .params .params thead tr, .props .props thead tr
280 | {
281 | background-color: #fff;
282 | font-weight: bold;
283 | }
284 |
285 | .params th, .props th { border-right: 1px solid #aaa; }
286 | .params thead .last, .props thead .last { border-right: 1px solid #ddd; }
287 |
288 | .disabled {
289 | color: #454545;
290 | }
291 |
--------------------------------------------------------------------------------
/lib/saveSvgAsPng.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | var out$ = typeof exports != 'undefined' && exports || this;
3 |
4 | var doctype = '';
5 |
6 | function isExternal(url) {
7 | return url && url.lastIndexOf('http',0) == 0 && url.lastIndexOf(window.location.host) == -1;
8 | }
9 |
10 | function inlineImages(el, callback) {
11 | var images = el.querySelectorAll('image');
12 | var left = images.length;
13 | if (left == 0) {
14 | callback();
15 | }
16 | for (var i = 0; i < images.length; i++) {
17 | (function(image) {
18 | var href = image.getAttribute('xlink:href');
19 | if (href) {
20 | if (isExternal(href.value)) {
21 | console.warn("Cannot render embedded images linking to external hosts: "+href.value);
22 | return;
23 | }
24 | }
25 | var canvas = document.createElement('canvas');
26 | var ctx = canvas.getContext('2d');
27 | var img = new Image();
28 | href = href || image.getAttribute('href');
29 | img.src = href;
30 | img.onload = function() {
31 | canvas.width = img.width;
32 | canvas.height = img.height;
33 | ctx.drawImage(img, 0, 0);
34 | image.setAttribute('xlink:href', canvas.toDataURL('image/png'));
35 | left--;
36 | if (left == 0) {
37 | callback();
38 | }
39 | }
40 | img.onerror = function() {
41 | console.log("Could not load "+href);
42 | left--;
43 | if (left == 0) {
44 | callback();
45 | }
46 | }
47 | })(images[i]);
48 | }
49 | }
50 |
51 | function styles(el, selectorRemap) {
52 | var css = "";
53 | var sheets = document.styleSheets;
54 | for (var i = 0; i < sheets.length; i++) {
55 | if (isExternal(sheets[i].href)) {
56 | console.warn("Cannot include styles from other hosts: "+sheets[i].href);
57 | continue;
58 | }
59 | var rules = sheets[i].cssRules;
60 | if (rules != null) {
61 | for (var j = 0; j < rules.length; j++) {
62 | var rule = rules[j];
63 | if (typeof(rule.style) != "undefined") {
64 | var match = null;
65 | try {
66 | match = el.querySelector(rule.selectorText);
67 | } catch(err) {
68 | console.warn('Invalid CSS selector "' + rule.selectorText + '"', err);
69 | }
70 | if (match) {
71 | var selector = selectorRemap ? selectorRemap(rule.selectorText) : rule.selectorText;
72 | css += selector + " { " + rule.style.cssText + " }\n";
73 | } else if(rule.cssText.match(/^@font-face/)) {
74 | css += rule.cssText + '\n';
75 | }
76 | }
77 | }
78 | }
79 | }
80 | return css;
81 | }
82 |
83 | out$.svgAsDataUri = function(el, options, cb) {
84 | options = options || {};
85 | options.scale = options.scale || 1;
86 | var xmlns = "http://www.w3.org/2000/xmlns/";
87 |
88 | inlineImages(el, function() {
89 | var outer = document.createElement("div");
90 | var clone = el.cloneNode(true);
91 | var width, height;
92 | if(el.tagName == 'svg') {
93 | width = parseInt(clone.getAttribute('width') || clone.style.width || out$.getComputedStyle(el).getPropertyValue('width'));
94 | height = parseInt(clone.getAttribute('height') || clone.style.height || out$.getComputedStyle(el).getPropertyValue('height'));
95 | } else {
96 | var box = el.getBBox();
97 | width = box.x + box.width;
98 | height = box.y + box.height;
99 | clone.setAttribute('transform', clone.getAttribute('transform').replace(/translate\(.*?\)/, ''));
100 |
101 | var svg = document.createElementNS('http://www.w3.org/2000/svg','svg')
102 | svg.appendChild(clone)
103 | clone = svg;
104 | }
105 |
106 | clone.setAttribute("version", "1.1");
107 | clone.setAttributeNS(xmlns, "xmlns", "http://www.w3.org/2000/svg");
108 | clone.setAttributeNS(xmlns, "xmlns:xlink", "http://www.w3.org/1999/xlink");
109 | clone.setAttribute("width", width * options.scale);
110 | clone.setAttribute("height", height * options.scale);
111 | clone.setAttribute("viewBox", "0 0 " + width + " " + height);
112 | outer.appendChild(clone);
113 |
114 | var css = styles(el, options.selectorRemap);
115 | var s = document.createElement('style');
116 | s.setAttribute('type', 'text/css');
117 | s.innerHTML = "";
118 | var defs = document.createElement('defs');
119 | defs.appendChild(s);
120 | clone.insertBefore(defs, clone.firstChild);
121 |
122 | var svg = doctype + outer.innerHTML;
123 | var uri = 'data:image/svg+xml;base64,' + window.btoa(unescape(encodeURIComponent(svg)));
124 | if (cb) {
125 | cb(uri);
126 | }
127 | });
128 | }
129 |
130 | out$.saveSvgAsPng = function(el, name, options) {
131 | options = options || {};
132 | out$.svgAsDataUri(el, options, function(uri) {
133 | var image = new Image();
134 | image.src = uri;
135 | image.onload = function() {
136 | var canvas = document.createElement('canvas');
137 | canvas.width = image.width;
138 | canvas.height = image.height;
139 | var context = canvas.getContext('2d');
140 | context.drawImage(image, 0, 0);
141 |
142 | var a = document.createElement('a');
143 | a.download = name;
144 | a.href = canvas.toDataURL('image/png');
145 | document.body.appendChild(a);
146 | a.click();
147 | }
148 | });
149 | }
150 | })();
--------------------------------------------------------------------------------
/doc/Protael.Protael.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Protael Class: Protael
7 |
8 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Protael
22 |
23 |
24 | -
25 | Classes
27 |
28 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
Class: Protael
60 |
61 |
62 |
63 |
64 | Protael.
65 |
66 | Protael
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 | new Protael(protein, container, controls)
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 | Parameters:
92 |
93 |
94 |
95 |
96 |
97 |
98 | | Name |
99 |
100 |
101 | Type |
102 |
103 |
104 |
105 |
106 |
107 | Description |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 | protein |
117 |
118 |
119 |
120 |
121 |
122 | Protein
123 |
124 |
125 |
126 | |
127 |
128 |
129 |
130 |
131 |
132 | Protein JSON |
133 |
134 |
135 |
136 |
137 |
138 |
139 | container |
140 |
141 |
142 |
143 |
144 |
145 | string
146 |
147 |
148 |
149 | |
150 |
151 |
152 |
153 |
154 |
155 | ID of the container to which Protael is appended |
156 |
157 |
158 |
159 |
160 |
161 |
162 | controls |
163 |
164 |
165 |
166 |
167 |
168 | boolean
169 |
170 |
171 |
172 | |
173 |
174 |
175 |
176 |
177 |
178 | Whether or not enabelt controls/toolbar |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 | - Source:
211 | -
212 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
286 |
287 |
288 |
289 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
--------------------------------------------------------------------------------
/doc/Protael.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Protael Class: Protael
7 |
8 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Protael
22 |
23 |
24 | -
25 | Classes
27 |
28 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
Class: Protael
60 |
61 |
62 |
63 |
64 | Protael
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 | new Protael()
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | Protael object
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 | - Source:
118 | -
119 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 | Classes
160 |
161 |
162 | - Paper
163 |
164 |
165 | - Protael
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 | Members
174 |
175 |
176 |
177 | -
178 |
<static> ColoringSchemes
179 |
180 |
181 |
182 | -
183 |
184 |
185 | Object to keep coloring schemas
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 | - Source:
215 | -
216 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 | -
239 |
<static> version :string
240 |
241 |
242 |
243 | -
244 |
245 |
246 | Current version
247 |
248 |
249 |
250 |
251 | Type:
252 |
253 | -
254 |
255 | string
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 | - Source:
286 | -
287 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
339 |
340 |
341 |
342 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Test page : Protael
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
117 |
118 |
119 |
120 |
121 |
124 |
125 |
126 |
127 |
Test page for protael
128 | Enter JSON
129 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
149 |
150 |
151 |
Protael view
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
179 |
180 |
181 |
182 |
--------------------------------------------------------------------------------
/doc/Protael.Paper.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Protael Class: Paper
7 |
8 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Protael
22 |
23 |
24 | -
25 | Classes
27 |
28 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
Class: Paper
60 |
61 |
62 |
63 |
64 | Protael.
65 |
66 | Paper
67 |
68 |
69 | Paper
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 | <private> new Paper(container, w, h, parent) → {Paper}
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 | Paper object for drawing.
89 | Do not use directly, this is called from Protael constructor
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 | Parameters:
99 |
100 |
101 |
102 |
103 |
104 |
105 | | Name |
106 |
107 |
108 | Type |
109 |
110 |
111 |
112 |
113 |
114 | Description |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 | container |
124 |
125 |
126 |
127 |
128 |
129 | string
130 |
131 |
132 |
133 | |
134 |
135 |
136 |
137 |
138 |
139 | Parent container ID |
140 |
141 |
142 |
143 |
144 |
145 |
146 | w |
147 |
148 |
149 |
150 |
151 |
152 | number
153 |
154 |
155 |
156 | |
157 |
158 |
159 |
160 |
161 |
162 | paper width |
163 |
164 |
165 |
166 |
167 |
168 |
169 | h |
170 |
171 |
172 |
173 |
174 |
175 | number
176 |
177 |
178 |
179 | |
180 |
181 |
182 |
183 |
184 |
185 | paper height |
186 |
187 |
188 |
189 |
190 |
191 |
192 | parent |
193 |
194 |
195 |
196 |
197 |
198 | Protael
199 |
200 |
201 |
202 | |
203 |
204 |
205 |
206 |
207 |
208 | Protael object reference |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 | - Source:
241 | -
242 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 | Returns:
269 |
270 |
271 |
272 |
273 |
274 | -
275 | Type
276 |
277 | -
278 |
279 | Paper
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
335 |
336 |
337 |
338 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
--------------------------------------------------------------------------------
/json/bnab.json:
--------------------------------------------------------------------------------
1 | {
2 | "sequence": "------------------------------TEKLWVTVYYGVPVWKEATTTLFCASDAKAYDTEVHNVWATHACVPTDPNPQEVVLVNVTENFNMWKNDMVEQMHEDIISLWDQSLKPCVKLTPLCVSLKCTDLKNDTNTNSSSGRMIMEKGEIKNCSFNISTSIRGKVQKEYAFFYKLDIIPIDNDTTSYKLTSCNTSVITQACPKVSFEPIPIHYCAPAGFAILKCNNKTFNGTGPCTNVSTVQCTHGIRPVVSTQLLLNGSLAEEEVVIRSVNFTDNAKTIIVQLNTSVEINCTRPNNNTRKRIRIQRGPGRAFVTIGKIGNMRQAHCNISRAKWNNTLKQIASKLREQFGNNKTIIFKQSSGGDPEIVTHSFNCGGEFFYCNSTQLFNSTWFNSTWSTEGSNNTEGSDTITLPCRIKQIINMWQKVGKAMYAPPISGQIRCSSNITGLLLTRDGGNSNNESEIFRPGGGDMRDNWRSELYKYKVVKIEPLGVAPTKAKRRVVQREKRAVGIGALFLGFLGAAGSTMGAASMTLTVQARQLLSGIVQQQNNLLRAIEAQQHLLQLTVWGIKQLQARILAVERYLKDQQLLGIWGCSGKLICTTAVPWNASWSNKSLEQIWNHTTWMEWDREINNYTSLIHSLIEESQNQQEKNEQELLELD",
3 | "comment":"©",
4 | "markers": [
5 | {
6 | "type": "gap",
7 | "x": 511.5,
8 | "label": "511*512",
9 | "color": "#1240ab",
10 | "data": {
11 | "Desc": "Gap at 511 position"
12 | }
13 | },
14 | {
15 | "type": "glycan",
16 | "x": 88,
17 | "data": {
18 | "Desc": "Glycan at 88 position"
19 | }
20 | },
21 | {
22 | "type": "glycan",
23 | "x": 136,
24 | "data": {
25 | "Desc": "Glycan at 136 position"
26 | }
27 | },
28 | {
29 | "type": "glycan",
30 | "x": 141,
31 | "data": {
32 | "Desc": "Glycan at 141 position"
33 | }
34 | },
35 | {
36 | "type": "glycan",
37 | "x": 156,
38 | "data": {
39 | "Desc": "Glycan at 156 position",
40 | "Pubmed IDs": [1, 2, 3]
41 | }
42 | },
43 | {
44 | "type": "glycan",
45 | "x": 160,
46 | "data": {
47 | "Desc": "Glycan at 160 position"
48 | }
49 | },
50 | {
51 | "type": "unknownglycan",
52 | "x": 186
53 | },
54 | {
55 | "type": "glycan",
56 | "x": 190
57 | },
58 | {
59 | "type": "glycan",
60 | "x": 197
61 | },
62 | {
63 | "type": "oliglycan",
64 | "x": 230
65 | },
66 | {
67 | "type": "oliglycan",
68 | "x": 241
69 | },
70 | {
71 | "type": "glycan",
72 | "x": 276
73 | },
74 | {
75 | "type": "oliglycan",
76 | "x": 295
77 | },
78 | {
79 | "type": "glycan",
80 | "x": 301
81 | },
82 | {
83 | "type": "oliglycan",
84 | "x": 322,
85 | "color": "red"
86 | },
87 | {
88 | "type": "oliglycan",
89 | "x": 339
90 | },
91 | {
92 | "type": "glycan",
93 | "x": 356
94 | },
95 | {
96 | "type": "unknownglycan",
97 | "x": 374
98 | },
99 | {
100 | "type": "oliglycan",
101 | "x": 387
102 | },
103 | {
104 | "type": "oliglycan",
105 | "x": 395
106 | },
107 | {
108 | "type": "oliglycan",
109 | "x": 404
110 | },
111 | {
112 | "type": "unknownglycan",
113 | "x": 411
114 | },
115 | {
116 | "type": "oliglycan",
117 | "x": 417
118 | },
119 | {
120 | "type": "oliglycan",
121 | "x": 440
122 | },
123 | {
124 | "type": "glycan",
125 | "x": 468
126 | },
127 | {
128 | "label": "T322N",
129 | "type": "stick",
130 | "x": 322,
131 | "color": "red",
132 | "position": "bottom"
133 | },
134 | {
135 | "label": "I559P",
136 | "type": "stick",
137 | "x": 559,
138 | "color": "red"
139 | },
140 | {
141 | "type": "unknownglycan",
142 | "x": 610
143 | },
144 | {
145 | "type": "unknownglycan",
146 | "x": 630
147 | },
148 | {
149 | "type": "unknownglycan",
150 | "x": 640
151 | }
152 | ],
153 | "bridges": [
154 | {
155 | "type": "S-S",
156 | "start": 501,
157 | "end": 605,
158 | "startlabel": "A501C",
159 | "endlabel": "T605C",
160 | "color": "red"
161 | }
162 | ],
163 | "overlayfeatures": {
164 | "label": "regions",
165 | "showLabels": "true",
166 | "features": [
167 | {
168 | "regionType": "conserved",
169 | "start": 31,
170 | "end": 131,
171 | "label": "C1",
172 | "color": "#FFB300"
173 | },
174 | {
175 | "regionType": "variable",
176 | "start": 132,
177 | "end": 156,
178 | "label": "V1",
179 | "color": "#D94409"
180 | },
181 | {
182 | "regionType": "conserved",
183 | "start": 157,
184 | "end": 157,
185 | "label": "",
186 | "color": "#FFB300"
187 | },
188 | {
189 | "regionType": "variable",
190 | "start": 158,
191 | "end": 196,
192 | "label": "V2",
193 | "color": "#D94409"
194 | },
195 | {
196 | "regionType": "conserved",
197 | "start": 197,
198 | "end": 297,
199 | "label": "C2",
200 | "color": "#FFB300"
201 | },
202 | {
203 | "regionType": "variable",
204 | "start": 298,
205 | "end": 331,
206 | "label": "V3",
207 | "color": "#D94409"
208 | },
209 | {
210 | "regionType": "conserved",
211 | "start": 332,
212 | "end": 385,
213 | "label": "C3",
214 | "color": "#FFB300"
215 | },
216 | {
217 | "regionType": "variable",
218 | "start": 386,
219 | "end": 418,
220 | "label": "V4",
221 | "color": "#D94409"
222 | },
223 | {
224 | "regionType": "conserved",
225 | "start": 419,
226 | "end": 459,
227 | "label": "C4",
228 | "color": "#FFB300"
229 | },
230 | {
231 | "regionType": "variable",
232 | "start": 460,
233 | "end": 469,
234 | "label": "V5",
235 | "color": "#D94409"
236 | },
237 | {
238 | "regionType": "conserved",
239 | "start": 470,
240 | "end": 511,
241 | "label": "C5",
242 | "color": "#FFB300"
243 | },
244 | {
245 | "regionType": "conserved",
246 | "start": 512,
247 | "end": 530,
248 | "label": "",
249 | "color": "#FFB300"
250 | },
251 | {
252 | "regionType": "variable",
253 | "start": 530,
254 | "end": 600,
255 | "label": "HR1",
256 | "color": "#D94409"
257 | },
258 | {
259 | "regionType": "conserved",
260 | "start": 600,
261 | "end": 615,
262 | "label": "",
263 | "color": "#FFB300"
264 | },
265 | {
266 | "regionType": "variable",
267 | "start": 615,
268 | "end": 664,
269 | "label": "HR2",
270 | "color": "#D94409"
271 | },
272 | {
273 | "regionType": "mper",
274 | "start": 657,
275 | "end": 664,
276 | "label": "mper",
277 | "color": "#FFB300"
278 | }
279 | ]
280 | },
281 | "qtracks": [],
282 | "dbxrefs": {},
283 | "label": "BG505",
284 | "description": "No description",
285 | "gap": {
286 | "at": 511,
287 | "size": 10
288 | }
289 | }
290 |
--------------------------------------------------------------------------------
/doc/styles/sunlight.default.css:
--------------------------------------------------------------------------------
1 | /* global styles */
2 | .sunlight-container {
3 | clear: both !important;
4 | position: relative !important;
5 | margin: 10px 0 !important;
6 | }
7 | .sunlight-code-container {
8 | clear: both !important;
9 | position: relative !important;
10 | border: none;
11 | border-color: #969696 !important;
12 | background-color: #FFFFFF !important;
13 | }
14 | .sunlight-highlighted, .sunlight-container, .sunlight-container textarea {
15 | font-family: Consolas, Inconsolata, Monaco, "Courier New" !important;
16 | font-size: 12px !important;
17 | line-height: 15px !important;
18 | }
19 | .sunlight-highlighted, .sunlight-container textarea {
20 | color: #000000 !important;
21 | margin: 0 !important;
22 | }
23 | .sunlight-container textarea {
24 | padding-left: 0 !important;
25 | margin-left: 0 !important;
26 | margin-right: 0 !important;
27 | padding-right: 0 !important;
28 | }
29 | .sunlight-code-container > .sunlight-highlighted {
30 | white-space: pre;
31 | overflow-x: auto;
32 | overflow-y: hidden; /* ie requires this wtf? */
33 | }
34 | .sunlight-highlighted {
35 | z-index: 1;
36 | position: relative;
37 | }
38 | .sunlight-highlighted * {
39 | background: transparent;
40 | }
41 | .sunlight-line-number-margin {
42 | float: left !important;
43 | margin-right: 5px !important;
44 | margin-top: 0 !important;
45 | margin-bottom: 0 !important;
46 | padding: 0 !important;
47 | padding-right: 4px !important;
48 | padding-left: 4px !important;
49 | border-right: 1px solid #CCCCCC !important;
50 | background-color: #EEEEEE !important;
51 | color: #848484 !important;
52 | text-align: right !important;
53 | position: relative;
54 | z-index: 3;
55 | }
56 | .sunlight-highlighted a, .sunlight-line-number-margin a {
57 | border: none !important;
58 | text-decoration: none !important;
59 | font-weight: normal !important;
60 | font-style: normal !important;
61 | padding: 0 !important;
62 | }
63 | .sunlight-line-number-margin a {
64 | color: inherit !important;
65 | }
66 | .sunlight-line-highlight-overlay {
67 | position: absolute;
68 | top: 0;
69 | left: 0;
70 | width: 100%;
71 | z-index: 0;
72 | }
73 | .sunlight-line-highlight-overlay div {
74 | height: 15px;
75 | width: 100%;
76 | }
77 | .sunlight-line-highlight-overlay .sunlight-line-highlight-active {
78 | background-color: #E7FCFA;
79 | }
80 |
81 | /* menu */
82 | .sunlight-menu {
83 | background-color: #FFFFCC;
84 | color: #000000;
85 | }
86 | .sunlight-menu ul {
87 | margin: 0 !important;
88 | padding: 0 !important;
89 | list-style-type: none !important;
90 | }
91 | .sunlight-menu li {
92 | float: right !important;
93 | margin-left: 5px !important;
94 | }
95 | .sunlight-menu a, .sunlight-menu img {
96 | color: #000099 !important;
97 | text-decoration: none !important;
98 | border: none !important;
99 | }
100 |
101 |
102 |
103 |
104 | .sunlight-string,
105 | .sunlight-char,
106 | .sunlight-heredoc,
107 | .sunlight-heredocDeclaration,
108 | .sunlight-nowdoc,
109 | .sunlight-longString,
110 | .sunlight-rawString,
111 | .sunlight-binaryString,
112 | .sunlight-rawLongString,
113 | .sunlight-binaryLongString,
114 | .sunlight-verbatimString,
115 | .sunlight-diff .sunlight-removed {
116 | color: #990000 !important;
117 | }
118 |
119 | .sunlight-ident,
120 | .sunlight-operator,
121 | .sunlight-punctuation,
122 | .sunlight-delimiter,
123 | .sunlight-diff .sunlight-unchanged {
124 | color: #000000 !important;
125 | }
126 |
127 | .sunlight-comment,
128 | .sunlight-xmlDocCommentContent,
129 | .sunlight-nginx .sunlight-ssiCommand,
130 | .sunlight-sln .sunlight-formatDeclaration,
131 | .sunlight-diff .sunlight-added {
132 | color: #009900 !important;
133 | }
134 | .sunlight-number,
135 | .sunlight-guid,
136 | .sunlight-cdata {
137 | color: #CC6600 !important;
138 | }
139 |
140 | .sunlight-named-ident,
141 | .sunlight-constant,
142 | .sunlight-javascript .sunlight-globalVariable,
143 | .sunlight-globalObject,
144 | .sunlight-python .sunlight-attribute,
145 | .sunlight-nginx .sunlight-context,
146 | .sunlight-httpd .sunlight-context,
147 | .sunlight-haskell .sunlight-class,
148 | .sunlight-haskell .sunlight-type,
149 | .sunlight-lisp .sunlight-declarationSpecifier,
150 | .sunlight-erlang .sunlight-userDefinedFunction,
151 | .sunlight-diff .sunlight-header {
152 | color: #2B91AF !important;
153 | }
154 | .sunlight-keyword,
155 | .sunlight-languageConstruct,
156 | .sunlight-css
157 | .sunlight-element,
158 | .sunlight-bash .sunlight-command,
159 | .sunlight-specialOperator,
160 | .sunlight-erlang .sunlight-moduleAttribute,
161 | .sunlight-xml .sunlight-tagName,
162 | .sunlight-xml .sunlight-operator,
163 | .sunlight-diff .sunlight-modified {
164 | color: #0000FF !important;
165 | }
166 | .sunlight-shortOpenTag,
167 | .sunlight-openTag,
168 | .sunlight-closeTag,
169 | .sunlight-xmlOpenTag,
170 | .sunlight-xmlCloseTag,
171 | .sunlight-aspOpenTag,
172 | .sunlight-aspCloseTag,
173 | .sunlight-label,
174 | .sunlight-css .sunlight-importantFlag {
175 | background-color: #FFFF99 !important;
176 | color: #000000 !important;
177 | }
178 | .sunlight-function,
179 | .sunlight-globalFunction,
180 | .sunlight-ruby .sunlight-specialFunction,
181 | .sunlight-objective-c .sunlight-messageDestination,
182 | .sunlight-6502asm .sunlight-illegalOpcode,
183 | .sunlight-powershell .sunlight-switch,
184 | .sunlight-lisp .sunlight-macro,
185 | .sunlight-lisp .sunlight-specialForm,
186 | .sunlight-lisp .sunlight-type,
187 | .sunlight-sln .sunlight-sectionName,
188 | .sunlight-diff .sunlight-rangeInfo {
189 | color: #B069AF !important;
190 | }
191 |
192 | .sunlight-variable,
193 | .sunlight-specialVariable,
194 | .sunlight-environmentVariable,
195 | .sunlight-objective-c .sunlight-messageArgumentName,
196 | .sunlight-lisp .sunlight-globalVariable,
197 | .sunlight-ruby .sunlight-globalVariable,
198 | .sunlight-ruby .sunlight-instanceVariable,
199 | .sunlight-sln .sunlight-operator {
200 | color: #325484 !important;
201 | }
202 | .sunlight-regexLiteral,
203 | .sunlight-lisp .sunlight-operator,
204 | .sunlight-6502asm .sunlight-pseudoOp,
205 | .sunlight-erlang .sunlight-macro {
206 | color: #FF00B2 !important;
207 | }
208 | .sunlight-specialVariable {
209 | font-style: italic !important;
210 | font-weight: bold !important;
211 | }
212 | .sunlight-csharp .sunlight-pragma,
213 | .sunlight-preprocessorDirective,
214 | .sunlight-vb .sunlight-compilerDirective,
215 | .sunlight-diff .sunlight-mergeHeader,
216 | .sunlight-diff .sunlight-noNewLine {
217 | color: #999999 !important;
218 | font-style: italic !important;
219 | }
220 | .sunlight-xmlDocCommentMeta,
221 | .sunlight-java .sunlight-annotation,
222 | .sunlight-scala .sunlight-annotation,
223 | .sunlight-docComment {
224 | color: #808080 !important;
225 | }
226 | .sunlight-quotedIdent,
227 | .sunlight-ruby .sunlight-subshellCommand,
228 | .sunlight-lisp .sunlight-keywordArgument,
229 | .sunlight-haskell .sunlight-infixOperator,
230 | .sunlight-erlang .sunlight-quotedAtom {
231 | color: #999900 !important;
232 | }
233 |
234 |
235 |
236 | /* xml */
237 | .sunlight-xml .sunlight-string {
238 | color: #990099 !important;
239 | }
240 | .sunlight-xml .sunlight-attribute {
241 | color: #FF0000 !important;
242 | }
243 | .sunlight-xml .sunlight-entity {
244 | background-color: #EEEEEE !important;
245 | color: #000000 !important;
246 | border: 1px solid #000000 !important;
247 | }
248 | .sunlight-xml .sunlight-doctype {
249 | color: #2B91AF !important;
250 | }
251 |
252 | /* javascript */
253 | .sunlight-javascript .sunlight-reservedWord {
254 | font-style: italic !important;
255 | }
256 |
257 | /* css */
258 | .sunlight-css .sunlight-microsoftFilterPrefix {
259 | color: #FF00FF !important;
260 | }
261 | .sunlight-css .sunlight-rule {
262 | color: #0099FF !important;
263 | }
264 | .sunlight-css .sunlight-keyword {
265 | color: #4E65B8 !important;
266 | }
267 | .sunlight-css .sunlight-class {
268 | color: #FF0000 !important;
269 | }
270 | .sunlight-css .sunlight-id {
271 | color: #8A8E13 !important;
272 | }
273 | .sunlight-css .sunlight-pseudoClass,
274 | .sunlight-css .sunlight-pseudoElement {
275 | color: #368B87 !important;
276 | }
277 |
278 | /* bash */
279 | .sunlight-bash .sunlight-hashBang {
280 | color: #3D97F5 !important;
281 | }
282 | .sunlight-bash .sunlight-verbatimCommand {
283 | color: #999900 !important;
284 | }
285 | .sunlight-bash .sunlight-variable,
286 | .sunlight-bash .sunlight-specialVariable {
287 | color: #FF0000 !important;
288 | }
289 |
290 | /* python */
291 | .sunlight-python .sunlight-specialMethod {
292 | font-weight: bold !important;
293 | color: #A07DD3;
294 | }
295 |
296 | /* ruby */
297 | .sunlight-ruby .sunlight-symbol {
298 | font-weight: bold !important;
299 | color: #ED7272 !important;
300 | }
301 |
302 | /* brainfuck */
303 | .sunlight-brainfuck {
304 | font-weight: bold !important;
305 | color: #000000 !important;
306 | }
307 | .sunlight-brainfuck .sunlight-increment {
308 | background-color: #FF9900 !important;
309 | }
310 | .sunlight-brainfuck .sunlight-decrement {
311 | background-color: #FF99FF !important;
312 | }
313 | .sunlight-brainfuck .sunlight-incrementPointer {
314 | background-color: #FFFF99 !important;
315 | }
316 | .sunlight-brainfuck .sunlight-decrementPointer {
317 | background-color: #66CCFF !important;
318 | }
319 | .sunlight-brainfuck .sunlight-read {
320 | background-color: #FFFFFF !important;
321 | }
322 | .sunlight-brainfuck .sunlight-write {
323 | background-color: #99FF99 !important;
324 | }
325 | .sunlight-brainfuck .sunlight-openLoop, .sunlight-brainfuck .sunlight-closeLoop {
326 | background-color: #FFFFFF !important;
327 | }
328 |
329 | /* 6502 asm */
330 | .sunlight-6502asm .sunlight-label {
331 | font-weight: bold !important;
332 | color: #000000 !important;
333 | background: none !important;
334 | }
335 |
336 | /* lisp */
337 | .sunlight-lisp .sunlight-macro {
338 | font-style: italic !important;
339 | }
340 |
341 | /* erlang */
342 | .sunlight-erlang .sunlight-atom {
343 | font-weight: bold !important;
344 | }
--------------------------------------------------------------------------------
/doc/styles/sunlight.dark.css:
--------------------------------------------------------------------------------
1 | /* global styles */
2 | .sunlight-container {
3 | clear: both !important;
4 | position: relative !important;
5 | margin: 10px 0 !important;
6 | }
7 | .sunlight-code-container {
8 | clear: both !important;
9 | position: relative !important;
10 | border: none;
11 | border-color: #626262 !important;
12 | background-color: #262626 !important;
13 | }
14 | .sunlight-highlighted, .sunlight-container, .sunlight-container textarea {
15 | font-family: Consolas, Inconsolata, Monaco, "Courier New" !important;
16 | font-size: 12px !important;
17 | line-height: 15px !important;
18 | }
19 | .sunlight-highlighted, .sunlight-container textarea {
20 | color: #FFFFFF !important;
21 | margin: 0 !important;
22 | }
23 | .sunlight-container textarea {
24 | padding-left: 0 !important;
25 | margin-left: 0 !important;
26 | margin-right: 0 !important;
27 | padding-right: 0 !important;
28 | }
29 | .sunlight-code-container > .sunlight-highlighted {
30 | white-space: pre;
31 | overflow-x: auto;
32 | overflow-y: hidden; /* ie requires this wtf? */
33 | }
34 | .sunlight-highlighted {
35 | z-index: 1;
36 | position: relative;
37 | }
38 | .sunlight-highlighted * {
39 | background: transparent;
40 | }
41 | .sunlight-line-number-margin {
42 | float: left !important;
43 | margin-right: 5px !important;
44 | margin-top: 0 !important;
45 | margin-bottom: 0 !important;
46 | padding: 0 !important;
47 | padding-right: 4px !important;
48 | padding-left: 4px !important;
49 | border-right: 1px solid #9A9A9A !important;
50 | background-color: #3E3E3E !important;
51 | color: #9A9A9A !important;
52 | text-align: right !important;
53 | position: relative;
54 | z-index: 3;
55 | }
56 | .sunlight-highlighted a, .sunlight-line-number-margin a {
57 | border: none !important;
58 | text-decoration: none !important;
59 | font-style: normal !important;
60 | padding: 0 !important;
61 | }
62 | .sunlight-line-number-margin a {
63 | color: inherit !important;
64 | }
65 | .sunlight-line-highlight-overlay {
66 | position: absolute;
67 | top: 0;
68 | left: 0;
69 | width: 100%;
70 | z-index: 0;
71 | }
72 | .sunlight-line-highlight-overlay div {
73 | height: 15px;
74 | width: 100%;
75 | }
76 | .sunlight-line-highlight-overlay .sunlight-line-highlight-active {
77 | background-color: #4B4B4B;
78 | }
79 |
80 | /* menu */
81 | .sunlight-menu {
82 | background-color: #FFFFCC;
83 | color: #000000;
84 | }
85 | .sunlight-menu ul {
86 | margin: 0 !important;
87 | padding: 0 !important;
88 | list-style-type: none !important;
89 | }
90 | .sunlight-menu li {
91 | float: right !important;
92 | margin-left: 5px !important;
93 | }
94 | .sunlight-menu a, .sunlight-menu img {
95 | color: #000099 !important;
96 | text-decoration: none !important;
97 | border: none !important;
98 | }
99 |
100 |
101 |
102 |
103 | .sunlight-string,
104 | .sunlight-char,
105 | .sunlight-heredoc,
106 | .sunlight-heredocDeclaration,
107 | .sunlight-nowdoc,
108 | .sunlight-longString,
109 | .sunlight-rawString,
110 | .sunlight-binaryString,
111 | .sunlight-verbatimString,
112 | .sunlight-rawLongString,
113 | .sunlight-binaryLongString,
114 | .sunlight-diff .sunlight-added {
115 | color: #55EB54 !important;
116 | }
117 | .sunlight-operator,
118 | .sunlight-punctuation,
119 | .sunlight-delimiter {
120 | color: #B1EDEC !important;
121 | }
122 | .sunlight-ident,
123 | .sunlight-diff .sunlight-unchanged {
124 | color: #E0E0E0 !important;
125 | font-weight: bold !important;
126 | }
127 | .sunlight-comment,
128 | .sunlight-xmlDocCommentContent,
129 | .sunlight-nginx .sunlight-ssiCommand,
130 | .sunlight-sln .sunlight-formatDeclaration,
131 | .sunlight-diff .sunlight-mergeHeader,
132 | .sunlight-diff .sunlight-noNewLine {
133 | color: #787D31 !important;
134 | }
135 | .sunlight-number,
136 | .sunlight-cdata,
137 | .sunlight-guid,
138 | .sunlight-diff .sunlight-modified {
139 | color: #F7BA7E !important;
140 | font-weight: bold !important;
141 | }
142 | .sunlight-named-ident,
143 | .sunlight-xml .sunlight-attribute,
144 | .sunlight-constant,
145 | .sunlight-javascript .sunlight-globalVariable,
146 | .sunlight-globalObject,
147 | .sunlight-css .sunlight-id,
148 | .sunlight-python .sunlight-attribute,
149 | .sunlight-nginx .sunlight-context,
150 | .sunlight-httpd .sunlight-context,
151 | .sunlight-lisp .sunlight-declarationSpecifier,
152 | .sunlight-erlang .sunlight-userDefinedFunction,
153 | .sunlight-diff .sunlight-removed {
154 | color: #FBBDEE !important;
155 | font-weight: bold !important;
156 | }
157 | .sunlight-keyword,
158 | .sunlight-languageConstruct,
159 | .sunlight-specialOperator,
160 | .sunlight-xml .sunlight-tagName,
161 | .sunlight-xml .sunlight-operator,
162 | .sunlight-bash .sunlight-command,
163 | .sunlight-erlang .sunlight-moduleAttribute {
164 | color: #A3CCF7 !important;
165 | font-weight: bold !important;
166 | }
167 | .sunlight-shortOpenTag,
168 | .sunlight-openTag,
169 | .sunlight-closeTag,
170 | .sunlight-xmlOpenTag,
171 | .sunlight-xmlCloseTag,
172 | .sunlight-aspOpenTag,
173 | .sunlight-aspCloseTag,
174 | .sunlight-label,
175 | .sunlight-css .sunlight-importantFlag {
176 | background-color: #7373C1 !important;
177 | }
178 | .sunlight-content {
179 | color: #FFFFFF !important;
180 | font-weight: bold !important;
181 | }
182 | .sunlight-function,
183 | .sunlight-globalFunction,
184 | .sunlight-objective-c .sunlight-messageDestination,
185 | .sunlight-ruby .sunlight-specialFunction,
186 | .sunlight-6502asm .sunlight-illegalOpcode,
187 | .sunlight-powershell .sunlight-switch,
188 | .sunlight-lisp .sunlight-macro,
189 | .sunlight-lisp .sunlight-specialForm,
190 | .sunlight-lisp .sunlight-type,
191 | .sunlight-sln .sunlight-sectionName,
192 | .sunlight-diff .sunlight-header {
193 | color: #C8BBF1 !important;
194 | font-weight: bold !important;
195 | }
196 | .sunlight-variable,
197 | .sunlight-environmentVariable,
198 | .sunlight-specialVariable,
199 | .sunlight-objective-c .sunlight-messageArgumentName,
200 | .sunlight-lisp .sunlight-globalVariable,
201 | .sunlight-ruby .sunlight-globalVariable,
202 | .sunlight-ruby .sunlight-instanceVariable {
203 | color: #F5E5B0 !important;
204 | font-weight: bold !important;
205 | }
206 | .sunlight-regexLiteral,
207 | .sunlight-lisp .sunlight-operator,
208 | .sunlight-6502asm .sunlight-pseudoOp,
209 | .sunlight-erlang .sunlight-macro,
210 | .sunlight-diff .sunlight-rangeInfo {
211 | color: #E0F16A !important;
212 | }
213 | .sunlight-specialVariable {
214 | font-style: italic !important;
215 | font-weight: bold !important;
216 | }
217 | .sunlight-csharp .sunlight-pragma,
218 | .sunlight-preprocessorDirective,
219 | .sunlight-vb .sunlight-compilerDirective {
220 | color: #666363 !important;
221 | font-style: italic !important;
222 | }
223 | .sunlight-xmlDocCommentMeta,
224 | .sunlight-java .sunlight-annotation,
225 | .sunlight-scala .sunlight-annotation,
226 | .sunlight-docComment {
227 | color: #666363 !important;
228 | }
229 | .sunlight-quotedIdent,
230 | .sunlight-ruby .sunlight-subshellCommand,
231 | .sunlight-lisp .sunlight-keywordArgument,
232 | .sunlight-haskell .sunlight-infixOperator,
233 | .sunlight-erlang .sunlight-quotedAtom {
234 | color: #F8CA16 !important;
235 | }
236 |
237 |
238 |
239 |
240 | /* html/xml */
241 | .sunlight-xml .sunlight-tagName,
242 | .sunlight-xml .sunlight-operator,
243 | .sunlight-xml .sunlight-attribute {
244 | font-weight: normal !important;
245 | }
246 | .sunlight-doctype {
247 | color: #DEB9B2 !important;
248 | font-style: italic !important;
249 | }
250 | .sunlight-xml .sunlight-entity {
251 | background-color: #E6E585 !important;
252 | color: #000000 !important;
253 | }
254 |
255 | /* javascript */
256 | .sunlight-javascript .sunlight-reservedWord {
257 | font-style: italic !important;
258 | }
259 |
260 | /* css */
261 | .sunlight-css .sunlight-element {
262 | color: #E9EE97 !important;
263 | }
264 | .sunlight-css .sunlight-microsoftFilterPrefix {
265 | color: #C9FF9F !important;
266 | }
267 | .sunlight-css .sunlight-rule {
268 | color: #0099FF !important;
269 | }
270 | .sunlight-css .sunlight-class {
271 | color: #E78282 !important;
272 | }
273 | .sunlight-css .sunlight-pseudoClass, .sunlight-css .sunlight-pseudoElement {
274 | color: #73D693 !important;
275 | }
276 |
277 | /* bash */
278 | .sunlight-bash .sunlight-hashBang {
279 | color: #FFFF00 !important;
280 | }
281 |
282 | .sunlight-bash .sunlight-verbatimCommand {
283 | color: #BBA4EE !important;
284 | }
285 | .sunlight-bash .sunlight-variable,
286 | .sunlight-bash .sunlight-specialVariable {
287 | color: #ED8585 !important;
288 | }
289 |
290 | /* python */
291 | .sunlight-python .sunlight-specialMethod {
292 | font-weight: bold !important;
293 | color: #B0A3C2;
294 | }
295 |
296 | /* ruby */
297 | .sunlight-ruby .sunlight-symbol {
298 | font-weight: bold !important;
299 | color: #90EEA2 !important;
300 | }
301 |
302 | /* brainfuck */
303 | .sunlight-brainfuck {
304 | font-weight: bold !important;
305 | color: #000000 !important;
306 | }
307 | .sunlight-brainfuck .sunlight-increment {
308 | background-color: #FF9900 !important;
309 | }
310 | .sunlight-brainfuck .sunlight-decrement {
311 | background-color: #FF99FF !important;
312 | }
313 | .sunlight-brainfuck .sunlight-incrementPointer {
314 | background-color: #FFFF99 !important;
315 | }
316 | .sunlight-brainfuck .sunlight-decrementPointer {
317 | background-color: #66CCFF !important;
318 | }
319 | .sunlight-brainfuck .sunlight-read {
320 | background-color: #FFFFFF !important;
321 | }
322 | .sunlight-brainfuck .sunlight-write {
323 | background-color: #99FF99 !important;
324 | }
325 | .sunlight-brainfuck .sunlight-openLoop, .sunlight-brainfuck .sunlight-closeLoop {
326 | background-color: #FFFFFF !important;
327 | }
328 |
329 | /* 6502 asm */
330 | .sunlight-6502asm .sunlight-label {
331 | background: none !important;
332 | color: #FFFFFF !important;
333 | text-decoration: underline !important;
334 | }
335 |
336 | /* lisp */
337 | .sunlight-lisp .sunlight-macro {
338 | font-style: italic !important;
339 | }
340 |
341 | /* erlang */
342 | .sunlight-erlang .sunlight-atom {
343 | color: #FFFFFF !important;
344 | font-weight: bold !important;
345 | }
--------------------------------------------------------------------------------
/doc/scripts/prettify/Apache-License-2.0.txt:
--------------------------------------------------------------------------------
1 |
2 | Apache License
3 | Version 2.0, January 2004
4 | http://www.apache.org/licenses/
5 |
6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7 |
8 | 1. Definitions.
9 |
10 | "License" shall mean the terms and conditions for use, reproduction,
11 | and distribution as defined by Sections 1 through 9 of this document.
12 |
13 | "Licensor" shall mean the copyright owner or entity authorized by
14 | the copyright owner that is granting the License.
15 |
16 | "Legal Entity" shall mean the union of the acting entity and all
17 | other entities that control, are controlled by, or are under common
18 | control with that entity. For the purposes of this definition,
19 | "control" means (i) the power, direct or indirect, to cause the
20 | direction or management of such entity, whether by contract or
21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 | outstanding shares, or (iii) beneficial ownership of such entity.
23 |
24 | "You" (or "Your") shall mean an individual or Legal Entity
25 | exercising permissions granted by this License.
26 |
27 | "Source" form shall mean the preferred form for making modifications,
28 | including but not limited to software source code, documentation
29 | source, and configuration files.
30 |
31 | "Object" form shall mean any form resulting from mechanical
32 | transformation or translation of a Source form, including but
33 | not limited to compiled object code, generated documentation,
34 | and conversions to other media types.
35 |
36 | "Work" shall mean the work of authorship, whether in Source or
37 | Object form, made available under the License, as indicated by a
38 | copyright notice that is included in or attached to the work
39 | (an example is provided in the Appendix below).
40 |
41 | "Derivative Works" shall mean any work, whether in Source or Object
42 | form, that is based on (or derived from) the Work and for which the
43 | editorial revisions, annotations, elaborations, or other modifications
44 | represent, as a whole, an original work of authorship. For the purposes
45 | of this License, Derivative Works shall not include works that remain
46 | separable from, or merely link (or bind by name) to the interfaces of,
47 | the Work and Derivative Works thereof.
48 |
49 | "Contribution" shall mean any work of authorship, including
50 | the original version of the Work and any modifications or additions
51 | to that Work or Derivative Works thereof, that is intentionally
52 | submitted to Licensor for inclusion in the Work by the copyright owner
53 | or by an individual or Legal Entity authorized to submit on behalf of
54 | the copyright owner. For the purposes of this definition, "submitted"
55 | means any form of electronic, verbal, or written communication sent
56 | to the Licensor or its representatives, including but not limited to
57 | communication on electronic mailing lists, source code control systems,
58 | and issue tracking systems that are managed by, or on behalf of, the
59 | Licensor for the purpose of discussing and improving the Work, but
60 | excluding communication that is conspicuously marked or otherwise
61 | designated in writing by the copyright owner as "Not a Contribution."
62 |
63 | "Contributor" shall mean Licensor and any individual or Legal Entity
64 | on behalf of whom a Contribution has been received by Licensor and
65 | subsequently incorporated within the Work.
66 |
67 | 2. Grant of Copyright License. Subject to the terms and conditions of
68 | this License, each Contributor hereby grants to You a perpetual,
69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 | copyright license to reproduce, prepare Derivative Works of,
71 | publicly display, publicly perform, sublicense, and distribute the
72 | Work and such Derivative Works in Source or Object form.
73 |
74 | 3. Grant of Patent License. Subject to the terms and conditions of
75 | this License, each Contributor hereby grants to You a perpetual,
76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 | (except as stated in this section) patent license to make, have made,
78 | use, offer to sell, sell, import, and otherwise transfer the Work,
79 | where such license applies only to those patent claims licensable
80 | by such Contributor that are necessarily infringed by their
81 | Contribution(s) alone or by combination of their Contribution(s)
82 | with the Work to which such Contribution(s) was submitted. If You
83 | institute patent litigation against any entity (including a
84 | cross-claim or counterclaim in a lawsuit) alleging that the Work
85 | or a Contribution incorporated within the Work constitutes direct
86 | or contributory patent infringement, then any patent licenses
87 | granted to You under this License for that Work shall terminate
88 | as of the date such litigation is filed.
89 |
90 | 4. Redistribution. You may reproduce and distribute copies of the
91 | Work or Derivative Works thereof in any medium, with or without
92 | modifications, and in Source or Object form, provided that You
93 | meet the following conditions:
94 |
95 | (a) You must give any other recipients of the Work or
96 | Derivative Works a copy of this License; and
97 |
98 | (b) You must cause any modified files to carry prominent notices
99 | stating that You changed the files; and
100 |
101 | (c) You must retain, in the Source form of any Derivative Works
102 | that You distribute, all copyright, patent, trademark, and
103 | attribution notices from the Source form of the Work,
104 | excluding those notices that do not pertain to any part of
105 | the Derivative Works; and
106 |
107 | (d) If the Work includes a "NOTICE" text file as part of its
108 | distribution, then any Derivative Works that You distribute must
109 | include a readable copy of the attribution notices contained
110 | within such NOTICE file, excluding those notices that do not
111 | pertain to any part of the Derivative Works, in at least one
112 | of the following places: within a NOTICE text file distributed
113 | as part of the Derivative Works; within the Source form or
114 | documentation, if provided along with the Derivative Works; or,
115 | within a display generated by the Derivative Works, if and
116 | wherever such third-party notices normally appear. The contents
117 | of the NOTICE file are for informational purposes only and
118 | do not modify the License. You may add Your own attribution
119 | notices within Derivative Works that You distribute, alongside
120 | or as an addendum to the NOTICE text from the Work, provided
121 | that such additional attribution notices cannot be construed
122 | as modifying the License.
123 |
124 | You may add Your own copyright statement to Your modifications and
125 | may provide additional or different license terms and conditions
126 | for use, reproduction, or distribution of Your modifications, or
127 | for any such Derivative Works as a whole, provided Your use,
128 | reproduction, and distribution of the Work otherwise complies with
129 | the conditions stated in this License.
130 |
131 | 5. Submission of Contributions. Unless You explicitly state otherwise,
132 | any Contribution intentionally submitted for inclusion in the Work
133 | by You to the Licensor shall be under the terms and conditions of
134 | this License, without any additional terms or conditions.
135 | Notwithstanding the above, nothing herein shall supersede or modify
136 | the terms of any separate license agreement you may have executed
137 | with Licensor regarding such Contributions.
138 |
139 | 6. Trademarks. This License does not grant permission to use the trade
140 | names, trademarks, service marks, or product names of the Licensor,
141 | except as required for reasonable and customary use in describing the
142 | origin of the Work and reproducing the content of the NOTICE file.
143 |
144 | 7. Disclaimer of Warranty. Unless required by applicable law or
145 | agreed to in writing, Licensor provides the Work (and each
146 | Contributor provides its Contributions) on an "AS IS" BASIS,
147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 | implied, including, without limitation, any warranties or conditions
149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 | PARTICULAR PURPOSE. You are solely responsible for determining the
151 | appropriateness of using or redistributing the Work and assume any
152 | risks associated with Your exercise of permissions under this License.
153 |
154 | 8. Limitation of Liability. In no event and under no legal theory,
155 | whether in tort (including negligence), contract, or otherwise,
156 | unless required by applicable law (such as deliberate and grossly
157 | negligent acts) or agreed to in writing, shall any Contributor be
158 | liable to You for damages, including any direct, indirect, special,
159 | incidental, or consequential damages of any character arising as a
160 | result of this License or out of the use or inability to use the
161 | Work (including but not limited to damages for loss of goodwill,
162 | work stoppage, computer failure or malfunction, or any and all
163 | other commercial damages or losses), even if such Contributor
164 | has been advised of the possibility of such damages.
165 |
166 | 9. Accepting Warranty or Additional Liability. While redistributing
167 | the Work or Derivative Works thereof, You may choose to offer,
168 | and charge a fee for, acceptance of support, warranty, indemnity,
169 | or other liability obligations and/or rights consistent with this
170 | License. However, in accepting such obligations, You may act only
171 | on Your own behalf and on Your sole responsibility, not on behalf
172 | of any other Contributor, and only if You agree to indemnify,
173 | defend, and hold each Contributor harmless for any liability
174 | incurred by, or claims asserted against, such Contributor by reason
175 | of your accepting any such warranty or additional liability.
176 |
177 | END OF TERMS AND CONDITIONS
178 |
179 | APPENDIX: How to apply the Apache License to your work.
180 |
181 | To apply the Apache License to your work, attach the following
182 | boilerplate notice, with the fields enclosed by brackets "[]"
183 | replaced with your own identifying information. (Don't include
184 | the brackets!) The text should be enclosed in the appropriate
185 | comment syntax for the file format. We also recommend that a
186 | file or class name and description of purpose be included on the
187 | same "printed page" as the copyright notice for easier
188 | identification within third-party archives.
189 |
190 | Copyright [yyyy] [name of copyright owner]
191 |
192 | Licensed under the Apache License, Version 2.0 (the "License");
193 | you may not use this file except in compliance with the License.
194 | You may obtain a copy of the License at
195 |
196 | http://www.apache.org/licenses/LICENSE-2.0
197 |
198 | Unless required by applicable law or agreed to in writing, software
199 | distributed under the License is distributed on an "AS IS" BASIS,
200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201 | See the License for the specific language governing permissions and
202 | limitations under the License.
203 |
--------------------------------------------------------------------------------
/json/allFeaturesExample.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "gi|117928536|ref|YP_873087.1| Holliday junction resolvase YqgF [Acidothermus cellulolyticus 11B]",
3 | "sequence": "MGDTAVRPGVRIGVDVGTVRIGVAVSDPDGRLAVPAETLPRDASGAGELRRLAQLVEERGAVEVVVGLPV",
4 | "seqcolors": {
5 | "data": "CCCCCCCCCCEEEEECCCCEEEEEEECCCCCEECCEEEEEECCCCCHHHHHHHHHHHHHCCCEEEECCCCCCCCCCCCCCEEEEECCCCEEEEEEECCCCCEECCEEEEEECCCCCHHHHHHHHHHHHHCCCEEEECCCC",
6 | "colors": {
7 | "C": "#DDD",
8 | "B": "blue",
9 | "X": "orange",
10 | "T": "#DDD",
11 | "S": "#DDD",
12 | " ": "#DDD",
13 | "I": "red",
14 | "H": "red",
15 | "G": "red",
16 | "E": "blue"
17 | }
18 | },
19 | "highlights": [
20 | {
21 | "id": "PF14259",
22 | "start": 15,
23 | "end": 42,
24 | "color": "#bbdefb",
25 | "opacity": 0.9,
26 | "description": "15-42"
27 | },
28 | {
29 | "start": 1,
30 | "end": 4,
31 | "description": "Something interesting in this region!"
32 | }
33 | ],
34 | "alidisplay": true,
35 | "alignments": [
36 | {
37 | "CS": "ALI",
38 | "label": "1vhx_A",
39 | "sequence": "RILGLDLGTKTLGVALSDEMGWTAQGIETIKNEAEGDYGLSRLSELIKDYTIDKIVLGFP",
40 | "description": "7.000e-14 \u003e1vhx_A 150aa 12/01/03 (X-RAY) Putative Holliday junction resolvase [BACILLUS SUBTILIS] :_: Frame:0 Round:0 Length:150",
41 | "start": 10,
42 | "seqcolors": {
43 | "data": "EEEEEEE SSEEEEEEE TTSSSEEEEEEEEBGGGTB HHHHHHHHTTSEEEEEEEE BTTB HHHHHHHHHHHHHHHHH S EEEE SS HHHHHHHHHHTT HHHHHHHHHHHHHHHHHHHHHHHHT XXXXXXXXX",
44 | "colors": {}
45 | },
46 | "data": {},
47 | "dbxrefs": {
48 | "Test": "http://google.com"
49 | }
50 | },
51 | {
52 | "CS": "ALI",
53 | "label": "Hypothetical protein yqgF ",
54 | "sequence": "MSGTLLAFDFGTKSIGVAVGQRITGTARPLPAIKAQ-DGTPDWNIIERLLKEWQPDEIIVGLPL",
55 | "description": "3.000e-13 \u003e1ovq_A 138aa 03/27/03 (NMR) Hypothetical protein yqgF [ESCHERICHIA COLI] :_: Frame:0 Round:0 Length:138",
56 | "start": 7,
57 | "seqcolors": {
58 | "data": " EEEEEEEETTEEEEEEEETTTTEEEEE S B-TTB HHHHHHHHHHT EEEEEE SSSS TTHHHHHHHHHHHHHHHT EEE SS SS SS SS S S SSHHHHHHHHHHHHHT ",
59 | "colors": {}
60 | },
61 | "data": {}
62 | },
63 | {
64 | "CS": "ALI",
65 | "label": "",
66 | "sequence": "MSGTLLAFDFGTKSIGVAVGQRITGTARPLPAIKAQ-DGTPDWNIIERLLKEWQPDEIIVGLPL",
67 | "description": "1nmn_A ",
68 | "start": 7,
69 | "seqcolors": {
70 | "data": "X EEEEEE SSEEEEEEEETTTTEEEEEEEEE B-TTB HHHHHHHHHHH SEEEEEEEB TTS B TTHHHHHHHHHHHHHHH EEEEEE XXXXXXXXXXXXXXXXX GGGHHHHHHHHHHHHTT ",
71 | "colors": {}
72 | },
73 | "data": {}
74 | },
75 | {
76 | "CS": "ALI",
77 | "label": "",
78 | "sequence": "MSGTLMAFDFGTKSIGVAVGQRITGTARPLPAIKAQ-DGTPDWNIIERLLKEWQPDEIIVGLPL",
79 | "description": "4.000e-13 \u003e1nu0_A 138aa 01/30/03 (X-RAY) Hypothetical protein yqgF [ESCHERICHIA COLI] :_: Frame:0 Round:0 Length:138",
80 | "start": 7,
81 | "seqcolors": {
82 | "data": " EEEEEE SSEEEEEEEETTTTEEEEEEEEEEE-TTEE HHHHHHHHHHH SEEEEEEEE TTS B HHHHHHHHHHHHHHHHH EEEEEEE XXXXXXX HHHHTTHHHHHHHHHHHHTT ",
83 | "colors": {}
84 | },
85 | "data": {}
86 | },
87 | {
88 | "CS": "ALI",
89 | "label": "",
90 | "sequence": "RVGALDVGEARIGLAVGEEGVPLASGRGYLVRKTLEE-DVEALLDFVRREGLGKLVVGLPL",
91 | "description": "2.000e-07 \u003e1iv0_A 98aa 03/08/02 (NMR) hypothetical protein [THERMUS THERMOPHILUS] :_: Frame:0 Round:0 Length:98",
92 | "start": 10,
93 | "seqcolors": {
94 | "data": " EEEEEESSSEEEEEEE S SS EEEEE HHH-HHHHHHHHHHHHT EEEEE SSS SSTTHHHHHHHHHTT EEEEE S ",
95 | "colors": {}
96 | },
97 | "data": {}
98 | }
99 | ],
100 | "qtracks": [
101 | {
102 | "label": "Disorder - original values",
103 | "color": "orange",
104 | "displayScale": true,
105 | "values": [
106 | 0.803, 0.425, 0.514, 0.52, 0.249, 0.202, 0.046, 0.082, 0.059, 0.054, 0.039, 0.022, 0.013, 0.005, 0.003, 0.002, 0.002, 0.002, 0.001, 0.001, 0.001, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.003, 0.003, 0.003, 0.004, 0.004, 0.004, 0.004, 0.005, 0.005, 0.006, 0.007, 0.008, 0.008, 0.008, 0.007, 0.007, 0.008, 0.009, 0.007, 0.007, 0.006, 0.005, 0.004, 0.004, 0.004, 0.004, 0.003, 0.002, 0.002, 0.002, 0.002, 0.002, 0.001, 0.002, 0.002, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.001
107 | ]
108 | }, {
109 | "label": "Disorder - force non-zero",
110 | "color": "orange",
111 | "displayScale": true,
112 | "transform": "log",
113 | "forceNonZero": true,
114 | "values": [
115 | 0.803, 0.425, 0.514, 0.52, 0.249, 0.202, 0.046, 1, 0.059, 1, 0.039, 0.022, 0.013, 0.005, 0.003, 0.002, 0.002, 0.002, 0.001, 0.001, 0.001, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.003, 0.003, 0.003, 0.004, 0.004, 0.004, 0.004, 0.005, 0.005, 0.006, 0.007, 0.008, 0.008, 0.008, 0.007, 0.007, 0.008, 0.009, 0.007, 0.007, 0.006, 0.005, 0.004, 0.004, 0.004, 0.004, 0.003, 0.002, 0.002, 0.002, 0.002, 0.002, 0.001, 0.002, 0.002, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.001
116 | ]
117 | }, {
118 | "label": "Disorder - values between 0;0.3",
119 | "color": "orange",
120 | "displayScale": true,
121 | "displayMax": 0.3,
122 | "displayMin": 0,
123 | "values": [
124 | 0.803, 0.425, 0.514, 0.52, 0.249, 0.202, 0.046, 0.082, 0.059, 0.054, 0.039, 0.022, 0.013, 0.005, 0.003, 0.002, 0.002, 0.002, 0.001, 0.001, 0.001, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.003, 0.003, 0.003, 0.004, 0.004, 0.004, 0.004, 0.005, 0.005, 0.006, 0.007, 0.008, 0.008, 0.008, 0.007, 0.007, 0.008, 0.009, 0.007, 0.007, 0.006, 0.005, 0.004, 0.004, 0.004, 0.004, 0.003, 0.002, 0.002, 0.002, 0.002, 0.002, 0.001, 0.002, 0.002, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.001
125 | ]
126 | },
127 | {
128 | "label": "Coil",
129 | "color": "#000",
130 | "displayScale": true,
131 | "values": [
132 | 0.987, 0.818, 0.87, 0.937, 0.889, 0.842, 0.717, 0.807, 0.896, 0.859, 0.065, 0.027, 0.016, 0.018, 0.062, 0.636, 0.879, 0.916, 0.816, 0.128, 0.032, 0.042, 0.028, 0.041, 0.28, 0.444, 0.581, 0.737, 0.728, 0.508, 0.366, 0.327, 0.266, 0.513, 0.731, 0.372, 0.185, 0.136, 0.045, 0.062, 0.215, 0.715, 0.897, 0.885, 0.837, 0.72, 0.2, 0.212, 0.039, 0.013, 0.013, 0.012, 0.016, 0.015, 0.018, 0.028, 0.08, 0.171, 0.462, 0.966, 0.953, 0.929, 0.057, 0.039, 0.017, 0.115, 0.588, 0.843, 0.753, 0.997
133 | ]
134 | },
135 | {
136 | "label": "Coil - log transformed",
137 | "color": "#000",
138 | "displayScale": true,
139 | "transform": "log",
140 | "values": [
141 | 0.987, 0.818, 0.87, 0.937, 0.889, 0.842, 0.717, 0.807, 0.896, 0.859, 0.065, 0.027, 0.016, 0.018, 0.062, 0.636, 0.879, 0.916, 0.816, 0.128, 0.032, 0.042, 0.028, 0.041, 0.28, 0.444, 0.581, 0.737, 0.728, 0.508, 0.366, 0.327, 0.266, 0.513, 0.731, 0.372, 0.185, 0.136, 0.045, 0.062, 0.215, 0.715, 0.897, 0.885, 0.837, 0.72, 0.2, 0.212, 0.039, 0.013, 0.013, 0.012, 0.016, 0.015, 0.018, 0.028, 0.08, 0.171, 0.462, 0.966, 0.953, 0.929, 0.057, 0.039, 0.017, 0.115, 0.588, 0.843, 0.753, 0.997
142 | ]
143 | }, {
144 | "label": "Coil - exp transformed",
145 | "color": "#000",
146 | "displayScale": true,
147 | "transform": "exp",
148 | "values": [
149 | 0.987, 0.818, 0.87, 0.937, 0.889, 0.842, 0.717, 0.807, 0.896, 0.859, 0.065, 0.027, 0.016, 0.018, 0.062, 0.636, 0.879, 0.916, 0.816, 0.128, 0.032, 0.042, 0.028, 0.041, 0.28, 0.444, 0.581, 0.737, 0.728, 0.508, 0.366, 0.327, 0.266, 0.513, 0.731, 0.372, 0.185, 0.136, 0.045, 0.062, 0.215, 0.715, 0.897, 0.885, 0.837, 0.72, 0.2, 0.212, 0.039, 0.013, 0.013, 0.012, 0.016, 0.015, 0.018, 0.028, 0.08, 0.171, 0.462, 0.966, 0.953, 0.929, 0.057, 0.039, 0.017, 0.115, 0.588, 0.843, 0.753, 0.997
150 | ]
151 | },
152 | {
153 | "label": "Strand",
154 | "color": "blue",
155 | "values": [
156 | 0.004,
157 | 0.037,
158 | 0.046,
159 | 0.063,
160 | 0.028,
161 | 0.035,
162 | 0.077,
163 | 0.08,
164 | 0.102,
165 | 0.166,
166 | 0.956,
167 | 0.983,
168 | 0.983,
169 | 0.981,
170 | 0.938,
171 | 0.273,
172 | 0.128,
173 | 0.062,
174 | 0.205,
175 | 0.876,
176 | 0.971,
177 | 0.962,
178 | 0.978,
179 | 0.961,
180 | 0.646,
181 | 0.395,
182 | 0.234, 0.055,
183 | 0.022, 0.084,
184 | 0.232, 0.311,
185 | 0.433, 0.37,
186 | 0.321,
187 | 0.54,
188 | 0.798,
189 | 0.851,
190 | 0.952,
191 | 0.945,
192 | 0.776,
193 | 0.254,
194 | 0.059,
195 | 0.028,
196 | 0.023,
197 | 0.032,
198 | 0.023,
199 | 0.007,
200 | 0.005,
201 | 0.002,
202 | 0.001,
203 | 0.001,
204 | 0.002,
205 | 0.002,
206 | 0.003,
207 | 0.005,
208 | 0.024,
209 | 0.028,
210 | 0.014,
211 | 0.015,
212 | 0.054,
213 | 0.075,
214 | 0.947,
215 | 0.957,
216 | 0.974,
217 | 0.828,
218 | 0.345,
219 | 0.197,
220 | 0.292,
221 | 0.006
222 | ]
223 | },
224 | {
225 | "label": "Surface accesibility",
226 | "color": ["#7C0000", "green"],
227 | "type": "column",
228 | "values": [
229 | 0.745, 0.71, 0.537, 0.671, 0.56, 0.23, 0.542, 0.542, 0.194, 0.164, 0.067, 0.027, 0.025, 0.052, 0.138, 0.191, 0.332, 0.49, 0.349, 0.252, 0.038, 0.035, 0.033, 0.024, 0.056, 0.046, 0.146, 0.498, 0.389, 0.262, 0.174, 0.133, 0.039, 0.214, 0.14, 0.149, 0.3, 0.112, 0.056, 0.385, 0.26, 0.484, 0.527, 0.591, 0.387, 0.554, 0.493, 0.09, 0.042, 0.505, 0.332, 0.013, 0.226, 0.546, 0.082, 0.03, 0.599, 0.631, 0.237, 0.62, 0.043, 0.431, 0.121, 0.044, 0.039, 0.088, 0.112, 0.189, 0.329, 0.525
230 | ]
231 | },
232 | {
233 | "label": "Evolutionary conservation",
234 | "color": "green",
235 | "type": "column",
236 | "values": [
237 | -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 0.207, -0.314, 0.585, 0.909, 0.639, 2.418, -0.134, 2.418, -0.788, 0.054, 0.277, 1.528, 2.418, 0.306, 1.646, -0.669, 0.698, 0.916, -0.424, -0.85, -0.693, -0.918, 0.044, 0.831, -0.439, 0.64, -0.542, -1.084, -0.118, 0.195, -1.245, -0.487, -0.852, -0.892, -0.993, -1.058, -0.832, -1.027, -0.68, -0.54, -0.707, -0.988, 0.404, -0.924, -0.803, -0.352, -0.106, -0.816, -0.522, -0.864, -0.385, 0.235, -0.848, -0.541, 0.173, 1.048, 0.289, 2.418, -0.278, 2.418, -1.0
238 | ]
239 | }
240 | ],
241 | "overlayfeatures": {
242 | "label": "predictions",
243 | "features": [
244 | {
245 | "regionType": "LOW COMPLEXITY",
246 | "start": 55,
247 | "end": 67,
248 | "label": "Low complexity",
249 | "color": "#DDD"
250 | }
251 | ]
252 | },
253 | "ftracks": [
254 | {
255 | "label": "PFAM_DOMAINS",
256 | "display": "block",
257 | "showLine": true,
258 | "clazz": "pfam_domains",
259 | "features": [
260 | {
261 | "id": "PF14259",
262 | "label": "PF14259",
263 | "clazz": "pfam_feature",
264 | "start": 15,
265 | "end": 22,
266 | "properties": {
267 | "Full name": "RRM_6"
268 | },
269 | "description": "No description"
270 | },
271 | {
272 | "regionType": "PFAM_DOMAIN",
273 | "start": 26,
274 | "end": 33,
275 | "clazz": "pfam_feature",
276 | "properties": {
277 | "Full name": "RRM_1"
278 | },
279 | "dbxrefs": {
280 | "PFAM": "http://pfam.janelia.org/family/RRM_1"
281 | },
282 | "label": "PF00076",
283 | "description": "No description"
284 | },
285 | {
286 | "regionType": "PFAM_DOMAIN",
287 | "start": 39,
288 | "end": 46,
289 | "properties": {
290 | "Full name": "RRM_1"
291 | },
292 | "dbxrefs": {
293 | "PFAM": "http://pfam.janelia.org/family/RRM_4"
294 | },
295 | "label": "PF00076",
296 | "description": "No description"
297 | }
298 | ]
299 | },
300 | {
301 | "label": "Structures",
302 | "display": "block",
303 | "color": "green",
304 | "showLine": true,
305 | "allowOverlap": false,
306 | "features": [
307 | {
308 | "regionType": "STRUCTURE",
309 | "start": 27,
310 | "end": 42,
311 | "color": "pink",
312 | "properties": {
313 | "Full name": "2M52. Chain: A. Metod: NMR. Resolution: -"
314 | },
315 | "dbxrefs": {
316 | "PDB": "http://www.pdb.org/pdb/explore/explore.do?structureId=2M52"
317 | },
318 | "label": "2M52",
319 | "description": "No description"
320 | },
321 | {
322 | "regionType": "STRUCTURE",
323 | "start": 40,
324 | "end": 47,
325 | "properties": {
326 | "Full name": "3V4M. Chain: A/B. Metod: X-ray. Resolution: 1.80 A"
327 | },
328 | "dbxrefs": {
329 | "PDB": "http://www.pdb.org/pdb/explore/explore.do?structureId=3V4M"
330 | },
331 | "label": "3V4M",
332 | "description": "No description"
333 | },
334 | {
335 | "regionType": "STRUCTURE",
336 | "start": 30,
337 | "end": 57,
338 | "color": "red",
339 | "properties": {
340 | "Full name": "3V4M. Chain: A/B. Metod: X-ray. Resolution: 1.80 A"
341 | },
342 | "dbxrefs": {
343 | "PDB": "http://www.pdb.org/pdb/explore/explore.do?structureId=3V4M"
344 | },
345 | "label": "3V4M",
346 | "description": "No description"
347 | }
348 | ]
349 | }
350 | ],
351 | "markers": [{
352 | "type": "gap",
353 | "x": 2.5,
354 | "label": "gap",
355 | "color": "#1240ab"
356 | }, {
357 | "type": "glycan",
358 | "x": 10,
359 | "label": "glycan"
360 | }, {
361 | "type": "unknownglycan",
362 | "x": 20,
363 | "label": "unknown glycan",
364 | "color": "green"
365 | }, {
366 | "type": "oliglycan",
367 | "label": "oliglycan",
368 | "x": 30,
369 | "color": "red"
370 | }, {
371 | "label": "stick",
372 | "type": "stick",
373 | "x": 40,
374 | "color": "#fc0"
375 | }, {
376 | "type": "pin",
377 | "x": 45,
378 | "label": "pin",
379 | "color": "#1240ab"
380 | }
381 | ],
382 | "bridges": [{
383 | "type": "S-S",
384 | "start": 50,
385 | "end": 60,
386 | "startlabel": "50",
387 | "endlabel": "60",
388 | "color": "red"
389 | }],
390 | "properties": {
391 | "Signal peptides (length)": "0",
392 | "Epsilon 280": "0",
393 | "% strand residues": "34",
394 | "Longest disorder region": "6",
395 | "Longest low complexity region": "12",
396 | "Instability index": "27.15",
397 | "Sequence length": "70",
398 | "Crystallization class": "4",
399 | "Number of Phe residues": "0",
400 | "Coiled coils": "0",
401 | "% coil residues": "47",
402 | "Number of Tyr residues": "0",
403 | "Number of Met residues": "1",
404 | "% disorder residues": "13",
405 | "% helix residues": "19",
406 | "Number of Cys residues": "0",
407 | "Transmembrane helices (number)": "0",
408 | "Molecular weight": "7144",
409 | "Isoelectic point": "4.89",
410 | "Insertion score": "0.07",
411 | "GRAVY index": "0.24",
412 | "Number of Trp residues": "0"
413 | }
414 | }
--------------------------------------------------------------------------------
/json/bnab_BG505.SOSIP.664_DQ208458_base.json:
--------------------------------------------------------------------------------
1 | {
2 | "sequence": "MRVKEKYQHLWRWGWRWGTMLLGMLMICSATEKLWVTVYYGVPVWKEATTTLFCASDAKAYDTEVHNVWATHACVPTDPNPQEVVLVNVTENFNMWKNDMVEQMHEDIISLWDQSLKPCVKLTPLCVSLKCTDLKNDTNTNSSSGRMIMEKGEIKNCSFNISTSIRGKVQKEYAFFYKLDIIPIDN--------DTTSYKLTSCNTSVITQACPKVSFEPIPIHYCAPAGFAILKCNNKTFNGTGPCTNVSTVQCTHGIRPVVSTQLLLNGSLAEEEVVIRSVNFTDNAKTIIVQLNTSVEINCTRPNNNTRKRIRIQRGPGRAFVTIG-KIGNMRQAHCNISRAKWNNTLKQIASKLREQFGNNKTIIFK-QSSGGDPEIVTHSFNCGGEFFYCNSTQLFNSTWFNSTWSTEGSNNTEGSDTITLPCRIKQIINMWQKVGKAMYAPPISGQIRCSSNITGLLLTRDGGNSNNESEIFRPGGGDMRDNWRSELYKYKVVKIEPLGVAPTKAKRRVVQREKRAVGIGALFLGFLGAAGSTMGAASMTLTVQARQLLSGIVQQQNNLLRAIEAQQHLLQLTVWGIKQLQARILAVERYLKDQQLLGIWGCSGKLICTTAVPWNASWSNKSLEQIWNHTTWMEWDREINNYTSLIHSLIEESQNQQEKNEQELLELDKWASLWNWFNITNWLWYIKLFIMIVGGLVGLRIVFAVLSIVNRVRQGYSPLSFQTHLPTPRGPDRPEGIEEEGGERDRDRSIRLVNGSLALIWDDLRSLCLFSYHRLRDLLLIVTRIVELLGRRGWEALKYWWNLLQYWSQELKNSAVSLLNATAIAVAEGTDRVIEVVQGACRAIRHIPRRIRQGLERILL",
3 | "original_pos": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 136, 136, 136, 136, 136, 136, 136, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 308, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860],
4 | "seqcolors": {
5 | "colors": {},
6 | "data": ""
7 | },
8 | "markers": [{
9 | "type": "gap",
10 | "x": 511.5,
11 | "label": "511*512",
12 | "color": "#1240ab",
13 | "data": {
14 | "Desc": "Gap at 511 position"
15 | },
16 | "position": "top"
17 | }, {
18 | "color": "#000",
19 | "x": 88,
20 | "auto": true,
21 | "label": "",
22 | "type": "glycan",
23 | "position": "top",
24 | "data": {
25 | "Description": "Predicted N-GlycoSite [NVT] at 88 position"
26 | }
27 | }, {
28 | "color": "#000",
29 | "x": 136,
30 | "auto": true,
31 | "label": "",
32 | "type": "glycan",
33 | "position": "top",
34 | "data": {
35 | "Description": "Predicted N-GlycoSite [NDT] at 136 position"
36 | }
37 | }, {
38 | "color": "#000",
39 | "x": 141,
40 | "auto": true,
41 | "label": "",
42 | "type": "glycan",
43 | "position": "top",
44 | "data": {
45 | "Description": "Predicted N-GlycoSite [NSS] at 141 position"
46 | }
47 | }, {
48 | "color": "#000",
49 | "x": 156,
50 | "auto": true,
51 | "label": "",
52 | "type": "glycan",
53 | "position": "top",
54 | "data": {
55 | "Description": "Predicted N-GlycoSite [NCS] at 156 position"
56 | }
57 | }, {
58 | "color": "#000",
59 | "x": 160,
60 | "auto": true,
61 | "label": "",
62 | "type": "glycan",
63 | "position": "top",
64 | "data": {
65 | "Description": "Predicted N-GlycoSite [NIS] at 160 position"
66 | }
67 | }, {
68 | "color": "#000",
69 | "x": 205,
70 | "auto": true,
71 | "label": "",
72 | "type": "glycan",
73 | "position": "top",
74 | "data": {
75 | "Description": "Predicted N-GlycoSite [NTS] at 205 position"
76 | }
77 | }, {
78 | "color": "#000",
79 | "x": 238,
80 | "auto": true,
81 | "label": "",
82 | "type": "glycan",
83 | "position": "top",
84 | "data": {
85 | "Description": "Predicted N-GlycoSite [NKT] at 238 position"
86 | }
87 | }, {
88 | "color": "#000",
89 | "x": 242,
90 | "auto": true,
91 | "label": "",
92 | "type": "unknownglycan",
93 | "position": "top",
94 | "data": {
95 | "Description": "Predicted N-GlycoSite [NGT] at 242 position"
96 | }
97 | }, {
98 | "color": "#000",
99 | "x": 249,
100 | "auto": true,
101 | "label": "",
102 | "type": "glycan",
103 | "position": "top",
104 | "data": {
105 | "Description": "Predicted N-GlycoSite [NVS] at 249 position"
106 | }
107 | }, {
108 | "color": "#000",
109 | "x": 270,
110 | "auto": true,
111 | "label": "",
112 | "type": "oliglycan",
113 | "position": "top",
114 | "data": {
115 | "Description": "Predicted N-GlycoSite [NGS] at 270 position"
116 | }
117 | }, {
118 | "color": "#000",
119 | "x": 284,
120 | "auto": true,
121 | "label": "",
122 | "type": "oliglycan",
123 | "position": "top",
124 | "data": {
125 | "Description": "Predicted N-GlycoSite [NFT] at 284 position"
126 | }
127 | }, {
128 | "color": "#000",
129 | "x": 297,
130 | "auto": true,
131 | "label": "",
132 | "type": "glycan",
133 | "position": "top",
134 | "data": {
135 | "Description": "Predicted N-GlycoSite [NTS] at 297 position"
136 | }
137 | }, {
138 | "color": "#000",
139 | "x": 303,
140 | "auto": true,
141 | "label": "",
142 | "type": "oliglycan",
143 | "position": "top",
144 | "data": {
145 | "Description": "Predicted N-GlycoSite [NCT] at 303 position"
146 | }
147 | }, {
148 | "color": "#000",
149 | "x": 309,
150 | "auto": true,
151 | "label": "",
152 | "type": "glycan",
153 | "position": "top",
154 | "data": {
155 | "Description": "Predicted N-GlycoSite [NNT] at 309 position"
156 | }
157 | }, {
158 | "color": "#000",
159 | "x": 341,
160 | "auto": true,
161 | "label": "",
162 | "type": "oliglycan",
163 | "position": "top",
164 | "data": {
165 | "Description": "Predicted N-GlycoSite [NIS] at 341 position"
166 | }
167 | }, {
168 | "color": "#000",
169 | "x": 348,
170 | "auto": true,
171 | "label": "",
172 | "type": "glycan",
173 | "position": "top",
174 | "data": {
175 | "Description": "Predicted N-GlycoSite [NNT] at 348 position"
176 | }
177 | }, {
178 | "color": "#000",
179 | "x": 365,
180 | "auto": true,
181 | "label": "",
182 | "type": "unknownglycan",
183 | "position": "top",
184 | "data": {
185 | "Description": "Predicted N-GlycoSite [NKT] at 365 position"
186 | }
187 | }, {
188 | "color": "#000",
189 | "x": 396,
190 | "auto": true,
191 | "label": "",
192 | "type": "oliglycan",
193 | "position": "top",
194 | "data": {
195 | "Description": "Predicted N-GlycoSite [NST] at 396 position"
196 | }
197 | }, {
198 | "color": "#000",
199 | "x": 402,
200 | "auto": true,
201 | "label": "",
202 | "type": "oliglycan",
203 | "position": "top",
204 | "data": {
205 | "Description": "Predicted N-GlycoSite [NST] at 402 position"
206 | }
207 | }, {
208 | "color": "#000",
209 | "x": 407,
210 | "auto": true,
211 | "label": "",
212 | "type": "glycan",
213 | "position": "top",
214 | "data": {
215 | "Description": "Predicted N-GlycoSite [NST] at 407 position"
216 | }
217 | }, {
218 | "color": "#000",
219 | "x": 416,
220 | "auto": true,
221 | "label": "",
222 | "type": "unknownglycan",
223 | "position": "top",
224 | "data": {
225 | "Description": "Predicted N-GlycoSite [NNT] at 416 position"
226 | }
227 | }, {
228 | "color": "#000",
229 | "x": 458,
230 | "auto": true,
231 | "label": "",
232 | "type": "oliglycan",
233 | "position": "top",
234 | "data": {
235 | "Description": "Predicted N-GlycoSite [NIT] at 458 position"
236 | }
237 | }, {
238 | "color": "#000",
239 | "x": 473,
240 | "auto": true,
241 | "label": "",
242 | "type": "glycan",
243 | "position": "top",
244 | "data": {
245 | "Description": "Predicted N-GlycoSite [NES] at 473 position"
246 | }
247 | }, {
248 | "color": "#000",
249 | "x": 621,
250 | "auto": true,
251 | "label": "",
252 | "type": "unknownglycan",
253 | "position": "top",
254 | "data": {
255 | "Description": "Predicted N-GlycoSite [NAS] at 621 position"
256 | }
257 | }, {
258 | "color": "#000",
259 | "x": 626,
260 | "auto": true,
261 | "label": "",
262 | "type": "unknownglycan",
263 | "position": "top",
264 | "data": {
265 | "Description": "Predicted N-GlycoSite [NKS] at 626 position"
266 | }
267 | }, {
268 | "color": "#000",
269 | "x": 634,
270 | "auto": true,
271 | "label": "",
272 | "type": "unknownglycan",
273 | "position": "top",
274 | "data": {
275 | "Description": "Predicted N-GlycoSite [NHT] at 634 position"
276 | }
277 | }, {
278 | "color": "#000",
279 | "x": 647,
280 | "auto": true,
281 | "label": "",
282 | "type": "unknownglycan",
283 | "position": "top",
284 | "data": {
285 | "Description": "Predicted N-GlycoSite [NYT] at 647 position"
286 | }
287 | }, {
288 | "color": "#ff0000",
289 | "type": "stick",
290 | "position": "top",
291 | "x": "559",
292 | "label": "I559P"
293 | }, {
294 | "color": "#ff0000",
295 | "type": "stick",
296 | "position": "bottom",
297 | "label": "T332N",
298 | "x": "332"
299 | }, {
300 | "color": "#ff0000",
301 | "type": "oliglycan",
302 | "position": "top",
303 | "x": "332"
304 | }, {
305 | "color": "#ff0000",
306 | "type": "stick",
307 | "position": "top",
308 | "label": "stop-codon",
309 | "x": "664"
310 | }],
311 | "bridges": [{
312 | "color": "#ff0000",
313 | "start": "501",
314 | "end": "605",
315 | "type": "gp120-gp41",
316 | "startlabel": "A501C",
317 | "endlabel": "T605C"
318 | }],
319 | "qtracks": [],
320 | "overlayfeatures": {
321 | "label": "regions",
322 | "showLabels": "true",
323 | "features": [{
324 | "regionType": "conserved",
325 | "start": "30",
326 | "end": "130",
327 | "label": "C1",
328 | "color": "#FFB300"
329 | }, {
330 | "regionType": "variable",
331 | "start": "131",
332 | "end": "147",
333 | "label": "V1",
334 | "color": "#D94409"
335 | }, {
336 | "regionType": "conserved",
337 | "start": "148",
338 | "end": "148",
339 | "label": "",
340 | "color": "#FFB300"
341 | }, {
342 | "regionType": "variable",
343 | "start": "149",
344 | "end": "195",
345 | "label": "V2",
346 | "color": "#D94409"
347 | }, {
348 | "regionType": "conserved",
349 | "start": "196",
350 | "end": "296",
351 | "label": "C2",
352 | "color": "#FFB300"
353 | }, {
354 | "regionType": "variable",
355 | "start": "297",
356 | "end": "329",
357 | "label": "V3",
358 | "color": "#D94409"
359 | }, {
360 | "regionType": "conserved",
361 | "start": "330",
362 | "end": "383",
363 | "label": "C3",
364 | "color": "#FFB300"
365 | }, {
366 | "regionType": "variable",
367 | "start": "384",
368 | "end": "415",
369 | "label": "V4",
370 | "color": "#D94409"
371 | }, {
372 | "regionType": "conserved",
373 | "start": "416",
374 | "end": "456",
375 | "label": "C4",
376 | "color": "#FFB300"
377 | }, {
378 | "regionType": "variable",
379 | "start": "457",
380 | "end": "466",
381 | "label": "V5",
382 | "color": "#D94409"
383 | }, {
384 | "regionType": "conserved",
385 | "start": "467",
386 | "end": "508",
387 | "label": "C5",
388 | "color": "#FFB300"
389 | }, {
390 | "regionType": "conserved",
391 | "start": "509",
392 | "end": "527",
393 | "label": "",
394 | "color": "#FFB300"
395 | }, {
396 | "regionType": "variable",
397 | "start": "527",
398 | "end": "597",
399 | "label": "HR1",
400 | "color": "#D94409"
401 | }, {
402 | "regionType": "conserved",
403 | "start": "597",
404 | "end": "612",
405 | "label": "",
406 | "color": "#FFB300"
407 | }, {
408 | "regionType": "variable",
409 | "start": "612",
410 | "end": "661",
411 | "label": "HR2",
412 | "color": "#D94409"
413 | }, {
414 | "regionType": "mper",
415 | "start": "654",
416 | "end": "661",
417 | "label": "mper",
418 | "color": "#FFB300"
419 | }]
420 | },
421 | "comment": "©",
422 | "dbxrefs": {},
423 | "label": "BG505",
424 | "description": "No description",
425 | "gap": {
426 | "at": 511,
427 | "size": 10
428 | }
429 | }
--------------------------------------------------------------------------------
/lib/FileSaver_Blob.js:
--------------------------------------------------------------------------------
1 | /* Blob.js
2 | * A Blob implementation.
3 | * 2014-07-24
4 | *
5 | * By Eli Grey, http://eligrey.com
6 | * By Devin Samarin, https://github.com/eboyjr
7 | * License: X11/MIT
8 | * See https://github.com/eligrey/Blob.js/blob/master/LICENSE.md
9 | */
10 |
11 | /*global self, unescape */
12 | /*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
13 | plusplus: true */
14 |
15 | /*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
16 |
17 | (function(view) {
18 | "use strict";
19 |
20 | view.URL = view.URL || view.webkitURL;
21 |
22 | if (view.Blob && view.URL) {
23 | try {
24 | new Blob;
25 | return;
26 | } catch (e) {
27 | }
28 | }
29 |
30 | // Internally we use a BlobBuilder implementation to base Blob off of
31 | // in order to support older browsers that only have BlobBuilder
32 | var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function(view) {
33 | var
34 | get_class = function(object) {
35 | return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
36 | }
37 | , FakeBlobBuilder = function BlobBuilder() {
38 | this.data = [];
39 | }
40 | , FakeBlob = function Blob(data, type, encoding) {
41 | this.data = data;
42 | this.size = data.length;
43 | this.type = type;
44 | this.encoding = encoding;
45 | }
46 | , FBB_proto = FakeBlobBuilder.prototype
47 | , FB_proto = FakeBlob.prototype
48 | , FileReaderSync = view.FileReaderSync
49 | , FileException = function(type) {
50 | this.code = this[this.name = type];
51 | }
52 | , file_ex_codes = (
53 | "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
54 | + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
55 | ).split(" ")
56 | , file_ex_code = file_ex_codes.length
57 | , real_URL = view.URL || view.webkitURL || view
58 | , real_create_object_URL = real_URL.createObjectURL
59 | , real_revoke_object_URL = real_URL.revokeObjectURL
60 | , URL = real_URL
61 | , btoa = view.btoa
62 | , atob = view.atob
63 |
64 | , ArrayBuffer = view.ArrayBuffer
65 | , Uint8Array = view.Uint8Array
66 |
67 | , origin = /^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/
68 | ;
69 | FakeBlob.fake = FB_proto.fake = true;
70 | while (file_ex_code--) {
71 | FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
72 | }
73 | // Polyfill URL
74 | if (!real_URL.createObjectURL) {
75 | URL = view.URL = function(uri) {
76 | var
77 | uri_info = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
78 | , uri_origin
79 | ;
80 | uri_info.href = uri;
81 | if (!("origin" in uri_info)) {
82 | if (uri_info.protocol.toLowerCase() === "data:") {
83 | uri_info.origin = null;
84 | } else {
85 | uri_origin = uri.match(origin);
86 | uri_info.origin = uri_origin && uri_origin[1];
87 | }
88 | }
89 | return uri_info;
90 | };
91 | }
92 | URL.createObjectURL = function(blob) {
93 | var
94 | type = blob.type
95 | , data_URI_header
96 | ;
97 | if (type === null) {
98 | type = "application/octet-stream";
99 | }
100 | if (blob instanceof FakeBlob) {
101 | data_URI_header = "data:" + type;
102 | if (blob.encoding === "base64") {
103 | return data_URI_header + ";base64," + blob.data;
104 | } else if (blob.encoding === "URI") {
105 | return data_URI_header + "," + decodeURIComponent(blob.data);
106 | }
107 | if (btoa) {
108 | return data_URI_header + ";base64," + btoa(blob.data);
109 | } else {
110 | return data_URI_header + "," + encodeURIComponent(blob.data);
111 | }
112 | } else if (real_create_object_URL) {
113 | return real_create_object_URL.call(real_URL, blob);
114 | }
115 | };
116 | URL.revokeObjectURL = function(object_URL) {
117 | if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
118 | real_revoke_object_URL.call(real_URL, object_URL);
119 | }
120 | };
121 | FBB_proto.append = function(data/*, endings*/) {
122 | var bb = this.data;
123 | // decode data to a binary string
124 | if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
125 | var
126 | str = ""
127 | , buf = new Uint8Array(data)
128 | , i = 0
129 | , buf_len = buf.length
130 | ;
131 | for (; i < buf_len; i++) {
132 | str += String.fromCharCode(buf[i]);
133 | }
134 | bb.push(str);
135 | } else if (get_class(data) === "Blob" || get_class(data) === "File") {
136 | if (FileReaderSync) {
137 | var fr = new FileReaderSync;
138 | bb.push(fr.readAsBinaryString(data));
139 | } else {
140 | // async FileReader won't work as BlobBuilder is sync
141 | throw new FileException("NOT_READABLE_ERR");
142 | }
143 | } else if (data instanceof FakeBlob) {
144 | if (data.encoding === "base64" && atob) {
145 | bb.push(atob(data.data));
146 | } else if (data.encoding === "URI") {
147 | bb.push(decodeURIComponent(data.data));
148 | } else if (data.encoding === "raw") {
149 | bb.push(data.data);
150 | }
151 | } else {
152 | if (typeof data !== "string") {
153 | data += ""; // convert unsupported types to strings
154 | }
155 | // decode UTF-16 to binary string
156 | bb.push(unescape(encodeURIComponent(data)));
157 | }
158 | };
159 | FBB_proto.getBlob = function(type) {
160 | if (!arguments.length) {
161 | type = null;
162 | }
163 | return new FakeBlob(this.data.join(""), type, "raw");
164 | };
165 | FBB_proto.toString = function() {
166 | return "[object BlobBuilder]";
167 | };
168 | FB_proto.slice = function(start, end, type) {
169 | var args = arguments.length;
170 | if (args < 3) {
171 | type = null;
172 | }
173 | return new FakeBlob(
174 | this.data.slice(start, args > 1 ? end : this.data.length)
175 | , type
176 | , this.encoding
177 | );
178 | };
179 | FB_proto.toString = function() {
180 | return "[object Blob]";
181 | };
182 | FB_proto.close = function() {
183 | this.size = 0;
184 | delete this.data;
185 | };
186 | return FakeBlobBuilder;
187 | }(view));
188 |
189 | view.Blob = function(blobParts, options) {
190 | var type = options ? (options.type || "") : "";
191 | var builder = new BlobBuilder();
192 | if (blobParts) {
193 | for (var i = 0, len = blobParts.length; i < len; i++) {
194 | builder.append(blobParts[i]);
195 | }
196 | }
197 | return builder.getBlob(type);
198 | };
199 | }(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this));
200 | /* FileSaver.js
201 | * A saveAs() FileSaver implementation.
202 | * 2014-07-21
203 | *
204 | * By Eli Grey, http://eligrey.com
205 | * License: X11/MIT
206 | * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
207 | */
208 |
209 | /*global self */
210 | /*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
211 |
212 | /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
213 |
214 | var saveAs = saveAs
215 | // IE 10+ (native saveAs)
216 | || (typeof navigator !== "undefined" &&
217 | navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator))
218 | // Everyone else
219 | || (function(view) {
220 | "use strict";
221 | // IE <10 is explicitly unsupported
222 | if (typeof navigator !== "undefined" &&
223 | /MSIE [1-9]\./.test(navigator.userAgent)) {
224 | return;
225 | }
226 | var
227 | doc = view.document
228 | // only get URL when necessary in case Blob.js hasn't overridden it yet
229 | , get_URL = function() {
230 | return view.URL || view.webkitURL || view;
231 | }
232 | , save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
233 | , can_use_save_link = !view.externalHost && "download" in save_link
234 | , click = function(node) {
235 | var event = doc.createEvent("MouseEvents");
236 | event.initMouseEvent(
237 | "click", true, false, view, 0, 0, 0, 0, 0
238 | , false, false, false, false, 0, null
239 | );
240 | node.dispatchEvent(event);
241 | }
242 | , webkit_req_fs = view.webkitRequestFileSystem
243 | , req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem
244 | , throw_outside = function(ex) {
245 | (view.setImmediate || view.setTimeout)(function() {
246 | throw ex;
247 | }, 0);
248 | }
249 | , force_saveable_type = "application/octet-stream"
250 | , fs_min_size = 0
251 | // See https://code.google.com/p/chromium/issues/detail?id=375297#c7 for
252 | // the reasoning behind the timeout and revocation flow
253 | , arbitrary_revoke_timeout = 10
254 | , revoke = function(file) {
255 | setTimeout(function() {
256 | if (typeof file === "string") { // file is an object URL
257 | get_URL().revokeObjectURL(file);
258 | } else { // file is a File
259 | file.remove();
260 | }
261 | }, arbitrary_revoke_timeout);
262 | }
263 | , dispatch = function(filesaver, event_types, event) {
264 | event_types = [].concat(event_types);
265 | var i = event_types.length;
266 | while (i--) {
267 | var listener = filesaver["on" + event_types[i]];
268 | if (typeof listener === "function") {
269 | try {
270 | listener.call(filesaver, event || filesaver);
271 | } catch (ex) {
272 | throw_outside(ex);
273 | }
274 | }
275 | }
276 | }
277 | , FileSaver = function(blob, name) {
278 | // First try a.download, then web filesystem, then object URLs
279 | var
280 | filesaver = this
281 | , type = blob.type
282 | , blob_changed = false
283 | , object_url
284 | , target_view
285 | , dispatch_all = function() {
286 | dispatch(filesaver, "writestart progress write writeend".split(" "));
287 | }
288 | // on any filesys errors revert to saving with object URLs
289 | , fs_error = function() {
290 | // don't create more object URLs than needed
291 | if (blob_changed || !object_url) {
292 | object_url = get_URL().createObjectURL(blob);
293 | }
294 | if (target_view) {
295 | target_view.location.href = object_url;
296 | } else {
297 | var new_tab = view.open(object_url, "_blank");
298 | if (new_tab == undefined && typeof safari !== "undefined") {
299 | //Apple do not allow window.open, see http://bit.ly/1kZffRI
300 | view.location.href = object_url
301 | }
302 | }
303 | filesaver.readyState = filesaver.DONE;
304 | dispatch_all();
305 | revoke(object_url);
306 | }
307 | , abortable = function(func) {
308 | return function() {
309 | if (filesaver.readyState !== filesaver.DONE) {
310 | return func.apply(this, arguments);
311 | }
312 | };
313 | }
314 | , create_if_not_found = {create: true, exclusive: false}
315 | , slice
316 | ;
317 | filesaver.readyState = filesaver.INIT;
318 | if (!name) {
319 | name = "download";
320 | }
321 | if (can_use_save_link) {
322 | object_url = get_URL().createObjectURL(blob);
323 | save_link.href = object_url;
324 | save_link.download = name;
325 | click(save_link);
326 | filesaver.readyState = filesaver.DONE;
327 | dispatch_all();
328 | revoke(object_url);
329 | return;
330 | }
331 | // Object and web filesystem URLs have a problem saving in Google Chrome when
332 | // viewed in a tab, so I force save with application/octet-stream
333 | // http://code.google.com/p/chromium/issues/detail?id=91158
334 | // Update: Google errantly closed 91158, I submitted it again:
335 | // https://code.google.com/p/chromium/issues/detail?id=389642
336 | if (view.chrome && type && type !== force_saveable_type) {
337 | slice = blob.slice || blob.webkitSlice;
338 | blob = slice.call(blob, 0, blob.size, force_saveable_type);
339 | blob_changed = true;
340 | }
341 | // Since I can't be sure that the guessed media type will trigger a download
342 | // in WebKit, I append .download to the filename.
343 | // https://bugs.webkit.org/show_bug.cgi?id=65440
344 | if (webkit_req_fs && name !== "download") {
345 | name += ".download";
346 | }
347 | if (type === force_saveable_type || webkit_req_fs) {
348 | target_view = view;
349 | }
350 | if (!req_fs) {
351 | fs_error();
352 | return;
353 | }
354 | fs_min_size += blob.size;
355 | req_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {
356 | fs.root.getDirectory("saved", create_if_not_found, abortable(function(dir) {
357 | var save = function() {
358 | dir.getFile(name, create_if_not_found, abortable(function(file) {
359 | file.createWriter(abortable(function(writer) {
360 | writer.onwriteend = function(event) {
361 | target_view.location.href = file.toURL();
362 | filesaver.readyState = filesaver.DONE;
363 | dispatch(filesaver, "writeend", event);
364 | revoke(file);
365 | };
366 | writer.onerror = function() {
367 | var error = writer.error;
368 | if (error.code !== error.ABORT_ERR) {
369 | fs_error();
370 | }
371 | };
372 | "writestart progress write abort".split(" ").forEach(function(event) {
373 | writer["on" + event] = filesaver["on" + event];
374 | });
375 | writer.write(blob);
376 | filesaver.abort = function() {
377 | writer.abort();
378 | filesaver.readyState = filesaver.DONE;
379 | };
380 | filesaver.readyState = filesaver.WRITING;
381 | }), fs_error);
382 | }), fs_error);
383 | };
384 | dir.getFile(name, {create: false}, abortable(function(file) {
385 | // delete file if it already exists
386 | file.remove();
387 | save();
388 | }), abortable(function(ex) {
389 | if (ex.code === ex.NOT_FOUND_ERR) {
390 | save();
391 | } else {
392 | fs_error();
393 | }
394 | }));
395 | }), fs_error);
396 | }), fs_error);
397 | }
398 | , FS_proto = FileSaver.prototype
399 | , saveAs = function(blob, name) {
400 | return new FileSaver(blob, name);
401 | }
402 | ;
403 | FS_proto.abort = function() {
404 | var filesaver = this;
405 | filesaver.readyState = filesaver.DONE;
406 | dispatch(filesaver, "abort");
407 | };
408 | FS_proto.readyState = FS_proto.INIT = 0;
409 | FS_proto.WRITING = 1;
410 | FS_proto.DONE = 2;
411 |
412 | FS_proto.error =
413 | FS_proto.onwritestart =
414 | FS_proto.onprogress =
415 | FS_proto.onwrite =
416 | FS_proto.onabort =
417 | FS_proto.onerror =
418 | FS_proto.onwriteend =
419 | null;
420 |
421 | return saveAs;
422 | }(
423 | typeof self !== "undefined" && self
424 | || typeof window !== "undefined" && window
425 | || this.content
426 | ));
427 | // `self` is undefined in Firefox for Android content script context
428 | // while `this` is nsIContentFrameMessageManager
429 | // with an attribute `content` that corresponds to the window
430 |
431 | if (typeof module !== "undefined" && module !== null) {
432 | module.exports = saveAs;
433 | } else if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) {
434 | define([], function() {
435 | return saveAs;
436 | });
437 | }
438 |
--------------------------------------------------------------------------------
/doc/scripts/prettify/prettify.js:
--------------------------------------------------------------------------------
1 | var q = null;
2 | window.PR_SHOULD_USE_CONTINUATION = !0;
3 | (function() {
4 | function L(a) {
5 | function m(a) {
6 | var f = a.charCodeAt(0);
7 | if (f !== 92) return f;
8 | var b = a.charAt(1);
9 | return (f = r[b]) ? f : "0" <= b && b <= "7" ? parseInt(a.substring(1), 8) : b === "u" || b === "x" ? parseInt(a.substring(2), 16) : a.charCodeAt(1)
10 | }
11 |
12 | function e(a) {
13 | if (a < 32) return (a < 16 ? "\\x0" : "\\x") + a.toString(16);
14 | a = String.fromCharCode(a);
15 | if (a === "\\" || a === "-" || a === "[" || a === "]") a = "\\" + a;
16 | return a
17 | }
18 |
19 | function h(a) {
20 | for (var f = a.substring(1, a.length - 1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g), a = [], b = [], o = f[0] === "^", c = o ? 1 : 0, i = f.length; c < i; ++c) {
21 | var j = f[c];
22 | if (/\\[bdsw]/i.test(j)) a.push(j);
23 | else {
24 | var j = m(j),
25 | d;
26 | c + 2 < i && "-" === f[c + 1] ? (d = m(f[c + 2]), c += 2) : d = j;
27 | b.push([j, d]);
28 | d < 65 || j > 122 || (d < 65 || j > 90 || b.push([Math.max(65, j) | 32, Math.min(d, 90) | 32]), d < 97 || j > 122 || b.push([Math.max(97, j) & -33, Math.min(d, 122) & -33]))
29 | }
30 | }
31 | b.sort(function(a, f) {
32 | return a[0] - f[0] || f[1] - a[1]
33 | });
34 | f = [];
35 | j = [NaN, NaN];
36 | for (c = 0; c < b.length; ++c) i = b[c], i[0] <= j[1] + 1 ? j[1] = Math.max(j[1], i[1]) : f.push(j = i);
37 | b = ["["];
38 | o && b.push("^");
39 | b.push.apply(b, a);
40 | for (c = 0; c < f.length; ++c) i = f[c], b.push(e(i[0])), i[1] > i[0] && (i[1] + 1 > i[0] && b.push("-"), b.push(e(i[1])));
41 | b.push("]");
42 | return b.join("")
43 | }
44 |
45 | function y(a) {
46 | for (var f = a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g), b = f.length, d = [], c = 0, i = 0; c < b; ++c) {
47 | var j = f[c];
48 | j === "(" ? ++i : "\\" === j.charAt(0) && (j = +j.substring(1)) && j <= i && (d[j] = -1)
49 | }
50 | for (c = 1; c < d.length; ++c) - 1 === d[c] && (d[c] = ++t);
51 | for (i = c = 0; c < b; ++c) j = f[c], j === "(" ? (++i, d[i] === void 0 && (f[c] = "(?:")) : "\\" === j.charAt(0) && (j = +j.substring(1)) && j <= i && (f[c] = "\\" + d[i]);
52 | for (i = c = 0; c < b; ++c)"^" === f[c] && "^" !== f[c + 1] && (f[c] = "");
53 | if (a.ignoreCase && s) for (c = 0; c < b; ++c) j = f[c], a = j.charAt(0), j.length >= 2 && a === "[" ? f[c] = h(j) : a !== "\\" && (f[c] = j.replace(/[A-Za-z]/g, function(a) {
54 | a = a.charCodeAt(0);
55 | return "[" + String.fromCharCode(a & -33, a | 32) + "]"
56 | }));
57 | return f.join("")
58 | }
59 | for (var t = 0, s = !1, l = !1, p = 0, d = a.length; p < d; ++p) {
60 | var g = a[p];
61 | if (g.ignoreCase) l = !0;
62 | else if (/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi, ""))) {
63 | s = !0;
64 | l = !1;
65 | break
66 | }
67 | }
68 | for (var r = {
69 | b: 8,
70 | t: 9,
71 | n: 10,
72 | v: 11,
73 | f: 12,
74 | r: 13
75 | }, n = [], p = 0, d = a.length; p < d; ++p) {
76 | g = a[p];
77 | if (g.global || g.multiline) throw Error("" + g);
78 | n.push("(?:" + y(g) + ")")
79 | }
80 | return RegExp(n.join("|"), l ? "gi" : "g")
81 | }
82 |
83 | function M(a) {
84 | function m(a) {
85 | switch (a.nodeType) {
86 | case 1:
87 | if (e.test(a.className)) break;
88 | for (var g = a.firstChild; g; g = g.nextSibling) m(g);
89 | g = a.nodeName;
90 | if ("BR" === g || "LI" === g) h[s] = "\n", t[s << 1] = y++, t[s++ << 1 | 1] = a;
91 | break;
92 | case 3:
93 | case 4:
94 | g = a.nodeValue, g.length && (g = p ? g.replace(/\r\n?/g, "\n") : g.replace(/[\t\n\r ]+/g, " "), h[s] = g, t[s << 1] = y, y += g.length, t[s++ << 1 | 1] = a)
95 | }
96 | }
97 | var e = /(?:^|\s)nocode(?:\s|$)/,
98 | h = [],
99 | y = 0,
100 | t = [],
101 | s = 0,
102 | l;
103 | a.currentStyle ? l = a.currentStyle.whiteSpace : window.getComputedStyle && (l = document.defaultView.getComputedStyle(a, q).getPropertyValue("white-space"));
104 | var p = l && "pre" === l.substring(0, 3);
105 | m(a);
106 | return {
107 | a: h.join("").replace(/\n$/, ""),
108 | c: t
109 | }
110 | }
111 |
112 | function B(a, m, e, h) {
113 | m && (a = {
114 | a: m,
115 | d: a
116 | }, e(a), h.push.apply(h, a.e))
117 | }
118 |
119 | function x(a, m) {
120 | function e(a) {
121 | for (var l = a.d, p = [l, "pln"], d = 0, g = a.a.match(y) || [], r = {}, n = 0, z = g.length; n < z; ++n) {
122 | var f = g[n],
123 | b = r[f],
124 | o = void 0,
125 | c;
126 | if (typeof b === "string") c = !1;
127 | else {
128 | var i = h[f.charAt(0)];
129 | if (i) o = f.match(i[1]), b = i[0];
130 | else {
131 | for (c = 0; c < t; ++c) if (i = m[c], o = f.match(i[1])) {
132 | b = i[0];
133 | break
134 | }
135 | o || (b = "pln")
136 | }
137 | if ((c = b.length >= 5 && "lang-" === b.substring(0, 5)) && !(o && typeof o[1] === "string")) c = !1, b = "src";
138 | c || (r[f] = b)
139 | }
140 | i = d;
141 | d += f.length;
142 | if (c) {
143 | c = o[1];
144 | var j = f.indexOf(c),
145 | k = j + c.length;
146 | o[2] && (k = f.length - o[2].length, j = k - c.length);
147 | b = b.substring(5);
148 | B(l + i, f.substring(0, j), e, p);
149 | B(l + i + j, c, C(b, c), p);
150 | B(l + i + k, f.substring(k), e, p)
151 | } else p.push(l + i, b)
152 | }
153 | a.e = p
154 | }
155 | var h = {},
156 | y;
157 | (function() {
158 | for (var e = a.concat(m), l = [], p = {}, d = 0, g = e.length; d < g; ++d) {
159 | var r = e[d],
160 | n = r[3];
161 | if (n) for (var k = n.length; --k >= 0;) h[n.charAt(k)] = r;
162 | r = r[1];
163 | n = "" + r;
164 | p.hasOwnProperty(n) || (l.push(r), p[n] = q)
165 | }
166 | l.push(/[\S\s]/);
167 | y = L(l)
168 | })();
169 | var t = m.length;
170 | return e
171 | }
172 |
173 | function u(a) {
174 | var m = [],
175 | e = [];
176 | a.tripleQuotedStrings ? m.push(["str", /^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/, q, "'\""]) : a.multiLineStrings ? m.push(["str", /^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, q, "'\"`"]) : m.push(["str", /^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/, q, "\"'"]);
177 | a.verbatimStrings && e.push(["str", /^@"(?:[^"]|"")*(?:"|$)/, q]);
178 | var h = a.hashComments;
179 | h && (a.cStyleComments ? (h > 1 ? m.push(["com", /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, q, "#"]) : m.push(["com", /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/, q, "#"]), e.push(["str", /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, q])) : m.push(["com", /^#[^\n\r]*/, q, "#"]));
180 | a.cStyleComments && (e.push(["com", /^\/\/[^\n\r]*/, q]), e.push(["com", /^\/\*[\S\s]*?(?:\*\/|$)/, q]));
181 | a.regexLiterals && e.push(["lang-regex", /^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);
182 | (h = a.types) && e.push(["typ", h]);
183 | a = ("" + a.keywords).replace(/^ | $/g, "");
184 | a.length && e.push(["kwd", RegExp("^(?:" + a.replace(/[\s,]+/g, "|") + ")\\b"), q]);
185 | m.push(["pln", /^\s+/, q, " \r\n\t\xa0"]);
186 | e.push(["lit", /^@[$_a-z][\w$@]*/i, q], ["typ", /^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/, q], ["pln", /^[$_a-z][\w$@]*/i, q], ["lit", /^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i, q, "0123456789"], ["pln", /^\\[\S\s]?/, q], ["pun", /^.[^\s\w"-$'./@\\`]*/, q]);
187 | return x(m, e)
188 | }
189 |
190 | function D(a, m) {
191 | function e(a) {
192 | switch (a.nodeType) {
193 | case 1:
194 | if (k.test(a.className)) break;
195 | if ("BR" === a.nodeName) h(a), a.parentNode && a.parentNode.removeChild(a);
196 | else for (a = a.firstChild; a; a = a.nextSibling) e(a);
197 | break;
198 | case 3:
199 | case 4:
200 | if (p) {
201 | var b = a.nodeValue,
202 | d = b.match(t);
203 | if (d) {
204 | var c = b.substring(0, d.index);
205 | a.nodeValue = c;
206 | (b = b.substring(d.index + d[0].length)) && a.parentNode.insertBefore(s.createTextNode(b), a.nextSibling);
207 | h(a);
208 | c || a.parentNode.removeChild(a)
209 | }
210 | }
211 | }
212 | }
213 |
214 | function h(a) {
215 | function b(a, d) {
216 | var e = d ? a.cloneNode(!1) : a,
217 | f = a.parentNode;
218 | if (f) {
219 | var f = b(f, 1),
220 | g = a.nextSibling;
221 | f.appendChild(e);
222 | for (var h = g; h; h = g) g = h.nextSibling, f.appendChild(h)
223 | }
224 | return e
225 | }
226 | for (; !a.nextSibling;) if (a = a.parentNode, !a) return;
227 | for (var a = b(a.nextSibling, 0), e;
228 | (e = a.parentNode) && e.nodeType === 1;) a = e;
229 | d.push(a)
230 | }
231 | var k = /(?:^|\s)nocode(?:\s|$)/,
232 | t = /\r\n?|\n/,
233 | s = a.ownerDocument,
234 | l;
235 | a.currentStyle ? l = a.currentStyle.whiteSpace : window.getComputedStyle && (l = s.defaultView.getComputedStyle(a, q).getPropertyValue("white-space"));
236 | var p = l && "pre" === l.substring(0, 3);
237 | for (l = s.createElement("LI"); a.firstChild;) l.appendChild(a.firstChild);
238 | for (var d = [l], g = 0; g < d.length; ++g) e(d[g]);
239 | m === (m | 0) && d[0].setAttribute("value", m);
240 | var r = s.createElement("OL");
241 | r.className = "linenums";
242 | for (var n = Math.max(0, m - 1 | 0) || 0, g = 0, z = d.length; g < z; ++g) l = d[g], l.className = "L" + (g + n) % 10, l.firstChild || l.appendChild(s.createTextNode("\xa0")), r.appendChild(l);
243 | a.appendChild(r)
244 | }
245 |
246 | function k(a, m) {
247 | for (var e = m.length; --e >= 0;) {
248 | var h = m[e];
249 | A.hasOwnProperty(h) ? window.console && console.warn("cannot override language handler %s", h) : A[h] = a
250 | }
251 | }
252 |
253 | function C(a, m) {
254 | if (!a || !A.hasOwnProperty(a)) a = /^\s*= o && (h += 2);
309 | e >= c && (a += 2)
310 | }
311 | } catch (w) {
312 | "console" in window && console.log(w && w.stack ? w.stack : w)
313 | }
314 | }
315 | var v = ["break,continue,do,else,for,if,return,while"],
316 | w = [
317 | [v, "auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],
318 | F = [w, "alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],
319 | G = [w, "abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
320 | H = [G, "as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],
321 | w = [w, "debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],
322 | I = [v, "and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
323 | J = [v, "alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],
324 | v = [v, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"],
325 | K = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,
326 | N = /\S/,
327 | O = u({
328 | keywords: [F, H, w, "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END" + I, J, v],
329 | hashComments: !0,
330 | cStyleComments: !0,
331 | multiLineStrings: !0,
332 | regexLiterals: !0
333 | }),
334 | A = {};
335 | k(O, ["default-code"]);
336 | k(x([], [
337 | ["pln", /^[^]+/],
338 | ["dec", /^]*(?:>|$)/],
339 | ["com", /^<\!--[\S\s]*?(?:--\>|$)/],
340 | ["lang-", /^<\?([\S\s]+?)(?:\?>|$)/],
341 | ["lang-", /^<%([\S\s]+?)(?:%>|$)/],
342 | ["pun", /^(?:<[%?]|[%?]>)/],
343 | ["lang-", /^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],
344 | ["lang-js", /^