Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>tags/v16.0.0alpha1
@@ -0,0 +1,16 @@ | |||
{ | |||
"presets": [ | |||
[ | |||
"@babel/preset-env", | |||
{ | |||
"modules": false, | |||
"targets": { | |||
"browsers": [ | |||
"last 2 versions", | |||
"ie >= 11" | |||
] | |||
} | |||
} | |||
] | |||
] | |||
} |
@@ -0,0 +1,2 @@ | |||
/core/js/dist/*.js binary | |||
/core/js/dist/*.js.map binary |
@@ -7,6 +7,7 @@ | |||
/apps/inc.php | |||
/assets | |||
/.htaccess | |||
/node_modules | |||
/translationfiles | |||
/translationtool.phar | |||
@@ -7,9 +7,6 @@ script('user_ldap', [ | |||
'renewPassword', | |||
]); | |||
style('user_ldap', 'renewPassword'); | |||
\OC_Util::addVendorScript('strengthify/jquery.strengthify'); | |||
\OC_Util::addVendorStyle('strengthify/strengthify'); | |||
?> | |||
<!--[if IE 8]><style>input[type="checkbox"]{padding:0;}</style><![endif]--> |
@@ -13,26 +13,6 @@ | |||
"tests" | |||
], | |||
"dependencies": { | |||
"autosize": "4.0.2", | |||
"backbone": "1.2.3", | |||
"base64": "0.3.0", | |||
"blueimp-md5": "2.7.0", | |||
"bootstrap": "3.3.7", | |||
"clipboard": "1.7.1", | |||
"davclient.js": "https://github.com/evert/davclient.js.git#0.1.2", | |||
"handlebars": "4.0.5", | |||
"jcrop": "0.9.12", | |||
"jquery": "2.1.4", | |||
"jquery-migrate": "1.4.0", | |||
"jquery-ui": "1.12.1", | |||
"jsTimezoneDetect": "1.0.6", | |||
"marked": "0.3.6", | |||
"moment": "2.18.1", | |||
"select2": "3.4.8", | |||
"snapjs": "2.0.0-rc1", | |||
"strengthify": "0.5.5", | |||
"underscore": "1.8.3", | |||
"zxcvbn": "4.4.2", | |||
"es6-shim": "^0.35.4" | |||
"zxcvbn": "4.4.2" | |||
} | |||
} |
@@ -92,8 +92,6 @@ class SetupController { | |||
); | |||
$parameters = array_merge($defaults, $post); | |||
\OC_Util::addVendorScript('strengthify/jquery.strengthify'); | |||
\OC_Util::addVendorStyle('strengthify/strengthify'); | |||
\OC_Util::addScript('setup'); | |||
\OC_Template::printGuestPage('', 'installation', $parameters); | |||
} |
@@ -1,21 +1,5 @@ | |||
{ | |||
"vendor": [ | |||
"jquery/dist/jquery.min.js", | |||
"jquery-migrate/jquery-migrate.min.js", | |||
"jquery-ui/jquery-ui.min.js", | |||
"underscore/underscore-min.js", | |||
"moment/min/moment-with-locales.min.js", | |||
"handlebars/handlebars.runtime.min.js", | |||
"blueimp-md5/js/md5.min.js", | |||
"bootstrap/js/tooltip.js", | |||
"backbone/backbone.js", | |||
"es6-shim/es6-shim.min.js", | |||
"davclient.js/lib/client.js", | |||
"clipboard/dist/clipboard.min.js", | |||
"autosize/dist/autosize.min.js", | |||
"DOMPurify/dist/purify.min.js", | |||
"snapjs/dist/latest/snap.js", | |||
"select2/select2.js", | |||
"css-vars-ponyfill/dist/css-vars-ponyfill.min.js" | |||
], | |||
"libraries": [ |
@@ -0,0 +1,80 @@ | |||
/* | |||
* @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at> | |||
* | |||
* @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
import _ from 'underscore' | |||
import $ from 'jquery' | |||
import 'jquery-migrate/dist/jquery-migrate.min' | |||
import 'jquery-ui' | |||
// TODO: remove anything that is not really used | |||
import 'jquery-ui/ui/widgets/accordion' | |||
import 'jquery-ui/ui/widgets/autocomplete' | |||
import 'jquery-ui/ui/widgets/button' | |||
import 'jquery-ui/ui/widgets/checkboxradio' | |||
import 'jquery-ui/ui/widgets/controlgroup' | |||
import 'jquery-ui/ui/widgets/datepicker' | |||
import 'jquery-ui/ui/widgets/dialog' | |||
import 'jquery-ui/ui/widgets/draggable' | |||
import 'jquery-ui/ui/widgets/droppable' | |||
import 'jquery-ui/ui/widgets/menu' | |||
import 'jquery-ui/ui/widgets/mouse' | |||
import 'jquery-ui/ui/widgets/progressbar' | |||
import 'jquery-ui/ui/widgets/resizable' | |||
import 'jquery-ui/ui/widgets/selectable' | |||
import 'jquery-ui/ui/widgets/selectmenu' | |||
import 'jquery-ui/ui/widgets/slider' | |||
import 'jquery-ui/ui/widgets/sortable' | |||
import 'jquery-ui/ui/widgets/tabs' | |||
import 'jquery-ui/ui/widgets/tooltip' | |||
// TODO END | |||
import 'jquery-ui/themes/base/all.css' | |||
import autosize from 'autosize' | |||
import Backbone from 'backbone' | |||
import 'bootstrap/js/tooltip' | |||
import Clipboard from 'clipboard' | |||
import dav from 'davclient.js' | |||
import DOMPurify from 'dompurify' | |||
import Handlebars from 'handlebars' | |||
import 'jcrop/js/jquery.Jcrop' | |||
import 'jcrop/css/jquery.Jcrop.css' | |||
import jstimezonedetect from 'jstimezonedetect' | |||
import marked from 'marked' | |||
import md5 from 'blueimp-md5' | |||
import moment from 'moment' | |||
import Select2 from 'select2' | |||
import 'snap.js/dist/snap' | |||
import 'strengthify' | |||
import 'strengthify/strengthify.css' | |||
window['_'] = _ | |||
window['$'] = $ | |||
window['autosize'] = autosize | |||
window['Backbone'] = Backbone | |||
window['Clipboard'] = Clipboard | |||
window['dav'] = dav | |||
window['DOMPurify'] = DOMPurify | |||
window['Handlebars'] = Handlebars | |||
window['jstimezonedetect'] = jstimezonedetect | |||
window['jstz'] = jstimezonedetect | |||
window['jQuery'] = $ | |||
window['marked'] = marked | |||
window['md5'] = md5 | |||
window['moment'] = moment | |||
window['Select2'] = Select2 |
@@ -0,0 +1,27 @@ | |||
/* | |||
* @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at> | |||
* | |||
* @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
// TODO: not required anymore https://caniuse.com/#search=atob | |||
import 'Base64' | |||
// TODO: use babel polyfill instead | |||
import 'es6-shim' | |||
import './globals' |
@@ -1,41 +0,0 @@ | |||
{ | |||
"name": "DOMPurify", | |||
"version": "1.0.4", | |||
"homepage": "https://github.com/cure53/DOMPurify", | |||
"author": "Cure53 <info@cure53.de>", | |||
"description": "A DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG", | |||
"main": "src/purify.js", | |||
"keywords": [ | |||
"dom", | |||
"xss", | |||
"cross site scripting", | |||
"html", | |||
"svg", | |||
"mathml", | |||
"sanitizer", | |||
"filter", | |||
"sanitize", | |||
"security", | |||
"secure" | |||
], | |||
"license": [ | |||
"MPL-2.0", | |||
"Apache-2.0" | |||
], | |||
"ignore": [ | |||
"**/.*", | |||
"demos", | |||
"scripts", | |||
"test", | |||
"website" | |||
], | |||
"_release": "1.0.4", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "1.0.4", | |||
"commit": "e7a1c316269bc0f6dd2698c3a7571bc4b561d892" | |||
}, | |||
"_source": "https://github.com/cure53/DOMPurify.git", | |||
"_target": "^1.0.0", | |||
"_originalSource": "DOMPurify" | |||
} |
@@ -1,378 +0,0 @@ | |||
DOMPurify | |||
Copyright 2015 Mario Heiderich | |||
DOMPurify is free software; you can redistribute it and/or modify it under the | |||
terms of either: | |||
a) the Apache License Version 2.0, or | |||
b) the Mozilla Public License Version 2.0 | |||
----------------------------------------------------------------------------- | |||
Licensed under the Apache License, Version 2.0 (the "License"); | |||
you may not use this file except in compliance with the License. | |||
You may obtain a copy of the License at | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
Unless required by applicable law or agreed to in writing, software | |||
distributed under the License is distributed on an "AS IS" BASIS, | |||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
----------------------------------------------------------------------------- | |||
Mozilla Public License, version 2.0 | |||
1. Definitions | |||
1.1. “Contributor” | |||
means each individual or legal entity that creates, contributes to the | |||
creation of, or owns Covered Software. | |||
1.2. “Contributor Version” | |||
means the combination of the Contributions of others (if any) used by a | |||
Contributor and that particular Contributor’s Contribution. | |||
1.3. “Contribution” | |||
means Covered Software of a particular Contributor. | |||
1.4. “Covered Software” | |||
means Source Code Form to which the initial Contributor has attached the | |||
notice in Exhibit A, the Executable Form of such Source Code Form, and | |||
Modifications of such Source Code Form, in each case including portions | |||
thereof. | |||
1.5. “Incompatible With Secondary Licenses” | |||
means | |||
a. that the initial Contributor has attached the notice described in | |||
Exhibit B to the Covered Software; or | |||
b. that the Covered Software was made available under the terms of version | |||
1.1 or earlier of the License, but not also under the terms of a | |||
Secondary License. | |||
1.6. “Executable Form” | |||
means any form of the work other than Source Code Form. | |||
1.7. “Larger Work” | |||
means a work that combines Covered Software with other material, in a separate | |||
file or files, that is not Covered Software. | |||
1.8. “License” | |||
means this document. | |||
1.9. “Licensable” | |||
means having the right to grant, to the maximum extent possible, whether at the | |||
time of the initial grant or subsequently, any and all of the rights conveyed by | |||
this License. | |||
1.10. “Modifications” | |||
means any of the following: | |||
a. any file in Source Code Form that results from an addition to, deletion | |||
from, or modification of the contents of Covered Software; or | |||
b. any new file in Source Code Form that contains any Covered Software. | |||
1.11. “Patent Claims” of a Contributor | |||
means any patent claim(s), including without limitation, method, process, | |||
and apparatus claims, in any patent Licensable by such Contributor that | |||
would be infringed, but for the grant of the License, by the making, | |||
using, selling, offering for sale, having made, import, or transfer of | |||
either its Contributions or its Contributor Version. | |||
1.12. “Secondary License” | |||
means either the GNU General Public License, Version 2.0, the GNU Lesser | |||
General Public License, Version 2.1, the GNU Affero General Public | |||
License, Version 3.0, or any later versions of those licenses. | |||
1.13. “Source Code Form” | |||
means the form of the work preferred for making modifications. | |||
1.14. “You” (or “Your”) | |||
means an individual or a legal entity exercising rights under this | |||
License. For legal entities, “You” includes any entity that controls, is | |||
controlled by, or is under common control with You. For purposes of this | |||
definition, “control” means (a) the power, direct or indirect, to cause | |||
the direction or management of such entity, whether by contract or | |||
otherwise, or (b) ownership of more than fifty percent (50%) of the | |||
outstanding shares or beneficial ownership of such entity. | |||
2. License Grants and Conditions | |||
2.1. Grants | |||
Each Contributor hereby grants You a world-wide, royalty-free, | |||
non-exclusive license: | |||
a. under intellectual property rights (other than patent or trademark) | |||
Licensable by such Contributor to use, reproduce, make available, | |||
modify, display, perform, distribute, and otherwise exploit its | |||
Contributions, either on an unmodified basis, with Modifications, or as | |||
part of a Larger Work; and | |||
b. under Patent Claims of such Contributor to make, use, sell, offer for | |||
sale, have made, import, and otherwise transfer either its Contributions | |||
or its Contributor Version. | |||
2.2. Effective Date | |||
The licenses granted in Section 2.1 with respect to any Contribution become | |||
effective for each Contribution on the date the Contributor first distributes | |||
such Contribution. | |||
2.3. Limitations on Grant Scope | |||
The licenses granted in this Section 2 are the only rights granted under this | |||
License. No additional rights or licenses will be implied from the distribution | |||
or licensing of Covered Software under this License. Notwithstanding Section | |||
2.1(b) above, no patent license is granted by a Contributor: | |||
a. for any code that a Contributor has removed from Covered Software; or | |||
b. for infringements caused by: (i) Your and any other third party’s | |||
modifications of Covered Software, or (ii) the combination of its | |||
Contributions with other software (except as part of its Contributor | |||
Version); or | |||
c. under Patent Claims infringed by Covered Software in the absence of its | |||
Contributions. | |||
This License does not grant any rights in the trademarks, service marks, or | |||
logos of any Contributor (except as may be necessary to comply with the | |||
notice requirements in Section 3.4). | |||
2.4. Subsequent Licenses | |||
No Contributor makes additional grants as a result of Your choice to | |||
distribute the Covered Software under a subsequent version of this License | |||
(see Section 10.2) or under the terms of a Secondary License (if permitted | |||
under the terms of Section 3.3). | |||
2.5. Representation | |||
Each Contributor represents that the Contributor believes its Contributions | |||
are its original creation(s) or it has sufficient rights to grant the | |||
rights to its Contributions conveyed by this License. | |||
2.6. Fair Use | |||
This License is not intended to limit any rights You have under applicable | |||
copyright doctrines of fair use, fair dealing, or other equivalents. | |||
2.7. Conditions | |||
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in | |||
Section 2.1. | |||
3. Responsibilities | |||
3.1. Distribution of Source Form | |||
All distribution of Covered Software in Source Code Form, including any | |||
Modifications that You create or to which You contribute, must be under the | |||
terms of this License. You must inform recipients that the Source Code Form | |||
of the Covered Software is governed by the terms of this License, and how | |||
they can obtain a copy of this License. You may not attempt to alter or | |||
restrict the recipients’ rights in the Source Code Form. | |||
3.2. Distribution of Executable Form | |||
If You distribute Covered Software in Executable Form then: | |||
a. such Covered Software must also be made available in Source Code Form, | |||
as described in Section 3.1, and You must inform recipients of the | |||
Executable Form how they can obtain a copy of such Source Code Form by | |||
reasonable means in a timely manner, at a charge no more than the cost | |||
of distribution to the recipient; and | |||
b. You may distribute such Executable Form under the terms of this License, | |||
or sublicense it under different terms, provided that the license for | |||
the Executable Form does not attempt to limit or alter the recipients’ | |||
rights in the Source Code Form under this License. | |||
3.3. Distribution of a Larger Work | |||
You may create and distribute a Larger Work under terms of Your choice, | |||
provided that You also comply with the requirements of this License for the | |||
Covered Software. If the Larger Work is a combination of Covered Software | |||
with a work governed by one or more Secondary Licenses, and the Covered | |||
Software is not Incompatible With Secondary Licenses, this License permits | |||
You to additionally distribute such Covered Software under the terms of | |||
such Secondary License(s), so that the recipient of the Larger Work may, at | |||
their option, further distribute the Covered Software under the terms of | |||
either this License or such Secondary License(s). | |||
3.4. Notices | |||
You may not remove or alter the substance of any license notices (including | |||
copyright notices, patent notices, disclaimers of warranty, or limitations | |||
of liability) contained within the Source Code Form of the Covered | |||
Software, except that You may alter any license notices to the extent | |||
required to remedy known factual inaccuracies. | |||
3.5. Application of Additional Terms | |||
You may choose to offer, and to charge a fee for, warranty, support, | |||
indemnity or liability obligations to one or more recipients of Covered | |||
Software. However, You may do so only on Your own behalf, and not on behalf | |||
of any Contributor. You must make it absolutely clear that any such | |||
warranty, support, indemnity, or liability obligation is offered by You | |||
alone, and You hereby agree to indemnify every Contributor for any | |||
liability incurred by such Contributor as a result of warranty, support, | |||
indemnity or liability terms You offer. You may include additional | |||
disclaimers of warranty and limitations of liability specific to any | |||
jurisdiction. | |||
4. Inability to Comply Due to Statute or Regulation | |||
If it is impossible for You to comply with any of the terms of this License | |||
with respect to some or all of the Covered Software due to statute, judicial | |||
order, or regulation then You must: (a) comply with the terms of this License | |||
to the maximum extent possible; and (b) describe the limitations and the code | |||
they affect. Such description must be placed in a text file included with all | |||
distributions of the Covered Software under this License. Except to the | |||
extent prohibited by statute or regulation, such description must be | |||
sufficiently detailed for a recipient of ordinary skill to be able to | |||
understand it. | |||
5. Termination | |||
5.1. The rights granted under this License will terminate automatically if You | |||
fail to comply with any of its terms. However, if You become compliant, | |||
then the rights granted under this License from a particular Contributor | |||
are reinstated (a) provisionally, unless and until such Contributor | |||
explicitly and finally terminates Your grants, and (b) on an ongoing basis, | |||
if such Contributor fails to notify You of the non-compliance by some | |||
reasonable means prior to 60 days after You have come back into compliance. | |||
Moreover, Your grants from a particular Contributor are reinstated on an | |||
ongoing basis if such Contributor notifies You of the non-compliance by | |||
some reasonable means, this is the first time You have received notice of | |||
non-compliance with this License from such Contributor, and You become | |||
compliant prior to 30 days after Your receipt of the notice. | |||
5.2. If You initiate litigation against any entity by asserting a patent | |||
infringement claim (excluding declaratory judgment actions, counter-claims, | |||
and cross-claims) alleging that a Contributor Version directly or | |||
indirectly infringes any patent, then the rights granted to You by any and | |||
all Contributors for the Covered Software under Section 2.1 of this License | |||
shall terminate. | |||
5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user | |||
license agreements (excluding distributors and resellers) which have been | |||
validly granted by You or Your distributors under this License prior to | |||
termination shall survive termination. | |||
6. Disclaimer of Warranty | |||
Covered Software is provided under this License on an “as is” basis, without | |||
warranty of any kind, either expressed, implied, or statutory, including, | |||
without limitation, warranties that the Covered Software is free of defects, | |||
merchantable, fit for a particular purpose or non-infringing. The entire | |||
risk as to the quality and performance of the Covered Software is with You. | |||
Should any Covered Software prove defective in any respect, You (not any | |||
Contributor) assume the cost of any necessary servicing, repair, or | |||
correction. This disclaimer of warranty constitutes an essential part of this | |||
License. No use of any Covered Software is authorized under this License | |||
except under this disclaimer. | |||
7. Limitation of Liability | |||
Under no circumstances and under no legal theory, whether tort (including | |||
negligence), contract, or otherwise, shall any Contributor, or anyone who | |||
distributes Covered Software as permitted above, be liable to You for any | |||
direct, indirect, special, incidental, or consequential damages of any | |||
character including, without limitation, damages for lost profits, loss of | |||
goodwill, work stoppage, computer failure or malfunction, or any and all | |||
other commercial damages or losses, even if such party shall have been | |||
informed of the possibility of such damages. This limitation of liability | |||
shall not apply to liability for death or personal injury resulting from such | |||
party’s negligence to the extent applicable law prohibits such limitation. | |||
Some jurisdictions do not allow the exclusion or limitation of incidental or | |||
consequential damages, so this exclusion and limitation may not apply to You. | |||
8. Litigation | |||
Any litigation relating to this License may be brought only in the courts of | |||
a jurisdiction where the defendant maintains its principal place of business | |||
and such litigation shall be governed by laws of that jurisdiction, without | |||
reference to its conflict-of-law provisions. Nothing in this Section shall | |||
prevent a party’s ability to bring cross-claims or counter-claims. | |||
9. Miscellaneous | |||
This License represents the complete agreement concerning the subject matter | |||
hereof. If any provision of this License is held to be unenforceable, such | |||
provision shall be reformed only to the extent necessary to make it | |||
enforceable. Any law or regulation which provides that the language of a | |||
contract shall be construed against the drafter shall not be used to construe | |||
this License against a Contributor. | |||
10. Versions of the License | |||
10.1. New Versions | |||
Mozilla Foundation is the license steward. Except as provided in Section | |||
10.3, no one other than the license steward has the right to modify or | |||
publish new versions of this License. Each version will be given a | |||
distinguishing version number. | |||
10.2. Effect of New Versions | |||
You may distribute the Covered Software under the terms of the version of | |||
the License under which You originally received the Covered Software, or | |||
under the terms of any subsequent version published by the license | |||
steward. | |||
10.3. Modified Versions | |||
If you create software not governed by this License, and you want to | |||
create a new license for such software, you may create and use a modified | |||
version of this License if you rename the license and remove any | |||
references to the name of the license steward (except to note that such | |||
modified license differs from this License). | |||
10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses | |||
If You choose to distribute Source Code Form that is Incompatible With | |||
Secondary Licenses under the terms of this version of the License, the | |||
notice described in Exhibit B of this License must be attached. | |||
Exhibit A - Source Code Form License Notice | |||
This Source Code Form is subject to the | |||
terms of the Mozilla Public License, v. | |||
2.0. If a copy of the MPL was not | |||
distributed with this file, You can | |||
obtain one at | |||
http://mozilla.org/MPL/2.0/. | |||
If it is not possible or desirable to put the notice in a particular file, then | |||
You may include the notice in a location (such as a LICENSE file in a relevant | |||
directory) where a recipient would be likely to look for such a notice. | |||
You may add additional accurate notices of copyright ownership. | |||
Exhibit B - “Incompatible With Secondary Licenses” Notice | |||
This Source Code Form is “Incompatible | |||
With Secondary Licenses”, as defined by | |||
the Mozilla Public License, v. 2.0. | |||
@@ -1,14 +0,0 @@ | |||
{ | |||
"name": "autosize", | |||
"homepage": "https://github.com/jackmoore/autosize", | |||
"version": "4.0.2", | |||
"_release": "4.0.2", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "4.0.2", | |||
"commit": "e394a257cc1e059eadc4198f56c301702289dd88" | |||
}, | |||
"_source": "https://github.com/jackmoore/autosize.git", | |||
"_target": "4.0.2", | |||
"_originalSource": "autosize" | |||
} |
@@ -1,21 +0,0 @@ | |||
The MIT License (MIT) | |||
Copyright (c) 2015 Jack Moore | |||
Permission is hereby granted, free of charge, to any person obtaining a copy | |||
of this software and associated documentation files (the "Software"), to deal | |||
in the Software without restriction, including without limitation the rights | |||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
copies of the Software, and to permit persons to whom the Software is | |||
furnished to do so, subject to the following conditions: | |||
The above copyright notice and this permission notice shall be included in all | |||
copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
SOFTWARE. |
@@ -1,6 +0,0 @@ | |||
/*! | |||
autosize 4.0.2 | |||
license: MIT | |||
http://www.jacklmoore.com/autosize | |||
*/ | |||
!function(e,t){if("function"==typeof define&&define.amd)define(["module","exports"],t);else if("undefined"!=typeof exports)t(module,exports);else{var n={exports:{}};t(n,n.exports),e.autosize=n.exports}}(this,function(e,t){"use strict";var n,o,p="function"==typeof Map?new Map:(n=[],o=[],{has:function(e){return-1<n.indexOf(e)},get:function(e){return o[n.indexOf(e)]},set:function(e,t){-1===n.indexOf(e)&&(n.push(e),o.push(t))},delete:function(e){var t=n.indexOf(e);-1<t&&(n.splice(t,1),o.splice(t,1))}}),c=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){c=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}function r(r){if(r&&r.nodeName&&"TEXTAREA"===r.nodeName&&!p.has(r)){var e,n=null,o=null,i=null,d=function(){r.clientWidth!==o&&a()},l=function(t){window.removeEventListener("resize",d,!1),r.removeEventListener("input",a,!1),r.removeEventListener("keyup",a,!1),r.removeEventListener("autosize:destroy",l,!1),r.removeEventListener("autosize:update",a,!1),Object.keys(t).forEach(function(e){r.style[e]=t[e]}),p.delete(r)}.bind(r,{height:r.style.height,resize:r.style.resize,overflowY:r.style.overflowY,overflowX:r.style.overflowX,wordWrap:r.style.wordWrap});r.addEventListener("autosize:destroy",l,!1),"onpropertychange"in r&&"oninput"in r&&r.addEventListener("keyup",a,!1),window.addEventListener("resize",d,!1),r.addEventListener("input",a,!1),r.addEventListener("autosize:update",a,!1),r.style.overflowX="hidden",r.style.wordWrap="break-word",p.set(r,{destroy:l,update:a}),"vertical"===(e=window.getComputedStyle(r,null)).resize?r.style.resize="none":"both"===e.resize&&(r.style.resize="horizontal"),n="content-box"===e.boxSizing?-(parseFloat(e.paddingTop)+parseFloat(e.paddingBottom)):parseFloat(e.borderTopWidth)+parseFloat(e.borderBottomWidth),isNaN(n)&&(n=0),a()}function s(e){var t=r.style.width;r.style.width="0px",r.offsetWidth,r.style.width=t,r.style.overflowY=e}function u(){if(0!==r.scrollHeight){var e=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}(r),t=document.documentElement&&document.documentElement.scrollTop;r.style.height="",r.style.height=r.scrollHeight+n+"px",o=r.clientWidth,e.forEach(function(e){e.node.scrollTop=e.scrollTop}),t&&(document.documentElement.scrollTop=t)}}function a(){u();var e=Math.round(parseFloat(r.style.height)),t=window.getComputedStyle(r,null),n="content-box"===t.boxSizing?Math.round(parseFloat(t.height)):r.offsetHeight;if(n<e?"hidden"===t.overflowY&&(s("scroll"),u(),n="content-box"===t.boxSizing?Math.round(parseFloat(window.getComputedStyle(r,null).height)):r.offsetHeight):"hidden"!==t.overflowY&&(s("hidden"),u(),n="content-box"===t.boxSizing?Math.round(parseFloat(window.getComputedStyle(r,null).height)):r.offsetHeight),i!==n){i=n;var o=c("autosize:resized");try{r.dispatchEvent(o)}catch(e){}}}}function i(e){var t=p.get(e);t&&t.destroy()}function d(e){var t=p.get(e);t&&t.update()}var l=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?((l=function(e){return e}).destroy=function(e){return e},l.update=function(e){return e}):((l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return r(e)}),e}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],i),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],d),e}),t.default=l,e.exports=t.default}); |
@@ -1,32 +0,0 @@ | |||
{ | |||
"name": "backbone", | |||
"main": "backbone.js", | |||
"dependencies": { | |||
"underscore": ">=1.7.0" | |||
}, | |||
"ignore": [ | |||
"docs", | |||
"examples", | |||
"test", | |||
"*.yml", | |||
"*.html", | |||
"*.ico", | |||
"*.md", | |||
"CNAME", | |||
".*", | |||
"karma.*", | |||
"component.json", | |||
"package.json" | |||
], | |||
"homepage": "https://github.com/jashkenas/backbone", | |||
"version": "1.2.3", | |||
"_release": "1.2.3", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "1.2.3", | |||
"commit": "05fde9e201f7e2137796663081105cd6dad12a98" | |||
}, | |||
"_source": "https://github.com/jashkenas/backbone.git", | |||
"_target": "1.2.3", | |||
"_originalSource": "backbone" | |||
} |
@@ -1,22 +0,0 @@ | |||
Copyright (c) 2010-2015 Jeremy Ashkenas, DocumentCloud | |||
Permission is hereby granted, free of charge, to any person | |||
obtaining a copy of this software and associated documentation | |||
files (the "Software"), to deal in the Software without | |||
restriction, including without limitation the rights to use, | |||
copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
copies of the Software, and to permit persons to whom the | |||
Software is furnished to do so, subject to the following | |||
conditions: | |||
The above copyright notice and this permission notice shall be | |||
included in all copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |||
OTHER DEALINGS IN THE SOFTWARE. |
@@ -1,28 +0,0 @@ | |||
{ | |||
"name": "base64", | |||
"version": "0.3.0", | |||
"description": "Base64 encoding and decoding", | |||
"main": "./base64.js", | |||
"license": "WTFPL", | |||
"repository": { | |||
"type": "git", | |||
"url": "git://github.com/davidchambers/Base64.js.git" | |||
}, | |||
"ignore": [ | |||
"**/.*", | |||
"Makefile", | |||
"coverage/", | |||
"scripts/", | |||
"test/" | |||
], | |||
"homepage": "https://github.com/davidchambers/Base64.js", | |||
"_release": "0.3.0", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "0.3.0", | |||
"commit": "772df096a5ffe983f40202684ad45eed1e0e2d59" | |||
}, | |||
"_source": "https://github.com/davidchambers/Base64.js.git", | |||
"_target": "0.3.0", | |||
"_originalSource": "base64" | |||
} |
@@ -1,14 +0,0 @@ | |||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE | |||
Version 2, December 2004 | |||
Copyright (c) 2011..2012 David Chambers <dc@hashify.me> | |||
Everyone is permitted to copy and distribute verbatim or modified | |||
copies of this license document, and changing it is allowed as long | |||
as the name is changed. | |||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE | |||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |||
0. You just DO WHAT THE FUCK YOU WANT TO. |
@@ -1,61 +0,0 @@ | |||
;(function () { | |||
var object = typeof exports != 'undefined' ? exports : this; // #8: web workers | |||
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; | |||
function InvalidCharacterError(message) { | |||
this.message = message; | |||
} | |||
InvalidCharacterError.prototype = new Error; | |||
InvalidCharacterError.prototype.name = 'InvalidCharacterError'; | |||
// encoder | |||
// [https://gist.github.com/999166] by [https://github.com/nignag] | |||
object.btoa || ( | |||
object.btoa = function (input) { | |||
var str = String(input); | |||
for ( | |||
// initialize result and counter | |||
var block, charCode, idx = 0, map = chars, output = ''; | |||
// if the next str index does not exist: | |||
// change the mapping table to "=" | |||
// check if d has no fractional digits | |||
str.charAt(idx | 0) || (map = '=', idx % 1); | |||
// "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 | |||
output += map.charAt(63 & block >> 8 - idx % 1 * 8) | |||
) { | |||
charCode = str.charCodeAt(idx += 3/4); | |||
if (charCode > 0xFF) { | |||
throw new InvalidCharacterError("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range."); | |||
} | |||
block = block << 8 | charCode; | |||
} | |||
return output; | |||
}); | |||
// decoder | |||
// [https://gist.github.com/1020396] by [https://github.com/atk] | |||
object.atob || ( | |||
object.atob = function (input) { | |||
var str = String(input).replace(/=+$/, ''); | |||
if (str.length % 4 == 1) { | |||
throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded."); | |||
} | |||
for ( | |||
// initialize result and counters | |||
var bc = 0, bs, buffer, idx = 0, output = ''; | |||
// get next character | |||
buffer = str.charAt(idx++); | |||
// character found in table? initialize bit storage and add its ascii value; | |||
~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, | |||
// and if not first of each 4 characters, | |||
// convert the first 8 bits to one ascii character | |||
bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 | |||
) { | |||
// try to find character in table (0-63, not found => -1) | |||
buffer = chars.indexOf(buffer); | |||
} | |||
return output; | |||
}); | |||
}()); |
@@ -1,14 +0,0 @@ | |||
{ | |||
"name": "blueimp-md5", | |||
"homepage": "https://github.com/blueimp/JavaScript-MD5", | |||
"version": "2.7.0", | |||
"_release": "2.7.0", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "v2.7.0", | |||
"commit": "31cbd8e463b43882c7b0cf461508ddf1c8f14154" | |||
}, | |||
"_source": "https://github.com/blueimp/JavaScript-MD5.git", | |||
"_target": "2.7.0", | |||
"_originalSource": "blueimp-md5" | |||
} |
@@ -1 +0,0 @@ | |||
!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t),e=(n>>16)+(t>>16)+(r>>16);return e<<16|65535&r}function r(n,t){return n<<t|n>>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<<r%32,n[(r+64>>>9<<4)+14]=r;var e,i,a,h,d,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e<n.length;e+=16)i=l,a=g,h=v,d=m,l=o(l,g,v,m,n[e],7,-680876936),m=o(m,l,g,v,n[e+1],12,-389564586),v=o(v,m,l,g,n[e+2],17,606105819),g=o(g,v,m,l,n[e+3],22,-1044525330),l=o(l,g,v,m,n[e+4],7,-176418897),m=o(m,l,g,v,n[e+5],12,1200080426),v=o(v,m,l,g,n[e+6],17,-1473231341),g=o(g,v,m,l,n[e+7],22,-45705983),l=o(l,g,v,m,n[e+8],7,1770035416),m=o(m,l,g,v,n[e+9],12,-1958414417),v=o(v,m,l,g,n[e+10],17,-42063),g=o(g,v,m,l,n[e+11],22,-1990404162),l=o(l,g,v,m,n[e+12],7,1804603682),m=o(m,l,g,v,n[e+13],12,-40341101),v=o(v,m,l,g,n[e+14],17,-1502002290),g=o(g,v,m,l,n[e+15],22,1236535329),l=u(l,g,v,m,n[e+1],5,-165796510),m=u(m,l,g,v,n[e+6],9,-1069501632),v=u(v,m,l,g,n[e+11],14,643717713),g=u(g,v,m,l,n[e],20,-373897302),l=u(l,g,v,m,n[e+5],5,-701558691),m=u(m,l,g,v,n[e+10],9,38016083),v=u(v,m,l,g,n[e+15],14,-660478335),g=u(g,v,m,l,n[e+4],20,-405537848),l=u(l,g,v,m,n[e+9],5,568446438),m=u(m,l,g,v,n[e+14],9,-1019803690),v=u(v,m,l,g,n[e+3],14,-187363961),g=u(g,v,m,l,n[e+8],20,1163531501),l=u(l,g,v,m,n[e+13],5,-1444681467),m=u(m,l,g,v,n[e+2],9,-51403784),v=u(v,m,l,g,n[e+7],14,1735328473),g=u(g,v,m,l,n[e+12],20,-1926607734),l=c(l,g,v,m,n[e+5],4,-378558),m=c(m,l,g,v,n[e+8],11,-2022574463),v=c(v,m,l,g,n[e+11],16,1839030562),g=c(g,v,m,l,n[e+14],23,-35309556),l=c(l,g,v,m,n[e+1],4,-1530992060),m=c(m,l,g,v,n[e+4],11,1272893353),v=c(v,m,l,g,n[e+7],16,-155497632),g=c(g,v,m,l,n[e+10],23,-1094730640),l=c(l,g,v,m,n[e+13],4,681279174),m=c(m,l,g,v,n[e],11,-358537222),v=c(v,m,l,g,n[e+3],16,-722521979),g=c(g,v,m,l,n[e+6],23,76029189),l=c(l,g,v,m,n[e+9],4,-640364487),m=c(m,l,g,v,n[e+12],11,-421815835),v=c(v,m,l,g,n[e+15],16,530742520),g=c(g,v,m,l,n[e+2],23,-995338651),l=f(l,g,v,m,n[e],6,-198630844),m=f(m,l,g,v,n[e+7],10,1126891415),v=f(v,m,l,g,n[e+14],15,-1416354905),g=f(g,v,m,l,n[e+5],21,-57434055),l=f(l,g,v,m,n[e+12],6,1700485571),m=f(m,l,g,v,n[e+3],10,-1894986606),v=f(v,m,l,g,n[e+10],15,-1051523),g=f(g,v,m,l,n[e+1],21,-2054922799),l=f(l,g,v,m,n[e+8],6,1873313359),m=f(m,l,g,v,n[e+15],10,-30611744),v=f(v,m,l,g,n[e+6],15,-1560198380),g=f(g,v,m,l,n[e+13],21,1309151649),l=f(l,g,v,m,n[e+4],6,-145523070),m=f(m,l,g,v,n[e+11],10,-1120210379),v=f(v,m,l,g,n[e+2],15,718787259),g=f(g,v,m,l,n[e+9],21,-343485551),l=t(l,i),g=t(g,a),v=t(v,h),m=t(m,d);return[l,g,v,m]}function a(n){var t,r="",e=32*n.length;for(t=0;t<e;t+=8)r+=String.fromCharCode(n[t>>5]>>>t%32&255);return r}function h(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t<r.length;t+=1)r[t]=0;var e=8*n.length;for(t=0;t<e;t+=8)r[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return r}function d(n){return a(i(h(n),8*n.length))}function l(n,t){var r,e,o=h(n),u=[],c=[];for(u[15]=c[15]=void 0,o.length>16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(h(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="0123456789abcdef",o="";for(r=0;r<n.length;r+=1)t=n.charCodeAt(r),o+=e.charAt(t>>>4&15)+e.charAt(15&t);return o}function v(n){return unescape(encodeURIComponent(n))}function m(n){return d(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:n.md5=A}(this); |
@@ -1,44 +0,0 @@ | |||
{ | |||
"name": "bootstrap", | |||
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", | |||
"keywords": [ | |||
"css", | |||
"js", | |||
"less", | |||
"mobile-first", | |||
"responsive", | |||
"front-end", | |||
"framework", | |||
"web" | |||
], | |||
"homepage": "http://getbootstrap.com", | |||
"license": "MIT", | |||
"moduleType": "globals", | |||
"main": [ | |||
"less/bootstrap.less", | |||
"dist/js/bootstrap.js" | |||
], | |||
"ignore": [ | |||
"/.*", | |||
"_config.yml", | |||
"CNAME", | |||
"composer.json", | |||
"CONTRIBUTING.md", | |||
"docs", | |||
"js/tests", | |||
"test-infra" | |||
], | |||
"dependencies": { | |||
"jquery": "1.9.1 - 3" | |||
}, | |||
"version": "3.3.7", | |||
"_release": "3.3.7", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "v3.3.7", | |||
"commit": "0b9c4a4007c44201dce9a6cc1a38407005c26c86" | |||
}, | |||
"_source": "https://github.com/twbs/bootstrap.git", | |||
"_target": "3.3.7", | |||
"_originalSource": "bootstrap" | |||
} |
@@ -1,520 +0,0 @@ | |||
/* ======================================================================== | |||
* Bootstrap: tooltip.js v3.3.7 | |||
* http://getbootstrap.com/javascript/#tooltip | |||
* Inspired by the original jQuery.tipsy by Jason Frame | |||
* ======================================================================== | |||
* Copyright 2011-2016 Twitter, Inc. | |||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | |||
* ======================================================================== */ | |||
+function ($) { | |||
'use strict'; | |||
// TOOLTIP PUBLIC CLASS DEFINITION | |||
// =============================== | |||
var Tooltip = function (element, options) { | |||
this.type = null | |||
this.options = null | |||
this.enabled = null | |||
this.timeout = null | |||
this.hoverState = null | |||
this.$element = null | |||
this.inState = null | |||
this.init('tooltip', element, options) | |||
} | |||
Tooltip.VERSION = '3.3.7' | |||
Tooltip.TRANSITION_DURATION = 150 | |||
Tooltip.DEFAULTS = { | |||
animation: true, | |||
placement: 'top', | |||
selector: false, | |||
template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', | |||
trigger: 'hover focus', | |||
title: '', | |||
delay: 0, | |||
html: false, | |||
container: false, | |||
viewport: { | |||
selector: 'body', | |||
padding: 0 | |||
} | |||
} | |||
Tooltip.prototype.init = function (type, element, options) { | |||
this.enabled = true | |||
this.type = type | |||
this.$element = $(element) | |||
this.options = this.getOptions(options) | |||
this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) | |||
this.inState = { click: false, hover: false, focus: false } | |||
if (this.$element[0] instanceof document.constructor && !this.options.selector) { | |||
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') | |||
} | |||
var triggers = this.options.trigger.split(' ') | |||
for (var i = triggers.length; i--;) { | |||
var trigger = triggers[i] | |||
if (trigger == 'click') { | |||
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) | |||
} else if (trigger != 'manual') { | |||
var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' | |||
var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' | |||
this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) | |||
this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) | |||
} | |||
} | |||
this.options.selector ? | |||
(this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : | |||
this.fixTitle() | |||
} | |||
Tooltip.prototype.getDefaults = function () { | |||
return Tooltip.DEFAULTS | |||
} | |||
Tooltip.prototype.getOptions = function (options) { | |||
options = $.extend({}, this.getDefaults(), this.$element.data(), options) | |||
if (options.delay && typeof options.delay == 'number') { | |||
options.delay = { | |||
show: options.delay, | |||
hide: options.delay | |||
} | |||
} | |||
return options | |||
} | |||
Tooltip.prototype.getDelegateOptions = function () { | |||
var options = {} | |||
var defaults = this.getDefaults() | |||
this._options && $.each(this._options, function (key, value) { | |||
if (defaults[key] != value) options[key] = value | |||
}) | |||
return options | |||
} | |||
Tooltip.prototype.enter = function (obj) { | |||
var self = obj instanceof this.constructor ? | |||
obj : $(obj.currentTarget).data('bs.' + this.type) | |||
if (!self) { | |||
self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) | |||
$(obj.currentTarget).data('bs.' + this.type, self) | |||
} | |||
if (obj instanceof $.Event) { | |||
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true | |||
} | |||
if (self.tip().hasClass('in') || self.hoverState == 'in') { | |||
self.hoverState = 'in' | |||
return | |||
} | |||
clearTimeout(self.timeout) | |||
self.hoverState = 'in' | |||
if (!self.options.delay || !self.options.delay.show) return self.show() | |||
self.timeout = setTimeout(function () { | |||
if (self.hoverState == 'in') self.show() | |||
}, self.options.delay.show) | |||
} | |||
Tooltip.prototype.isInStateTrue = function () { | |||
for (var key in this.inState) { | |||
if (this.inState[key]) return true | |||
} | |||
return false | |||
} | |||
Tooltip.prototype.leave = function (obj) { | |||
var self = obj instanceof this.constructor ? | |||
obj : $(obj.currentTarget).data('bs.' + this.type) | |||
if (!self) { | |||
self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) | |||
$(obj.currentTarget).data('bs.' + this.type, self) | |||
} | |||
if (obj instanceof $.Event) { | |||
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false | |||
} | |||
if (self.isInStateTrue()) return | |||
clearTimeout(self.timeout) | |||
self.hoverState = 'out' | |||
if (!self.options.delay || !self.options.delay.hide) return self.hide() | |||
self.timeout = setTimeout(function () { | |||
if (self.hoverState == 'out') self.hide() | |||
}, self.options.delay.hide) | |||
} | |||
Tooltip.prototype.show = function () { | |||
var e = $.Event('show.bs.' + this.type) | |||
if (this.hasContent() && this.enabled) { | |||
this.$element.trigger(e) | |||
var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) | |||
if (e.isDefaultPrevented() || !inDom) return | |||
var that = this | |||
var $tip = this.tip() | |||
var tipId = this.getUID(this.type) | |||
this.setContent() | |||
$tip.attr('id', tipId) | |||
this.$element.attr('aria-describedby', tipId) | |||
if (this.options.animation) $tip.addClass('fade') | |||
var placement = typeof this.options.placement == 'function' ? | |||
this.options.placement.call(this, $tip[0], this.$element[0]) : | |||
this.options.placement | |||
var autoToken = /\s?auto?\s?/i | |||
var autoPlace = autoToken.test(placement) | |||
if (autoPlace) placement = placement.replace(autoToken, '') || 'top' | |||
$tip | |||
.detach() | |||
.css({ top: 0, left: 0, display: 'block' }) | |||
.addClass(placement) | |||
.data('bs.' + this.type, this) | |||
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) | |||
this.$element.trigger('inserted.bs.' + this.type) | |||
var pos = this.getPosition() | |||
var actualWidth = $tip[0].offsetWidth | |||
var actualHeight = $tip[0].offsetHeight | |||
if (autoPlace) { | |||
var orgPlacement = placement | |||
var viewportDim = this.getPosition(this.$viewport) | |||
placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : | |||
placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : | |||
placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : | |||
placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : | |||
placement | |||
$tip | |||
.removeClass(orgPlacement) | |||
.addClass(placement) | |||
} | |||
var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) | |||
this.applyPlacement(calculatedOffset, placement) | |||
var complete = function () { | |||
var prevHoverState = that.hoverState | |||
that.$element.trigger('shown.bs.' + that.type) | |||
that.hoverState = null | |||
if (prevHoverState == 'out') that.leave(that) | |||
} | |||
$.support.transition && this.$tip.hasClass('fade') ? | |||
$tip | |||
.one('bsTransitionEnd', complete) | |||
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : | |||
complete() | |||
} | |||
} | |||
Tooltip.prototype.applyPlacement = function (offset, placement) { | |||
var $tip = this.tip() | |||
var width = $tip[0].offsetWidth | |||
var height = $tip[0].offsetHeight | |||
// manually read margins because getBoundingClientRect includes difference | |||
var marginTop = parseInt($tip.css('margin-top'), 10) | |||
var marginLeft = parseInt($tip.css('margin-left'), 10) | |||
// we must check for NaN for ie 8/9 | |||
if (isNaN(marginTop)) marginTop = 0 | |||
if (isNaN(marginLeft)) marginLeft = 0 | |||
offset.top += marginTop | |||
offset.left += marginLeft | |||
// $.fn.offset doesn't round pixel values | |||
// so we use setOffset directly with our own function B-0 | |||
$.offset.setOffset($tip[0], $.extend({ | |||
using: function (props) { | |||
$tip.css({ | |||
top: Math.round(props.top), | |||
left: Math.round(props.left) | |||
}) | |||
} | |||
}, offset), 0) | |||
$tip.addClass('in') | |||
// check to see if placing tip in new offset caused the tip to resize itself | |||
var actualWidth = $tip[0].offsetWidth | |||
var actualHeight = $tip[0].offsetHeight | |||
if (placement == 'top' && actualHeight != height) { | |||
offset.top = offset.top + height - actualHeight | |||
} | |||
var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) | |||
if (delta.left) offset.left += delta.left | |||
else offset.top += delta.top | |||
var isVertical = /top|bottom/.test(placement) | |||
var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight | |||
var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' | |||
$tip.offset(offset) | |||
this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) | |||
} | |||
Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { | |||
this.arrow() | |||
.css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') | |||
.css(isVertical ? 'top' : 'left', '') | |||
} | |||
Tooltip.prototype.setContent = function () { | |||
var $tip = this.tip() | |||
var title = this.getTitle() | |||
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) | |||
$tip.removeClass('fade in top bottom left right') | |||
} | |||
Tooltip.prototype.hide = function (callback) { | |||
var that = this | |||
var $tip = $(this.$tip) | |||
var e = $.Event('hide.bs.' + this.type) | |||
function complete() { | |||
if (that.hoverState != 'in') $tip.detach() | |||
if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. | |||
that.$element | |||
.removeAttr('aria-describedby') | |||
.trigger('hidden.bs.' + that.type) | |||
} | |||
callback && callback() | |||
} | |||
this.$element.trigger(e) | |||
if (e.isDefaultPrevented()) return | |||
$tip.removeClass('in') | |||
$.support.transition && $tip.hasClass('fade') ? | |||
$tip | |||
.one('bsTransitionEnd', complete) | |||
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : | |||
complete() | |||
this.hoverState = null | |||
return this | |||
} | |||
Tooltip.prototype.fixTitle = function () { | |||
var $e = this.$element | |||
if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { | |||
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '') | |||
} | |||
} | |||
Tooltip.prototype.hasContent = function () { | |||
return this.getTitle() | |||
} | |||
Tooltip.prototype.getPosition = function ($element) { | |||
$element = $element || this.$element | |||
var el = $element[0] | |||
var isBody = el.tagName == 'BODY' | |||
var elRect = el.getBoundingClientRect() | |||
if (elRect.width == null) { | |||
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 | |||
elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) | |||
} | |||
var isSvg = window.SVGElement && el instanceof window.SVGElement | |||
// Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. | |||
// See https://github.com/twbs/bootstrap/issues/20280 | |||
var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) | |||
var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } | |||
var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null | |||
return $.extend({}, elRect, scroll, outerDims, elOffset) | |||
} | |||
Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { | |||
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : | |||
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : | |||
placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : | |||
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } | |||
} | |||
Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { | |||
var delta = { top: 0, left: 0 } | |||
if (!this.$viewport) return delta | |||
var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 | |||
var viewportDimensions = this.getPosition(this.$viewport) | |||
if (/right|left/.test(placement)) { | |||
var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll | |||
var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight | |||
if (topEdgeOffset < viewportDimensions.top) { // top overflow | |||
delta.top = viewportDimensions.top - topEdgeOffset | |||
} else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow | |||
delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset | |||
} | |||
} else { | |||
var leftEdgeOffset = pos.left - viewportPadding | |||
var rightEdgeOffset = pos.left + viewportPadding + actualWidth | |||
if (leftEdgeOffset < viewportDimensions.left) { // left overflow | |||
delta.left = viewportDimensions.left - leftEdgeOffset | |||
} else if (rightEdgeOffset > viewportDimensions.right) { // right overflow | |||
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset | |||
} | |||
} | |||
return delta | |||
} | |||
Tooltip.prototype.getTitle = function () { | |||
var title | |||
var $e = this.$element | |||
var o = this.options | |||
title = $e.attr('data-original-title') | |||
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) | |||
return title | |||
} | |||
Tooltip.prototype.getUID = function (prefix) { | |||
do prefix += ~~(Math.random() * 1000000) | |||
while (document.getElementById(prefix)) | |||
return prefix | |||
} | |||
Tooltip.prototype.tip = function () { | |||
if (!this.$tip) { | |||
this.$tip = $(this.options.template) | |||
if (this.$tip.length != 1) { | |||
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') | |||
} | |||
} | |||
return this.$tip | |||
} | |||
Tooltip.prototype.arrow = function () { | |||
return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) | |||
} | |||
Tooltip.prototype.enable = function () { | |||
this.enabled = true | |||
} | |||
Tooltip.prototype.disable = function () { | |||
this.enabled = false | |||
} | |||
Tooltip.prototype.toggleEnabled = function () { | |||
this.enabled = !this.enabled | |||
} | |||
Tooltip.prototype.toggle = function (e) { | |||
var self = this | |||
if (e) { | |||
self = $(e.currentTarget).data('bs.' + this.type) | |||
if (!self) { | |||
self = new this.constructor(e.currentTarget, this.getDelegateOptions()) | |||
$(e.currentTarget).data('bs.' + this.type, self) | |||
} | |||
} | |||
if (e) { | |||
self.inState.click = !self.inState.click | |||
if (self.isInStateTrue()) self.enter(self) | |||
else self.leave(self) | |||
} else { | |||
self.tip().hasClass('in') ? self.leave(self) : self.enter(self) | |||
} | |||
} | |||
Tooltip.prototype.destroy = function () { | |||
var that = this | |||
clearTimeout(this.timeout) | |||
this.hide(function () { | |||
that.$element.off('.' + that.type).removeData('bs.' + that.type) | |||
if (that.$tip) { | |||
that.$tip.detach() | |||
} | |||
that.$tip = null | |||
that.$arrow = null | |||
that.$viewport = null | |||
that.$element = null | |||
}) | |||
} | |||
// TOOLTIP PLUGIN DEFINITION | |||
// ========================= | |||
function Plugin(option) { | |||
return this.each(function () { | |||
var $this = $(this) | |||
var data = $this.data('bs.tooltip') | |||
var options = typeof option == 'object' && option | |||
if (!data && /destroy|hide/.test(option)) return | |||
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) | |||
if (typeof option == 'string') data[option]() | |||
}) | |||
} | |||
var old = $.fn.tooltip | |||
$.fn.tooltip = Plugin | |||
$.fn.tooltip.Constructor = Tooltip | |||
// TOOLTIP NO CONFLICT | |||
// =================== | |||
$.fn.tooltip.noConflict = function () { | |||
$.fn.tooltip = old | |||
return this | |||
} | |||
}(jQuery); |
@@ -1,32 +0,0 @@ | |||
{ | |||
"name": "clipboard", | |||
"version": "1.7.1", | |||
"description": "Modern copy to clipboard. No Flash. Just 2kb", | |||
"license": "MIT", | |||
"main": "dist/clipboard.js", | |||
"ignore": [ | |||
"/.*/", | |||
"/demo/", | |||
"/test/", | |||
"/.*", | |||
"/bower.json", | |||
"/karma.conf.js", | |||
"/src", | |||
"/lib" | |||
], | |||
"keywords": [ | |||
"clipboard", | |||
"copy", | |||
"cut" | |||
], | |||
"homepage": "https://github.com/zenorocha/clipboard.js", | |||
"_release": "1.7.1", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "v1.7.1", | |||
"commit": "b6e6b80ab07eab03ce0d277515b3ed540773a330" | |||
}, | |||
"_source": "https://github.com/zenorocha/clipboard.js.git", | |||
"_target": "1.7.1", | |||
"_originalSource": "clipboard" | |||
} |
@@ -1,32 +0,0 @@ | |||
{ | |||
"name": "davclient.js", | |||
"version": "0.1.2", | |||
"authors": [ | |||
"Evert Pot <me@evertpot.com>" | |||
], | |||
"description": "A WebDAV, CalDAV and CardDAV client for browsers.", | |||
"main": "lib/client.js", | |||
"keywords": [ | |||
"webdav", | |||
"caldav", | |||
"carddav" | |||
], | |||
"license": "MIT", | |||
"homepage": "http://sabre.io/", | |||
"ignore": [ | |||
"**/.*", | |||
"node_modules", | |||
"bower_components", | |||
"test", | |||
"tests" | |||
], | |||
"_release": "0.1.2", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "0.1.2", | |||
"commit": "c735ca284175c6f0419a2dd73de43de611afdb8f" | |||
}, | |||
"_source": "https://github.com/evert/davclient.js.git", | |||
"_target": "0.1.2", | |||
"_originalSource": "https://github.com/evert/davclient.js.git" | |||
} |
@@ -1,27 +0,0 @@ | |||
Copyright (C) 2013-2014 fruux GmbH (https://fruux.com/) | |||
All rights reserved. | |||
Redistribution and use in source and binary forms, with or without modification, | |||
are permitted provided that the following conditions are met: | |||
* Redistributions of source code must retain the above copyright notice, | |||
this list of conditions and the following disclaimer. | |||
* Redistributions in binary form must reproduce the above copyright notice, | |||
this list of conditions and the following disclaimer in the documentation | |||
and/or other materials provided with the distribution. | |||
* Neither the name Sabre nor the names of its contributors | |||
may be used to endorse or promote products derived from this software | |||
without specific prior written permission. | |||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |||
POSSIBILITY OF SUCH DAMAGE. |
@@ -1,462 +0,0 @@ | |||
/* | |||
* vim: expandtab shiftwidth=4 softtabstop=4 | |||
*/ | |||
/* global dav */ | |||
if (typeof dav == 'undefined') { dav = {}; }; | |||
dav._XML_CHAR_MAP = { | |||
'<': '<', | |||
'>': '>', | |||
'&': '&', | |||
'"': '"', | |||
"'": ''' | |||
}; | |||
dav._escapeXml = function(s) { | |||
return s.replace(/[<>&"']/g, function (ch) { | |||
return dav._XML_CHAR_MAP[ch]; | |||
}); | |||
}; | |||
dav.Client = function(options) { | |||
var i; | |||
for(i in options) { | |||
this[i] = options[i]; | |||
} | |||
}; | |||
dav.Client.prototype = { | |||
baseUrl : null, | |||
userName : null, | |||
password : null, | |||
xmlNamespaces : { | |||
'DAV:' : 'd' | |||
}, | |||
/** | |||
* Generates a propFind request. | |||
* | |||
* @param {string} url Url to do the propfind request on | |||
* @param {Array} properties List of properties to retrieve. | |||
* @param {Object} [headers] headers | |||
* @return {Promise} | |||
*/ | |||
propFind : function(url, properties, depth, headers) { | |||
if(typeof depth == "undefined") { | |||
depth = 0; | |||
} | |||
headers = headers || {}; | |||
headers['Depth'] = depth; | |||
headers['Content-Type'] = 'application/xml; charset=utf-8'; | |||
var body = | |||
'<?xml version="1.0"?>\n' + | |||
'<d:propfind '; | |||
var namespace; | |||
for (namespace in this.xmlNamespaces) { | |||
body += ' xmlns:' + this.xmlNamespaces[namespace] + '="' + namespace + '"'; | |||
} | |||
body += '>\n' + | |||
' <d:prop>\n'; | |||
for(var ii in properties) { | |||
if (!properties.hasOwnProperty(ii)) { | |||
continue; | |||
} | |||
var property = this.parseClarkNotation(properties[ii]); | |||
if (this.xmlNamespaces[property.namespace]) { | |||
body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\n'; | |||
} else { | |||
body+=' <x:' + property.name + ' xmlns:x="' + property.namespace + '" />\n'; | |||
} | |||
} | |||
body+=' </d:prop>\n'; | |||
body+='</d:propfind>'; | |||
return this.request('PROPFIND', url, headers, body).then( | |||
function(result) { | |||
if (depth===0) { | |||
return { | |||
status: result.status, | |||
body: result.body[0], | |||
xhr: result.xhr | |||
}; | |||
} else { | |||
return { | |||
status: result.status, | |||
body: result.body, | |||
xhr: result.xhr | |||
}; | |||
} | |||
}.bind(this) | |||
); | |||
}, | |||
/** | |||
* Renders a "d:set" block for the given properties. | |||
* | |||
* @param {Object.<String,String>} properties | |||
* @return {String} XML "<d:set>" block | |||
*/ | |||
_renderPropSet: function(properties) { | |||
var body = ' <d:set>\n' + | |||
' <d:prop>\n'; | |||
for(var ii in properties) { | |||
if (!properties.hasOwnProperty(ii)) { | |||
continue; | |||
} | |||
var property = this.parseClarkNotation(ii); | |||
var propName; | |||
var propValue = properties[ii]; | |||
if (this.xmlNamespaces[property.namespace]) { | |||
propName = this.xmlNamespaces[property.namespace] + ':' + property.name; | |||
} else { | |||
propName = 'x:' + property.name + ' xmlns:x="' + property.namespace + '"'; | |||
} | |||
// FIXME: hard-coded for now until we allow properties to | |||
// specify whether to be escaped or not | |||
if (propName !== 'd:resourcetype') { | |||
propValue = dav._escapeXml(propValue); | |||
} | |||
body += ' <' + propName + '>' + propValue + '</' + propName + '>\n'; | |||
} | |||
body +=' </d:prop>\n'; | |||
body +=' </d:set>\n'; | |||
return body; | |||
}, | |||
/** | |||
* Generates a propPatch request. | |||
* | |||
* @param {string} url Url to do the proppatch request on | |||
* @param {Object.<String,String>} properties List of properties to store. | |||
* @param {Object} [headers] headers | |||
* @return {Promise} | |||
*/ | |||
propPatch : function(url, properties, headers) { | |||
headers = headers || {}; | |||
headers['Content-Type'] = 'application/xml; charset=utf-8'; | |||
var body = | |||
'<?xml version="1.0"?>\n' + | |||
'<d:propertyupdate '; | |||
var namespace; | |||
for (namespace in this.xmlNamespaces) { | |||
body += ' xmlns:' + this.xmlNamespaces[namespace] + '="' + namespace + '"'; | |||
} | |||
body += '>\n' + this._renderPropSet(properties); | |||
body += '</d:propertyupdate>'; | |||
return this.request('PROPPATCH', url, headers, body).then( | |||
function(result) { | |||
return { | |||
status: result.status, | |||
body: result.body, | |||
xhr: result.xhr | |||
}; | |||
}.bind(this) | |||
); | |||
}, | |||
/** | |||
* Generates a MKCOL request. | |||
* If attributes are given, it will use an extended MKCOL request. | |||
* | |||
* @param {string} url Url to do the proppatch request on | |||
* @param {Object.<String,String>} [properties] list of properties to store. | |||
* @param {Object} [headers] headers | |||
* @return {Promise} | |||
*/ | |||
mkcol : function(url, properties, headers) { | |||
var body = ''; | |||
headers = headers || {}; | |||
headers['Content-Type'] = 'application/xml; charset=utf-8'; | |||
if (properties) { | |||
body = | |||
'<?xml version="1.0"?>\n' + | |||
'<d:mkcol'; | |||
var namespace; | |||
for (namespace in this.xmlNamespaces) { | |||
body += ' xmlns:' + this.xmlNamespaces[namespace] + '="' + namespace + '"'; | |||
} | |||
body += '>\n' + this._renderPropSet(properties); | |||
body +='</d:mkcol>'; | |||
} | |||
return this.request('MKCOL', url, headers, body).then( | |||
function(result) { | |||
return { | |||
status: result.status, | |||
body: result.body, | |||
xhr: result.xhr | |||
}; | |||
}.bind(this) | |||
); | |||
}, | |||
/** | |||
* Performs a HTTP request, and returns a Promise | |||
* | |||
* @param {string} method HTTP method | |||
* @param {string} url Relative or absolute url | |||
* @param {Object} headers HTTP headers as an object. | |||
* @param {string} body HTTP request body. | |||
* @return {Promise} | |||
*/ | |||
request : function(method, url, headers, body) { | |||
var self = this; | |||
var xhr = this.xhrProvider(); | |||
headers = headers || {}; | |||
if (this.userName) { | |||
headers['Authorization'] = 'Basic ' + btoa(this.userName + ':' + this.password); | |||
// xhr.open(method, this.resolveUrl(url), true, this.userName, this.password); | |||
} | |||
xhr.open(method, this.resolveUrl(url), true); | |||
var ii; | |||
for(ii in headers) { | |||
xhr.setRequestHeader(ii, headers[ii]); | |||
} | |||
// Work around for edge | |||
if (body === undefined) { | |||
xhr.send(); | |||
} else { | |||
xhr.send(body); | |||
} | |||
return new Promise(function(fulfill, reject) { | |||
xhr.onreadystatechange = function() { | |||
if (xhr.readyState !== 4) { | |||
return; | |||
} | |||
var resultBody = xhr.response; | |||
if (xhr.status === 207) { | |||
resultBody = self.parseMultiStatus(xhr.response); | |||
} | |||
fulfill({ | |||
body: resultBody, | |||
status: xhr.status, | |||
xhr: xhr | |||
}); | |||
}; | |||
xhr.ontimeout = function() { | |||
reject(new Error('Timeout exceeded')); | |||
}; | |||
}); | |||
}, | |||
/** | |||
* Returns an XMLHttpRequest object. | |||
* | |||
* This is in its own method, so it can be easily overridden. | |||
* | |||
* @return {XMLHttpRequest} | |||
*/ | |||
xhrProvider : function() { | |||
return new XMLHttpRequest(); | |||
}, | |||
/** | |||
* Parses a property node. | |||
* | |||
* Either returns a string if the node only contains text, or returns an | |||
* array of non-text subnodes. | |||
* | |||
* @param {Object} propNode node to parse | |||
* @return {string|Array} text content as string or array of subnodes, excluding text nodes | |||
*/ | |||
_parsePropNode: function(propNode) { | |||
var content = null; | |||
if (propNode.childNodes && propNode.childNodes.length > 0) { | |||
var subNodes = []; | |||
// filter out text nodes | |||
for (var j = 0; j < propNode.childNodes.length; j++) { | |||
var node = propNode.childNodes[j]; | |||
if (node.nodeType === 1) { | |||
subNodes.push(node); | |||
} | |||
} | |||
if (subNodes.length) { | |||
content = subNodes; | |||
} | |||
} | |||
return content || propNode.textContent || propNode.text || ''; | |||
}, | |||
/** | |||
* Parses a multi-status response body. | |||
* | |||
* @param {string} xmlBody | |||
* @param {Array} | |||
*/ | |||
parseMultiStatus : function(xmlBody) { | |||
var parser = new DOMParser(); | |||
var doc = parser.parseFromString(xmlBody, "application/xml"); | |||
var resolver = function(foo) { | |||
var ii; | |||
for(ii in this.xmlNamespaces) { | |||
if (this.xmlNamespaces[ii] === foo) { | |||
return ii; | |||
} | |||
} | |||
}.bind(this); | |||
var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null); | |||
var result = []; | |||
var responseNode = responseIterator.iterateNext(); | |||
while(responseNode) { | |||
var response = { | |||
href : null, | |||
propStat : [] | |||
}; | |||
response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue; | |||
var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null); | |||
var propStatNode = propStatIterator.iterateNext(); | |||
while(propStatNode) { | |||
var propStat = { | |||
status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue, | |||
properties : {}, | |||
}; | |||
var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null); | |||
var propNode = propIterator.iterateNext(); | |||
while(propNode) { | |||
var content = this._parsePropNode(propNode); | |||
propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content; | |||
propNode = propIterator.iterateNext(); | |||
} | |||
response.propStat.push(propStat); | |||
propStatNode = propStatIterator.iterateNext(); | |||
} | |||
result.push(response); | |||
responseNode = responseIterator.iterateNext(); | |||
} | |||
return result; | |||
}, | |||
/** | |||
* Takes a relative url, and maps it to an absolute url, using the baseUrl | |||
* | |||
* @param {string} url | |||
* @return {string} | |||
*/ | |||
resolveUrl : function(url) { | |||
// Note: this is rudamentary.. not sure yet if it handles every case. | |||
if (/^https?:\/\//i.test(url)) { | |||
// absolute | |||
return url; | |||
} | |||
var baseParts = this.parseUrl(this.baseUrl); | |||
if (url.charAt('/')) { | |||
// Url starts with a slash | |||
return baseParts.root + url; | |||
} | |||
// Url does not start with a slash, we need grab the base url right up until the last slash. | |||
var newUrl = baseParts.root + '/'; | |||
if (baseParts.path.lastIndexOf('/')!==-1) { | |||
newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/'; | |||
} | |||
newUrl+=url; | |||
return url; | |||
}, | |||
/** | |||
* Parses a url and returns its individual components. | |||
* | |||
* @param {String} url | |||
* @return {Object} | |||
*/ | |||
parseUrl : function(url) { | |||
var parts = url.match(/^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/); | |||
var result = { | |||
url : parts[0], | |||
scheme : parts[1], | |||
host : parts[3], | |||
port : parts[4], | |||
path : parts[5], | |||
query : parts[6], | |||
fragment : parts[7], | |||
}; | |||
result.root = | |||
result.scheme + '://' + | |||
result.host + | |||
(result.port ? ':' + result.port : ''); | |||
return result; | |||
}, | |||
parseClarkNotation : function(propertyName) { | |||
var result = propertyName.match(/^{([^}]+)}(.*)$/); | |||
if (!result) { | |||
return; | |||
} | |||
return { | |||
name : result[2], | |||
namespace : result[1] | |||
}; | |||
} | |||
}; | |||
@@ -1,39 +0,0 @@ | |||
{ | |||
"name": "es6-promise", | |||
"namespace": "Promise", | |||
"version": "2.3.0", | |||
"description": "A polyfill for ES6-style Promises, tracking rsvp", | |||
"authors": [ | |||
"Stefan Penner <stefan.penner@gmail.com>" | |||
], | |||
"main": "dist/es6-promise.js", | |||
"keywords": [ | |||
"promise" | |||
], | |||
"repository": { | |||
"type": "git", | |||
"url": "git://github.com/jakearchibald/ES6-Promises.git" | |||
}, | |||
"bugs": { | |||
"url": "https://github.com/jakearchibald/ES6-Promises/issues" | |||
}, | |||
"license": "MIT", | |||
"ignore": [ | |||
"node_modules", | |||
"bower_components", | |||
"test", | |||
"tests", | |||
"vendor", | |||
"tasks" | |||
], | |||
"homepage": "https://github.com/jakearchibald/es6-promise", | |||
"_release": "2.3.0", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "2.3.0", | |||
"commit": "fcbab11a1a981eb2290bfff89017cb764335a2a5" | |||
}, | |||
"_source": "https://github.com/jakearchibald/es6-promise.git", | |||
"_target": "2.3.0", | |||
"_originalSource": "https://github.com/jakearchibald/es6-promise.git" | |||
} |
@@ -1,19 +0,0 @@ | |||
Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors | |||
Permission is hereby granted, free of charge, to any person obtaining a copy of | |||
this software and associated documentation files (the "Software"), to deal in | |||
the Software without restriction, including without limitation the rights to | |||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | |||
of the Software, and to permit persons to whom the Software is furnished to do | |||
so, subject to the following conditions: | |||
The above copyright notice and this permission notice shall be included in all | |||
copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
SOFTWARE. |
@@ -1,972 +0,0 @@ | |||
/*! | |||
* @overview es6-promise - a tiny implementation of Promises/A+. | |||
* @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) | |||
* @license Licensed under MIT license | |||
* See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE | |||
* @version 2.3.0 | |||
*/ | |||
(function() { | |||
"use strict"; | |||
function lib$es6$promise$utils$$objectOrFunction(x) { | |||
return typeof x === 'function' || (typeof x === 'object' && x !== null); | |||
} | |||
function lib$es6$promise$utils$$isFunction(x) { | |||
return typeof x === 'function'; | |||
} | |||
function lib$es6$promise$utils$$isMaybeThenable(x) { | |||
return typeof x === 'object' && x !== null; | |||
} | |||
var lib$es6$promise$utils$$_isArray; | |||
if (!Array.isArray) { | |||
lib$es6$promise$utils$$_isArray = function (x) { | |||
return Object.prototype.toString.call(x) === '[object Array]'; | |||
}; | |||
} else { | |||
lib$es6$promise$utils$$_isArray = Array.isArray; | |||
} | |||
var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray; | |||
var lib$es6$promise$asap$$len = 0; | |||
var lib$es6$promise$asap$$toString = {}.toString; | |||
var lib$es6$promise$asap$$vertxNext; | |||
var lib$es6$promise$asap$$customSchedulerFn; | |||
var lib$es6$promise$asap$$asap = function asap(callback, arg) { | |||
lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback; | |||
lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg; | |||
lib$es6$promise$asap$$len += 2; | |||
if (lib$es6$promise$asap$$len === 2) { | |||
// If len is 2, that means that we need to schedule an async flush. | |||
// If additional callbacks are queued before the queue is flushed, they | |||
// will be processed by this flush that we are scheduling. | |||
if (lib$es6$promise$asap$$customSchedulerFn) { | |||
lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush); | |||
} else { | |||
lib$es6$promise$asap$$scheduleFlush(); | |||
} | |||
} | |||
} | |||
function lib$es6$promise$asap$$setScheduler(scheduleFn) { | |||
lib$es6$promise$asap$$customSchedulerFn = scheduleFn; | |||
} | |||
function lib$es6$promise$asap$$setAsap(asapFn) { | |||
lib$es6$promise$asap$$asap = asapFn; | |||
} | |||
var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined; | |||
var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {}; | |||
var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver; | |||
var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; | |||
// test for web worker but not in IE10 | |||
var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' && | |||
typeof importScripts !== 'undefined' && | |||
typeof MessageChannel !== 'undefined'; | |||
// node | |||
function lib$es6$promise$asap$$useNextTick() { | |||
var nextTick = process.nextTick; | |||
// node version 0.10.x displays a deprecation warning when nextTick is used recursively | |||
// setImmediate should be used instead instead | |||
var version = process.versions.node.match(/^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/); | |||
if (Array.isArray(version) && version[1] === '0' && version[2] === '10') { | |||
nextTick = setImmediate; | |||
} | |||
return function() { | |||
nextTick(lib$es6$promise$asap$$flush); | |||
}; | |||
} | |||
// vertx | |||
function lib$es6$promise$asap$$useVertxTimer() { | |||
return function() { | |||
lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush); | |||
}; | |||
} | |||
function lib$es6$promise$asap$$useMutationObserver() { | |||
var iterations = 0; | |||
var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush); | |||
var node = document.createTextNode(''); | |||
observer.observe(node, { characterData: true }); | |||
return function() { | |||
node.data = (iterations = ++iterations % 2); | |||
}; | |||
} | |||
// web worker | |||
function lib$es6$promise$asap$$useMessageChannel() { | |||
var channel = new MessageChannel(); | |||
channel.port1.onmessage = lib$es6$promise$asap$$flush; | |||
return function () { | |||
channel.port2.postMessage(0); | |||
}; | |||
} | |||
function lib$es6$promise$asap$$useSetTimeout() { | |||
return function() { | |||
setTimeout(lib$es6$promise$asap$$flush, 1); | |||
}; | |||
} | |||
var lib$es6$promise$asap$$queue = new Array(1000); | |||
function lib$es6$promise$asap$$flush() { | |||
for (var i = 0; i < lib$es6$promise$asap$$len; i+=2) { | |||
var callback = lib$es6$promise$asap$$queue[i]; | |||
var arg = lib$es6$promise$asap$$queue[i+1]; | |||
callback(arg); | |||
lib$es6$promise$asap$$queue[i] = undefined; | |||
lib$es6$promise$asap$$queue[i+1] = undefined; | |||
} | |||
lib$es6$promise$asap$$len = 0; | |||
} | |||
function lib$es6$promise$asap$$attemptVertex() { | |||
try { | |||
var r = require; | |||
var vertx = r('vertx'); | |||
lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext; | |||
return lib$es6$promise$asap$$useVertxTimer(); | |||
} catch(e) { | |||
return lib$es6$promise$asap$$useSetTimeout(); | |||
} | |||
} | |||
var lib$es6$promise$asap$$scheduleFlush; | |||
// Decide what async method to use to triggering processing of queued callbacks: | |||
if (lib$es6$promise$asap$$isNode) { | |||
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick(); | |||
} else if (lib$es6$promise$asap$$BrowserMutationObserver) { | |||
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver(); | |||
} else if (lib$es6$promise$asap$$isWorker) { | |||
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel(); | |||
} else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') { | |||
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertex(); | |||
} else { | |||
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout(); | |||
} | |||
function lib$es6$promise$$internal$$noop() {} | |||
var lib$es6$promise$$internal$$PENDING = void 0; | |||
var lib$es6$promise$$internal$$FULFILLED = 1; | |||
var lib$es6$promise$$internal$$REJECTED = 2; | |||
var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject(); | |||
function lib$es6$promise$$internal$$selfFullfillment() { | |||
return new TypeError("You cannot resolve a promise with itself"); | |||
} | |||
function lib$es6$promise$$internal$$cannotReturnOwn() { | |||
return new TypeError('A promises callback cannot return that same promise.'); | |||
} | |||
function lib$es6$promise$$internal$$getThen(promise) { | |||
try { | |||
return promise.then; | |||
} catch(error) { | |||
lib$es6$promise$$internal$$GET_THEN_ERROR.error = error; | |||
return lib$es6$promise$$internal$$GET_THEN_ERROR; | |||
} | |||
} | |||
function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) { | |||
try { | |||
then.call(value, fulfillmentHandler, rejectionHandler); | |||
} catch(e) { | |||
return e; | |||
} | |||
} | |||
function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) { | |||
lib$es6$promise$asap$$asap(function(promise) { | |||
var sealed = false; | |||
var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) { | |||
if (sealed) { return; } | |||
sealed = true; | |||
if (thenable !== value) { | |||
lib$es6$promise$$internal$$resolve(promise, value); | |||
} else { | |||
lib$es6$promise$$internal$$fulfill(promise, value); | |||
} | |||
}, function(reason) { | |||
if (sealed) { return; } | |||
sealed = true; | |||
lib$es6$promise$$internal$$reject(promise, reason); | |||
}, 'Settle: ' + (promise._label || ' unknown promise')); | |||
if (!sealed && error) { | |||
sealed = true; | |||
lib$es6$promise$$internal$$reject(promise, error); | |||
} | |||
}, promise); | |||
} | |||
function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) { | |||
if (thenable._state === lib$es6$promise$$internal$$FULFILLED) { | |||
lib$es6$promise$$internal$$fulfill(promise, thenable._result); | |||
} else if (thenable._state === lib$es6$promise$$internal$$REJECTED) { | |||
lib$es6$promise$$internal$$reject(promise, thenable._result); | |||
} else { | |||
lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) { | |||
lib$es6$promise$$internal$$resolve(promise, value); | |||
}, function(reason) { | |||
lib$es6$promise$$internal$$reject(promise, reason); | |||
}); | |||
} | |||
} | |||
function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable) { | |||
if (maybeThenable.constructor === promise.constructor) { | |||
lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable); | |||
} else { | |||
var then = lib$es6$promise$$internal$$getThen(maybeThenable); | |||
if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) { | |||
lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error); | |||
} else if (then === undefined) { | |||
lib$es6$promise$$internal$$fulfill(promise, maybeThenable); | |||
} else if (lib$es6$promise$utils$$isFunction(then)) { | |||
lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then); | |||
} else { | |||
lib$es6$promise$$internal$$fulfill(promise, maybeThenable); | |||
} | |||
} | |||
} | |||
function lib$es6$promise$$internal$$resolve(promise, value) { | |||
if (promise === value) { | |||
lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFullfillment()); | |||
} else if (lib$es6$promise$utils$$objectOrFunction(value)) { | |||
lib$es6$promise$$internal$$handleMaybeThenable(promise, value); | |||
} else { | |||
lib$es6$promise$$internal$$fulfill(promise, value); | |||
} | |||
} | |||
function lib$es6$promise$$internal$$publishRejection(promise) { | |||
if (promise._onerror) { | |||
promise._onerror(promise._result); | |||
} | |||
lib$es6$promise$$internal$$publish(promise); | |||
} | |||
function lib$es6$promise$$internal$$fulfill(promise, value) { | |||
if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; } | |||
promise._result = value; | |||
promise._state = lib$es6$promise$$internal$$FULFILLED; | |||
if (promise._subscribers.length !== 0) { | |||
lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise); | |||
} | |||
} | |||
function lib$es6$promise$$internal$$reject(promise, reason) { | |||
if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; } | |||
promise._state = lib$es6$promise$$internal$$REJECTED; | |||
promise._result = reason; | |||
lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise); | |||
} | |||
function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) { | |||
var subscribers = parent._subscribers; | |||
var length = subscribers.length; | |||
parent._onerror = null; | |||
subscribers[length] = child; | |||
subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment; | |||
subscribers[length + lib$es6$promise$$internal$$REJECTED] = onRejection; | |||
if (length === 0 && parent._state) { | |||
lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent); | |||
} | |||
} | |||
function lib$es6$promise$$internal$$publish(promise) { | |||
var subscribers = promise._subscribers; | |||
var settled = promise._state; | |||
if (subscribers.length === 0) { return; } | |||
var child, callback, detail = promise._result; | |||
for (var i = 0; i < subscribers.length; i += 3) { | |||
child = subscribers[i]; | |||
callback = subscribers[i + settled]; | |||
if (child) { | |||
lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail); | |||
} else { | |||
callback(detail); | |||
} | |||
} | |||
promise._subscribers.length = 0; | |||
} | |||
function lib$es6$promise$$internal$$ErrorObject() { | |||
this.error = null; | |||
} | |||
var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject(); | |||
function lib$es6$promise$$internal$$tryCatch(callback, detail) { | |||
try { | |||
return callback(detail); | |||
} catch(e) { | |||
lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e; | |||
return lib$es6$promise$$internal$$TRY_CATCH_ERROR; | |||
} | |||
} | |||
function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) { | |||
var hasCallback = lib$es6$promise$utils$$isFunction(callback), | |||
value, error, succeeded, failed; | |||
if (hasCallback) { | |||
value = lib$es6$promise$$internal$$tryCatch(callback, detail); | |||
if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) { | |||
failed = true; | |||
error = value.error; | |||
value = null; | |||
} else { | |||
succeeded = true; | |||
} | |||
if (promise === value) { | |||
lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn()); | |||
return; | |||
} | |||
} else { | |||
value = detail; | |||
succeeded = true; | |||
} | |||
if (promise._state !== lib$es6$promise$$internal$$PENDING) { | |||
// noop | |||
} else if (hasCallback && succeeded) { | |||
lib$es6$promise$$internal$$resolve(promise, value); | |||
} else if (failed) { | |||
lib$es6$promise$$internal$$reject(promise, error); | |||
} else if (settled === lib$es6$promise$$internal$$FULFILLED) { | |||
lib$es6$promise$$internal$$fulfill(promise, value); | |||
} else if (settled === lib$es6$promise$$internal$$REJECTED) { | |||
lib$es6$promise$$internal$$reject(promise, value); | |||
} | |||
} | |||
function lib$es6$promise$$internal$$initializePromise(promise, resolver) { | |||
try { | |||
resolver(function resolvePromise(value){ | |||
lib$es6$promise$$internal$$resolve(promise, value); | |||
}, function rejectPromise(reason) { | |||
lib$es6$promise$$internal$$reject(promise, reason); | |||
}); | |||
} catch(e) { | |||
lib$es6$promise$$internal$$reject(promise, e); | |||
} | |||
} | |||
function lib$es6$promise$enumerator$$Enumerator(Constructor, input) { | |||
var enumerator = this; | |||
enumerator._instanceConstructor = Constructor; | |||
enumerator.promise = new Constructor(lib$es6$promise$$internal$$noop); | |||
if (enumerator._validateInput(input)) { | |||
enumerator._input = input; | |||
enumerator.length = input.length; | |||
enumerator._remaining = input.length; | |||
enumerator._init(); | |||
if (enumerator.length === 0) { | |||
lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result); | |||
} else { | |||
enumerator.length = enumerator.length || 0; | |||
enumerator._enumerate(); | |||
if (enumerator._remaining === 0) { | |||
lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result); | |||
} | |||
} | |||
} else { | |||
lib$es6$promise$$internal$$reject(enumerator.promise, enumerator._validationError()); | |||
} | |||
} | |||
lib$es6$promise$enumerator$$Enumerator.prototype._validateInput = function(input) { | |||
return lib$es6$promise$utils$$isArray(input); | |||
}; | |||
lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() { | |||
return new Error('Array Methods must be provided an Array'); | |||
}; | |||
lib$es6$promise$enumerator$$Enumerator.prototype._init = function() { | |||
this._result = new Array(this.length); | |||
}; | |||
var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator; | |||
lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() { | |||
var enumerator = this; | |||
var length = enumerator.length; | |||
var promise = enumerator.promise; | |||
var input = enumerator._input; | |||
for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) { | |||
enumerator._eachEntry(input[i], i); | |||
} | |||
}; | |||
lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) { | |||
var enumerator = this; | |||
var c = enumerator._instanceConstructor; | |||
if (lib$es6$promise$utils$$isMaybeThenable(entry)) { | |||
if (entry.constructor === c && entry._state !== lib$es6$promise$$internal$$PENDING) { | |||
entry._onerror = null; | |||
enumerator._settledAt(entry._state, i, entry._result); | |||
} else { | |||
enumerator._willSettleAt(c.resolve(entry), i); | |||
} | |||
} else { | |||
enumerator._remaining--; | |||
enumerator._result[i] = entry; | |||
} | |||
}; | |||
lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) { | |||
var enumerator = this; | |||
var promise = enumerator.promise; | |||
if (promise._state === lib$es6$promise$$internal$$PENDING) { | |||
enumerator._remaining--; | |||
if (state === lib$es6$promise$$internal$$REJECTED) { | |||
lib$es6$promise$$internal$$reject(promise, value); | |||
} else { | |||
enumerator._result[i] = value; | |||
} | |||
} | |||
if (enumerator._remaining === 0) { | |||
lib$es6$promise$$internal$$fulfill(promise, enumerator._result); | |||
} | |||
}; | |||
lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) { | |||
var enumerator = this; | |||
lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) { | |||
enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value); | |||
}, function(reason) { | |||
enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason); | |||
}); | |||
}; | |||
function lib$es6$promise$promise$all$$all(entries) { | |||
return new lib$es6$promise$enumerator$$default(this, entries).promise; | |||
} | |||
var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all; | |||
function lib$es6$promise$promise$race$$race(entries) { | |||
/*jshint validthis:true */ | |||
var Constructor = this; | |||
var promise = new Constructor(lib$es6$promise$$internal$$noop); | |||
if (!lib$es6$promise$utils$$isArray(entries)) { | |||
lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.')); | |||
return promise; | |||
} | |||
var length = entries.length; | |||
function onFulfillment(value) { | |||
lib$es6$promise$$internal$$resolve(promise, value); | |||
} | |||
function onRejection(reason) { | |||
lib$es6$promise$$internal$$reject(promise, reason); | |||
} | |||
for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) { | |||
lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection); | |||
} | |||
return promise; | |||
} | |||
var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race; | |||
function lib$es6$promise$promise$resolve$$resolve(object) { | |||
/*jshint validthis:true */ | |||
var Constructor = this; | |||
if (object && typeof object === 'object' && object.constructor === Constructor) { | |||
return object; | |||
} | |||
var promise = new Constructor(lib$es6$promise$$internal$$noop); | |||
lib$es6$promise$$internal$$resolve(promise, object); | |||
return promise; | |||
} | |||
var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve; | |||
function lib$es6$promise$promise$reject$$reject(reason) { | |||
/*jshint validthis:true */ | |||
var Constructor = this; | |||
var promise = new Constructor(lib$es6$promise$$internal$$noop); | |||
lib$es6$promise$$internal$$reject(promise, reason); | |||
return promise; | |||
} | |||
var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject; | |||
var lib$es6$promise$promise$$counter = 0; | |||
function lib$es6$promise$promise$$needsResolver() { | |||
throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); | |||
} | |||
function lib$es6$promise$promise$$needsNew() { | |||
throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); | |||
} | |||
var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise; | |||
/** | |||
Promise objects represent the eventual result of an asynchronous operation. The | |||
primary way of interacting with a promise is through its `then` method, which | |||
registers callbacks to receive either a promise's eventual value or the reason | |||
why the promise cannot be fulfilled. | |||
Terminology | |||
----------- | |||
- `promise` is an object or function with a `then` method whose behavior conforms to this specification. | |||
- `thenable` is an object or function that defines a `then` method. | |||
- `value` is any legal JavaScript value (including undefined, a thenable, or a promise). | |||
- `exception` is a value that is thrown using the throw statement. | |||
- `reason` is a value that indicates why a promise was rejected. | |||
- `settled` the final resting state of a promise, fulfilled or rejected. | |||
A promise can be in one of three states: pending, fulfilled, or rejected. | |||
Promises that are fulfilled have a fulfillment value and are in the fulfilled | |||
state. Promises that are rejected have a rejection reason and are in the | |||
rejected state. A fulfillment value is never a thenable. | |||
Promises can also be said to *resolve* a value. If this value is also a | |||
promise, then the original promise's settled state will match the value's | |||
settled state. So a promise that *resolves* a promise that rejects will | |||
itself reject, and a promise that *resolves* a promise that fulfills will | |||
itself fulfill. | |||
Basic Usage: | |||
------------ | |||
```js | |||
var promise = new Promise(function(resolve, reject) { | |||
// on success | |||
resolve(value); | |||
// on failure | |||
reject(reason); | |||
}); | |||
promise.then(function(value) { | |||
// on fulfillment | |||
}, function(reason) { | |||
// on rejection | |||
}); | |||
``` | |||
Advanced Usage: | |||
--------------- | |||
Promises shine when abstracting away asynchronous interactions such as | |||
`XMLHttpRequest`s. | |||
```js | |||
function getJSON(url) { | |||
return new Promise(function(resolve, reject){ | |||
var xhr = new XMLHttpRequest(); | |||
xhr.open('GET', url); | |||
xhr.onreadystatechange = handler; | |||
xhr.responseType = 'json'; | |||
xhr.setRequestHeader('Accept', 'application/json'); | |||
xhr.send(); | |||
function handler() { | |||
if (this.readyState === this.DONE) { | |||
if (this.status === 200) { | |||
resolve(this.response); | |||
} else { | |||
reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); | |||
} | |||
} | |||
}; | |||
}); | |||
} | |||
getJSON('/posts.json').then(function(json) { | |||
// on fulfillment | |||
}, function(reason) { | |||
// on rejection | |||
}); | |||
``` | |||
Unlike callbacks, promises are great composable primitives. | |||
```js | |||
Promise.all([ | |||
getJSON('/posts'), | |||
getJSON('/comments') | |||
]).then(function(values){ | |||
values[0] // => postsJSON | |||
values[1] // => commentsJSON | |||
return values; | |||
}); | |||
``` | |||
@class Promise | |||
@param {function} resolver | |||
Useful for tooling. | |||
@constructor | |||
*/ | |||
function lib$es6$promise$promise$$Promise(resolver) { | |||
this._id = lib$es6$promise$promise$$counter++; | |||
this._state = undefined; | |||
this._result = undefined; | |||
this._subscribers = []; | |||
if (lib$es6$promise$$internal$$noop !== resolver) { | |||
if (!lib$es6$promise$utils$$isFunction(resolver)) { | |||
lib$es6$promise$promise$$needsResolver(); | |||
} | |||
if (!(this instanceof lib$es6$promise$promise$$Promise)) { | |||
lib$es6$promise$promise$$needsNew(); | |||
} | |||
lib$es6$promise$$internal$$initializePromise(this, resolver); | |||
} | |||
} | |||
lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default; | |||
lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default; | |||
lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default; | |||
lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default; | |||
lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler; | |||
lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap; | |||
lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap; | |||
lib$es6$promise$promise$$Promise.prototype = { | |||
constructor: lib$es6$promise$promise$$Promise, | |||
/** | |||
The primary way of interacting with a promise is through its `then` method, | |||
which registers callbacks to receive either a promise's eventual value or the | |||
reason why the promise cannot be fulfilled. | |||
```js | |||
findUser().then(function(user){ | |||
// user is available | |||
}, function(reason){ | |||
// user is unavailable, and you are given the reason why | |||
}); | |||
``` | |||
Chaining | |||
-------- | |||
The return value of `then` is itself a promise. This second, 'downstream' | |||
promise is resolved with the return value of the first promise's fulfillment | |||
or rejection handler, or rejected if the handler throws an exception. | |||
```js | |||
findUser().then(function (user) { | |||
return user.name; | |||
}, function (reason) { | |||
return 'default name'; | |||
}).then(function (userName) { | |||
// If `findUser` fulfilled, `userName` will be the user's name, otherwise it | |||
// will be `'default name'` | |||
}); | |||
findUser().then(function (user) { | |||
throw new Error('Found user, but still unhappy'); | |||
}, function (reason) { | |||
throw new Error('`findUser` rejected and we're unhappy'); | |||
}).then(function (value) { | |||
// never reached | |||
}, function (reason) { | |||
// if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'. | |||
// If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'. | |||
}); | |||
``` | |||
If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream. | |||
```js | |||
findUser().then(function (user) { | |||
throw new PedagogicalException('Upstream error'); | |||
}).then(function (value) { | |||
// never reached | |||
}).then(function (value) { | |||
// never reached | |||
}, function (reason) { | |||
// The `PedgagocialException` is propagated all the way down to here | |||
}); | |||
``` | |||
Assimilation | |||
------------ | |||
Sometimes the value you want to propagate to a downstream promise can only be | |||
retrieved asynchronously. This can be achieved by returning a promise in the | |||
fulfillment or rejection handler. The downstream promise will then be pending | |||
until the returned promise is settled. This is called *assimilation*. | |||
```js | |||
findUser().then(function (user) { | |||
return findCommentsByAuthor(user); | |||
}).then(function (comments) { | |||
// The user's comments are now available | |||
}); | |||
``` | |||
If the assimliated promise rejects, then the downstream promise will also reject. | |||
```js | |||
findUser().then(function (user) { | |||
return findCommentsByAuthor(user); | |||
}).then(function (comments) { | |||
// If `findCommentsByAuthor` fulfills, we'll have the value here | |||
}, function (reason) { | |||
// If `findCommentsByAuthor` rejects, we'll have the reason here | |||
}); | |||
``` | |||
Simple Example | |||
-------------- | |||
Synchronous Example | |||
```javascript | |||
var result; | |||
try { | |||
result = findResult(); | |||
// success | |||
} catch(reason) { | |||
// failure | |||
} | |||
``` | |||
Errback Example | |||
```js | |||
findResult(function(result, err){ | |||
if (err) { | |||
// failure | |||
} else { | |||
// success | |||
} | |||
}); | |||
``` | |||
Promise Example; | |||
```javascript | |||
findResult().then(function(result){ | |||
// success | |||
}, function(reason){ | |||
// failure | |||
}); | |||
``` | |||
Advanced Example | |||
-------------- | |||
Synchronous Example | |||
```javascript | |||
var author, books; | |||
try { | |||
author = findAuthor(); | |||
books = findBooksByAuthor(author); | |||
// success | |||
} catch(reason) { | |||
// failure | |||
} | |||
``` | |||
Errback Example | |||
```js | |||
function foundBooks(books) { | |||
} | |||
function failure(reason) { | |||
} | |||
findAuthor(function(author, err){ | |||
if (err) { | |||
failure(err); | |||
// failure | |||
} else { | |||
try { | |||
findBoooksByAuthor(author, function(books, err) { | |||
if (err) { | |||
failure(err); | |||
} else { | |||
try { | |||
foundBooks(books); | |||
} catch(reason) { | |||
failure(reason); | |||
} | |||
} | |||
}); | |||
} catch(error) { | |||
failure(err); | |||
} | |||
// success | |||
} | |||
}); | |||
``` | |||
Promise Example; | |||
```javascript | |||
findAuthor(). | |||
then(findBooksByAuthor). | |||
then(function(books){ | |||
// found books | |||
}).catch(function(reason){ | |||
// something went wrong | |||
}); | |||
``` | |||
@method then | |||
@param {Function} onFulfilled | |||
@param {Function} onRejected | |||
Useful for tooling. | |||
@return {Promise} | |||
*/ | |||
then: function(onFulfillment, onRejection) { | |||
var parent = this; | |||
var state = parent._state; | |||
if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) { | |||
return this; | |||
} | |||
var child = new this.constructor(lib$es6$promise$$internal$$noop); | |||
var result = parent._result; | |||
if (state) { | |||
var callback = arguments[state - 1]; | |||
lib$es6$promise$asap$$asap(function(){ | |||
lib$es6$promise$$internal$$invokeCallback(state, child, callback, result); | |||
}); | |||
} else { | |||
lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection); | |||
} | |||
return child; | |||
}, | |||
/** | |||
`catch` is simply sugar for `then(undefined, onRejection)` which makes it the same | |||
as the catch block of a try/catch statement. | |||
```js | |||
function findAuthor(){ | |||
throw new Error('couldn't find that author'); | |||
} | |||
// synchronous | |||
try { | |||
findAuthor(); | |||
} catch(reason) { | |||
// something went wrong | |||
} | |||
// async with promises | |||
findAuthor().catch(function(reason){ | |||
// something went wrong | |||
}); | |||
``` | |||
@method catch | |||
@param {Function} onRejection | |||
Useful for tooling. | |||
@return {Promise} | |||
*/ | |||
'catch': function(onRejection) { | |||
return this.then(null, onRejection); | |||
} | |||
}; | |||
function lib$es6$promise$polyfill$$polyfill() { | |||
var local; | |||
if (typeof global !== 'undefined') { | |||
local = global; | |||
} else if (typeof self !== 'undefined') { | |||
local = self; | |||
} else { | |||
try { | |||
local = Function('return this')(); | |||
} catch (e) { | |||
throw new Error('polyfill failed because global object is unavailable in this environment'); | |||
} | |||
} | |||
var P = local.Promise; | |||
if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) { | |||
return; | |||
} | |||
local.Promise = lib$es6$promise$promise$$default; | |||
} | |||
var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill; | |||
var lib$es6$promise$umd$$ES6Promise = { | |||
'Promise': lib$es6$promise$promise$$default, | |||
'polyfill': lib$es6$promise$polyfill$$default | |||
}; | |||
/* global define:true module:true window: true */ | |||
if (typeof define === 'function' && define['amd']) { | |||
define(function() { return lib$es6$promise$umd$$ES6Promise; }); | |||
} else if (typeof module !== 'undefined' && module['exports']) { | |||
module['exports'] = lib$es6$promise$umd$$ES6Promise; | |||
} else if (typeof this !== 'undefined') { | |||
this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise; | |||
} | |||
lib$es6$promise$polyfill$$default(); | |||
}).call(this); | |||
@@ -1,40 +0,0 @@ | |||
{ | |||
"name": "es6-shim", | |||
"repo": "paulmillr/es6-shim", | |||
"description": "ECMAScript 6 (Harmony) compatibility shims for legacy JavaScript engines", | |||
"keywords": [ | |||
"ecmascript", | |||
"harmony", | |||
"es6", | |||
"shim", | |||
"promise", | |||
"promises", | |||
"setPrototypeOf", | |||
"map", | |||
"set", | |||
"__proto__" | |||
], | |||
"main": "es6-shim.js", | |||
"scripts": [ | |||
"es6-shim.js" | |||
], | |||
"dependencies": {}, | |||
"development": {}, | |||
"ignore": [ | |||
"**/.*", | |||
"node_modules", | |||
"components", | |||
"test" | |||
], | |||
"homepage": "https://github.com/paulmillr/es6-shim", | |||
"version": "0.35.4", | |||
"_release": "0.35.4", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "0.35.4", | |||
"commit": "271142ca5c58b7bfec6970b1c070515da0d8ef98" | |||
}, | |||
"_source": "https://github.com/paulmillr/es6-shim.git", | |||
"_target": "^0.35.4", | |||
"_originalSource": "es6-shim" | |||
} |
@@ -1,26 +0,0 @@ | |||
The project was initially based on [es6-shim by Axel Rauschmayer](https://github.com/rauschma/es6-shim). | |||
Current maintainers are: [Paul Miller](http://paulmillr.com), [Jordan Harband](https://github.com/ljharb), and [C. Scott Ananian](http://cscott.net). | |||
The MIT License (MIT) | |||
Copyright (c) 2013-2016 Paul Miller (http://paulmillr.com) and contributors | |||
Permission is hereby granted, free of charge, to any person obtaining a copy | |||
of this software and associated documentation files (the "Software"), to deal | |||
in the Software without restriction, including without limitation the rights | |||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
copies of the Software, and to permit persons to whom the Software is | |||
furnished to do so, subject to the following conditions: | |||
The above copyright notice and this permission notice shall be included in | |||
all copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |||
THE SOFTWARE. | |||
@@ -1,17 +0,0 @@ | |||
{ | |||
"name": "handlebars", | |||
"version": "4.0.5", | |||
"main": "handlebars.js", | |||
"license": "MIT", | |||
"dependencies": {}, | |||
"homepage": "https://github.com/components/handlebars.js", | |||
"_release": "4.0.5", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "v4.0.5", | |||
"commit": "9b7adf2df23cf0ecc7bd60b43d43989e63222f5a" | |||
}, | |||
"_source": "https://github.com/components/handlebars.js.git", | |||
"_target": "4.0.5", | |||
"_originalSource": "handlebars" | |||
} |
@@ -1,14 +0,0 @@ | |||
{ | |||
"name": "jcrop", | |||
"homepage": "https://github.com/tapmodo/Jcrop", | |||
"version": "0.9.12", | |||
"_release": "0.9.12", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "v0.9.12", | |||
"commit": "1902fbc6afa14481dc019a17e0dcb7d62b808a98" | |||
}, | |||
"_source": "https://github.com/tapmodo/Jcrop.git", | |||
"_target": "0.9.12", | |||
"_originalSource": "jcrop" | |||
} |
@@ -1,22 +0,0 @@ | |||
Copyright (c) 2011 Tapmodo Interactive LLC, | |||
http://github.com/tapmodo/Jcrop | |||
Permission is hereby granted, free of charge, to any person obtaining | |||
a copy of this software and associated documentation files (the | |||
"Software"), to deal in the Software without restriction, including | |||
without limitation the rights to use, copy, modify, merge, publish, | |||
distribute, sublicense, and/or sell copies of the Software, and to | |||
permit persons to whom the Software is furnished to do so, subject to | |||
the following conditions: | |||
The above copyright notice and this permission notice shall be | |||
included in all copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | |||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | |||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
@@ -1,165 +0,0 @@ | |||
/* jquery.Jcrop.css v0.9.12 - MIT License */ | |||
/* | |||
The outer-most container in a typical Jcrop instance | |||
If you are having difficulty with formatting related to styles | |||
on a parent element, place any fixes here or in a like selector | |||
You can also style this element if you want to add a border, etc | |||
A better method for styling can be seen below with .jcrop-light | |||
(Add a class to the holder and style elements for that extended class) | |||
*/ | |||
.jcrop-holder { | |||
direction: ltr; | |||
text-align: left; | |||
} | |||
/* Selection Border */ | |||
.jcrop-vline, | |||
.jcrop-hline { | |||
background: #ffffff url("Jcrop.gif"); | |||
font-size: 0; | |||
position: absolute; | |||
} | |||
.jcrop-vline { | |||
height: 100%; | |||
width: 1px !important; | |||
} | |||
.jcrop-vline.right { | |||
right: 0; | |||
} | |||
.jcrop-hline { | |||
height: 1px !important; | |||
width: 100%; | |||
} | |||
.jcrop-hline.bottom { | |||
bottom: 0; | |||
} | |||
/* Invisible click targets */ | |||
.jcrop-tracker { | |||
height: 100%; | |||
width: 100%; | |||
/* "turn off" link highlight */ | |||
-webkit-tap-highlight-color: transparent; | |||
/* disable callout, image save panel */ | |||
-webkit-touch-callout: none; | |||
/* disable cut copy paste */ | |||
-webkit-user-select: none; | |||
} | |||
/* Selection Handles */ | |||
.jcrop-handle { | |||
background-color: #333333; | |||
border: 1px #eeeeee solid; | |||
width: 7px; | |||
height: 7px; | |||
font-size: 1px; | |||
} | |||
.jcrop-handle.ord-n { | |||
left: 50%; | |||
margin-left: -4px; | |||
margin-top: -4px; | |||
top: 0; | |||
} | |||
.jcrop-handle.ord-s { | |||
bottom: 0; | |||
left: 50%; | |||
margin-bottom: -4px; | |||
margin-left: -4px; | |||
} | |||
.jcrop-handle.ord-e { | |||
margin-right: -4px; | |||
margin-top: -4px; | |||
right: 0; | |||
top: 50%; | |||
} | |||
.jcrop-handle.ord-w { | |||
left: 0; | |||
margin-left: -4px; | |||
margin-top: -4px; | |||
top: 50%; | |||
} | |||
.jcrop-handle.ord-nw { | |||
left: 0; | |||
margin-left: -4px; | |||
margin-top: -4px; | |||
top: 0; | |||
} | |||
.jcrop-handle.ord-ne { | |||
margin-right: -4px; | |||
margin-top: -4px; | |||
right: 0; | |||
top: 0; | |||
} | |||
.jcrop-handle.ord-se { | |||
bottom: 0; | |||
margin-bottom: -4px; | |||
margin-right: -4px; | |||
right: 0; | |||
} | |||
.jcrop-handle.ord-sw { | |||
bottom: 0; | |||
left: 0; | |||
margin-bottom: -4px; | |||
margin-left: -4px; | |||
} | |||
/* Dragbars */ | |||
.jcrop-dragbar.ord-n, | |||
.jcrop-dragbar.ord-s { | |||
height: 7px; | |||
width: 100%; | |||
} | |||
.jcrop-dragbar.ord-e, | |||
.jcrop-dragbar.ord-w { | |||
height: 100%; | |||
width: 7px; | |||
} | |||
.jcrop-dragbar.ord-n { | |||
margin-top: -4px; | |||
} | |||
.jcrop-dragbar.ord-s { | |||
bottom: 0; | |||
margin-bottom: -4px; | |||
} | |||
.jcrop-dragbar.ord-e { | |||
margin-right: -4px; | |||
right: 0; | |||
} | |||
.jcrop-dragbar.ord-w { | |||
margin-left: -4px; | |||
} | |||
/* The "jcrop-light" class/extension */ | |||
.jcrop-light .jcrop-vline, | |||
.jcrop-light .jcrop-hline { | |||
background: #ffffff; | |||
filter: alpha(opacity=70) !important; | |||
opacity: .70!important; | |||
} | |||
.jcrop-light .jcrop-handle { | |||
-moz-border-radius: 3px; | |||
-webkit-border-radius: 3px; | |||
background-color: #000000; | |||
border-color: #ffffff; | |||
border-radius: 3px; | |||
} | |||
/* The "jcrop-dark" class/extension */ | |||
.jcrop-dark .jcrop-vline, | |||
.jcrop-dark .jcrop-hline { | |||
background: #000000; | |||
filter: alpha(opacity=70) !important; | |||
opacity: 0.7 !important; | |||
} | |||
.jcrop-dark .jcrop-handle { | |||
-moz-border-radius: 3px; | |||
-webkit-border-radius: 3px; | |||
background-color: #ffffff; | |||
border-color: #000000; | |||
border-radius: 3px; | |||
} | |||
/* Simple macro to turn off the antlines */ | |||
.solid-line .jcrop-vline, | |||
.solid-line .jcrop-hline { | |||
background: #ffffff; | |||
} | |||
/* Fix for twitter bootstrap et al. */ | |||
.jcrop-holder img, | |||
img.jcrop-preview { | |||
max-width: none; | |||
} |
@@ -1,15 +0,0 @@ | |||
{ | |||
"name": "jquery-migrate", | |||
"version": "1.4.0", | |||
"main": "jquery-migrate.js", | |||
"homepage": "https://github.com/appleboy/jquery-migrate", | |||
"_release": "1.4.0", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "1.4.0", | |||
"commit": "d70e5a532864fdc2263f0d15030ef84671fc5807" | |||
}, | |||
"_source": "https://github.com/appleboy/jquery-migrate.git", | |||
"_target": "1.4.0", | |||
"_originalSource": "jquery-migrate" | |||
} |
@@ -1,717 +0,0 @@ | |||
/*! | |||
* jQuery Migrate - v1.4.0 - 2016-02-26 | |||
* Copyright jQuery Foundation and other contributors | |||
*/ | |||
(function( jQuery, window, undefined ) { | |||
// See http://bugs.jquery.com/ticket/13335 | |||
// "use strict"; | |||
jQuery.migrateVersion = "1.4.0"; | |||
var warnedAbout = {}; | |||
// List of warnings already given; public read only | |||
jQuery.migrateWarnings = []; | |||
// Set to true to prevent console output; migrateWarnings still maintained | |||
// jQuery.migrateMute = false; | |||
// Show a message on the console so devs know we're active | |||
if ( window.console && window.console.log ) { | |||
window.console.log( "JQMIGRATE: Migrate is installed" + | |||
( jQuery.migrateMute ? "" : " with logging active" ) + | |||
", version " + jQuery.migrateVersion ); | |||
} | |||
// Set to false to disable traces that appear with warnings | |||
if ( jQuery.migrateTrace === undefined ) { | |||
jQuery.migrateTrace = true; | |||
} | |||
// Forget any warnings we've already given; public | |||
jQuery.migrateReset = function() { | |||
warnedAbout = {}; | |||
jQuery.migrateWarnings.length = 0; | |||
}; | |||
function migrateWarn( msg) { | |||
var console = window.console; | |||
if ( !warnedAbout[ msg ] ) { | |||
warnedAbout[ msg ] = true; | |||
jQuery.migrateWarnings.push( msg ); | |||
if ( console && console.warn && !jQuery.migrateMute ) { | |||
console.warn( "JQMIGRATE: " + msg ); | |||
if ( jQuery.migrateTrace && console.trace ) { | |||
console.trace(); | |||
} | |||
} | |||
} | |||
} | |||
function migrateWarnProp( obj, prop, value, msg ) { | |||
if ( Object.defineProperty ) { | |||
// On ES5 browsers (non-oldIE), warn if the code tries to get prop; | |||
// allow property to be overwritten in case some other plugin wants it | |||
try { | |||
Object.defineProperty( obj, prop, { | |||
configurable: true, | |||
enumerable: true, | |||
get: function() { | |||
migrateWarn( msg ); | |||
return value; | |||
}, | |||
set: function( newValue ) { | |||
migrateWarn( msg ); | |||
value = newValue; | |||
} | |||
}); | |||
return; | |||
} catch( err ) { | |||
// IE8 is a dope about Object.defineProperty, can't warn there | |||
} | |||
} | |||
// Non-ES5 (or broken) browser; just set the property | |||
jQuery._definePropertyBroken = true; | |||
obj[ prop ] = value; | |||
} | |||
if ( document.compatMode === "BackCompat" ) { | |||
// jQuery has never supported or tested Quirks Mode | |||
migrateWarn( "jQuery is not compatible with Quirks Mode" ); | |||
} | |||
var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn, | |||
oldAttr = jQuery.attr, | |||
valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get || | |||
function() { return null; }, | |||
valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set || | |||
function() { return undefined; }, | |||
rnoType = /^(?:input|button)$/i, | |||
rnoAttrNodeType = /^[238]$/, | |||
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, | |||
ruseDefault = /^(?:checked|selected)$/i; | |||
// jQuery.attrFn | |||
migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" ); | |||
jQuery.attr = function( elem, name, value, pass ) { | |||
var lowerName = name.toLowerCase(), | |||
nType = elem && elem.nodeType; | |||
if ( pass ) { | |||
// Since pass is used internally, we only warn for new jQuery | |||
// versions where there isn't a pass arg in the formal params | |||
if ( oldAttr.length < 4 ) { | |||
migrateWarn("jQuery.fn.attr( props, pass ) is deprecated"); | |||
} | |||
if ( elem && !rnoAttrNodeType.test( nType ) && | |||
(attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) { | |||
return jQuery( elem )[ name ]( value ); | |||
} | |||
} | |||
// Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking | |||
// for disconnected elements we don't warn on $( "<button>", { type: "button" } ). | |||
if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) { | |||
migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8"); | |||
} | |||
// Restore boolHook for boolean property/attribute synchronization | |||
if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) { | |||
jQuery.attrHooks[ lowerName ] = { | |||
get: function( elem, name ) { | |||
// Align boolean attributes with corresponding properties | |||
// Fall back to attribute presence where some booleans are not supported | |||
var attrNode, | |||
property = jQuery.prop( elem, name ); | |||
return property === true || typeof property !== "boolean" && | |||
( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? | |||
name.toLowerCase() : | |||
undefined; | |||
}, | |||
set: function( elem, value, name ) { | |||
var propName; | |||
if ( value === false ) { | |||
// Remove boolean attributes when set to false | |||
jQuery.removeAttr( elem, name ); | |||
} else { | |||
// value is true since we know at this point it's type boolean and not false | |||
// Set boolean attributes to the same name and set the DOM property | |||
propName = jQuery.propFix[ name ] || name; | |||
if ( propName in elem ) { | |||
// Only set the IDL specifically if it already exists on the element | |||
elem[ propName ] = true; | |||
} | |||
elem.setAttribute( name, name.toLowerCase() ); | |||
} | |||
return name; | |||
} | |||
}; | |||
// Warn only for attributes that can remain distinct from their properties post-1.9 | |||
if ( ruseDefault.test( lowerName ) ) { | |||
migrateWarn( "jQuery.fn.attr('" + lowerName + "') might use property instead of attribute" ); | |||
} | |||
} | |||
return oldAttr.call( jQuery, elem, name, value ); | |||
}; | |||
// attrHooks: value | |||
jQuery.attrHooks.value = { | |||
get: function( elem, name ) { | |||
var nodeName = ( elem.nodeName || "" ).toLowerCase(); | |||
if ( nodeName === "button" ) { | |||
return valueAttrGet.apply( this, arguments ); | |||
} | |||
if ( nodeName !== "input" && nodeName !== "option" ) { | |||
migrateWarn("jQuery.fn.attr('value') no longer gets properties"); | |||
} | |||
return name in elem ? | |||
elem.value : | |||
null; | |||
}, | |||
set: function( elem, value ) { | |||
var nodeName = ( elem.nodeName || "" ).toLowerCase(); | |||
if ( nodeName === "button" ) { | |||
return valueAttrSet.apply( this, arguments ); | |||
} | |||
if ( nodeName !== "input" && nodeName !== "option" ) { | |||
migrateWarn("jQuery.fn.attr('value', val) no longer sets properties"); | |||
} | |||
// Does not return so that setAttribute is also used | |||
elem.value = value; | |||
} | |||
}; | |||
var matched, browser, | |||
oldInit = jQuery.fn.init, | |||
oldParseJSON = jQuery.parseJSON, | |||
rspaceAngle = /^\s*</, | |||
rattrHash = /\[\s*\w+\s*[~|^$*]?=\s*(?![\s'"])[^#\]]*#/, | |||
// Note: XSS check is done below after string is trimmed | |||
rquickExpr = /^([^<]*)(<[\w\W]+>)([^>]*)$/; | |||
// $(html) "looks like html" rule change | |||
jQuery.fn.init = function( selector, context, rootjQuery ) { | |||
var match, ret; | |||
if ( selector && typeof selector === "string" && !jQuery.isPlainObject( context ) && | |||
(match = rquickExpr.exec( jQuery.trim( selector ) )) && match[ 0 ] ) { | |||
// This is an HTML string according to the "old" rules; is it still? | |||
if ( !rspaceAngle.test( selector ) ) { | |||
migrateWarn("$(html) HTML strings must start with '<' character"); | |||
} | |||
if ( match[ 3 ] ) { | |||
migrateWarn("$(html) HTML text after last tag is ignored"); | |||
} | |||
// Consistently reject any HTML-like string starting with a hash (#9521) | |||
// Note that this may break jQuery 1.6.x code that otherwise would work. | |||
if ( match[ 0 ].charAt( 0 ) === "#" ) { | |||
migrateWarn("HTML string cannot start with a '#' character"); | |||
jQuery.error("JQMIGRATE: Invalid selector string (XSS)"); | |||
} | |||
// Now process using loose rules; let pre-1.8 play too | |||
if ( context && context.context ) { | |||
// jQuery object as context; parseHTML expects a DOM object | |||
context = context.context; | |||
} | |||
if ( jQuery.parseHTML ) { | |||
return oldInit.call( this, | |||
jQuery.parseHTML( match[ 2 ], context && context.ownerDocument || | |||
context || document, true ), context, rootjQuery ); | |||
} | |||
} | |||
if ( selector === "#" ) { | |||
// jQuery( "#" ) is a bogus ID selector, but it returned an empty set before jQuery 3.0 | |||
migrateWarn( "jQuery( '#' ) is not a valid selector" ); | |||
selector = []; | |||
} else if ( rattrHash.test( selector ) ) { | |||
// The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0 | |||
// Note that this doesn't actually fix the selector due to potential false positives | |||
migrateWarn( "Attribute selectors with '#' must be quoted: '" + selector + "'" ); | |||
} | |||
ret = oldInit.apply( this, arguments ); | |||
// Fill in selector and context properties so .live() works | |||
if ( selector && selector.selector !== undefined ) { | |||
// A jQuery object, copy its properties | |||
ret.selector = selector.selector; | |||
ret.context = selector.context; | |||
} else { | |||
ret.selector = typeof selector === "string" ? selector : ""; | |||
if ( selector ) { | |||
ret.context = selector.nodeType? selector : context || document; | |||
} | |||
} | |||
return ret; | |||
}; | |||
jQuery.fn.init.prototype = jQuery.fn; | |||
// Let $.parseJSON(falsy_value) return null | |||
jQuery.parseJSON = function( json ) { | |||
if ( !json ) { | |||
migrateWarn("jQuery.parseJSON requires a valid JSON string"); | |||
return null; | |||
} | |||
return oldParseJSON.apply( this, arguments ); | |||
}; | |||
jQuery.uaMatch = function( ua ) { | |||
ua = ua.toLowerCase(); | |||
var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) || | |||
/(webkit)[ \/]([\w.]+)/.exec( ua ) || | |||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || | |||
/(msie) ([\w.]+)/.exec( ua ) || | |||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || | |||
[]; | |||
return { | |||
browser: match[ 1 ] || "", | |||
version: match[ 2 ] || "0" | |||
}; | |||
}; | |||
// Don't clobber any existing jQuery.browser in case it's different | |||
if ( !jQuery.browser ) { | |||
matched = jQuery.uaMatch( navigator.userAgent ); | |||
browser = {}; | |||
if ( matched.browser ) { | |||
browser[ matched.browser ] = true; | |||
browser.version = matched.version; | |||
} | |||
// Chrome is Webkit, but Webkit is also Safari. | |||
if ( browser.chrome ) { | |||
browser.webkit = true; | |||
} else if ( browser.webkit ) { | |||
browser.safari = true; | |||
} | |||
jQuery.browser = browser; | |||
} | |||
// Warn if the code tries to get jQuery.browser | |||
migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" ); | |||
// jQuery.boxModel deprecated in 1.3, jQuery.support.boxModel deprecated in 1.7 | |||
jQuery.boxModel = jQuery.support.boxModel = (document.compatMode === "CSS1Compat"); | |||
migrateWarnProp( jQuery, "boxModel", jQuery.boxModel, "jQuery.boxModel is deprecated" ); | |||
migrateWarnProp( jQuery.support, "boxModel", jQuery.support.boxModel, "jQuery.support.boxModel is deprecated" ); | |||
jQuery.sub = function() { | |||
function jQuerySub( selector, context ) { | |||
return new jQuerySub.fn.init( selector, context ); | |||
} | |||
jQuery.extend( true, jQuerySub, this ); | |||
jQuerySub.superclass = this; | |||
jQuerySub.fn = jQuerySub.prototype = this(); | |||
jQuerySub.fn.constructor = jQuerySub; | |||
jQuerySub.sub = this.sub; | |||
jQuerySub.fn.init = function init( selector, context ) { | |||
var instance = jQuery.fn.init.call( this, selector, context, rootjQuerySub ); | |||
return instance instanceof jQuerySub ? | |||
instance : | |||
jQuerySub( instance ); | |||
}; | |||
jQuerySub.fn.init.prototype = jQuerySub.fn; | |||
var rootjQuerySub = jQuerySub(document); | |||
migrateWarn( "jQuery.sub() is deprecated" ); | |||
return jQuerySub; | |||
}; | |||
// The number of elements contained in the matched element set | |||
jQuery.fn.size = function() { | |||
migrateWarn( "jQuery.fn.size() is deprecated; use the .length property" ); | |||
return this.length; | |||
}; | |||
var internalSwapCall = false; | |||
// If this version of jQuery has .swap(), don't false-alarm on internal uses | |||
if ( jQuery.swap ) { | |||
jQuery.each( [ "height", "width", "reliableMarginRight" ], function( _, name ) { | |||
var oldHook = jQuery.cssHooks[ name ] && jQuery.cssHooks[ name ].get; | |||
if ( oldHook ) { | |||
jQuery.cssHooks[ name ].get = function() { | |||
var ret; | |||
internalSwapCall = true; | |||
ret = oldHook.apply( this, arguments ); | |||
internalSwapCall = false; | |||
return ret; | |||
}; | |||
} | |||
}); | |||
} | |||
jQuery.swap = function( elem, options, callback, args ) { | |||
var ret, name, | |||
old = {}; | |||
if ( !internalSwapCall ) { | |||
migrateWarn( "jQuery.swap() is undocumented and deprecated" ); | |||
} | |||
// Remember the old values, and insert the new ones | |||
for ( name in options ) { | |||
old[ name ] = elem.style[ name ]; | |||
elem.style[ name ] = options[ name ]; | |||
} | |||
ret = callback.apply( elem, args || [] ); | |||
// Revert the old values | |||
for ( name in options ) { | |||
elem.style[ name ] = old[ name ]; | |||
} | |||
return ret; | |||
}; | |||
// Ensure that $.ajax gets the new parseJSON defined in core.js | |||
jQuery.ajaxSetup({ | |||
converters: { | |||
"text json": jQuery.parseJSON | |||
} | |||
}); | |||
var oldFnData = jQuery.fn.data; | |||
jQuery.fn.data = function( name ) { | |||
var ret, evt, | |||
elem = this[0]; | |||
// Handles 1.7 which has this behavior and 1.8 which doesn't | |||
if ( elem && name === "events" && arguments.length === 1 ) { | |||
ret = jQuery.data( elem, name ); | |||
evt = jQuery._data( elem, name ); | |||
if ( ( ret === undefined || ret === evt ) && evt !== undefined ) { | |||
migrateWarn("Use of jQuery.fn.data('events') is deprecated"); | |||
return evt; | |||
} | |||
} | |||
return oldFnData.apply( this, arguments ); | |||
}; | |||
var rscriptType = /\/(java|ecma)script/i; | |||
// Since jQuery.clean is used internally on older versions, we only shim if it's missing | |||
if ( !jQuery.clean ) { | |||
jQuery.clean = function( elems, context, fragment, scripts ) { | |||
// Set context per 1.8 logic | |||
context = context || document; | |||
context = !context.nodeType && context[0] || context; | |||
context = context.ownerDocument || context; | |||
migrateWarn("jQuery.clean() is deprecated"); | |||
var i, elem, handleScript, jsTags, | |||
ret = []; | |||
jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes ); | |||
// Complex logic lifted directly from jQuery 1.8 | |||
if ( fragment ) { | |||
// Special handling of each script element | |||
handleScript = function( elem ) { | |||
// Check if we consider it executable | |||
if ( !elem.type || rscriptType.test( elem.type ) ) { | |||
// Detach the script and store it in the scripts array (if provided) or the fragment | |||
// Return truthy to indicate that it has been handled | |||
return scripts ? | |||
scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) : | |||
fragment.appendChild( elem ); | |||
} | |||
}; | |||
for ( i = 0; (elem = ret[i]) != null; i++ ) { | |||
// Check if we're done after handling an executable script | |||
if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) { | |||
// Append to fragment and handle embedded scripts | |||
fragment.appendChild( elem ); | |||
if ( typeof elem.getElementsByTagName !== "undefined" ) { | |||
// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration | |||
jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript ); | |||
// Splice the scripts into ret after their former ancestor and advance our index beyond them | |||
ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); | |||
i += jsTags.length; | |||
} | |||
} | |||
} | |||
} | |||
return ret; | |||
}; | |||
} | |||
var eventAdd = jQuery.event.add, | |||
eventRemove = jQuery.event.remove, | |||
eventTrigger = jQuery.event.trigger, | |||
oldToggle = jQuery.fn.toggle, | |||
oldLive = jQuery.fn.live, | |||
oldDie = jQuery.fn.die, | |||
oldLoad = jQuery.fn.load, | |||
ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess", | |||
rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ), | |||
rhoverHack = /(?:^|\s)hover(\.\S+|)\b/, | |||
hoverHack = function( events ) { | |||
if ( typeof( events ) !== "string" || jQuery.event.special.hover ) { | |||
return events; | |||
} | |||
if ( rhoverHack.test( events ) ) { | |||
migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"); | |||
} | |||
return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); | |||
}; | |||
// Event props removed in 1.9, put them back if needed; no practical way to warn them | |||
if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) { | |||
jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" ); | |||
} | |||
// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7 | |||
if ( jQuery.event.dispatch ) { | |||
migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" ); | |||
} | |||
// Support for 'hover' pseudo-event and ajax event warnings | |||
jQuery.event.add = function( elem, types, handler, data, selector ){ | |||
if ( elem !== document && rajaxEvent.test( types ) ) { | |||
migrateWarn( "AJAX events should be attached to document: " + types ); | |||
} | |||
eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector ); | |||
}; | |||
jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){ | |||
eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes ); | |||
}; | |||
jQuery.each( [ "load", "unload", "error" ], function( _, name ) { | |||
jQuery.fn[ name ] = function() { | |||
var args = Array.prototype.slice.call( arguments, 0 ); | |||
// If this is an ajax load() the first arg should be the string URL; | |||
// technically this could also be the "Anything" arg of the event .load() | |||
// which just goes to show why this dumb signature has been deprecated! | |||
// jQuery custom builds that exclude the Ajax module justifiably die here. | |||
if ( name === "load" && typeof args[ 0 ] === "string" ) { | |||
return oldLoad.apply( this, args ); | |||
} | |||
migrateWarn( "jQuery.fn." + name + "() is deprecated" ); | |||
args.splice( 0, 0, name ); | |||
if ( arguments.length ) { | |||
return this.bind.apply( this, args ); | |||
} | |||
// Use .triggerHandler here because: | |||
// - load and unload events don't need to bubble, only applied to window or image | |||
// - error event should not bubble to window, although it does pre-1.7 | |||
// See http://bugs.jquery.com/ticket/11820 | |||
this.triggerHandler.apply( this, args ); | |||
return this; | |||
}; | |||
}); | |||
jQuery.fn.toggle = function( fn, fn2 ) { | |||
// Don't mess with animation or css toggles | |||
if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) { | |||
return oldToggle.apply( this, arguments ); | |||
} | |||
migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated"); | |||
// Save reference to arguments for access in closure | |||
var args = arguments, | |||
guid = fn.guid || jQuery.guid++, | |||
i = 0, | |||
toggler = function( event ) { | |||
// Figure out which function to execute | |||
var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; | |||
jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); | |||
// Make sure that clicks stop | |||
event.preventDefault(); | |||
// and execute the function | |||
return args[ lastToggle ].apply( this, arguments ) || false; | |||
}; | |||
// link all the functions, so any of them can unbind this click handler | |||
toggler.guid = guid; | |||
while ( i < args.length ) { | |||
args[ i++ ].guid = guid; | |||
} | |||
return this.click( toggler ); | |||
}; | |||
jQuery.fn.live = function( types, data, fn ) { | |||
migrateWarn("jQuery.fn.live() is deprecated"); | |||
if ( oldLive ) { | |||
return oldLive.apply( this, arguments ); | |||
} | |||
jQuery( this.context ).on( types, this.selector, data, fn ); | |||
return this; | |||
}; | |||
jQuery.fn.die = function( types, fn ) { | |||
migrateWarn("jQuery.fn.die() is deprecated"); | |||
if ( oldDie ) { | |||
return oldDie.apply( this, arguments ); | |||
} | |||
jQuery( this.context ).off( types, this.selector || "**", fn ); | |||
return this; | |||
}; | |||
// Turn global events into document-triggered events | |||
jQuery.event.trigger = function( event, data, elem, onlyHandlers ){ | |||
if ( !elem && !rajaxEvent.test( event ) ) { | |||
migrateWarn( "Global events are undocumented and deprecated" ); | |||
} | |||
return eventTrigger.call( this, event, data, elem || document, onlyHandlers ); | |||
}; | |||
jQuery.each( ajaxEvents.split("|"), | |||
function( _, name ) { | |||
jQuery.event.special[ name ] = { | |||
setup: function() { | |||
var elem = this; | |||
// The document needs no shimming; must be !== for oldIE | |||
if ( elem !== document ) { | |||
jQuery.event.add( document, name + "." + jQuery.guid, function() { | |||
jQuery.event.trigger( name, Array.prototype.slice.call( arguments, 1 ), elem, true ); | |||
}); | |||
jQuery._data( this, name, jQuery.guid++ ); | |||
} | |||
return false; | |||
}, | |||
teardown: function() { | |||
if ( this !== document ) { | |||
jQuery.event.remove( document, name + "." + jQuery._data( this, name ) ); | |||
} | |||
return false; | |||
} | |||
}; | |||
} | |||
); | |||
jQuery.event.special.ready = { | |||
setup: function() { | |||
if ( this === document ) { | |||
migrateWarn( "'ready' event is deprecated" ); | |||
} | |||
} | |||
}; | |||
var oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack, | |||
oldFind = jQuery.fn.find; | |||
jQuery.fn.andSelf = function() { | |||
migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"); | |||
return oldSelf.apply( this, arguments ); | |||
}; | |||
jQuery.fn.find = function( selector ) { | |||
var ret = oldFind.apply( this, arguments ); | |||
ret.context = this.context; | |||
ret.selector = this.selector ? this.selector + " " + selector : selector; | |||
return ret; | |||
}; | |||
// jQuery 1.6 did not support Callbacks, do not warn there | |||
if ( jQuery.Callbacks ) { | |||
var oldDeferred = jQuery.Deferred, | |||
tuples = [ | |||
// action, add listener, callbacks, .then handlers, final state | |||
[ "resolve", "done", jQuery.Callbacks("once memory"), | |||
jQuery.Callbacks("once memory"), "resolved" ], | |||
[ "reject", "fail", jQuery.Callbacks("once memory"), | |||
jQuery.Callbacks("once memory"), "rejected" ], | |||
[ "notify", "progress", jQuery.Callbacks("memory"), | |||
jQuery.Callbacks("memory") ] | |||
]; | |||
jQuery.Deferred = function( func ) { | |||
var deferred = oldDeferred(), | |||
promise = deferred.promise(); | |||
deferred.pipe = promise.pipe = function( /* fnDone, fnFail, fnProgress */ ) { | |||
var fns = arguments; | |||
migrateWarn( "deferred.pipe() is deprecated" ); | |||
return jQuery.Deferred(function( newDefer ) { | |||
jQuery.each( tuples, function( i, tuple ) { | |||
var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; | |||
// deferred.done(function() { bind to newDefer or newDefer.resolve }) | |||
// deferred.fail(function() { bind to newDefer or newDefer.reject }) | |||
// deferred.progress(function() { bind to newDefer or newDefer.notify }) | |||
deferred[ tuple[1] ](function() { | |||
var returned = fn && fn.apply( this, arguments ); | |||
if ( returned && jQuery.isFunction( returned.promise ) ) { | |||
returned.promise() | |||
.done( newDefer.resolve ) | |||
.fail( newDefer.reject ) | |||
.progress( newDefer.notify ); | |||
} else { | |||
newDefer[ tuple[ 0 ] + "With" ]( | |||
this === promise ? newDefer.promise() : this, | |||
fn ? [ returned ] : arguments | |||
); | |||
} | |||
}); | |||
}); | |||
fns = null; | |||
}).promise(); | |||
}; | |||
deferred.isResolved = function() { | |||
migrateWarn( "deferred.isResolved is deprecated" ); | |||
return deferred.state() === "resolved"; | |||
}; | |||
deferred.isRejected = function() { | |||
migrateWarn( "deferred.isRejected is deprecated" ); | |||
return deferred.state() === "rejected"; | |||
}; | |||
if ( func ) { | |||
func.call( deferred, deferred ); | |||
} | |||
return deferred; | |||
}; | |||
} | |||
})( jQuery, window ); |
@@ -1,22 +0,0 @@ | |||
{ | |||
"name": "jquery-ui", | |||
"version": "1.12.1", | |||
"main": [ | |||
"jquery-ui.js" | |||
], | |||
"ignore": [], | |||
"license": "MIT", | |||
"dependencies": { | |||
"jquery": ">=1.6" | |||
}, | |||
"homepage": "https://github.com/components/jqueryui", | |||
"_release": "1.12.1", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "1.12.1", | |||
"commit": "44ecf3794cc56b65954cc19737234a3119d036cc" | |||
}, | |||
"_source": "https://github.com/components/jqueryui.git", | |||
"_target": "1.12.1", | |||
"_originalSource": "jquery-ui" | |||
} |
@@ -1,38 +0,0 @@ | |||
{ | |||
"name": "jquery", | |||
"version": "2.1.4", | |||
"main": "dist/jquery.js", | |||
"license": "MIT", | |||
"ignore": [ | |||
"**/.*", | |||
"build", | |||
"dist/cdn", | |||
"speed", | |||
"test", | |||
"*.md", | |||
"AUTHORS.txt", | |||
"Gruntfile.js", | |||
"package.json" | |||
], | |||
"devDependencies": { | |||
"sizzle": "2.1.1-jquery.2.1.2", | |||
"requirejs": "2.1.10", | |||
"qunit": "1.14.0", | |||
"sinon": "1.8.1" | |||
}, | |||
"keywords": [ | |||
"jquery", | |||
"javascript", | |||
"library" | |||
], | |||
"homepage": "https://github.com/jquery/jquery-dist", | |||
"_release": "2.1.4", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "2.1.4", | |||
"commit": "7751e69b615c6eca6f783a81e292a55725af6b85" | |||
}, | |||
"_source": "https://github.com/jquery/jquery-dist.git", | |||
"_target": "2.1.4", | |||
"_originalSource": "jquery" | |||
} |
@@ -1,21 +0,0 @@ | |||
Copyright 2014 jQuery Foundation and other contributors | |||
http://jquery.com/ | |||
Permission is hereby granted, free of charge, to any person obtaining | |||
a copy of this software and associated documentation files (the | |||
"Software"), to deal in the Software without restriction, including | |||
without limitation the rights to use, copy, modify, merge, publish, | |||
distribute, sublicense, and/or sell copies of the Software, and to | |||
permit persons to whom the Software is furnished to do so, subject to | |||
the following conditions: | |||
The above copyright notice and this permission notice shall be | |||
included in all copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | |||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | |||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
@@ -1,23 +0,0 @@ | |||
{ | |||
"name": "jstzdetect", | |||
"version": "1.0.6", | |||
"main": "jstz.min.js", | |||
"ignore": [ | |||
"**/.*", | |||
"node_modules", | |||
"components", | |||
"bower_components", | |||
"test", | |||
"tests" | |||
], | |||
"homepage": "https://github.com/HenningM/jstimezonedetect", | |||
"_release": "1.0.6", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "v1.0.6", | |||
"commit": "bd595ed253292934991a414979007f3d51a1547d" | |||
}, | |||
"_source": "https://github.com/HenningM/jstimezonedetect.git", | |||
"_target": "1.0.6", | |||
"_originalSource": "jsTimezoneDetect" | |||
} |
@@ -1,22 +0,0 @@ | |||
MIT License | |||
Copyright (c) 2012 Jon Nylander, project maintained at | |||
https://bitbucket.org/pellepim/jstimezonedetect | |||
Permission is hereby granted, free of charge, to any person obtaining a copy | |||
of this software and associated documentation files (the "Software"), to deal | |||
in the Software without restriction, including without limitation the rights to | |||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | |||
of the Software, and to permit persons to whom the Software is furnished to | |||
do so, subject to the following conditions: | |||
The above copyright notice and this permission notice shall be included in | |||
all copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |||
THE SOFTWARE. |
@@ -1,358 +0,0 @@ | |||
/** | |||
* This script gives you the zone info key representing your device's time zone setting. | |||
* | |||
* @name jsTimezoneDetect | |||
* @version 1.0.5 | |||
* @author Jon Nylander | |||
* @license MIT License - http://www.opensource.org/licenses/mit-license.php | |||
* | |||
* For usage and examples, visit: | |||
* http://pellepim.bitbucket.org/jstz/ | |||
* | |||
* Copyright (c) Jon Nylander | |||
*/ | |||
/*jslint undef: true */ | |||
/*global console, exports*/ | |||
(function(root) { | |||
/** | |||
* Namespace to hold all the code for timezone detection. | |||
*/ | |||
var jstz = (function () { | |||
'use strict'; | |||
var HEMISPHERE_SOUTH = 's', | |||
/** | |||
* Gets the offset in minutes from UTC for a certain date. | |||
* @param {Date} date | |||
* @returns {Number} | |||
*/ | |||
get_date_offset = function (date) { | |||
var offset = -date.getTimezoneOffset(); | |||
return (offset !== null ? offset : 0); | |||
}, | |||
get_date = function (year, month, date) { | |||
var d = new Date(); | |||
if (year !== undefined) { | |||
d.setFullYear(year); | |||
} | |||
d.setMonth(month); | |||
d.setDate(date); | |||
return d; | |||
}, | |||
get_january_offset = function (year) { | |||
return get_date_offset(get_date(year, 0 ,2)); | |||
}, | |||
get_june_offset = function (year) { | |||
return get_date_offset(get_date(year, 5, 2)); | |||
}, | |||
/** | |||
* Private method. | |||
* Checks whether a given date is in daylight saving time. | |||
* If the date supplied is after august, we assume that we're checking | |||
* for southern hemisphere DST. | |||
* @param {Date} date | |||
* @returns {Boolean} | |||
*/ | |||
date_is_dst = function (date) { | |||
var is_southern = date.getMonth() > 7, | |||
base_offset = is_southern ? get_june_offset(date.getFullYear()) : | |||
get_january_offset(date.getFullYear()), | |||
date_offset = get_date_offset(date), | |||
is_west = base_offset < 0, | |||
dst_offset = base_offset - date_offset; | |||
if (!is_west && !is_southern) { | |||
return dst_offset < 0; | |||
} | |||
return dst_offset !== 0; | |||
}, | |||
/** | |||
* This function does some basic calculations to create information about | |||
* the user's timezone. It uses REFERENCE_YEAR as a solid year for which | |||
* the script has been tested rather than depend on the year set by the | |||
* client device. | |||
* | |||
* Returns a key that can be used to do lookups in jstz.olson.timezones. | |||
* eg: "720,1,2". | |||
* | |||
* @returns {String} | |||
*/ | |||
lookup_key = function () { | |||
var january_offset = get_january_offset(), | |||
june_offset = get_june_offset(), | |||
diff = january_offset - june_offset; | |||
if (diff < 0) { | |||
return january_offset + ",1"; | |||
} else if (diff > 0) { | |||
return june_offset + ",1," + HEMISPHERE_SOUTH; | |||
} | |||
return january_offset + ",0"; | |||
}, | |||
/** | |||
* Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary. | |||
* | |||
* Returns a primitive object on the format: | |||
* {'timezone': TimeZone, 'key' : 'the key used to find the TimeZone object'} | |||
* | |||
* @returns Object | |||
*/ | |||
determine = function () { | |||
var key = lookup_key(); | |||
return new jstz.TimeZone(jstz.olson.timezones[key]); | |||
}, | |||
/** | |||
* This object contains information on when daylight savings starts for | |||
* different timezones. | |||
* | |||
* The list is short for a reason. Often we do not have to be very specific | |||
* to single out the correct timezone. But when we do, this list comes in | |||
* handy. | |||
* | |||
* Each value is a date denoting when daylight savings starts for that timezone. | |||
*/ | |||
dst_start_for = function (tz_name) { | |||
var ru_pre_dst_change = new Date(2010, 6, 15, 1, 0, 0, 0), // In 2010 Russia had DST, this allows us to detect Russia :) | |||
dst_starts = { | |||
'America/Denver': new Date(2011, 2, 13, 3, 0, 0, 0), | |||
'America/Mazatlan': new Date(2011, 3, 3, 3, 0, 0, 0), | |||
'America/Chicago': new Date(2011, 2, 13, 3, 0, 0, 0), | |||
'America/Mexico_City': new Date(2011, 3, 3, 3, 0, 0, 0), | |||
'America/Asuncion': new Date(2012, 9, 7, 3, 0, 0, 0), | |||
'America/Santiago': new Date(2012, 9, 3, 3, 0, 0, 0), | |||
'America/Campo_Grande': new Date(2012, 9, 21, 5, 0, 0, 0), | |||
'America/Montevideo': new Date(2011, 9, 2, 3, 0, 0, 0), | |||
'America/Sao_Paulo': new Date(2011, 9, 16, 5, 0, 0, 0), | |||
'America/Los_Angeles': new Date(2011, 2, 13, 8, 0, 0, 0), | |||
'America/Santa_Isabel': new Date(2011, 3, 5, 8, 0, 0, 0), | |||
'America/Havana': new Date(2012, 2, 10, 2, 0, 0, 0), | |||
'America/New_York': new Date(2012, 2, 10, 7, 0, 0, 0), | |||
'Europe/Helsinki': new Date(2013, 2, 31, 5, 0, 0, 0), | |||
'Pacific/Auckland': new Date(2011, 8, 26, 7, 0, 0, 0), | |||
'America/Halifax': new Date(2011, 2, 13, 6, 0, 0, 0), | |||
'America/Goose_Bay': new Date(2011, 2, 13, 2, 1, 0, 0), | |||
'America/Miquelon': new Date(2011, 2, 13, 5, 0, 0, 0), | |||
'America/Godthab': new Date(2011, 2, 27, 1, 0, 0, 0), | |||
'Europe/Moscow': ru_pre_dst_change, | |||
'Asia/Amman': new Date(2013, 2, 29, 1, 0, 0, 0), | |||
'Asia/Beirut': new Date(2013, 2, 31, 2, 0, 0, 0), | |||
'Asia/Damascus': new Date(2013, 3, 6, 2, 0, 0, 0), | |||
'Asia/Jerusalem': new Date(2013, 2, 29, 5, 0, 0, 0), | |||
'Asia/Yekaterinburg': ru_pre_dst_change, | |||
'Asia/Omsk': ru_pre_dst_change, | |||
'Asia/Krasnoyarsk': ru_pre_dst_change, | |||
'Asia/Irkutsk': ru_pre_dst_change, | |||
'Asia/Yakutsk': ru_pre_dst_change, | |||
'Asia/Vladivostok': ru_pre_dst_change, | |||
'Asia/Baku': new Date(2013, 2, 31, 4, 0, 0), | |||
'Asia/Yerevan': new Date(2013, 2, 31, 3, 0, 0), | |||
'Asia/Kamchatka': ru_pre_dst_change, | |||
'Asia/Gaza': new Date(2010, 2, 27, 4, 0, 0), | |||
'Africa/Cairo': new Date(2010, 4, 1, 3, 0, 0), | |||
'Europe/Minsk': ru_pre_dst_change, | |||
'Pacific/Apia': new Date(2010, 10, 1, 1, 0, 0, 0), | |||
'Pacific/Fiji': new Date(2010, 11, 1, 0, 0, 0), | |||
'Australia/Perth': new Date(2008, 10, 1, 1, 0, 0, 0) | |||
}; | |||
return dst_starts[tz_name]; | |||
}; | |||
return { | |||
determine: determine, | |||
date_is_dst: date_is_dst, | |||
dst_start_for: dst_start_for | |||
}; | |||
}()); | |||
/** | |||
* Simple object to perform ambiguity check and to return name of time zone. | |||
*/ | |||
jstz.TimeZone = function (tz_name) { | |||
'use strict'; | |||
/** | |||
* The keys in this object are timezones that we know may be ambiguous after | |||
* a preliminary scan through the olson_tz object. | |||
* | |||
* The array of timezones to compare must be in the order that daylight savings | |||
* starts for the regions. | |||
*/ | |||
var AMBIGUITIES = { | |||
'America/Denver': ['America/Denver', 'America/Mazatlan'], | |||
'America/Chicago': ['America/Chicago', 'America/Mexico_City'], | |||
'America/Santiago': ['America/Santiago', 'America/Asuncion', 'America/Campo_Grande'], | |||
'America/Montevideo': ['America/Montevideo', 'America/Sao_Paulo'], | |||
'Asia/Beirut': ['Asia/Amman', 'Asia/Jerusalem', 'Asia/Beirut', 'Europe/Helsinki','Asia/Damascus'], | |||
'Pacific/Auckland': ['Pacific/Auckland', 'Pacific/Fiji'], | |||
'America/Los_Angeles': ['America/Los_Angeles', 'America/Santa_Isabel'], | |||
'America/New_York': ['America/Havana', 'America/New_York'], | |||
'America/Halifax': ['America/Goose_Bay', 'America/Halifax'], | |||
'America/Godthab': ['America/Miquelon', 'America/Godthab'], | |||
'Asia/Dubai': ['Europe/Moscow'], | |||
'Asia/Dhaka': ['Asia/Yekaterinburg'], | |||
'Asia/Jakarta': ['Asia/Omsk'], | |||
'Asia/Shanghai': ['Asia/Krasnoyarsk', 'Australia/Perth'], | |||
'Asia/Tokyo': ['Asia/Irkutsk'], | |||
'Australia/Brisbane': ['Asia/Yakutsk'], | |||
'Pacific/Noumea': ['Asia/Vladivostok'], | |||
'Pacific/Tarawa': ['Asia/Kamchatka', 'Pacific/Fiji'], | |||
'Pacific/Tongatapu': ['Pacific/Apia'], | |||
'Asia/Baghdad': ['Europe/Minsk'], | |||
'Asia/Baku': ['Asia/Yerevan','Asia/Baku'], | |||
'Africa/Johannesburg': ['Asia/Gaza', 'Africa/Cairo'] | |||
}, | |||
timezone_name = tz_name, | |||
/** | |||
* Checks if a timezone has possible ambiguities. I.e timezones that are similar. | |||
* | |||
* For example, if the preliminary scan determines that we're in America/Denver. | |||
* We double check here that we're really there and not in America/Mazatlan. | |||
* | |||
* This is done by checking known dates for when daylight savings start for different | |||
* timezones during 2010 and 2011. | |||
*/ | |||
ambiguity_check = function () { | |||
var ambiguity_list = AMBIGUITIES[timezone_name], | |||
length = ambiguity_list.length, | |||
i = 0, | |||
tz = ambiguity_list[0]; | |||
for (; i < length; i += 1) { | |||
tz = ambiguity_list[i]; | |||
if (jstz.date_is_dst(jstz.dst_start_for(tz))) { | |||
timezone_name = tz; | |||
return; | |||
} | |||
} | |||
}, | |||
/** | |||
* Checks if it is possible that the timezone is ambiguous. | |||
*/ | |||
is_ambiguous = function () { | |||
return typeof (AMBIGUITIES[timezone_name]) !== 'undefined'; | |||
}; | |||
if (is_ambiguous()) { | |||
ambiguity_check(); | |||
} | |||
return { | |||
name: function () { | |||
return timezone_name; | |||
} | |||
}; | |||
}; | |||
jstz.olson = {}; | |||
/* | |||
* The keys in this dictionary are comma separated as such: | |||
* | |||
* First the offset compared to UTC time in minutes. | |||
* | |||
* Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it | |||
* does. | |||
* | |||
* Thirdly an optional 's' signifies that the timezone is in the southern hemisphere, | |||
* only interesting for timezones with DST. | |||
* | |||
* The mapped arrays is used for constructing the jstz.TimeZone object from within | |||
* jstz.determine_timezone(); | |||
*/ | |||
jstz.olson.timezones = { | |||
'-720,0' : 'Pacific/Majuro', | |||
'-660,0' : 'Pacific/Pago_Pago', | |||
'-600,1' : 'America/Adak', | |||
'-600,0' : 'Pacific/Honolulu', | |||
'-570,0' : 'Pacific/Marquesas', | |||
'-540,0' : 'Pacific/Gambier', | |||
'-540,1' : 'America/Anchorage', | |||
'-480,1' : 'America/Los_Angeles', | |||
'-480,0' : 'Pacific/Pitcairn', | |||
'-420,0' : 'America/Phoenix', | |||
'-420,1' : 'America/Denver', | |||
'-360,0' : 'America/Guatemala', | |||
'-360,1' : 'America/Chicago', | |||
'-360,1,s' : 'Pacific/Easter', | |||
'-300,0' : 'America/Bogota', | |||
'-300,1' : 'America/New_York', | |||
'-270,0' : 'America/Caracas', | |||
'-240,1' : 'America/Halifax', | |||
'-240,0' : 'America/Santo_Domingo', | |||
'-240,1,s' : 'America/Santiago', | |||
'-210,1' : 'America/St_Johns', | |||
'-180,1' : 'America/Godthab', | |||
'-180,0' : 'America/Argentina/Buenos_Aires', | |||
'-180,1,s' : 'America/Montevideo', | |||
'-120,0' : 'America/Noronha', | |||
'-120,1' : 'America/Noronha', | |||
'-60,1' : 'Atlantic/Azores', | |||
'-60,0' : 'Atlantic/Cape_Verde', | |||
'0,0' : 'Etc/UTC', | |||
'0,1' : 'Europe/London', | |||
'60,1' : 'Europe/Berlin', | |||
'60,0' : 'Africa/Lagos', | |||
'60,1,s' : 'Africa/Windhoek', | |||
'120,1' : 'Asia/Beirut', | |||
'120,0' : 'Africa/Johannesburg', | |||
'180,0' : 'Asia/Baghdad', | |||
'180,1' : 'Europe/Moscow', | |||
'210,1' : 'Asia/Tehran', | |||
'240,0' : 'Asia/Dubai', | |||
'240,1' : 'Asia/Baku', | |||
'270,0' : 'Asia/Kabul', | |||
'300,1' : 'Asia/Yekaterinburg', | |||
'300,0' : 'Asia/Karachi', | |||
'330,0' : 'Asia/Kolkata', | |||
'345,0' : 'Asia/Kathmandu', | |||
'360,0' : 'Asia/Dhaka', | |||
'360,1' : 'Asia/Omsk', | |||
'390,0' : 'Asia/Rangoon', | |||
'420,1' : 'Asia/Krasnoyarsk', | |||
'420,0' : 'Asia/Jakarta', | |||
'480,0' : 'Asia/Shanghai', | |||
'480,1' : 'Asia/Irkutsk', | |||
'525,0' : 'Australia/Eucla', | |||
'525,1,s' : 'Australia/Eucla', | |||
'540,1' : 'Asia/Yakutsk', | |||
'540,0' : 'Asia/Tokyo', | |||
'570,0' : 'Australia/Darwin', | |||
'570,1,s' : 'Australia/Adelaide', | |||
'600,0' : 'Australia/Brisbane', | |||
'600,1' : 'Asia/Vladivostok', | |||
'600,1,s' : 'Australia/Sydney', | |||
'630,1,s' : 'Australia/Lord_Howe', | |||
'660,1' : 'Asia/Kamchatka', | |||
'660,0' : 'Pacific/Noumea', | |||
'690,0' : 'Pacific/Norfolk', | |||
'720,1,s' : 'Pacific/Auckland', | |||
'720,0' : 'Pacific/Tarawa', | |||
'765,1,s' : 'Pacific/Chatham', | |||
'780,0' : 'Pacific/Tongatapu', | |||
'780,1,s' : 'Pacific/Apia', | |||
'840,0' : 'Pacific/Kiritimati' | |||
}; | |||
if (typeof exports !== 'undefined') { | |||
exports.jstz = jstz; | |||
} else { | |||
root.jstz = jstz; | |||
} | |||
})(this); |
@@ -1,33 +0,0 @@ | |||
{ | |||
"name": "marked", | |||
"version": "0.3.6", | |||
"homepage": "https://github.com/chjj/marked", | |||
"authors": [ | |||
"Christopher Jeffrey <chjjeffrey@gmail.com>" | |||
], | |||
"description": "A markdown parser built for speed", | |||
"keywords": [ | |||
"markdown", | |||
"markup", | |||
"html" | |||
], | |||
"main": "lib/marked.js", | |||
"license": "MIT", | |||
"ignore": [ | |||
"**/.*", | |||
"node_modules", | |||
"bower_components", | |||
"app/bower_components", | |||
"test", | |||
"tests" | |||
], | |||
"_release": "0.3.6", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "v0.3.6", | |||
"commit": "eddec20467c2d10c7769061ee9074e268500966f" | |||
}, | |||
"_source": "https://github.com/chjj/marked.git", | |||
"_target": "0.3.6", | |||
"_originalSource": "marked" | |||
} |
@@ -1,19 +0,0 @@ | |||
Copyright (c) 2011-2014, Christopher Jeffrey (https://github.com/chjj/) | |||
Permission is hereby granted, free of charge, to any person obtaining a copy | |||
of this software and associated documentation files (the "Software"), to deal | |||
in the Software without restriction, including without limitation the rights | |||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
copies of the Software, and to permit persons to whom the Software is | |||
furnished to do so, subject to the following conditions: | |||
The above copyright notice and this permission notice shall be included in | |||
all copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |||
THE SOFTWARE. |
@@ -1,36 +0,0 @@ | |||
{ | |||
"name": "moment", | |||
"license": "MIT", | |||
"main": "moment.js", | |||
"ignore": [ | |||
"**/.*", | |||
"benchmarks", | |||
"bower_components", | |||
"meteor", | |||
"node_modules", | |||
"scripts", | |||
"tasks", | |||
"test", | |||
"component.json", | |||
"composer.json", | |||
"CONTRIBUTING.md", | |||
"ender.js", | |||
"Gruntfile.js", | |||
"Moment.js.nuspec", | |||
"package.js", | |||
"package.json", | |||
"ISSUE_TEMPLATE.md", | |||
"typing-tests" | |||
], | |||
"homepage": "https://github.com/moment/moment", | |||
"version": "2.18.1", | |||
"_release": "2.18.1", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "2.18.1", | |||
"commit": "0af7d4f5f25f911c2eaab2a7ccb534c17e65c536" | |||
}, | |||
"_source": "https://github.com/moment/moment.git", | |||
"_target": "2.18.1", | |||
"_originalSource": "moment" | |||
} |
@@ -1,22 +0,0 @@ | |||
Copyright (c) JS Foundation and other contributors | |||
Permission is hereby granted, free of charge, to any person | |||
obtaining a copy of this software and associated documentation | |||
files (the "Software"), to deal in the Software without | |||
restriction, including without limitation the rights to use, | |||
copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
copies of the Software, and to permit persons to whom the | |||
Software is furnished to do so, subject to the following | |||
conditions: | |||
The above copyright notice and this permission notice shall be | |||
included in all copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |||
OTHER DEALINGS IN THE SOFTWARE. |
@@ -1,24 +0,0 @@ | |||
{ | |||
"name": "select2", | |||
"version": "3.4.8", | |||
"main": [ | |||
"select2.js", | |||
"select2.css", | |||
"select2.png", | |||
"select2x2.png", | |||
"select2-spinner.gif" | |||
], | |||
"dependencies": { | |||
"jquery": ">= 1.7.1" | |||
}, | |||
"homepage": "https://github.com/ivaynberg/select2", | |||
"_release": "3.4.8", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "3.4.8", | |||
"commit": "ee0f36a47e2133b23330fbec740b2d3a17a0d9c2" | |||
}, | |||
"_source": "https://github.com/ivaynberg/select2.git", | |||
"_target": "3.4.8", | |||
"_originalSource": "select2" | |||
} |
@@ -1,18 +0,0 @@ | |||
Copyright 2014 Igor Vaynberg | |||
Version: @@ver@@ Timestamp: @@timestamp@@ | |||
This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU | |||
General Public License version 2 (the "GPL License"). You may choose either license to govern your | |||
use of this software only upon the condition that you accept all of the terms of either the Apache | |||
License or the GPL License. | |||
You may obtain a copy of the Apache License and the GPL License at: | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
http://www.gnu.org/licenses/gpl-2.0.html | |||
Unless required by applicable law or agreed to in writing, software distributed under the Apache License | |||
or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, | |||
either express or implied. See the Apache License and the GPL License for the specific language governing | |||
permissions and limitations under the Apache License and the GPL License. |
@@ -1,646 +0,0 @@ | |||
/* | |||
Version: 3.4.8 Timestamp: Thu May 1 09:50:32 EDT 2014 | |||
*/ | |||
.select2-container { | |||
margin: 0; | |||
position: relative; | |||
display: inline-block; | |||
/* inline-block for ie7 */ | |||
zoom: 1; | |||
*display: inline; | |||
vertical-align: middle; | |||
} | |||
.select2-container, | |||
.select2-drop, | |||
.select2-search, | |||
.select2-search input { | |||
/* | |||
Force border-box so that % widths fit the parent | |||
container without overlap because of margin/padding. | |||
More Info : http://www.quirksmode.org/css/box.html | |||
*/ | |||
-webkit-box-sizing: border-box; /* webkit */ | |||
-moz-box-sizing: border-box; /* firefox */ | |||
box-sizing: border-box; /* css3 */ | |||
} | |||
.select2-container .select2-choice { | |||
display: block; | |||
height: 26px; | |||
padding: 0 0 0 8px; | |||
overflow: hidden; | |||
position: relative; | |||
border: 1px solid #aaa; | |||
white-space: nowrap; | |||
line-height: 26px; | |||
color: #444; | |||
text-decoration: none; | |||
border-radius: 4px; | |||
background-clip: padding-box; | |||
-webkit-touch-callout: none; | |||
-webkit-user-select: none; | |||
-moz-user-select: none; | |||
-ms-user-select: none; | |||
user-select: none; | |||
background-color: #fff; | |||
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff)); | |||
background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%); | |||
background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%); | |||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0); | |||
background-image: linear-gradient(to top, #eee 0%, #fff 50%); | |||
} | |||
.select2-container.select2-drop-above .select2-choice { | |||
border-bottom-color: #aaa; | |||
border-radius: 0 0 4px 4px; | |||
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff)); | |||
background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%); | |||
background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%); | |||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); | |||
background-image: linear-gradient(to bottom, #eee 0%, #fff 90%); | |||
} | |||
.select2-container.select2-allowclear .select2-choice .select2-chosen { | |||
margin-right: 42px; | |||
} | |||
.select2-container .select2-choice > .select2-chosen { | |||
margin-right: 26px; | |||
display: block; | |||
overflow: hidden; | |||
white-space: nowrap; | |||
text-overflow: ellipsis; | |||
float: none; | |||
width: auto; | |||
} | |||
.select2-container .select2-choice abbr { | |||
display: none; | |||
width: 12px; | |||
height: 12px; | |||
position: absolute; | |||
right: 24px; | |||
top: 8px; | |||
font-size: 1px; | |||
text-decoration: none; | |||
border: 0; | |||
background: url('select2.png') right top no-repeat; | |||
cursor: pointer; | |||
outline: 0; | |||
} | |||
.select2-container.select2-allowclear .select2-choice abbr { | |||
display: inline-block; | |||
} | |||
.select2-container .select2-choice abbr:hover { | |||
background-position: right -11px; | |||
cursor: pointer; | |||
} | |||
.select2-drop-mask { | |||
border: 0; | |||
margin: 0; | |||
padding: 0; | |||
position: fixed; | |||
left: 0; | |||
top: 0; | |||
min-height: 100%; | |||
min-width: 100%; | |||
height: auto; | |||
width: auto; | |||
opacity: 0; | |||
z-index: 9998; | |||
/* styles required for IE to work */ | |||
background-color: #fff; | |||
filter: alpha(opacity=0); | |||
} | |||
.select2-drop { | |||
width: 100%; | |||
margin-top: -1px; | |||
position: absolute; | |||
z-index: 9999; | |||
top: 100%; | |||
background: #fff; | |||
color: #000; | |||
border: 1px solid #aaa; | |||
border-top: 0; | |||
border-radius: 0 0 4px 4px; | |||
-webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15); | |||
box-shadow: 0 4px 5px rgba(0, 0, 0, .15); | |||
} | |||
.select2-drop.select2-drop-above { | |||
margin-top: 1px; | |||
border-top: 1px solid #aaa; | |||
border-bottom: 0; | |||
border-radius: 4px 4px 0 0; | |||
-webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); | |||
box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); | |||
} | |||
.select2-drop-active { | |||
border: 1px solid #5897fb; | |||
border-top: none; | |||
} | |||
.select2-drop.select2-drop-above.select2-drop-active { | |||
border-top: 1px solid #5897fb; | |||
} | |||
.select2-drop-auto-width { | |||
border-top: 1px solid #aaa; | |||
width: auto; | |||
} | |||
.select2-drop-auto-width .select2-search { | |||
padding-top: 4px; | |||
} | |||
.select2-container .select2-choice .select2-arrow { | |||
display: inline-block; | |||
width: 18px; | |||
height: 100%; | |||
position: absolute; | |||
right: 0; | |||
top: 0; | |||
border-left: 1px solid #aaa; | |||
border-radius: 0 4px 4px 0; | |||
background-clip: padding-box; | |||
background: #ccc; | |||
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee)); | |||
background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%); | |||
background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%); | |||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0); | |||
background-image: linear-gradient(to top, #ccc 0%, #eee 60%); | |||
} | |||
.select2-container .select2-choice .select2-arrow b { | |||
display: block; | |||
width: 100%; | |||
height: 100%; | |||
background: url('select2.png') no-repeat 0 1px; | |||
} | |||
.select2-search { | |||
display: inline-block; | |||
width: 100%; | |||
min-height: 26px; | |||
margin: 0; | |||
padding-left: 4px; | |||
padding-right: 4px; | |||
position: relative; | |||
z-index: 10000; | |||
white-space: nowrap; | |||
} | |||
.select2-search input { | |||
width: 100%; | |||
height: auto !important; | |||
min-height: 26px; | |||
padding: 4px 20px 4px 5px; | |||
margin: 0; | |||
outline: 0; | |||
font-family: sans-serif; | |||
font-size: 1em; | |||
border: 1px solid #aaa; | |||
border-radius: 0; | |||
-webkit-box-shadow: none; | |||
box-shadow: none; | |||
background: #fff url('select2.png') no-repeat 100% -22px; | |||
background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); | |||
background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); | |||
background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); | |||
background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; | |||
} | |||
.select2-drop.select2-drop-above .select2-search input { | |||
margin-top: 4px; | |||
} | |||
.select2-search input.select2-active { | |||
background: #fff url('select2-spinner.gif') no-repeat 100%; | |||
background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); | |||
background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); | |||
background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); | |||
background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; | |||
} | |||
.select2-container-active .select2-choice, | |||
.select2-container-active .select2-choices { | |||
border: 1px solid #5897fb; | |||
outline: none; | |||
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); | |||
box-shadow: 0 0 5px rgba(0, 0, 0, .3); | |||
} | |||
.select2-dropdown-open .select2-choice { | |||
border-bottom-color: transparent; | |||
-webkit-box-shadow: 0 1px 0 #fff inset; | |||
box-shadow: 0 1px 0 #fff inset; | |||
border-bottom-left-radius: 0; | |||
border-bottom-right-radius: 0; | |||
background-color: #eee; | |||
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee)); | |||
background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%); | |||
background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%); | |||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); | |||
background-image: linear-gradient(to top, #fff 0%, #eee 50%); | |||
} | |||
.select2-dropdown-open.select2-drop-above .select2-choice, | |||
.select2-dropdown-open.select2-drop-above .select2-choices { | |||
border: 1px solid #5897fb; | |||
border-top-color: transparent; | |||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee)); | |||
background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%); | |||
background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%); | |||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); | |||
background-image: linear-gradient(to bottom, #fff 0%, #eee 50%); | |||
} | |||
.select2-dropdown-open .select2-choice .select2-arrow { | |||
background: transparent; | |||
border-left: none; | |||
filter: none; | |||
} | |||
.select2-dropdown-open .select2-choice .select2-arrow b { | |||
background-position: -18px 1px; | |||
} | |||
.select2-hidden-accessible { | |||
border: 0; | |||
clip: rect(0 0 0 0); | |||
height: 1px; | |||
margin: -1px; | |||
overflow: hidden; | |||
padding: 0; | |||
position: absolute; | |||
width: 1px; | |||
} | |||
/* results */ | |||
.select2-results { | |||
max-height: 200px; | |||
padding: 0 0 0 4px; | |||
margin: 4px 4px 4px 0; | |||
position: relative; | |||
overflow-x: hidden; | |||
overflow-y: auto; | |||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0); | |||
} | |||
.select2-results ul.select2-result-sub { | |||
margin: 0; | |||
padding-left: 0; | |||
} | |||
.select2-results li { | |||
list-style: none; | |||
display: list-item; | |||
background-image: none; | |||
} | |||
.select2-results li.select2-result-with-children > .select2-result-label { | |||
font-weight: bold; | |||
} | |||
.select2-results .select2-result-label { | |||
padding: 3px 7px 4px; | |||
margin: 0; | |||
cursor: pointer; | |||
min-height: 1em; | |||
-webkit-touch-callout: none; | |||
-webkit-user-select: none; | |||
-moz-user-select: none; | |||
-ms-user-select: none; | |||
user-select: none; | |||
} | |||
.select2-results-dept-1 .select2-result-label { padding-left: 20px } | |||
.select2-results-dept-2 .select2-result-label { padding-left: 40px } | |||
.select2-results-dept-3 .select2-result-label { padding-left: 60px } | |||
.select2-results-dept-4 .select2-result-label { padding-left: 80px } | |||
.select2-results-dept-5 .select2-result-label { padding-left: 100px } | |||
.select2-results-dept-6 .select2-result-label { padding-left: 110px } | |||
.select2-results-dept-7 .select2-result-label { padding-left: 120px } | |||
.select2-results .select2-highlighted { | |||
background: #3875d7; | |||
color: #fff; | |||
} | |||
.select2-results li em { | |||
background: #feffde; | |||
font-style: normal; | |||
} | |||
.select2-results .select2-highlighted em { | |||
background: transparent; | |||
} | |||
.select2-results .select2-highlighted ul { | |||
background: #fff; | |||
color: #000; | |||
} | |||
.select2-results .select2-no-results, | |||
.select2-results .select2-searching, | |||
.select2-results .select2-selection-limit { | |||
background: #f4f4f4; | |||
display: list-item; | |||
padding-left: 5px; | |||
} | |||
/* | |||
disabled look for disabled choices in the results dropdown | |||
*/ | |||
.select2-results .select2-disabled.select2-highlighted { | |||
color: #666; | |||
background: #f4f4f4; | |||
display: list-item; | |||
cursor: default; | |||
} | |||
.select2-results .select2-disabled { | |||
background: #f4f4f4; | |||
display: list-item; | |||
cursor: default; | |||
} | |||
.select2-results .select2-selected { | |||
display: none; | |||
} | |||
.select2-more-results.select2-active { | |||
background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%; | |||
} | |||
.select2-more-results { | |||
background: #f4f4f4; | |||
display: list-item; | |||
} | |||
/* disabled styles */ | |||
.select2-container.select2-container-disabled .select2-choice { | |||
background-color: #f4f4f4; | |||
background-image: none; | |||
border: 1px solid #ddd; | |||
cursor: default; | |||
} | |||
.select2-container.select2-container-disabled .select2-choice .select2-arrow { | |||
background-color: #f4f4f4; | |||
background-image: none; | |||
border-left: 0; | |||
} | |||
.select2-container.select2-container-disabled .select2-choice abbr { | |||
display: none; | |||
} | |||
/* multiselect */ | |||
.select2-container-multi .select2-choices { | |||
height: auto !important; | |||
height: 1%; | |||
margin: 0; | |||
padding: 0; | |||
position: relative; | |||
border: 1px solid #aaa; | |||
cursor: text; | |||
overflow: hidden; | |||
background-color: #fff; | |||
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff)); | |||
background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%); | |||
background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%); | |||
background-image: linear-gradient(to bottom, #eee 1%, #fff 15%); | |||
} | |||
.select2-locked { | |||
padding: 3px 5px 3px 5px !important; | |||
} | |||
.select2-container-multi .select2-choices { | |||
min-height: 26px; | |||
} | |||
.select2-container-multi.select2-container-active .select2-choices { | |||
border: 1px solid #5897fb; | |||
outline: none; | |||
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); | |||
box-shadow: 0 0 5px rgba(0, 0, 0, .3); | |||
} | |||
.select2-container-multi .select2-choices li { | |||
float: left; | |||
list-style: none; | |||
} | |||
html[dir="rtl"] .select2-container-multi .select2-choices li | |||
{ | |||
float: right; | |||
} | |||
.select2-container-multi .select2-choices .select2-search-field { | |||
margin: 0; | |||
padding: 0; | |||
white-space: nowrap; | |||
} | |||
.select2-container-multi .select2-choices .select2-search-field input { | |||
padding: 5px; | |||
margin: 1px 0; | |||
font-family: sans-serif; | |||
font-size: 100%; | |||
color: #666; | |||
outline: 0; | |||
border: 0; | |||
-webkit-box-shadow: none; | |||
box-shadow: none; | |||
background: transparent !important; | |||
} | |||
.select2-container-multi .select2-choices .select2-search-field input.select2-active { | |||
background: #fff url('select2-spinner.gif') no-repeat 100% !important; | |||
} | |||
.select2-default { | |||
color: #999 !important; | |||
} | |||
.select2-container-multi .select2-choices .select2-search-choice { | |||
padding: 3px 5px 3px 18px; | |||
margin: 3px 0 3px 5px; | |||
position: relative; | |||
line-height: 13px; | |||
color: #333; | |||
cursor: default; | |||
border: 1px solid #aaaaaa; | |||
border-radius: 3px; | |||
-webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); | |||
box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); | |||
background-clip: padding-box; | |||
-webkit-touch-callout: none; | |||
-webkit-user-select: none; | |||
-moz-user-select: none; | |||
-ms-user-select: none; | |||
user-select: none; | |||
background-color: #e4e4e4; | |||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0); | |||
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee)); | |||
background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); | |||
background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); | |||
background-image: linear-gradient(to top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); | |||
} | |||
html[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice | |||
{ | |||
margin-left: 0; | |||
margin-right: 5px; | |||
} | |||
.select2-container-multi .select2-choices .select2-search-choice .select2-chosen { | |||
cursor: default; | |||
} | |||
.select2-container-multi .select2-choices .select2-search-choice-focus { | |||
background: #d4d4d4; | |||
} | |||
.select2-search-choice-close { | |||
display: block; | |||
width: 12px; | |||
height: 13px; | |||
position: absolute; | |||
right: 3px; | |||
top: 4px; | |||
font-size: 1px; | |||
outline: none; | |||
background: url('select2.png') right top no-repeat; | |||
} | |||
html[dir="rtl"] .select2-search-choice-close { | |||
right: auto; | |||
left: 3px; | |||
} | |||
.select2-container-multi .select2-search-choice-close { | |||
left: 3px; | |||
} | |||
.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover { | |||
background-position: right -11px; | |||
} | |||
.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close { | |||
background-position: right -11px; | |||
} | |||
/* disabled styles */ | |||
.select2-container-multi.select2-container-disabled .select2-choices { | |||
background-color: #f4f4f4; | |||
background-image: none; | |||
border: 1px solid #ddd; | |||
cursor: default; | |||
} | |||
.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice { | |||
padding: 3px 5px 3px 5px; | |||
border: 1px solid #ddd; | |||
background-image: none; | |||
background-color: #f4f4f4; | |||
} | |||
.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none; | |||
background: none; | |||
} | |||
/* end multiselect */ | |||
.select2-result-selectable .select2-match, | |||
.select2-result-unselectable .select2-match { | |||
text-decoration: underline; | |||
} | |||
.select2-offscreen, .select2-offscreen:focus { | |||
clip: rect(0 0 0 0) !important; | |||
width: 1px !important; | |||
height: 1px !important; | |||
border: 0 !important; | |||
margin: 0 !important; | |||
padding: 0 !important; | |||
overflow: hidden !important; | |||
position: absolute !important; | |||
outline: 0 !important; | |||
left: 0px !important; | |||
top: 0px !important; | |||
} | |||
.select2-display-none { | |||
display: none; | |||
} | |||
.select2-measure-scrollbar { | |||
position: absolute; | |||
top: -10000px; | |||
left: -10000px; | |||
width: 100px; | |||
height: 100px; | |||
overflow: scroll; | |||
} | |||
/* Retina-ize icons */ | |||
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) { | |||
.select2-search input, | |||
.select2-search-choice-close, | |||
.select2-container .select2-choice abbr, | |||
.select2-container .select2-choice .select2-arrow b { | |||
background-image: url('select2x2.png') !important; | |||
background-repeat: no-repeat !important; | |||
background-size: 60px 40px !important; | |||
} | |||
.select2-search input { | |||
background-position: 100% -21px !important; | |||
} | |||
} |
@@ -1,31 +0,0 @@ | |||
{ | |||
"name": "Snap.js", | |||
"description": "A Library for creating beautiful mobile shelfs in Javascript (Facebook and Path style side menus)", | |||
"version": "2.0.0-rc1", | |||
"author": "Jacob Kelley <jakie8@gmail.com>", | |||
"keywords": [ | |||
"mobile shelfs", | |||
"nav", | |||
"menu", | |||
"mobile", | |||
"side menu" | |||
], | |||
"license": "MIT", | |||
"main": [ | |||
"./dist/latest/snap.js", | |||
"./dist/latest/snap.css" | |||
], | |||
"scripts": [ | |||
"snap.js" | |||
], | |||
"homepage": "https://github.com/jakiestfu/Snap.js", | |||
"_release": "2.0.0-rc1", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "v2.0.0-rc1", | |||
"commit": "15c77da330d9e8ca580a922bc748d88553838a73" | |||
}, | |||
"_source": "https://github.com/jakiestfu/Snap.js.git", | |||
"_target": "2.0.0-rc1", | |||
"_originalSource": "snapjs" | |||
} |
@@ -1,785 +0,0 @@ | |||
/*! Snap.js v2.0.0-rc1 */ | |||
(function(win, doc) { | |||
'use strict'; | |||
// Our export | |||
var Namespace = 'Snap'; | |||
// Our main toolbelt | |||
var utils = { | |||
/** | |||
* Deeply extends two objects | |||
* @param {Object} destination The destination object | |||
* @param {Object} source The custom options to extend destination by | |||
* @return {Object} The desination object | |||
*/ | |||
extend: function(destination, source) { | |||
var property; | |||
for (property in source) { | |||
if (source[property] && source[property].constructor && source[property].constructor === Object) { | |||
destination[property] = destination[property] || {}; | |||
utils.extend(destination[property], source[property]); | |||
} else { | |||
destination[property] = source[property]; | |||
} | |||
} | |||
return destination; | |||
} | |||
}; | |||
/** | |||
* Our Snap global that initializes our instance | |||
* @param {Object} opts The custom Snap.js options | |||
*/ | |||
var Core = function( opts ) { | |||
var self = this; | |||
/** | |||
* Our default settings for a Snap instance | |||
* @type {Object} | |||
*/ | |||
var settings = self.settings = { | |||
element: null, | |||
dragger: null, | |||
disable: 'none', | |||
addBodyClasses: true, | |||
hyperextensible: true, | |||
resistance: 0.5, | |||
flickThreshold: 50, | |||
transitionSpeed: 0.3, | |||
easing: 'ease', | |||
maxPosition: 266, | |||
minPosition: -266, | |||
tapToClose: true, | |||
touchToDrag: true, | |||
clickToDrag: true, | |||
slideIntent: 40, // degrees | |||
minDragDistance: 5 | |||
}; | |||
/** | |||
* Stores internally global data | |||
* @type {Object} | |||
*/ | |||
var cache = self.cache = { | |||
isDragging: false, | |||
simpleStates: { | |||
opening: null, | |||
towards: null, | |||
hyperExtending: null, | |||
halfway: null, | |||
flick: null, | |||
translation: { | |||
absolute: 0, | |||
relative: 0, | |||
sinceDirectionChange: 0, | |||
percentage: 0 | |||
} | |||
} | |||
}; | |||
var eventList = self.eventList = {}; | |||
utils.extend(utils, { | |||
/** | |||
* Determines if we are interacting with a touch device | |||
* @type {Boolean} | |||
*/ | |||
hasTouch: ('ontouchstart' in doc.documentElement || win.navigator.msPointerEnabled), | |||
/** | |||
* Returns the appropriate event type based on whether we are a touch device or not | |||
* @param {String} action The "action" event you're looking for: up, down, move, out | |||
* @return {String} The browsers supported event name | |||
*/ | |||
eventType: function(action) { | |||
var eventTypes = { | |||
down: (utils.hasTouch ? 'touchstart' : settings.clickToDrag ? 'mousedown' : ''), | |||
move: (utils.hasTouch ? 'touchmove' : settings.clickToDrag ? 'mousemove' : ''), | |||
up: (utils.hasTouch ? 'touchend' : settings.clickToDrag ? 'mouseup': ''), | |||
out: (utils.hasTouch ? 'touchcancel' : settings.clickToDrag ? 'mouseout' : '') | |||
}; | |||
return eventTypes[action]; | |||
}, | |||
/** | |||
* Returns the correct "cursor" position on both browser and mobile | |||
* @param {String} t The coordinate to retrieve, either "X" or "Y" | |||
* @param {Object} e The event object being triggered | |||
* @return {Number} The desired coordiante for the events interaction | |||
*/ | |||
page: function(t, e){ | |||
return (utils.hasTouch && e.touches.length && e.touches[0]) ? e.touches[0]['page'+t] : e['page'+t]; | |||
}, | |||
klass: { | |||
/** | |||
* Checks if an element has a class name | |||
* @param {Object} el The element to check | |||
* @param {String} name The class name to search for | |||
* @return {Boolean} Returns true if the class exists | |||
*/ | |||
has: function(el, name){ | |||
return (el.className).indexOf(name) !== -1; | |||
}, | |||
/** | |||
* Adds a class name to an element | |||
* @param {Object} el The element to add to | |||
* @param {String} name The class name to add | |||
*/ | |||
add: function(el, name){ | |||
if(!utils.klass.has(el, name) && settings.addBodyClasses){ | |||
el.className += " "+name; | |||
} | |||
}, | |||
/** | |||
* Removes a class name | |||
* @param {Object} el The element to remove from | |||
* @param {String} name The class name to remove | |||
*/ | |||
remove: function(el, name){ | |||
if(utils.klass.has(el, name) && settings.addBodyClasses){ | |||
el.className = (el.className).replace(name, "").replace(/^\s+|\s+$/g, ''); | |||
} | |||
} | |||
}, | |||
/** | |||
* Dispatch a custom Snap.js event | |||
* @param {String} type The event name | |||
*/ | |||
dispatchEvent: function(type) { | |||
if( typeof eventList[type] === 'function') { | |||
return eventList[type].apply(); | |||
} | |||
}, | |||
/** | |||
* Determines the browsers vendor prefix for CSS3 | |||
* @return {String} The browsers vendor prefix | |||
*/ | |||
vendor: function(){ | |||
var tmp = doc.createElement("div"), | |||
prefixes = 'webkit Moz O ms'.split(' '), | |||
i; | |||
for (i in prefixes) { | |||
if (typeof tmp.style[prefixes[i] + 'Transition'] !== 'undefined') { | |||
return prefixes[i]; | |||
} | |||
} | |||
}, | |||
/** | |||
* Determines the browsers vendor prefix for transition callback events | |||
* @return {String} The event name | |||
*/ | |||
transitionCallback: function(){ | |||
return (cache.vendor==='Moz' || cache.vendor==='ms') ? 'transitionend' : cache.vendor+'TransitionEnd'; | |||
}, | |||
/** | |||
* Determines if the users browser supports CSS3 transformations | |||
* @return {[type]} [description] | |||
*/ | |||
canTransform: function(){ | |||
return typeof settings.element.style[cache.vendor+'Transform'] !== 'undefined'; | |||
}, | |||
/** | |||
* Determines an angle between two points | |||
* @param {Number} x The X coordinate | |||
* @param {Number} y The Y coordinate | |||
* @return {Number} The number of degrees between the two points | |||
*/ | |||
angleOfDrag: function(x, y) { | |||
var degrees, theta; | |||
// Calc Theta | |||
theta = Math.atan2(-(cache.startDragY - y), (cache.startDragX - x)); | |||
if (theta < 0) { | |||
theta += 2 * Math.PI; | |||
} | |||
// Calc Degrees | |||
degrees = Math.floor(theta * (180 / Math.PI) - 180); | |||
if (degrees < 0 && degrees > -180) { | |||
degrees = 360 - Math.abs(degrees); | |||
} | |||
return Math.abs(degrees); | |||
}, | |||
events: { | |||
/** | |||
* Adds an event to an element | |||
* @param {Object} element Element to add event to | |||
* @param {String} eventName The event name | |||
* @param {Function} func Callback function | |||
*/ | |||
addEvent: function addEvent(element, eventName, func) { | |||
if (element.addEventListener) { | |||
return element.addEventListener(eventName, func, false); | |||
} else if (element.attachEvent) { | |||
return element.attachEvent("on" + eventName, func); | |||
} | |||
}, | |||
/** | |||
* Removes an event to an element | |||
* @param {Object} element Element to remove event from | |||
* @param {String} eventName The event name | |||
* @param {Function} func Callback function | |||
*/ | |||
removeEvent: function addEvent(element, eventName, func) { | |||
if (element.addEventListener) { | |||
return element.removeEventListener(eventName, func, false); | |||
} else if (element.attachEvent) { | |||
return element.detachEvent("on" + eventName, func); | |||
} | |||
}, | |||
/** | |||
* Prevents the default event | |||
* @param {Object} e The event object | |||
*/ | |||
prevent: function(e) { | |||
if (e.preventDefault) { | |||
e.preventDefault(); | |||
} else { | |||
e.returnValue = false; | |||
} | |||
} | |||
}, | |||
/** | |||
* Searches the parent element until a specified attribute has been matched | |||
* @param {Object} el The element to search from | |||
* @param {String} attr The attribute to search for | |||
* @return {Object|null} Returns a matched element if it exists, else, null | |||
*/ | |||
parentUntil: function(el, attr) { | |||
var isStr = typeof attr === 'string'; | |||
while (el.parentNode) { | |||
if (isStr && el.getAttribute && el.getAttribute(attr)){ | |||
return el; | |||
} else if(!isStr && el === attr){ | |||
return el; | |||
} | |||
el = el.parentNode; | |||
} | |||
return null; | |||
} | |||
}); | |||
var action = self.action = { | |||
/** | |||
* Handles translating the elements position | |||
* @type {Object} | |||
*/ | |||
translate: { | |||
get: { | |||
/** | |||
* Returns the amount an element is translated | |||
* @param {Number} index The index desired from the CSS3 values of translate3d | |||
* @return {Number} The amount of pixels an element is translated | |||
*/ | |||
matrix: function(index) { | |||
if( !cache.canTransform ){ | |||
return parseInt(settings.element.style.left, 10); | |||
} else { | |||
var matrix = win.getComputedStyle(settings.element)[cache.vendor+'Transform'].match(/\((.*)\)/), | |||
ieOffset = 8; | |||
if (matrix) { | |||
matrix = matrix[1].split(','); | |||
// Internet Explorer likes to give us 16 fucking values | |||
if(matrix.length===16){ | |||
index+=ieOffset; | |||
} | |||
return parseInt(matrix[index], 10); | |||
} | |||
return 0; | |||
} | |||
} | |||
}, | |||
/** | |||
* Called when the element has finished transitioning | |||
*/ | |||
easeCallback: function(fn){ | |||
settings.element.style[cache.vendor+'Transition'] = ''; | |||
cache.translation = action.translate.get.matrix(4); | |||
cache.easing = false; | |||
if(cache.easingTo===0){ | |||
utils.klass.remove(doc.body, 'snapjs-right'); | |||
utils.klass.remove(doc.body, 'snapjs-left'); | |||
} | |||
if( cache.once ){ | |||
cache.once.call(self, self.state()); | |||
delete cache.once; | |||
} | |||
utils.dispatchEvent('animated'); | |||
utils.events.removeEvent(settings.element, utils.transitionCallback(), action.translate.easeCallback); | |||
}, | |||
/** | |||
* Animates the pane by the specified amount of pixels | |||
* @param {Number} n The amount of pixels to move the pane | |||
*/ | |||
easeTo: function(n, cb) { | |||
if( !cache.canTransform ){ | |||
cache.translation = n; | |||
action.translate.x(n); | |||
} else { | |||
cache.easing = true; | |||
cache.easingTo = n; | |||
settings.element.style[cache.vendor+'Transition'] = 'all ' + settings.transitionSpeed + 's ' + settings.easing; | |||
cache.once = cb; | |||
utils.events.addEvent(settings.element, utils.transitionCallback(), action.translate.easeCallback); | |||
action.translate.x(n); | |||
} | |||
if(n===0){ | |||
settings.element.style[cache.vendor+'Transform'] = ''; | |||
} | |||
}, | |||
/** | |||
* Immediately translates the element on its X axis | |||
* @param {Number} n Amount of pixels to translate | |||
*/ | |||
x: function(n) { | |||
if( (settings.disable==='left' && n>0) || | |||
(settings.disable==='right' && n<0) | |||
){ return; } | |||
if( !settings.hyperextensible ){ | |||
if( n===settings.maxPosition || n>settings.maxPosition ){ | |||
n=settings.maxPosition; | |||
} else if( n===settings.minPosition || n<settings.minPosition ){ | |||
n=settings.minPosition; | |||
} | |||
} | |||
n = parseInt(n, 10); | |||
if(isNaN(n)){ | |||
n = 0; | |||
} | |||
if( cache.canTransform ){ | |||
var theTranslate = 'translate3d(' + n + 'px, 0,0)'; | |||
settings.element.style[cache.vendor+'Transform'] = theTranslate; | |||
} else { | |||
settings.element.style.width = (win.innerWidth || doc.documentElement.clientWidth)+'px'; | |||
settings.element.style.left = n+'px'; | |||
settings.element.style.right = ''; | |||
} | |||
} | |||
}, | |||
/** | |||
* Handles all the events that interface with dragging | |||
* @type {Object} | |||
*/ | |||
drag: { | |||
/** | |||
* Begins listening for drag events on our element | |||
*/ | |||
listen: function() { | |||
cache.translation = 0; | |||
cache.easing = false; | |||
utils.events.addEvent(self.settings.element, utils.eventType('down'), action.drag.startDrag); | |||
utils.events.addEvent(self.settings.element, utils.eventType('move'), action.drag.dragging); | |||
utils.events.addEvent(self.settings.element, utils.eventType('up'), action.drag.endDrag); | |||
}, | |||
/** | |||
* Stops listening for drag events on our element | |||
*/ | |||
stopListening: function() { | |||
utils.events.removeEvent(settings.element, utils.eventType('down'), action.drag.startDrag); | |||
utils.events.removeEvent(settings.element, utils.eventType('move'), action.drag.dragging); | |||
utils.events.removeEvent(settings.element, utils.eventType('up'), action.drag.endDrag); | |||
}, | |||
/** | |||
* Fired immediately when the user begins to drag the content pane | |||
* @param {Object} e Event object | |||
*/ | |||
startDrag: function(e) { | |||
// No drag on ignored elements | |||
var target = e.target ? e.target : e.srcElement, | |||
ignoreParent = utils.parentUntil(target, 'data-snap-ignore'); | |||
if (ignoreParent) { | |||
utils.dispatchEvent('ignore'); | |||
return; | |||
} | |||
if(settings.dragger){ | |||
var dragParent = utils.parentUntil(target, settings.dragger); | |||
// Only use dragger if we're in a closed state | |||
if( !dragParent && | |||
(cache.translation !== settings.minPosition && | |||
cache.translation !== settings.maxPosition | |||
)){ | |||
return; | |||
} | |||
} | |||
utils.dispatchEvent('start'); | |||
settings.element.style[cache.vendor+'Transition'] = ''; | |||
cache.isDragging = true; | |||
cache.intentChecked = false; | |||
cache.startDragX = utils.page('X', e); | |||
cache.startDragY = utils.page('Y', e); | |||
cache.dragWatchers = { | |||
current: 0, | |||
last: 0, | |||
hold: 0, | |||
state: '' | |||
}; | |||
cache.simpleStates = { | |||
opening: null, | |||
towards: null, | |||
hyperExtending: null, | |||
halfway: null, | |||
flick: null, | |||
translation: { | |||
absolute: 0, | |||
relative: 0, | |||
sinceDirectionChange: 0, | |||
percentage: 0 | |||
} | |||
}; | |||
}, | |||
/** | |||
* Fired while the user is moving the content pane | |||
* @param {Object} e Event object | |||
*/ | |||
dragging: function(e) { | |||
if (cache.isDragging && settings.touchToDrag) { | |||
var thePageX = utils.page('X', e), | |||
thePageY = utils.page('Y', e), | |||
translated = cache.translation, | |||
absoluteTranslation = action.translate.get.matrix(4), | |||
whileDragX = thePageX - cache.startDragX, | |||
openingLeft = absoluteTranslation > 0, | |||
translateTo = whileDragX, | |||
diff; | |||
// Shown no intent already | |||
if((cache.intentChecked && !cache.hasIntent)){ | |||
return; | |||
} | |||
if(settings.addBodyClasses){ | |||
if((absoluteTranslation)>0){ | |||
utils.klass.add(doc.body, 'snapjs-left'); | |||
utils.klass.remove(doc.body, 'snapjs-right'); | |||
} else if((absoluteTranslation)<0){ | |||
utils.klass.add(doc.body, 'snapjs-right'); | |||
utils.klass.remove(doc.body, 'snapjs-left'); | |||
} | |||
} | |||
if (cache.hasIntent === false || cache.hasIntent === null) { | |||
var deg = utils.angleOfDrag(thePageX, thePageY), | |||
inRightRange = (deg >= 0 && deg <= settings.slideIntent) || (deg <= 360 && deg > (360 - settings.slideIntent)), | |||
inLeftRange = (deg >= 180 && deg <= (180 + settings.slideIntent)) || (deg <= 180 && deg >= (180 - settings.slideIntent)); | |||
if (!inLeftRange && !inRightRange) { | |||
cache.hasIntent = false; | |||
} else { | |||
cache.hasIntent = true; | |||
} | |||
cache.intentChecked = true; | |||
} | |||
if ( | |||
(settings.minDragDistance>=Math.abs(thePageX-cache.startDragX)) || // Has user met minimum drag distance? | |||
(cache.hasIntent === false) | |||
) { | |||
return; | |||
} | |||
utils.events.prevent(e); | |||
utils.dispatchEvent('drag'); | |||
cache.dragWatchers.current = thePageX; | |||
// Determine which direction we are going | |||
if (cache.dragWatchers.last > thePageX) { | |||
if (cache.dragWatchers.state !== 'left') { | |||
cache.dragWatchers.state = 'left'; | |||
cache.dragWatchers.hold = thePageX; | |||
} | |||
cache.dragWatchers.last = thePageX; | |||
} else if (cache.dragWatchers.last < thePageX) { | |||
if (cache.dragWatchers.state !== 'right') { | |||
cache.dragWatchers.state = 'right'; | |||
cache.dragWatchers.hold = thePageX; | |||
} | |||
cache.dragWatchers.last = thePageX; | |||
} | |||
if (openingLeft) { | |||
// Pulling too far to the right | |||
if (settings.maxPosition < absoluteTranslation) { | |||
diff = (absoluteTranslation - settings.maxPosition) * settings.resistance; | |||
translateTo = whileDragX - diff; | |||
} | |||
cache.simpleStates = { | |||
opening: 'left', | |||
towards: cache.dragWatchers.state, | |||
hyperExtending: settings.maxPosition < absoluteTranslation, | |||
halfway: absoluteTranslation > (settings.maxPosition / 2), | |||
flick: Math.abs(cache.dragWatchers.current - cache.dragWatchers.hold) > settings.flickThreshold, | |||
translation: { | |||
absolute: absoluteTranslation, | |||
relative: whileDragX, | |||
sinceDirectionChange: (cache.dragWatchers.current - cache.dragWatchers.hold), | |||
percentage: (absoluteTranslation/settings.maxPosition)*100 | |||
} | |||
}; | |||
} else { | |||
// Pulling too far to the left | |||
if (settings.minPosition > absoluteTranslation) { | |||
diff = (absoluteTranslation - settings.minPosition) * settings.resistance; | |||
translateTo = whileDragX - diff; | |||
} | |||
cache.simpleStates = { | |||
opening: 'right', | |||
towards: cache.dragWatchers.state, | |||
hyperExtending: settings.minPosition > absoluteTranslation, | |||
halfway: absoluteTranslation < (settings.minPosition / 2), | |||
flick: Math.abs(cache.dragWatchers.current - cache.dragWatchers.hold) > settings.flickThreshold, | |||
translation: { | |||
absolute: absoluteTranslation, | |||
relative: whileDragX, | |||
sinceDirectionChange: (cache.dragWatchers.current - cache.dragWatchers.hold), | |||
percentage: (absoluteTranslation/settings.minPosition)*100 | |||
} | |||
}; | |||
} | |||
action.translate.x(translateTo + translated); | |||
} | |||
}, | |||
/** | |||
* Fired when the user releases the content pane | |||
* @param {Object} e Event object | |||
*/ | |||
endDrag: function(e) { | |||
if (cache.isDragging) { | |||
utils.dispatchEvent('end'); | |||
var translated = action.translate.get.matrix(4); | |||
// Tap Close | |||
if (cache.dragWatchers.current === 0 && translated !== 0 && settings.tapToClose) { | |||
utils.dispatchEvent('close'); | |||
utils.events.prevent(e); | |||
action.translate.easeTo(0); | |||
cache.isDragging = false; | |||
cache.startDragX = 0; | |||
return; | |||
} | |||
// Revealing Left | |||
if (cache.simpleStates.opening === 'left') { | |||
// Halfway, Flicking, or Too Far Out | |||
if ((cache.simpleStates.halfway || cache.simpleStates.hyperExtending || cache.simpleStates.flick)) { | |||
if (cache.simpleStates.flick && cache.simpleStates.towards === 'left') { // Flicking Closed | |||
action.translate.easeTo(0); | |||
} else if ( | |||
(cache.simpleStates.flick && cache.simpleStates.towards === 'right') || // Flicking Open OR | |||
(cache.simpleStates.halfway || cache.simpleStates.hyperExtending) // At least halfway open OR hyperextending | |||
) { | |||
action.translate.easeTo(settings.maxPosition); // Open Left | |||
} | |||
} else { | |||
action.translate.easeTo(0); // Close Left | |||
} | |||
// Revealing Right | |||
} else if (cache.simpleStates.opening === 'right') { | |||
// Halfway, Flicking, or Too Far Out | |||
if ((cache.simpleStates.halfway || cache.simpleStates.hyperExtending || cache.simpleStates.flick)) { | |||
if (cache.simpleStates.flick && cache.simpleStates.towards === 'right') { // Flicking Closed | |||
action.translate.easeTo(0); | |||
} else if ( | |||
(cache.simpleStates.flick && cache.simpleStates.towards === 'left') || // Flicking Open OR | |||
(cache.simpleStates.halfway || cache.simpleStates.hyperExtending) // At least halfway open OR hyperextending | |||
) { | |||
action.translate.easeTo(settings.minPosition); // Open Right | |||
} | |||
} else { | |||
action.translate.easeTo(0); // Close Right | |||
} | |||
} | |||
cache.isDragging = false; | |||
cache.startDragX = utils.page('X', e); | |||
} | |||
} | |||
} | |||
}; | |||
// Initialize | |||
if (opts.element) { | |||
utils.extend(settings, opts); | |||
cache.vendor = utils.vendor(); | |||
cache.canTransform = utils.canTransform(); | |||
action.drag.listen(); | |||
} | |||
}; | |||
utils.extend(Core.prototype, { | |||
/** | |||
* Opens the specified side menu | |||
* @param {String} side Must be "left" or "right" | |||
*/ | |||
open: function(side, cb) { | |||
utils.dispatchEvent('open'); | |||
utils.klass.remove(doc.body, 'snapjs-expand-left'); | |||
utils.klass.remove(doc.body, 'snapjs-expand-right'); | |||
if (side === 'left') { | |||
this.cache.simpleStates.opening = 'left'; | |||
this.cache.simpleStates.towards = 'right'; | |||
utils.klass.add(doc.body, 'snapjs-left'); | |||
utils.klass.remove(doc.body, 'snapjs-right'); | |||
this.action.translate.easeTo(this.settings.maxPosition, cb); | |||
} else if (side === 'right') { | |||
this.cache.simpleStates.opening = 'right'; | |||
this.cache.simpleStates.towards = 'left'; | |||
utils.klass.remove(doc.body, 'snapjs-left'); | |||
utils.klass.add(doc.body, 'snapjs-right'); | |||
this.action.translate.easeTo(this.settings.minPosition, cb); | |||
} | |||
}, | |||
/** | |||
* Closes the pane | |||
*/ | |||
close: function(cb) { | |||
utils.dispatchEvent('close'); | |||
this.action.translate.easeTo(0, cb); | |||
}, | |||
/** | |||
* Hides the content pane completely allowing for full menu visibility | |||
* @param {String} side Must be "left" or "right" | |||
*/ | |||
expand: function(side){ | |||
var to = win.innerWidth || doc.documentElement.clientWidth; | |||
if(side==='left'){ | |||
utils.dispatchEvent('expandLeft'); | |||
utils.klass.add(doc.body, 'snapjs-expand-left'); | |||
utils.klass.remove(doc.body, 'snapjs-expand-right'); | |||
} else { | |||
utils.dispatchEvent('expandRight'); | |||
utils.klass.add(doc.body, 'snapjs-expand-right'); | |||
utils.klass.remove(doc.body, 'snapjs-expand-left'); | |||
to *= -1; | |||
} | |||
this.action.translate.easeTo(to); | |||
}, | |||
/** | |||
* Listen in to custom Snap events | |||
* @param {String} evt The snap event name | |||
* @param {Function} fn Callback function | |||
* @return {Object} Snap instance | |||
*/ | |||
on: function(evt, fn) { | |||
this.eventList[evt] = fn; | |||
return this; | |||
}, | |||
/** | |||
* Stops listening to custom Snap events | |||
* @param {String} evt The snap event name | |||
*/ | |||
off: function(evt) { | |||
if (this.eventList[evt]) { | |||
this.eventList[evt] = false; | |||
} | |||
}, | |||
/** | |||
* Enables Snap.js events | |||
*/ | |||
enable: function() { | |||
utils.dispatchEvent('enable'); | |||
this.action.drag.listen(); | |||
}, | |||
/** | |||
* Disables Snap.js events | |||
*/ | |||
disable: function() { | |||
utils.dispatchEvent('disable'); | |||
this.action.drag.stopListening(); | |||
}, | |||
/** | |||
* Updates the instances settings | |||
* @param {Object} opts The Snap options to set | |||
*/ | |||
settings: function(opts){ | |||
utils.extend(this.settings, opts); | |||
}, | |||
/** | |||
* Returns information about the state of the content pane | |||
* @return {Object} Information regarding the state of the pane | |||
*/ | |||
state: function() { | |||
var state, | |||
fromLeft = this.action.translate.get.matrix(4); | |||
if (fromLeft === this.settings.maxPosition) { | |||
state = 'left'; | |||
} else if (fromLeft === this.settings.minPosition) { | |||
state = 'right'; | |||
} else { | |||
state = 'closed'; | |||
} | |||
return { | |||
state: state, | |||
info: this.cache.simpleStates | |||
}; | |||
} | |||
}); | |||
// Assign to the global namespace | |||
this[Namespace] = Core; | |||
}).call(this, window, document); |
@@ -1,21 +0,0 @@ | |||
{ | |||
"name": "strengthify", | |||
"version": "0.5.5", | |||
"homepage": "https://github.com/MorrisJobke/strengthify", | |||
"authors": [ | |||
"Eve Ragins <eve.ragins@eve-corp.com", | |||
"Morris Jobke <hey@morrisjobke.de>" | |||
], | |||
"description": "Combine jQuery and zxcvbn to create a password strength meter.", | |||
"main": "jquery.strengthify.js", | |||
"license": "MIT", | |||
"_release": "0.5.5", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "0.5.5", | |||
"commit": "54553d678d7894beff368ce4b4393bcc1f387037" | |||
}, | |||
"_source": "https://github.com/MorrisJobke/strengthify.git", | |||
"_target": "0.5.5", | |||
"_originalSource": "strengthify" | |||
} |
@@ -1,21 +0,0 @@ | |||
The MIT License (MIT) | |||
Copyright (c) 2013-2016 Morris Jobke | |||
Eve Ragins @ Eve Corp (github.com/eve-corp) | |||
Permission is hereby granted, free of charge, to any person obtaining a copy of | |||
this software and associated documentation files (the "Software"), to deal in | |||
the Software without restriction, including without limitation the rights to | |||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of | |||
the Software, and to permit persons to whom the Software is furnished to do so, | |||
subject to the following conditions: | |||
The above copyright notice and this permission notice shall be included in all | |||
copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | |||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR | |||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | |||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | |||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
@@ -1,227 +0,0 @@ | |||
/** | |||
* Strengthify - show the weakness of a password (uses zxcvbn for this) | |||
* https://github.com/MorrisJobke/strengthify | |||
* | |||
* Version: 0.5.5 | |||
* Author: Morris Jobke (github.com/MorrisJobke) - original | |||
* Eve Ragins @ Eve Corp (github.com/eve-corp) | |||
* | |||
* | |||
* License: | |||
* | |||
* The MIT License (MIT) | |||
* | |||
* Copyright (c) 2013-2016 Morris Jobke <morris.jobke@gmail.com> | |||
* | |||
* Permission is hereby granted, free of charge, to any person obtaining a copy of | |||
* this software and associated documentation files (the "Software"), to deal in | |||
* the Software without restriction, including without limitation the rights to | |||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of | |||
* the Software, and to permit persons to whom the Software is furnished to do so, | |||
* subject to the following conditions: | |||
* | |||
* The above copyright notice and this permission notice shall be included in all | |||
* copies or substantial portions of the Software. | |||
* | |||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | |||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR | |||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | |||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | |||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
*/ | |||
/* global jQuery */ | |||
(function($) { | |||
$.fn.strengthify = function(paramOptions) { | |||
"use strict"; | |||
var defaults = { | |||
zxcvbn: 'zxcvbn/zxcvbn.js', | |||
titles: [ | |||
'Weakest', | |||
'Weak', | |||
'So-so', | |||
'Good', | |||
'Perfect' | |||
], | |||
tilesOptions:{ | |||
tooltip: true, | |||
element: false | |||
}, | |||
drawTitles: false, | |||
drawMessage: false, | |||
drawBars: true, | |||
$addAfter: null, | |||
nonce: null | |||
}; | |||
return this.each(function() { | |||
var options = $.extend(defaults, paramOptions); | |||
if (!options.drawTitles | |||
&& !options.drawMessage | |||
&& !options.drawBars) | |||
console.warn("expect at least one of 'drawTitles', 'drawMessage', or 'drawBars' to be true"); | |||
function getWrapperFor(id) { | |||
return $('div[data-strengthifyFor="' + id + '"]'); | |||
}; | |||
function drawStrengthify() { | |||
var password = $(this).val(), | |||
elemId = $(this).attr('id'), | |||
// hide strengthify if no input is provided | |||
opacity = (password === '') ? 0 : 1, | |||
// calculate result | |||
result = zxcvbn(password), | |||
// setup some vars for later | |||
css = '', | |||
bsLevel = '', | |||
message = '', | |||
// cache jQuery selections | |||
$wrapper = getWrapperFor(elemId), | |||
$container = $wrapper.find('.strengthify-container'), | |||
$message = $wrapper.find('[data-strengthifyMessage]'); | |||
$wrapper.children() | |||
.css('opacity', opacity) | |||
.css('-ms-filter', | |||
'"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + opacity * 100 + ')"' | |||
); | |||
if (options.onResult) { | |||
options.onResult(result); | |||
} | |||
// style strengthify bar | |||
// possible scores: 0-4 | |||
switch (result.score) { | |||
case 0: | |||
case 1: | |||
css = 'password-bad'; | |||
bsLevel = 'danger'; | |||
message = result.feedback ? result.feedback.suggestions.join('<br/>') : ""; | |||
break; | |||
case 2: | |||
bsLevel = 'warning'; | |||
message = result.feedback ? result.feedback.suggestions.join('<br/>') : ""; | |||
css = 'password-medium'; | |||
break; | |||
case 3: | |||
css = 'password-good'; | |||
bsLevel = 'info'; | |||
message = "Getting better."; | |||
break; | |||
case 4: | |||
css = 'password-good'; | |||
bsLevel = 'success'; | |||
message = "Looks good."; | |||
break; | |||
} | |||
if ($message) { | |||
$message.removeAttr('class'); | |||
$message.addClass('bg-' + bsLevel); | |||
// reset state for empty string password | |||
if (password === '') { | |||
message = ''; | |||
} | |||
$message.html(message); | |||
} | |||
if ($container) { | |||
$container | |||
.attr('class', css + ' strengthify-container') | |||
// possible scores: 0-4 | |||
.css( | |||
'width', | |||
// if score is '0' it will be changed to '1' to | |||
// not hide strengthify if the password is extremely weak | |||
((result.score === 0 ? 1 : result.score) * 25) + '%' | |||
); | |||
// reset state for empty string password | |||
if (password === '') { | |||
$container.css('width', 0); | |||
} | |||
} | |||
if (options.drawTitles) { | |||
// set a title for the wrapper | |||
if(options.tilesOptions.tooltip){ | |||
$wrapper.attr( | |||
'title', | |||
options.titles[result.score] | |||
).tooltip({ | |||
placement: 'bottom', | |||
trigger: 'manual', | |||
}).tooltip( | |||
'fixTitle' | |||
).tooltip( | |||
'show' | |||
); | |||
if (opacity === 0) { | |||
$wrapper.tooltip( | |||
'hide' | |||
); | |||
} | |||
} | |||
if(options.tilesOptions.element){ | |||
$wrapper.find(".strengthify-tiles").text(options.titles[result.score]); | |||
} | |||
} | |||
}; | |||
function init() { | |||
var $elem = $(this), | |||
elemId = $elem.attr('id'); | |||
var drawSelf = drawStrengthify.bind(this); | |||
var $addAfter = options.$addAfter; | |||
if (!$addAfter) { | |||
$addAfter = $elem; | |||
} | |||
// add elements | |||
$addAfter.after('<div class="strengthify-wrapper" data-strengthifyFor="' + $elem.attr('id') + '"></div>'); | |||
if (options.drawBars) { | |||
getWrapperFor(elemId) | |||
.append('<div class="strengthify-bg" />') | |||
.append('<div class="strengthify-container" />') | |||
.append('<div class="strengthify-separator" style="left: 25%" />') | |||
.append('<div class="strengthify-separator" style="left: 50%" />') | |||
.append('<div class="strengthify-separator" style="left: 75%" />'); | |||
} | |||
if (options.drawMessage) { | |||
getWrapperFor(elemId).append('<div data-strengthifyMessage></div>'); | |||
} | |||
if (options.drawTitles && options.tilesOptions) { | |||
getWrapperFor(elemId).append('<div class="strengthify-tiles"></div>'); | |||
} | |||
$elem.parent().on('scroll', drawSelf); | |||
var script = document.createElement("script"); | |||
script.src = options.zxcvbn; | |||
if (options.nonce !== null) { | |||
script.nonce = options.nonce; | |||
} | |||
document.head.appendChild(script); | |||
$elem.bind('keyup input change', drawSelf); | |||
}; | |||
init.call(this); | |||
//return me; | |||
}); | |||
}; | |||
} (jQuery)); |
@@ -1,60 +0,0 @@ | |||
/** | |||
* Strengthify - show the weakness of a password (uses zxcvbn for this) | |||
* https://github.com/MorrisJobke/strengthify | |||
* Version: 0.5.5 | |||
* License: The MIT License (MIT) | |||
* Copyright (c) 2013-2016 Morris Jobke <morris.jobke@gmail.com> | |||
*/ | |||
.strengthify-wrapper { | |||
position: relative; | |||
} | |||
.strengthify-wrapper > * { | |||
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; | |||
filter: alpha(opacity=0); | |||
opacity: 0; | |||
-webkit-transition:all .5s ease-in-out; | |||
-moz-transition:all .5s ease-in-out; | |||
transition:all .5s ease-in-out; | |||
} | |||
.strengthify-bg, .strengthify-container, .strengthify-separator { | |||
height: 3px; | |||
} | |||
.strengthify-bg, .strengthify-container { | |||
display: block; | |||
position: absolute; | |||
width: 100%; | |||
} | |||
.strengthify-bg { | |||
background-color: #BBB; | |||
} | |||
.strengthify-separator { | |||
display: inline-block; | |||
position: absolute; | |||
background-color: #FFF; | |||
width: 1px; | |||
z-index: 10; | |||
} | |||
.password-bad { | |||
background-color: #C33; | |||
} | |||
.password-medium { | |||
background-color: #F80; | |||
} | |||
.password-good { | |||
background-color: #3C3; | |||
} | |||
div[data-strengthifyMessage] { | |||
padding: 3px 8px; | |||
} | |||
.strengthify-tiles{ | |||
float: right; | |||
} |
@@ -1,35 +0,0 @@ | |||
{ | |||
"name": "underscore", | |||
"version": "1.8.3", | |||
"main": "underscore.js", | |||
"keywords": [ | |||
"util", | |||
"functional", | |||
"server", | |||
"client", | |||
"browser" | |||
], | |||
"ignore": [ | |||
"docs", | |||
"test", | |||
"*.yml", | |||
"CNAME", | |||
"index.html", | |||
"favicon.ico", | |||
"CONTRIBUTING.md", | |||
".*", | |||
"component.json", | |||
"package.json", | |||
"karma.*" | |||
], | |||
"homepage": "https://github.com/jashkenas/underscore", | |||
"_release": "1.8.3", | |||
"_resolution": { | |||
"type": "version", | |||
"tag": "1.8.3", | |||
"commit": "e4743ab712b8ab42ad4ccb48b155034d02394e4d" | |||
}, | |||
"_source": "https://github.com/jashkenas/underscore.git", | |||
"_target": "1.8.3", | |||
"_originalSource": "underscore" | |||
} |
@@ -1,23 +0,0 @@ | |||
Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative | |||
Reporters & Editors | |||
Permission is hereby granted, free of charge, to any person | |||
obtaining a copy of this software and associated documentation | |||
files (the "Software"), to deal in the Software without | |||
restriction, including without limitation the rights to use, | |||
copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
copies of the Software, and to permit persons to whom the | |||
Software is furnished to do so, subject to the following | |||
conditions: | |||
The above copyright notice and this permission notice shall be | |||
included in all copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |||
OTHER DEALINGS IN THE SOFTWARE. |
@@ -0,0 +1,51 @@ | |||
const path = require('path'); | |||
const webpack = require('webpack'); | |||
module.exports = { | |||
entry: { | |||
main: path.join(__dirname, 'src/main.js') | |||
}, | |||
output: { | |||
filename: '[name].js', | |||
path: path.resolve(__dirname, 'js/dist') | |||
}, | |||
module: { | |||
rules: [ | |||
{ | |||
test: /\.css$/, | |||
use: ['style-loader', 'css-loader'] | |||
}, | |||
{ | |||
test: /davclient/, | |||
use: 'exports-loader?dav' | |||
}, | |||
{ | |||
test: /\.js$/, | |||
loader: 'babel-loader', | |||
exclude: /node_modules/ | |||
}, | |||
{ | |||
test: /\.(png|jpg|gif)$/, | |||
loader: 'url-loader', | |||
options: { | |||
name: '[name].[ext]?[hash]', | |||
limit: 8192 | |||
} | |||
} | |||
] | |||
}, | |||
plugins: [ | |||
new webpack.ProvidePlugin({ | |||
'_': "underscore", | |||
$: "jquery", | |||
jQuery: "jquery" | |||
}) | |||
], | |||
resolve: { | |||
alias: { | |||
handlebars: 'handlebars/dist/handlebars.min.js' | |||
}, | |||
extensions: ['*', '.js'], | |||
symlinks: false | |||
} | |||
}; |
@@ -0,0 +1,7 @@ | |||
const merge = require('webpack-merge'); | |||
const common = require('./webpack.common.js'); | |||
module.exports = merge(common, { | |||
mode: 'development', | |||
devtool: 'cheap-source-map', | |||
}) |
@@ -0,0 +1,7 @@ | |||
const merge = require('webpack-merge') | |||
const common = require('./webpack.common.js') | |||
module.exports = merge(common, { | |||
mode: 'production', | |||
devtool: '#source-map' | |||
}) |
@@ -112,7 +112,6 @@ class OC_Template extends \OC\Template\Base { | |||
OC_Util::addStyle('css-variables', null, true); | |||
OC_Util::addStyle('server', null, true); | |||
OC_Util::addStyle('jquery-ui-fixes',null,true); | |||
OC_Util::addVendorStyle('jquery-ui/themes/base/jquery-ui',null,true); | |||
OC_Util::addVendorStyle('select2/select2', null, true); | |||
OC_Util::addStyle('jquery.ocdialog'); | |||
OC_Util::addTranslations("core", null, true); | |||
@@ -145,10 +144,9 @@ class OC_Template extends \OC\Template\Base { | |||
// Import all (combined) default vendor libraries | |||
OC_Util::addVendorScript('core', null, true); | |||
} | |||
OC_Util::addScript('core', 'dist/main', true); | |||
if (\OC::$server->getRequest()->isUserAgent([\OC\AppFramework\Http\Request::USER_AGENT_IE])) { | |||
// polyfill for btoa/atob for IE friends | |||
OC_Util::addVendorScript('base64/base64'); | |||
// shim for the davclient.js library | |||
\OCP\Util::addScript('files/iedavclient'); | |||
} |
@@ -0,0 +1,59 @@ | |||
{ | |||
"name": "nextcloud", | |||
"version": "0.1.0", | |||
"description": "Nextcloud Server", | |||
"private": true, | |||
"directories": { | |||
"lib": "lib", | |||
"test": "tests" | |||
}, | |||
"scripts": { | |||
"build": "webpack --progress --hide-modules --config core/webpack.prod.js", | |||
"dev": "webpack --progress --watch --config core/webpack.dev.js" | |||
}, | |||
"repository": { | |||
"type": "git", | |||
"url": "https://github.com/nextcloud/server.git" | |||
}, | |||
"keywords": [ | |||
"nextcloud" | |||
], | |||
"license": "AGPL-3.0-or-later", | |||
"dependencies": { | |||
"@babel/core": "^7.2.0", | |||
"@babel/plugin-syntax-dynamic-import": "^7.2.0", | |||
"@babel/polyfill": "^7.0.0", | |||
"@babel/preset-env": "^7.2.0", | |||
"Base64": "^0.3.0", | |||
"autosize": "^4.0.2", | |||
"babel-loader": "^8.0.4", | |||
"backbone": "^1.2.3", | |||
"blueimp-md5": "^2.7.0", | |||
"bootstrap": "^3.3.7", | |||
"clipboard": "^1.7.1", | |||
"davclient.js": "git+https://github.com/owncloud/davclient.js.git#0.1.2", | |||
"dompurify": "^1.0.4", | |||
"es6-shim": "^0.35.4", | |||
"handlebars": "^4.0.5", | |||
"jcrop": "git+https://github.com/ChristophWurst/Jcrop.git#v0.9.12-npm", | |||
"jquery": "^2.1.4", | |||
"jquery-migrate": "^1.4.0", | |||
"jquery-ui": "^1.12.1", | |||
"jstimezonedetect": "^1.0.6", | |||
"marked": "^0.3.6", | |||
"moment": "^2.18.1", | |||
"select2": "^3.4.5", | |||
"snap.js": "^2.0.9", | |||
"strengthify": "git+https://github.com/ChristophWurst/strengthify.git#feature/npm-package", | |||
"underscore": "^1.8.3", | |||
"webpack": "^4.27.1", | |||
"webpack-cli": "^3.1.2", | |||
"webpack-merge": "^4.1.5" | |||
}, | |||
"devDependencies": { | |||
"css-loader": "^2.0.1", | |||
"exports-loader": "^0.7.0", | |||
"style-loader": "^0.23.1", | |||
"url-loader": "^1.1.2" | |||
} | |||
} |
@@ -32,9 +32,6 @@ script('settings', [ | |||
'federationscopemenu', | |||
'settings/personalInfo', | |||
]); | |||
vendor_script('jcrop/js/jquery.Jcrop'); | |||
vendor_style('jcrop/css/jquery.Jcrop'); | |||
?> | |||
<div id="personal-settings"> |
@@ -32,8 +32,6 @@ script('settings', [ | |||
if($_['passwordChangeSupported']) { | |||
script('settings', 'security_password'); | |||
script('jquery-showpassword'); | |||
vendor_script('strengthify/jquery.strengthify.min'); | |||
vendor_style('strengthify/strengthify'); | |||
} | |||
?> |