Npmize (vendor) scripts
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This commit is contained in:
parent
1fd6741182
commit
208788173d
94 changed files with 5500 additions and 32174 deletions
16
.babelrc
Normal file
16
.babelrc
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"presets": [
|
||||
[
|
||||
"@babel/preset-env",
|
||||
{
|
||||
"modules": false,
|
||||
"targets": {
|
||||
"browsers": [
|
||||
"last 2 versions",
|
||||
"ie >= 11"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
/core/js/dist/*.js binary
|
||||
/core/js/dist/*.js.map binary
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -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]-->
|
||||
|
|
22
bower.json
22
bower.json
|
@ -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": [
|
||||
|
|
BIN
core/js/dist/main.js
vendored
Normal file
BIN
core/js/dist/main.js
vendored
Normal file
Binary file not shown.
BIN
core/js/dist/main.js.map
vendored
Normal file
BIN
core/js/dist/main.js.map
vendored
Normal file
Binary file not shown.
BIN
core/js/dist/main_BACKUP_17410.js
vendored
Normal file
BIN
core/js/dist/main_BACKUP_17410.js
vendored
Normal file
Binary file not shown.
BIN
core/js/dist/main_BASE_17410.js
vendored
Normal file
BIN
core/js/dist/main_BASE_17410.js
vendored
Normal file
Binary file not shown.
BIN
core/js/dist/main_LOCAL_17410.js
vendored
Normal file
BIN
core/js/dist/main_LOCAL_17410.js
vendored
Normal file
Binary file not shown.
BIN
core/js/dist/main_REMOTE_17410.js
vendored
Normal file
BIN
core/js/dist/main_REMOTE_17410.js
vendored
Normal file
Binary file not shown.
80
core/src/globals.js
Normal file
80
core/src/globals.js
Normal file
|
@ -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
|
27
core/src/main.js
Normal file
27
core/src/main.js
Normal file
|
@ -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'
|
41
core/vendor/DOMPurify/.bower.json
vendored
41
core/vendor/DOMPurify/.bower.json
vendored
|
@ -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"
|
||||
}
|
378
core/vendor/DOMPurify/LICENSE
vendored
378
core/vendor/DOMPurify/LICENSE
vendored
|
@ -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
core/vendor/DOMPurify/dist/purify.min.js
vendored
1
core/vendor/DOMPurify/dist/purify.min.js
vendored
File diff suppressed because one or more lines are too long
14
core/vendor/autosize/.bower.json
vendored
14
core/vendor/autosize/.bower.json
vendored
|
@ -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"
|
||||
}
|
21
core/vendor/autosize/LICENSE.md
vendored
21
core/vendor/autosize/LICENSE.md
vendored
|
@ -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.
|
6
core/vendor/autosize/dist/autosize.min.js
vendored
6
core/vendor/autosize/dist/autosize.min.js
vendored
|
@ -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});
|
32
core/vendor/backbone/.bower.json
vendored
32
core/vendor/backbone/.bower.json
vendored
|
@ -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"
|
||||
}
|
22
core/vendor/backbone/LICENSE
vendored
22
core/vendor/backbone/LICENSE
vendored
|
@ -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.
|
1894
core/vendor/backbone/backbone.js
vendored
1894
core/vendor/backbone/backbone.js
vendored
File diff suppressed because it is too large
Load diff
28
core/vendor/base64/.bower.json
vendored
28
core/vendor/base64/.bower.json
vendored
|
@ -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"
|
||||
}
|
14
core/vendor/base64/LICENSE
vendored
14
core/vendor/base64/LICENSE
vendored
|
@ -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.
|
61
core/vendor/base64/base64.js
vendored
61
core/vendor/base64/base64.js
vendored
|
@ -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;
|
||||
});
|
||||
|
||||
}());
|
14
core/vendor/blueimp-md5/.bower.json
vendored
14
core/vendor/blueimp-md5/.bower.json
vendored
|
@ -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
core/vendor/blueimp-md5/js/md5.min.js
vendored
1
core/vendor/blueimp-md5/js/md5.min.js
vendored
|
@ -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);
|
44
core/vendor/bootstrap/.bower.json
vendored
44
core/vendor/bootstrap/.bower.json
vendored
|
@ -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"
|
||||
}
|
520
core/vendor/bootstrap/js/tooltip.js
vendored
520
core/vendor/bootstrap/js/tooltip.js
vendored
|
@ -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);
|
32
core/vendor/clipboard/.bower.json
vendored
32
core/vendor/clipboard/.bower.json
vendored
|
@ -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"
|
||||
}
|
7
core/vendor/clipboard/dist/clipboard.min.js
vendored
7
core/vendor/clipboard/dist/clipboard.min.js
vendored
File diff suppressed because one or more lines are too long
7702
core/vendor/core.js
vendored
7702
core/vendor/core.js
vendored
File diff suppressed because one or more lines are too long
32
core/vendor/davclient.js/.bower.json
vendored
32
core/vendor/davclient.js/.bower.json
vendored
|
@ -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"
|
||||
}
|
27
core/vendor/davclient.js/LICENSE
vendored
27
core/vendor/davclient.js/LICENSE
vendored
|
@ -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.
|
462
core/vendor/davclient.js/lib/client.js
vendored
462
core/vendor/davclient.js/lib/client.js
vendored
|
@ -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]
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
39
core/vendor/es6-promise/.bower.json
vendored
39
core/vendor/es6-promise/.bower.json
vendored
|
@ -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"
|
||||
}
|
19
core/vendor/es6-promise/LICENSE
vendored
19
core/vendor/es6-promise/LICENSE
vendored
|
@ -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.
|
972
core/vendor/es6-promise/dist/es6-promise.js
vendored
972
core/vendor/es6-promise/dist/es6-promise.js
vendored
|
@ -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);
|
||||
|
40
core/vendor/es6-shim/.bower.json
vendored
40
core/vendor/es6-shim/.bower.json
vendored
|
@ -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"
|
||||
}
|
26
core/vendor/es6-shim/LICENSE
vendored
26
core/vendor/es6-shim/LICENSE
vendored
|
@ -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.
|
||||
|
12
core/vendor/es6-shim/es6-shim.min.js
vendored
12
core/vendor/es6-shim/es6-shim.min.js
vendored
File diff suppressed because one or more lines are too long
17
core/vendor/handlebars/.bower.json
vendored
17
core/vendor/handlebars/.bower.json
vendored
|
@ -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"
|
||||
}
|
27
core/vendor/handlebars/handlebars.runtime.min.js
vendored
27
core/vendor/handlebars/handlebars.runtime.min.js
vendored
File diff suppressed because one or more lines are too long
14
core/vendor/jcrop/.bower.json
vendored
14
core/vendor/jcrop/.bower.json
vendored
|
@ -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"
|
||||
}
|
22
core/vendor/jcrop/MIT-LICENSE.txt
vendored
22
core/vendor/jcrop/MIT-LICENSE.txt
vendored
|
@ -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.
|
||||
|
BIN
core/vendor/jcrop/css/Jcrop.gif
vendored
BIN
core/vendor/jcrop/css/Jcrop.gif
vendored
Binary file not shown.
Before Width: | Height: | Size: 329 B |
165
core/vendor/jcrop/css/jquery.Jcrop.css
vendored
165
core/vendor/jcrop/css/jquery.Jcrop.css
vendored
|
@ -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;
|
||||
}
|
1694
core/vendor/jcrop/js/jquery.Jcrop.js
vendored
1694
core/vendor/jcrop/js/jquery.Jcrop.js
vendored
File diff suppressed because it is too large
Load diff
15
core/vendor/jquery-migrate/.bower.json
vendored
15
core/vendor/jquery-migrate/.bower.json
vendored
|
@ -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"
|
||||
}
|
717
core/vendor/jquery-migrate/jquery-migrate.js
vendored
717
core/vendor/jquery-migrate/jquery-migrate.js
vendored
|
@ -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 );
|
File diff suppressed because one or more lines are too long
22
core/vendor/jquery-ui/.bower.json
vendored
22
core/vendor/jquery-ui/.bower.json
vendored
|
@ -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"
|
||||
}
|
13
core/vendor/jquery-ui/jquery-ui.min.js
vendored
13
core/vendor/jquery-ui/jquery-ui.min.js
vendored
File diff suppressed because one or more lines are too long
1311
core/vendor/jquery-ui/themes/base/jquery-ui.css
vendored
1311
core/vendor/jquery-ui/themes/base/jquery-ui.css
vendored
File diff suppressed because it is too large
Load diff
38
core/vendor/jquery/.bower.json
vendored
38
core/vendor/jquery/.bower.json
vendored
|
@ -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"
|
||||
}
|
21
core/vendor/jquery/MIT-LICENSE.txt
vendored
21
core/vendor/jquery/MIT-LICENSE.txt
vendored
|
@ -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.
|
9210
core/vendor/jquery/dist/jquery.js
vendored
9210
core/vendor/jquery/dist/jquery.js
vendored
File diff suppressed because it is too large
Load diff
5
core/vendor/jquery/dist/jquery.min.js
vendored
5
core/vendor/jquery/dist/jquery.min.js
vendored
File diff suppressed because one or more lines are too long
1
core/vendor/jquery/dist/jquery.min.map
vendored
1
core/vendor/jquery/dist/jquery.min.map
vendored
File diff suppressed because one or more lines are too long
23
core/vendor/jsTimezoneDetect/.bower.json
vendored
23
core/vendor/jsTimezoneDetect/.bower.json
vendored
|
@ -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"
|
||||
}
|
22
core/vendor/jsTimezoneDetect/LICENCE.txt
vendored
22
core/vendor/jsTimezoneDetect/LICENCE.txt
vendored
|
@ -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.
|
358
core/vendor/jsTimezoneDetect/jstz.js
vendored
358
core/vendor/jsTimezoneDetect/jstz.js
vendored
|
@ -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);
|
33
core/vendor/marked/.bower.json
vendored
33
core/vendor/marked/.bower.json
vendored
|
@ -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"
|
||||
}
|
19
core/vendor/marked/LICENSE
vendored
19
core/vendor/marked/LICENSE
vendored
|
@ -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.
|
6
core/vendor/marked/marked.min.js
vendored
6
core/vendor/marked/marked.min.js
vendored
File diff suppressed because one or more lines are too long
36
core/vendor/moment/.bower.json
vendored
36
core/vendor/moment/.bower.json
vendored
|
@ -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"
|
||||
}
|
22
core/vendor/moment/LICENSE
vendored
22
core/vendor/moment/LICENSE
vendored
|
@ -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.
|
505
core/vendor/moment/min/moment-with-locales.min.js
vendored
505
core/vendor/moment/min/moment-with-locales.min.js
vendored
File diff suppressed because one or more lines are too long
24
core/vendor/select2/.bower.json
vendored
24
core/vendor/select2/.bower.json
vendored
|
@ -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"
|
||||
}
|
18
core/vendor/select2/LICENSE
vendored
18
core/vendor/select2/LICENSE
vendored
|
@ -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.
|
BIN
core/vendor/select2/select2-spinner.gif
vendored
BIN
core/vendor/select2/select2-spinner.gif
vendored
Binary file not shown.
Before Width: | Height: | Size: 1.8 KiB |
646
core/vendor/select2/select2.css
vendored
646
core/vendor/select2/select2.css
vendored
|
@ -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;
|
||||
}
|
||||
}
|
3448
core/vendor/select2/select2.js
vendored
3448
core/vendor/select2/select2.js
vendored
File diff suppressed because one or more lines are too long
BIN
core/vendor/select2/select2.png
vendored
BIN
core/vendor/select2/select2.png
vendored
Binary file not shown.
Before Width: | Height: | Size: 613 B |
BIN
core/vendor/select2/select2x2.png
vendored
BIN
core/vendor/select2/select2x2.png
vendored
Binary file not shown.
Before Width: | Height: | Size: 845 B |
31
core/vendor/snapjs/.bower.json
vendored
31
core/vendor/snapjs/.bower.json
vendored
|
@ -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"
|
||||
}
|
785
core/vendor/snapjs/dist/latest/snap.js
vendored
785
core/vendor/snapjs/dist/latest/snap.js
vendored
|
@ -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);
|
21
core/vendor/strengthify/.bower.json
vendored
21
core/vendor/strengthify/.bower.json
vendored
|
@ -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"
|
||||
}
|
21
core/vendor/strengthify/LICENSE
vendored
21
core/vendor/strengthify/LICENSE
vendored
|
@ -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.
|
227
core/vendor/strengthify/jquery.strengthify.js
vendored
227
core/vendor/strengthify/jquery.strengthify.js
vendored
|
@ -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));
|
60
core/vendor/strengthify/strengthify.css
vendored
60
core/vendor/strengthify/strengthify.css
vendored
|
@ -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;
|
||||
}
|
35
core/vendor/underscore/.bower.json
vendored
35
core/vendor/underscore/.bower.json
vendored
|
@ -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"
|
||||
}
|
23
core/vendor/underscore/LICENSE
vendored
23
core/vendor/underscore/LICENSE
vendored
|
@ -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.
|
6
core/vendor/underscore/underscore-min.js
vendored
6
core/vendor/underscore/underscore-min.js
vendored
File diff suppressed because one or more lines are too long
51
core/webpack.common.js
Normal file
51
core/webpack.common.js
Normal file
|
@ -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
|
||||
}
|
||||
};
|
7
core/webpack.dev.js
Normal file
7
core/webpack.dev.js
Normal file
|
@ -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',
|
||||
})
|
7
core/webpack.prod.js
Normal file
7
core/webpack.prod.js
Normal file
|
@ -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');
|
||||
}
|
||||
|
|
5248
package-lock.json
generated
Normal file
5248
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
59
package.json
Normal file
59
package.json
Normal file
|
@ -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');
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
Loading…
Reference in a new issue