From 54074fcb1d228ecb06d95362f8db57293d3ba8f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?= Date: Thu, 20 Jan 2022 14:04:17 +0100 Subject: [PATCH 01/17] Build: Updating the main version to 1.13.2-pre. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 04b01c0282d..db614202463 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "jquery-ui", "title": "jQuery UI", "description": "A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.", - "version": "1.13.1-pre", + "version": "1.13.2-pre", "homepage": "http://jqueryui.com", "author": { "name": "jQuery Foundation and other contributors", From e21a2543b55680f23aaa7efa38f3288b8e767e7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Wed, 23 Mar 2022 12:05:10 +0100 Subject: [PATCH 02/17] Build: Include all the files published to the CDN in npm/Bower packages Both unminified & minified versions of JS & CSS files are included, for all themes, as well as images. Fixes gh-2011 Closes gh-2059 --- build/release.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/build/release.js b/build/release.js index 193f958953e..0323a20bd3c 100644 --- a/build/release.js +++ b/build/release.js @@ -131,6 +131,20 @@ Release.define( { shell.mkdir( "-p", "dist/cdn" ); shell.cp( tmpFolder + "/jquery-ui*.js", "dist/cdn" ); shell.cp( "-r", tmpFolder + "/themes", "dist/cdn" ); + + // Copy all the files to be published on the CDN to the dist directory + // as well. + shell.cp( "dist/cdn/jquery-ui.js", "dist" ); + shell.cp( "dist/cdn/jquery-ui.min.js", "dist" ); + shell.cp( "-r", "dist/cdn/themes", "dist" ); + + Release.exec( "git add --force dist/jquery-ui.js", + "Error adding dist/jquery-ui.js." ); + Release.exec( "git add --force dist/jquery-ui.min.js", + "Error adding dist/jquery-ui.min.js." ); + Release.exec( "git add --force dist/themes", + "Error adding dist/themes." ); + fn( files ); } ); } From 50d35e60f1c93859edab183890a5a2f1a80879f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Wed, 22 Jun 2022 12:58:05 +0200 Subject: [PATCH 03/17] Build: Update Grunt to resolve CVE-2022-1537 More details: https://github.com/advisories/GHSA-rm36-94g8-835r Fixes gh-2090 Closes gh-2091 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index db614202463..348712a5a38 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "commitplease": "3.2.0", "eslint-config-jquery": "3.0.0", "glob": "7.2.0", - "grunt": "1.4.1", + "grunt": "1.5.3", "grunt-bowercopy": "1.2.5", "grunt-cli": "1.4.3", "grunt-compare-size": "0.4.2", From d66fdd5c9a1afac13138c7f48b068c36236b9358 Mon Sep 17 00:00:00 2001 From: Christian Oliff Date: Wed, 29 Jun 2022 22:14:31 +0900 Subject: [PATCH 04/17] Build: Add dependabot.yml config (GitHub Actions) Closes gh-2093 Ref jquery/jquery#5057 --- .github/dependabot.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000000..6fff16c7942 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: monthly From a4060a2b8321a439888141536cd1cce3d50b9fc9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Jul 2022 12:17:01 +0200 Subject: [PATCH 05/17] Build(deps): Bump actions/setup-node from 1 to 3 Bumps [actions/setup-node](https://github.com/actions/setup-node) from 1 to 3. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v1...v3) Closes gh-2096 --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ac542249b51..2dd6aba3d89 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,7 @@ jobs: steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} From d55645c0c4249b6096e94987fea15ce6070276a1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Jul 2022 12:17:24 +0200 Subject: [PATCH 06/17] Build(deps): Bump actions/cache from 2 to 3 Bumps [actions/cache](https://github.com/actions/cache) from 2 to 3. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v2...v3) Closes gh-2097 --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2dd6aba3d89..226e68e2a47 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: echo "::set-output name=dir::$(npm config get cache)" - name: Cache npm dependencies - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ steps.npm-cache-dir.outputs.dir }} key: ${{ runner.os }}-node-${{ matrix.node-version }}-npm-${{ hashFiles('**/package.json') }} From e853971b0ab8c0cd459152135e2f9b5137273571 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Jul 2022 12:22:26 +0200 Subject: [PATCH 07/17] Build(deps): Bump actions/checkout from 2 to 3 Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v3) Closes gh-2098 --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 226e68e2a47..a513e67538f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: node-version: [12.x, 14.x] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: From 3126e128691fd9fa78f33930ba9cb37609d0a64f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Lid=C3=A9n=20H=C3=A4llgren?= Date: Fri, 11 Feb 2022 16:33:27 +0100 Subject: [PATCH 08/17] Datepicker: Remove symbols in localization Fixes gh-2048 Closes gh-2050 Ref gh-2067 --- ui/i18n/datepicker-ar-DZ.js | 4 ++-- ui/i18n/datepicker-ar.js | 4 ++-- ui/i18n/datepicker-az.js | 4 ++-- ui/i18n/datepicker-be.js | 4 ++-- ui/i18n/datepicker-bg.js | 4 ++-- ui/i18n/datepicker-bs.js | 4 ++-- ui/i18n/datepicker-cs.js | 4 ++-- ui/i18n/datepicker-da.js | 4 ++-- ui/i18n/datepicker-de-AT.js | 4 ++-- ui/i18n/datepicker-de.js | 4 ++-- ui/i18n/datepicker-eo.js | 4 ++-- ui/i18n/datepicker-es.js | 4 ++-- ui/i18n/datepicker-eu.js | 4 ++-- ui/i18n/datepicker-fa.js | 4 ++-- ui/i18n/datepicker-fo.js | 4 ++-- ui/i18n/datepicker-fr-CH.js | 4 ++-- ui/i18n/datepicker-gl.js | 4 ++-- ui/i18n/datepicker-he.js | 4 ++-- ui/i18n/datepicker-hr.js | 4 ++-- ui/i18n/datepicker-hy.js | 4 ++-- ui/i18n/datepicker-id.js | 4 ++-- ui/i18n/datepicker-is.js | 4 ++-- ui/i18n/datepicker-it-CH.js | 4 ++-- ui/i18n/datepicker-it.js | 4 ++-- ui/i18n/datepicker-ja.js | 4 ++-- ui/i18n/datepicker-ka.js | 4 ++-- ui/i18n/datepicker-kk.js | 4 ++-- ui/i18n/datepicker-ky.js | 4 ++-- ui/i18n/datepicker-lt.js | 4 ++-- ui/i18n/datepicker-mk.js | 4 ++-- ui/i18n/datepicker-ms.js | 4 ++-- ui/i18n/datepicker-nb.js | 4 ++-- ui/i18n/datepicker-nn.js | 4 ++-- ui/i18n/datepicker-no.js | 4 ++-- ui/i18n/datepicker-pl.js | 4 ++-- ui/i18n/datepicker-pt-BR.js | 4 ++-- ui/i18n/datepicker-rm.js | 4 ++-- ui/i18n/datepicker-ro.js | 4 ++-- ui/i18n/datepicker-ru.js | 4 ++-- ui/i18n/datepicker-sk.js | 4 ++-- ui/i18n/datepicker-sl.js | 4 ++-- ui/i18n/datepicker-sq.js | 4 ++-- ui/i18n/datepicker-sr-SR.js | 4 ++-- ui/i18n/datepicker-sr.js | 4 ++-- ui/i18n/datepicker-sv.js | 4 ++-- ui/i18n/datepicker-th.js | 4 ++-- ui/i18n/datepicker-tj.js | 4 ++-- ui/i18n/datepicker-tr.js | 4 ++-- ui/i18n/datepicker-uk.js | 4 ++-- ui/i18n/datepicker-vi.js | 4 ++-- ui/i18n/datepicker-zh-CN.js | 4 ++-- ui/i18n/datepicker-zh-HK.js | 4 ++-- ui/i18n/datepicker-zh-TW.js | 4 ++-- 53 files changed, 106 insertions(+), 106 deletions(-) diff --git a/ui/i18n/datepicker-ar-DZ.js b/ui/i18n/datepicker-ar-DZ.js index 8dc805986f2..2bcdf478456 100644 --- a/ui/i18n/datepicker-ar-DZ.js +++ b/ui/i18n/datepicker-ar-DZ.js @@ -20,8 +20,8 @@ datepicker.regional[ "ar-DZ" ] = { closeText: "إغلاق", - prevText: "<السابق", - nextText: "التالي>", + prevText: "السابق", + nextText: "التالي", currentText: "اليوم", monthNames: [ "جانفي", "فيفري", "مارس", "أفريل", "ماي", "جوان", "جويلية", "أوت", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر" ], diff --git a/ui/i18n/datepicker-ar.js b/ui/i18n/datepicker-ar.js index 31d7ee565ed..07768416e30 100644 --- a/ui/i18n/datepicker-ar.js +++ b/ui/i18n/datepicker-ar.js @@ -20,8 +20,8 @@ datepicker.regional.ar = { closeText: "إغلاق", - prevText: "<السابق", - nextText: "التالي>", + prevText: "السابق", + nextText: "التالي", currentText: "اليوم", monthNames: [ "يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر" ], diff --git a/ui/i18n/datepicker-az.js b/ui/i18n/datepicker-az.js index d02d3561f6f..8d59547e6e9 100644 --- a/ui/i18n/datepicker-az.js +++ b/ui/i18n/datepicker-az.js @@ -17,8 +17,8 @@ datepicker.regional.az = { closeText: "Bağla", - prevText: "<Geri", - nextText: "İrəli>", + prevText: "Geri", + nextText: "İrəli", currentText: "Bugün", monthNames: [ "Yanvar", "Fevral", "Mart", "Aprel", "May", "İyun", "İyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr" ], diff --git a/ui/i18n/datepicker-be.js b/ui/i18n/datepicker-be.js index 51ddd6e5722..125ed0f1355 100644 --- a/ui/i18n/datepicker-be.js +++ b/ui/i18n/datepicker-be.js @@ -17,8 +17,8 @@ datepicker.regional.be = { closeText: "Зачыніць", - prevText: "←Папяр.", - nextText: "Наст.→", + prevText: "Папяр.", + nextText: "Наст.", currentText: "Сёньня", monthNames: [ "Студзень", "Люты", "Сакавік", "Красавік", "Травень", "Чэрвень", "Ліпень", "Жнівень", "Верасень", "Кастрычнік", "Лістапад", "Сьнежань" ], diff --git a/ui/i18n/datepicker-bg.js b/ui/i18n/datepicker-bg.js index 0344de4fb0b..c771b3b5210 100644 --- a/ui/i18n/datepicker-bg.js +++ b/ui/i18n/datepicker-bg.js @@ -17,8 +17,8 @@ datepicker.regional.bg = { closeText: "затвори", - prevText: "<назад", - nextText: "напред>", + prevText: "назад", + nextText: "напред", nextBigText: ">>", currentText: "днес", monthNames: [ "Януари", "Февруари", "Март", "Април", "Май", "Юни", diff --git a/ui/i18n/datepicker-bs.js b/ui/i18n/datepicker-bs.js index a5c145affc0..b39a9a75b1b 100644 --- a/ui/i18n/datepicker-bs.js +++ b/ui/i18n/datepicker-bs.js @@ -17,8 +17,8 @@ datepicker.regional.bs = { closeText: "Zatvori", - prevText: "<", - nextText: ">", + prevText: "", + nextText: "", currentText: "Danas", monthNames: [ "Januar", "Februar", "Mart", "April", "Maj", "Juni", "Juli", "August", "Septembar", "Oktobar", "Novembar", "Decembar" ], diff --git a/ui/i18n/datepicker-cs.js b/ui/i18n/datepicker-cs.js index 201fac7b81f..6e5552c6ce7 100644 --- a/ui/i18n/datepicker-cs.js +++ b/ui/i18n/datepicker-cs.js @@ -17,8 +17,8 @@ datepicker.regional.cs = { closeText: "Zavřít", - prevText: "<Dříve", - nextText: "Později>", + prevText: "Dříve", + nextText: "Později", currentText: "Nyní", monthNames: [ "leden", "únor", "březen", "duben", "květen", "červen", "červenec", "srpen", "září", "říjen", "listopad", "prosinec" ], diff --git a/ui/i18n/datepicker-da.js b/ui/i18n/datepicker-da.js index 90409c06efd..d2de7550d29 100644 --- a/ui/i18n/datepicker-da.js +++ b/ui/i18n/datepicker-da.js @@ -17,8 +17,8 @@ datepicker.regional.da = { closeText: "Luk", - prevText: "<Forrige", - nextText: "Næste>", + prevText: "Forrige", + nextText: "Næste", currentText: "I dag", monthNames: [ "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December" ], diff --git a/ui/i18n/datepicker-de-AT.js b/ui/i18n/datepicker-de-AT.js index 814e74f3eac..4a8b7811ac9 100644 --- a/ui/i18n/datepicker-de-AT.js +++ b/ui/i18n/datepicker-de-AT.js @@ -18,8 +18,8 @@ datepicker.regional[ "de-AT" ] = { closeText: "Schließen", - prevText: "<Zurück", - nextText: "Vor>", + prevText: "Zurück", + nextText: "Vor", currentText: "Heute", monthNames: [ "Jänner", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" ], diff --git a/ui/i18n/datepicker-de.js b/ui/i18n/datepicker-de.js index 5baf6d1486f..8a08ebf3382 100644 --- a/ui/i18n/datepicker-de.js +++ b/ui/i18n/datepicker-de.js @@ -17,8 +17,8 @@ datepicker.regional.de = { closeText: "Schließen", - prevText: "<Zurück", - nextText: "Vor>", + prevText: "Zurück", + nextText: "Vor", currentText: "Heute", monthNames: [ "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" ], diff --git a/ui/i18n/datepicker-eo.js b/ui/i18n/datepicker-eo.js index 3867a6214f6..08aa96e7684 100644 --- a/ui/i18n/datepicker-eo.js +++ b/ui/i18n/datepicker-eo.js @@ -17,8 +17,8 @@ datepicker.regional.eo = { closeText: "Fermi", - prevText: "<Anta", - nextText: "Sekv>", + prevText: "Anta", + nextText: "Sekv", currentText: "Nuna", monthNames: [ "Januaro", "Februaro", "Marto", "Aprilo", "Majo", "Junio", "Julio", "Aŭgusto", "Septembro", "Oktobro", "Novembro", "Decembro" ], diff --git a/ui/i18n/datepicker-es.js b/ui/i18n/datepicker-es.js index 9a7457778c4..dbb1f0aa528 100644 --- a/ui/i18n/datepicker-es.js +++ b/ui/i18n/datepicker-es.js @@ -17,8 +17,8 @@ datepicker.regional.es = { closeText: "Cerrar", - prevText: "<Ant", - nextText: "Sig>", + prevText: "Ant", + nextText: "Sig", currentText: "Hoy", monthNames: [ "enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre" ], diff --git a/ui/i18n/datepicker-eu.js b/ui/i18n/datepicker-eu.js index 754a172df5a..0de057c5a45 100644 --- a/ui/i18n/datepicker-eu.js +++ b/ui/i18n/datepicker-eu.js @@ -16,8 +16,8 @@ datepicker.regional.eu = { closeText: "Egina", - prevText: "<Aur", - nextText: "Hur>", + prevText: "Aur", + nextText: "Hur", currentText: "Gaur", monthNames: [ "urtarrila", "otsaila", "martxoa", "apirila", "maiatza", "ekaina", "uztaila", "abuztua", "iraila", "urria", "azaroa", "abendua" ], diff --git a/ui/i18n/datepicker-fa.js b/ui/i18n/datepicker-fa.js index 193a3dcc1ed..ac30752b80f 100644 --- a/ui/i18n/datepicker-fa.js +++ b/ui/i18n/datepicker-fa.js @@ -18,8 +18,8 @@ datepicker.regional.fa = { closeText: "بستن", - prevText: "<قبلی", - nextText: "بعدی>", + prevText: "قبلی", + nextText: "بعدی", currentText: "امروز", monthNames: [ "ژانویه", diff --git a/ui/i18n/datepicker-fo.js b/ui/i18n/datepicker-fo.js index f024ac67425..d2ec9d7c486 100644 --- a/ui/i18n/datepicker-fo.js +++ b/ui/i18n/datepicker-fo.js @@ -17,8 +17,8 @@ datepicker.regional.fo = { closeText: "Lat aftur", - prevText: "<Fyrra", - nextText: "Næsta>", + prevText: "Fyrra", + nextText: "Næsta", currentText: "Í dag", monthNames: [ "Januar", "Februar", "Mars", "Apríl", "Mei", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember" ], diff --git a/ui/i18n/datepicker-fr-CH.js b/ui/i18n/datepicker-fr-CH.js index b75c683379a..7221d14ed1b 100644 --- a/ui/i18n/datepicker-fr-CH.js +++ b/ui/i18n/datepicker-fr-CH.js @@ -17,8 +17,8 @@ datepicker.regional[ "fr-CH" ] = { closeText: "Fermer", - prevText: "<Préc", - nextText: "Suiv>", + prevText: "Préc", + nextText: "Suiv", currentText: "Courant", monthNames: [ "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre" ], diff --git a/ui/i18n/datepicker-gl.js b/ui/i18n/datepicker-gl.js index f3ebc46651e..27abb0214f1 100644 --- a/ui/i18n/datepicker-gl.js +++ b/ui/i18n/datepicker-gl.js @@ -17,8 +17,8 @@ datepicker.regional.gl = { closeText: "Pechar", - prevText: "<Ant", - nextText: "Seg>", + prevText: "Ant", + nextText: "Seg", currentText: "Hoxe", monthNames: [ "Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro" ], diff --git a/ui/i18n/datepicker-he.js b/ui/i18n/datepicker-he.js index c487e78f70b..fbe3c40cd93 100644 --- a/ui/i18n/datepicker-he.js +++ b/ui/i18n/datepicker-he.js @@ -17,8 +17,8 @@ datepicker.regional.he = { closeText: "סגור", - prevText: "<הקודם", - nextText: "הבא>", + prevText: "הקודם", + nextText: "הבא", currentText: "היום", monthNames: [ "ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר" ], diff --git a/ui/i18n/datepicker-hr.js b/ui/i18n/datepicker-hr.js index 23ea41446ed..6542e2f81d2 100644 --- a/ui/i18n/datepicker-hr.js +++ b/ui/i18n/datepicker-hr.js @@ -17,8 +17,8 @@ datepicker.regional.hr = { closeText: "Zatvori", - prevText: "<", - nextText: ">", + prevText: "", + nextText: "", currentText: "Danas", monthNames: [ "Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac" ], diff --git a/ui/i18n/datepicker-hy.js b/ui/i18n/datepicker-hy.js index 2cc74da734c..7d4da5abf56 100644 --- a/ui/i18n/datepicker-hy.js +++ b/ui/i18n/datepicker-hy.js @@ -17,8 +17,8 @@ datepicker.regional.hy = { closeText: "Փակել", - prevText: "<Նախ.", - nextText: "Հաջ.>", + prevText: "Նախ.", + nextText: "Հաջ.", currentText: "Այսօր", monthNames: [ "Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր" ], diff --git a/ui/i18n/datepicker-id.js b/ui/i18n/datepicker-id.js index 52f709caa5b..1ae3472a4b4 100644 --- a/ui/i18n/datepicker-id.js +++ b/ui/i18n/datepicker-id.js @@ -17,8 +17,8 @@ datepicker.regional.id = { closeText: "Tutup", - prevText: "<mundur", - nextText: "maju>", + prevText: "mundur", + nextText: "maju", currentText: "hari ini", monthNames: [ "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "Nopember", "Desember" ], diff --git a/ui/i18n/datepicker-is.js b/ui/i18n/datepicker-is.js index 0ebffd35541..122ece02c12 100644 --- a/ui/i18n/datepicker-is.js +++ b/ui/i18n/datepicker-is.js @@ -17,8 +17,8 @@ datepicker.regional.is = { closeText: "Loka", - prevText: "< Fyrri", - nextText: "Næsti >", + prevText: " Fyrri", + nextText: "Næsti ", currentText: "Í dag", monthNames: [ "Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember" ], diff --git a/ui/i18n/datepicker-it-CH.js b/ui/i18n/datepicker-it-CH.js index 8c6d1058010..73b791894b2 100644 --- a/ui/i18n/datepicker-it-CH.js +++ b/ui/i18n/datepicker-it-CH.js @@ -17,8 +17,8 @@ datepicker.regional[ "it-CH" ] = { closeText: "Chiudi", - prevText: "<Prec", - nextText: "Succ>", + prevText: "Prec", + nextText: "Succ", currentText: "Oggi", monthNames: [ "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" ], diff --git a/ui/i18n/datepicker-it.js b/ui/i18n/datepicker-it.js index 0210e41c49c..d1d498057d2 100644 --- a/ui/i18n/datepicker-it.js +++ b/ui/i18n/datepicker-it.js @@ -17,8 +17,8 @@ datepicker.regional.it = { closeText: "Chiudi", - prevText: "<Prec", - nextText: "Succ>", + prevText: "Prec", + nextText: "Succ", currentText: "Oggi", monthNames: [ "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" ], diff --git a/ui/i18n/datepicker-ja.js b/ui/i18n/datepicker-ja.js index 404bbfd64b6..95fa6fdbc45 100644 --- a/ui/i18n/datepicker-ja.js +++ b/ui/i18n/datepicker-ja.js @@ -17,8 +17,8 @@ datepicker.regional.ja = { closeText: "閉じる", - prevText: "<前", - nextText: "次>", + prevText: "前", + nextText: "次", currentText: "今日", monthNames: [ "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" ], diff --git a/ui/i18n/datepicker-ka.js b/ui/i18n/datepicker-ka.js index fd740dadea7..33ae7a46131 100644 --- a/ui/i18n/datepicker-ka.js +++ b/ui/i18n/datepicker-ka.js @@ -17,8 +17,8 @@ datepicker.regional.ka = { closeText: "დახურვა", - prevText: "< წინა", - nextText: "შემდეგი >", + prevText: " წინა", + nextText: "შემდეგი ", currentText: "დღეს", monthNames: [ "იანვარი", diff --git a/ui/i18n/datepicker-kk.js b/ui/i18n/datepicker-kk.js index c40391d11a6..20a8486179d 100644 --- a/ui/i18n/datepicker-kk.js +++ b/ui/i18n/datepicker-kk.js @@ -17,8 +17,8 @@ datepicker.regional.kk = { closeText: "Жабу", - prevText: "<Алдыңғы", - nextText: "Келесі>", + prevText: "Алдыңғы", + nextText: "Келесі", currentText: "Бүгін", monthNames: [ "Қаңтар", "Ақпан", "Наурыз", "Сәуір", "Мамыр", "Маусым", "Шілде", "Тамыз", "Қыркүйек", "Қазан", "Қараша", "Желтоқсан" ], diff --git a/ui/i18n/datepicker-ky.js b/ui/i18n/datepicker-ky.js index e74c9274040..05dc5dd16fc 100644 --- a/ui/i18n/datepicker-ky.js +++ b/ui/i18n/datepicker-ky.js @@ -17,8 +17,8 @@ datepicker.regional.ky = { closeText: "Жабуу", - prevText: "<Мур", - nextText: "Кий>", + prevText: "Мур", + nextText: "Кий", currentText: "Бүгүн", monthNames: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ], diff --git a/ui/i18n/datepicker-lt.js b/ui/i18n/datepicker-lt.js index 279af0cf7a9..5f45734be65 100644 --- a/ui/i18n/datepicker-lt.js +++ b/ui/i18n/datepicker-lt.js @@ -17,8 +17,8 @@ datepicker.regional.lt = { closeText: "Uždaryti", - prevText: "<Atgal", - nextText: "Pirmyn>", + prevText: "Atgal", + nextText: "Pirmyn", currentText: "Šiandien", monthNames: [ "Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis" ], diff --git a/ui/i18n/datepicker-mk.js b/ui/i18n/datepicker-mk.js index f7999baec8c..6672b01c829 100644 --- a/ui/i18n/datepicker-mk.js +++ b/ui/i18n/datepicker-mk.js @@ -17,8 +17,8 @@ datepicker.regional.mk = { closeText: "Затвори", - prevText: "<", - nextText: ">", + prevText: "", + nextText: "", currentText: "Денес", monthNames: [ "Јануари", "Февруари", "Март", "Април", "Мај", "Јуни", "Јули", "Август", "Септември", "Октомври", "Ноември", "Декември" ], diff --git a/ui/i18n/datepicker-ms.js b/ui/i18n/datepicker-ms.js index 344b7683e96..4170519bacb 100644 --- a/ui/i18n/datepicker-ms.js +++ b/ui/i18n/datepicker-ms.js @@ -17,8 +17,8 @@ datepicker.regional.ms = { closeText: "Tutup", - prevText: "<Sebelum", - nextText: "Selepas>", + prevText: "Sebelum", + nextText: "Selepas", currentText: "hari ini", monthNames: [ "Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember" ], diff --git a/ui/i18n/datepicker-nb.js b/ui/i18n/datepicker-nb.js index b4fd237b91d..19bb0bc2544 100644 --- a/ui/i18n/datepicker-nb.js +++ b/ui/i18n/datepicker-nb.js @@ -17,8 +17,8 @@ datepicker.regional.nb = { closeText: "Lukk", - prevText: "«Forrige", - nextText: "Neste»", + prevText: "Forrige", + nextText: "Neste", currentText: "I dag", monthNames: [ "januar", diff --git a/ui/i18n/datepicker-nn.js b/ui/i18n/datepicker-nn.js index 967351c95bc..5eccb4a8ad8 100644 --- a/ui/i18n/datepicker-nn.js +++ b/ui/i18n/datepicker-nn.js @@ -17,8 +17,8 @@ datepicker.regional.nn = { closeText: "Lukk", - prevText: "«Førre", - nextText: "Neste»", + prevText: "Førre", + nextText: "Neste", currentText: "I dag", monthNames: [ "januar", diff --git a/ui/i18n/datepicker-no.js b/ui/i18n/datepicker-no.js index 4b1b54fa276..becc8bfce62 100644 --- a/ui/i18n/datepicker-no.js +++ b/ui/i18n/datepicker-no.js @@ -18,8 +18,8 @@ datepicker.regional.no = { closeText: "Lukk", - prevText: "«Forrige", - nextText: "Neste»", + prevText: "Forrige", + nextText: "Neste", currentText: "I dag", monthNames: [ "januar", diff --git a/ui/i18n/datepicker-pl.js b/ui/i18n/datepicker-pl.js index 60f9fbb2d4b..4d31086a564 100644 --- a/ui/i18n/datepicker-pl.js +++ b/ui/i18n/datepicker-pl.js @@ -17,8 +17,8 @@ datepicker.regional.pl = { closeText: "Zamknij", - prevText: "<Poprzedni", - nextText: "Następny>", + prevText: "Poprzedni", + nextText: "Następny", currentText: "Dziś", monthNames: [ "Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień" ], diff --git a/ui/i18n/datepicker-pt-BR.js b/ui/i18n/datepicker-pt-BR.js index 1c84bf34daf..3c3984f936d 100644 --- a/ui/i18n/datepicker-pt-BR.js +++ b/ui/i18n/datepicker-pt-BR.js @@ -17,8 +17,8 @@ datepicker.regional[ "pt-BR" ] = { closeText: "Fechar", - prevText: "<Anterior", - nextText: "Próximo>", + prevText: "Anterior", + nextText: "Próximo", currentText: "Hoje", monthNames: [ "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" ], diff --git a/ui/i18n/datepicker-rm.js b/ui/i18n/datepicker-rm.js index 439e8c8e113..4f150c5e63c 100644 --- a/ui/i18n/datepicker-rm.js +++ b/ui/i18n/datepicker-rm.js @@ -17,8 +17,8 @@ datepicker.regional.rm = { closeText: "Serrar", - prevText: "<Suandant", - nextText: "Precedent>", + prevText: "Suandant", + nextText: "Precedent", currentText: "Actual", monthNames: [ "Schaner", diff --git a/ui/i18n/datepicker-ro.js b/ui/i18n/datepicker-ro.js index f03ee15c45a..1ad29b27847 100644 --- a/ui/i18n/datepicker-ro.js +++ b/ui/i18n/datepicker-ro.js @@ -20,8 +20,8 @@ datepicker.regional.ro = { closeText: "Închide", - prevText: "« Luna precedentă", - nextText: "Luna următoare »", + prevText: " Luna precedentă", + nextText: "Luna următoare ", currentText: "Azi", monthNames: [ "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie" ], diff --git a/ui/i18n/datepicker-ru.js b/ui/i18n/datepicker-ru.js index 61d1151095f..5a8b3b7c40f 100644 --- a/ui/i18n/datepicker-ru.js +++ b/ui/i18n/datepicker-ru.js @@ -17,8 +17,8 @@ datepicker.regional.ru = { closeText: "Закрыть", - prevText: "<Пред", - nextText: "След>", + prevText: "Пред", + nextText: "След", currentText: "Сегодня", monthNames: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ], diff --git a/ui/i18n/datepicker-sk.js b/ui/i18n/datepicker-sk.js index c28750c248e..826dfcbca23 100644 --- a/ui/i18n/datepicker-sk.js +++ b/ui/i18n/datepicker-sk.js @@ -17,8 +17,8 @@ datepicker.regional.sk = { closeText: "Zavrieť", - prevText: "<Predchádzajúci", - nextText: "Nasledujúci>", + prevText: "Predchádzajúci", + nextText: "Nasledujúci", currentText: "Dnes", monthNames: [ "január", "február", "marec", "apríl", "máj", "jún", "júl", "august", "september", "október", "november", "december" ], diff --git a/ui/i18n/datepicker-sl.js b/ui/i18n/datepicker-sl.js index 15aa9e4ccf2..4b329e26de6 100644 --- a/ui/i18n/datepicker-sl.js +++ b/ui/i18n/datepicker-sl.js @@ -18,8 +18,8 @@ datepicker.regional.sl = { closeText: "Zapri", - prevText: "<Prejšnji", - nextText: "Naslednji>", + prevText: "Prejšnji", + nextText: "Naslednji", currentText: "Trenutni", monthNames: [ "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December" ], diff --git a/ui/i18n/datepicker-sq.js b/ui/i18n/datepicker-sq.js index 470a0301b48..9952fb1f535 100644 --- a/ui/i18n/datepicker-sq.js +++ b/ui/i18n/datepicker-sq.js @@ -17,8 +17,8 @@ datepicker.regional.sq = { closeText: "mbylle", - prevText: "<mbrapa", - nextText: "Përpara>", + prevText: "mbrapa", + nextText: "Përpara", currentText: "sot", monthNames: [ "Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor" ], diff --git a/ui/i18n/datepicker-sr-SR.js b/ui/i18n/datepicker-sr-SR.js index 2b75c408e91..7c4dc694e3d 100644 --- a/ui/i18n/datepicker-sr-SR.js +++ b/ui/i18n/datepicker-sr-SR.js @@ -17,8 +17,8 @@ datepicker.regional[ "sr-SR" ] = { closeText: "Zatvori", - prevText: "<", - nextText: ">", + prevText: "", + nextText: "", currentText: "Danas", monthNames: [ "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" ], diff --git a/ui/i18n/datepicker-sr.js b/ui/i18n/datepicker-sr.js index c64069ab3a7..36e79f7a9de 100644 --- a/ui/i18n/datepicker-sr.js +++ b/ui/i18n/datepicker-sr.js @@ -17,8 +17,8 @@ datepicker.regional.sr = { closeText: "Затвори", - prevText: "<", - nextText: ">", + prevText: "", + nextText: "", currentText: "Данас", monthNames: [ "Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар" ], diff --git a/ui/i18n/datepicker-sv.js b/ui/i18n/datepicker-sv.js index 6fe51e3e74d..ee9296ea309 100644 --- a/ui/i18n/datepicker-sv.js +++ b/ui/i18n/datepicker-sv.js @@ -17,8 +17,8 @@ datepicker.regional.sv = { closeText: "Stäng", - prevText: "«Förra", - nextText: "Nästa»", + prevText: "Förra", + nextText: "Nästa", currentText: "Idag", monthNames: [ "januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december" ], diff --git a/ui/i18n/datepicker-th.js b/ui/i18n/datepicker-th.js index 10c2833214e..719afa9bf76 100644 --- a/ui/i18n/datepicker-th.js +++ b/ui/i18n/datepicker-th.js @@ -17,8 +17,8 @@ datepicker.regional.th = { closeText: "ปิด", - prevText: "« ย้อน", - nextText: "ถัดไป »", + prevText: " ย้อน", + nextText: "ถัดไป ", currentText: "วันนี้", monthNames: [ "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม" ], diff --git a/ui/i18n/datepicker-tj.js b/ui/i18n/datepicker-tj.js index bdc71f17a6c..a3669dae304 100644 --- a/ui/i18n/datepicker-tj.js +++ b/ui/i18n/datepicker-tj.js @@ -17,8 +17,8 @@ datepicker.regional.tj = { closeText: "Идома", - prevText: "<Қафо", - nextText: "Пеш>", + prevText: "Қафо", + nextText: "Пеш", currentText: "Имрӯз", monthNames: [ "Январ", "Феврал", "Март", "Апрел", "Май", "Июн", "Июл", "Август", "Сентябр", "Октябр", "Ноябр", "Декабр" ], diff --git a/ui/i18n/datepicker-tr.js b/ui/i18n/datepicker-tr.js index 220d66e64e1..32eb3edd3a0 100644 --- a/ui/i18n/datepicker-tr.js +++ b/ui/i18n/datepicker-tr.js @@ -17,8 +17,8 @@ datepicker.regional.tr = { closeText: "kapat", - prevText: "<geri", - nextText: "ileri>", + prevText: "geri", + nextText: "ileri", currentText: "bugün", monthNames: [ "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" ], diff --git a/ui/i18n/datepicker-uk.js b/ui/i18n/datepicker-uk.js index 083462803aa..b2830e656c3 100644 --- a/ui/i18n/datepicker-uk.js +++ b/ui/i18n/datepicker-uk.js @@ -18,8 +18,8 @@ datepicker.regional.uk = { closeText: "Закрити", - prevText: "<", - nextText: ">", + prevText: "", + nextText: "", currentText: "Сьогодні", monthNames: [ "Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень" ], diff --git a/ui/i18n/datepicker-vi.js b/ui/i18n/datepicker-vi.js index e06b702c12d..8664c4fee37 100644 --- a/ui/i18n/datepicker-vi.js +++ b/ui/i18n/datepicker-vi.js @@ -17,8 +17,8 @@ datepicker.regional.vi = { closeText: "Đóng", - prevText: "<Trước", - nextText: "Tiếp>", + prevText: "Trước", + nextText: "Tiếp", currentText: "Hôm nay", monthNames: [ "Tháng Một", "Tháng Hai", "Tháng Ba", "Tháng Tư", "Tháng Năm", "Tháng Sáu", "Tháng Bảy", "Tháng Tám", "Tháng Chín", "Tháng Mười", "Tháng Mười Một", "Tháng Mười Hai" ], diff --git a/ui/i18n/datepicker-zh-CN.js b/ui/i18n/datepicker-zh-CN.js index 84092904b69..a00553ef6d0 100644 --- a/ui/i18n/datepicker-zh-CN.js +++ b/ui/i18n/datepicker-zh-CN.js @@ -17,8 +17,8 @@ datepicker.regional[ "zh-CN" ] = { closeText: "关闭", - prevText: "<上月", - nextText: "下月>", + prevText: "上月", + nextText: "下月", currentText: "今天", monthNames: [ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" ], diff --git a/ui/i18n/datepicker-zh-HK.js b/ui/i18n/datepicker-zh-HK.js index 80d5c7690bd..e61bf66b080 100644 --- a/ui/i18n/datepicker-zh-HK.js +++ b/ui/i18n/datepicker-zh-HK.js @@ -17,8 +17,8 @@ datepicker.regional[ "zh-HK" ] = { closeText: "關閉", - prevText: "<上月", - nextText: "下月>", + prevText: "上月", + nextText: "下月", currentText: "今天", monthNames: [ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" ], diff --git a/ui/i18n/datepicker-zh-TW.js b/ui/i18n/datepicker-zh-TW.js index 9e79a45cad6..f5e02a6f033 100644 --- a/ui/i18n/datepicker-zh-TW.js +++ b/ui/i18n/datepicker-zh-TW.js @@ -17,8 +17,8 @@ datepicker.regional[ "zh-TW" ] = { closeText: "關閉", - prevText: "<上個月", - nextText: "下個月>", + prevText: "上個月", + nextText: "下個月", currentText: "今天", monthNames: [ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" ], From 218c6af95a5d72134c1b32220995b161c56a1453 Mon Sep 17 00:00:00 2001 From: Felix Nagel Date: Fri, 8 Jul 2022 02:51:48 +0200 Subject: [PATCH 09/17] Datepicker: Remove symbols in localization Follow-up to dfff5e7e999453f5d080c184bd4e3fdbfc93b83e Fixes gh-2048 Closes gh-2050 --- ui/i18n/datepicker-fi.js | 4 ++-- ui/i18n/datepicker-is.js | 2 +- ui/i18n/datepicker-ka.js | 2 +- ui/i18n/datepicker-nl-BE.js | 4 ++-- ui/i18n/datepicker-nl.js | 4 ++-- ui/i18n/datepicker-ro.js | 2 +- ui/i18n/datepicker-th.js | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ui/i18n/datepicker-fi.js b/ui/i18n/datepicker-fi.js index dd4ca5944a7..d355e9ebbdc 100644 --- a/ui/i18n/datepicker-fi.js +++ b/ui/i18n/datepicker-fi.js @@ -17,8 +17,8 @@ datepicker.regional.fi = { closeText: "Sulje", - prevText: "«Edellinen", - nextText: "Seuraava»", + prevText: "Edellinen", + nextText: "Seuraava", currentText: "Tänään", monthNames: [ "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" ], diff --git a/ui/i18n/datepicker-is.js b/ui/i18n/datepicker-is.js index 122ece02c12..c453fa4af2b 100644 --- a/ui/i18n/datepicker-is.js +++ b/ui/i18n/datepicker-is.js @@ -17,7 +17,7 @@ datepicker.regional.is = { closeText: "Loka", - prevText: " Fyrri", + prevText: "Fyrri", nextText: "Næsti ", currentText: "Í dag", monthNames: [ "Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", diff --git a/ui/i18n/datepicker-ka.js b/ui/i18n/datepicker-ka.js index 33ae7a46131..d347de8f5f7 100644 --- a/ui/i18n/datepicker-ka.js +++ b/ui/i18n/datepicker-ka.js @@ -17,7 +17,7 @@ datepicker.regional.ka = { closeText: "დახურვა", - prevText: " წინა", + prevText: "წინა", nextText: "შემდეგი ", currentText: "დღეს", monthNames: [ diff --git a/ui/i18n/datepicker-nl-BE.js b/ui/i18n/datepicker-nl-BE.js index ae574739e7f..be02747e86b 100644 --- a/ui/i18n/datepicker-nl-BE.js +++ b/ui/i18n/datepicker-nl-BE.js @@ -17,8 +17,8 @@ datepicker.regional[ "nl-BE" ] = { closeText: "Sluiten", - prevText: "←", - nextText: "→", + prevText: "", + nextText: "", currentText: "Vandaag", monthNames: [ "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" ], diff --git a/ui/i18n/datepicker-nl.js b/ui/i18n/datepicker-nl.js index 19df79ca714..ab1ce7d11c5 100644 --- a/ui/i18n/datepicker-nl.js +++ b/ui/i18n/datepicker-nl.js @@ -17,8 +17,8 @@ datepicker.regional.nl = { closeText: "Sluiten", - prevText: "←", - nextText: "→", + prevText: "", + nextText: "", currentText: "Vandaag", monthNames: [ "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" ], diff --git a/ui/i18n/datepicker-ro.js b/ui/i18n/datepicker-ro.js index 1ad29b27847..60f56ae79da 100644 --- a/ui/i18n/datepicker-ro.js +++ b/ui/i18n/datepicker-ro.js @@ -20,7 +20,7 @@ datepicker.regional.ro = { closeText: "Închide", - prevText: " Luna precedentă", + prevText: "Luna precedentă", nextText: "Luna următoare ", currentText: "Azi", monthNames: [ "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", diff --git a/ui/i18n/datepicker-th.js b/ui/i18n/datepicker-th.js index 719afa9bf76..41cef5237f7 100644 --- a/ui/i18n/datepicker-th.js +++ b/ui/i18n/datepicker-th.js @@ -17,8 +17,8 @@ datepicker.regional.th = { closeText: "ปิด", - prevText: " ย้อน", - nextText: "ถัดไป ", + prevText: "ย้อน", + nextText: "ถัดไป", currentText: "วันนี้", monthNames: [ "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม" ], From 395aa7d05601aa1f2ebeae272f81f0014c0cae90 Mon Sep 17 00:00:00 2001 From: Felix Nagel Date: Sat, 9 Jul 2022 02:03:20 +0200 Subject: [PATCH 10/17] Datepicker: Add missing localization for prevText and nextText Fixes gh-2048 Closes gh-2050 Closes gh-2100 --- ui/i18n/datepicker-bs.js | 4 ++-- ui/i18n/datepicker-hr.js | 4 ++-- ui/i18n/datepicker-mk.js | 4 ++-- ui/i18n/datepicker-nl-BE.js | 4 ++-- ui/i18n/datepicker-nl.js | 4 ++-- ui/i18n/datepicker-sr-SR.js | 4 ++-- ui/i18n/datepicker-sr.js | 4 ++-- ui/i18n/datepicker-uk.js | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/ui/i18n/datepicker-bs.js b/ui/i18n/datepicker-bs.js index b39a9a75b1b..3ee9db4c1de 100644 --- a/ui/i18n/datepicker-bs.js +++ b/ui/i18n/datepicker-bs.js @@ -17,8 +17,8 @@ datepicker.regional.bs = { closeText: "Zatvori", - prevText: "", - nextText: "", + prevText: "Prethodno", + nextText: "Sljedeći", currentText: "Danas", monthNames: [ "Januar", "Februar", "Mart", "April", "Maj", "Juni", "Juli", "August", "Septembar", "Oktobar", "Novembar", "Decembar" ], diff --git a/ui/i18n/datepicker-hr.js b/ui/i18n/datepicker-hr.js index 6542e2f81d2..2898d5cb8fd 100644 --- a/ui/i18n/datepicker-hr.js +++ b/ui/i18n/datepicker-hr.js @@ -17,8 +17,8 @@ datepicker.regional.hr = { closeText: "Zatvori", - prevText: "", - nextText: "", + prevText: "Prethodno", + nextText: "Sljedeći", currentText: "Danas", monthNames: [ "Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac" ], diff --git a/ui/i18n/datepicker-mk.js b/ui/i18n/datepicker-mk.js index 6672b01c829..6f430e905d7 100644 --- a/ui/i18n/datepicker-mk.js +++ b/ui/i18n/datepicker-mk.js @@ -17,8 +17,8 @@ datepicker.regional.mk = { closeText: "Затвори", - prevText: "", - nextText: "", + prevText: "Претходна", + nextText: "Следно", currentText: "Денес", monthNames: [ "Јануари", "Февруари", "Март", "Април", "Мај", "Јуни", "Јули", "Август", "Септември", "Октомври", "Ноември", "Декември" ], diff --git a/ui/i18n/datepicker-nl-BE.js b/ui/i18n/datepicker-nl-BE.js index be02747e86b..1b37288bf9c 100644 --- a/ui/i18n/datepicker-nl-BE.js +++ b/ui/i18n/datepicker-nl-BE.js @@ -17,8 +17,8 @@ datepicker.regional[ "nl-BE" ] = { closeText: "Sluiten", - prevText: "", - nextText: "", + prevText: "Vorig", + nextText: "Volgende", currentText: "Vandaag", monthNames: [ "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" ], diff --git a/ui/i18n/datepicker-nl.js b/ui/i18n/datepicker-nl.js index ab1ce7d11c5..535d7fbdaa8 100644 --- a/ui/i18n/datepicker-nl.js +++ b/ui/i18n/datepicker-nl.js @@ -17,8 +17,8 @@ datepicker.regional.nl = { closeText: "Sluiten", - prevText: "", - nextText: "", + prevText: "Vorig", + nextText: "Volgende", currentText: "Vandaag", monthNames: [ "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" ], diff --git a/ui/i18n/datepicker-sr-SR.js b/ui/i18n/datepicker-sr-SR.js index 7c4dc694e3d..b28ceed019b 100644 --- a/ui/i18n/datepicker-sr-SR.js +++ b/ui/i18n/datepicker-sr-SR.js @@ -17,8 +17,8 @@ datepicker.regional[ "sr-SR" ] = { closeText: "Zatvori", - prevText: "", - nextText: "", + prevText: "Prethodno", + nextText: "Sljedeći", currentText: "Danas", monthNames: [ "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" ], diff --git a/ui/i18n/datepicker-sr.js b/ui/i18n/datepicker-sr.js index 36e79f7a9de..8b04d9bb3a0 100644 --- a/ui/i18n/datepicker-sr.js +++ b/ui/i18n/datepicker-sr.js @@ -17,8 +17,8 @@ datepicker.regional.sr = { closeText: "Затвори", - prevText: "", - nextText: "", + prevText: "Претходна", + nextText: "Следећи", currentText: "Данас", monthNames: [ "Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар" ], diff --git a/ui/i18n/datepicker-uk.js b/ui/i18n/datepicker-uk.js index b2830e656c3..c273fd6e41d 100644 --- a/ui/i18n/datepicker-uk.js +++ b/ui/i18n/datepicker-uk.js @@ -18,8 +18,8 @@ datepicker.regional.uk = { closeText: "Закрити", - prevText: "", - nextText: "", + prevText: "Попередній", + nextText: "найближчий", currentText: "Сьогодні", monthNames: [ "Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень" ], From ac1866f20d0c333658ec180b09bb84445c3bb086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Thu, 14 Jul 2022 19:07:27 +0200 Subject: [PATCH 11/17] Build: Update AUTHORS.txt --- AUTHORS.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index 2fcf89acccc..3fc0d68d816 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -365,3 +365,6 @@ Patrick McKay c-lambert <58025159+c-lambert@users.noreply.github.com> Josep Sanz Ben Mullins +Christian Oliff +dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> +Adam Lidén Hällgren From 1f467baaacf0f9927cb73482a9f3ac0253739c4a Mon Sep 17 00:00:00 2001 From: James Hinderks Date: Thu, 14 Jul 2022 13:43:16 -0400 Subject: [PATCH 12/17] Selectmenu: Remove a call to the deprecated .focus() method Replaces a call to the deprecated jQuery `.focus()` method with `.trigger("focus")`. Closes gh-2053 --- ui/widgets/selectmenu.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/widgets/selectmenu.js b/ui/widgets/selectmenu.js index cefeddcacf4..cf48261d092 100644 --- a/ui/widgets/selectmenu.js +++ b/ui/widgets/selectmenu.js @@ -417,7 +417,7 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, { // Support: IE // Setting the text selection kills the button focus in IE, but // restoring the focus doesn't kill the selection. - this.button.focus(); + this.button.trigger( "focus" ); }, _documentClick: { From 9d1fc97b4ea5c364b8f1c7d9ab2a3c28f8c594e7 Mon Sep 17 00:00:00 2001 From: Denny Septian Panggabean <97607754+ddevsr@users.noreply.github.com> Date: Fri, 15 Jul 2022 00:53:59 +0700 Subject: [PATCH 13/17] Datepicker: Capitalize some Indonesian words Closes gh-2067 --- ui/i18n/datepicker-id.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ui/i18n/datepicker-id.js b/ui/i18n/datepicker-id.js index 1ae3472a4b4..17082e9b933 100644 --- a/ui/i18n/datepicker-id.js +++ b/ui/i18n/datepicker-id.js @@ -1,5 +1,6 @@ /* Indonesian initialisation for the jQuery UI date picker plugin. */ /* Written by Deden Fathurahman (dedenf@gmail.com). */ +/* Fixed by Denny Septian Panggabean (xamidimura@gmail.com) */ ( function( factory ) { "use strict"; @@ -17,16 +18,16 @@ datepicker.regional.id = { closeText: "Tutup", - prevText: "mundur", - nextText: "maju", - currentText: "hari ini", + prevText: "Mundur", + nextText: "Maju", + currentText: "Hari ini", monthNames: [ "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "Nopember", "Desember" ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agus", "Sep", "Okt", "Nop", "Des" ], dayNames: [ "Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu" ], - dayNamesShort: [ "Min", "Sen", "Sel", "Rab", "kam", "Jum", "Sab" ], - dayNamesMin: [ "Mg", "Sn", "Sl", "Rb", "Km", "jm", "Sb" ], + dayNamesShort: [ "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab" ], + dayNamesMin: [ "Mg", "Sn", "Sl", "Rb", "Km", "Jm", "Sb" ], weekHeader: "Mg", dateFormat: "dd/mm/yy", firstDay: 0, From bb00536756b40a67288fab1803741d18bf3b5e4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Thu, 14 Jul 2022 19:54:38 +0200 Subject: [PATCH 14/17] Build: Update AUTHORS.txt --- AUTHORS.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index 3fc0d68d816..0ee3fb31ebe 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -368,3 +368,5 @@ Ben Mullins Christian Oliff dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Adam Lidén Hällgren +James Hinderks +Denny Septian Panggabean <97607754+ddevsr@users.noreply.github.com> From b53e7beb6884a8de7710146112bc48aecd8737b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Thu, 14 Jul 2022 20:34:29 +0200 Subject: [PATCH 15/17] All: Remove deprecated .click() usage in demos/tests --- demos/button/default.html | 2 +- demos/controlgroup/splitbutton.html | 2 +- tests/visual/checkboxradio/checkboxradio.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/demos/button/default.html b/demos/button/default.html index 644dcd22541..7ac6a325d05 100644 --- a/demos/button/default.html +++ b/demos/button/default.html @@ -9,7 +9,7 @@ diff --git a/demos/controlgroup/splitbutton.html b/demos/controlgroup/splitbutton.html index ec2b78876d6..27f9498160a 100644 --- a/demos/controlgroup/splitbutton.html +++ b/demos/controlgroup/splitbutton.html @@ -21,7 +21,7 @@ } }); $( ".controlgroup" ).controlgroup(); - $( "button" ).click(function() { + $( "button" ).on( "click", function() { $( ".output" ).append( "
  • Running Last Action...
  • " ); }); diff --git a/tests/visual/checkboxradio/checkboxradio.html b/tests/visual/checkboxradio/checkboxradio.html index a472c9df2fd..8d26daeff17 100644 --- a/tests/visual/checkboxradio/checkboxradio.html +++ b/tests/visual/checkboxradio/checkboxradio.html @@ -24,7 +24,7 @@ checkboxes.checkboxradio( "option", option, value ); } }); - $( ".controls > button" ).click( function() { + $( ".controls > button" ).on( "click", function() { if ( this.id !== "create" ) { checkboxes.checkboxradio( this.id ); } else { From 8cc5bae1caa1fcf96bf5862c5646c787020ba3f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Thu, 14 Jul 2022 20:52:02 +0200 Subject: [PATCH 16/17] Checkboxradio: Don't re-evaluate text labels as HTML If you generate a Checkboxradio from a checkbox/radio with a label that contains encoded HTML, e.g. `<em>test</em>` this will work fine at first. If, however a refresh is triggered on that instance (explicitly or e.g. by turning it into a `Controlgroup`), the previously escaped HTML will now be evaluated. If the label was created based on some user input, this could lead to unexpected code execution even though the initial output was escaped. Fixes gh-2101 Closes gh-2102 --- tests/unit/checkboxradio/checkboxradio.html | 12 +++++++ tests/unit/checkboxradio/core.js | 37 ++++++++++++++++++++ tests/unit/checkboxradio/methods.js | 38 +++++++++++++++++++++ ui/widgets/checkboxradio.js | 21 +++++++----- 4 files changed, 100 insertions(+), 8 deletions(-) diff --git a/tests/unit/checkboxradio/checkboxradio.html b/tests/unit/checkboxradio/checkboxradio.html index 9883e083403..62552fefcea 100644 --- a/tests/unit/checkboxradio/checkboxradio.html +++ b/tests/unit/checkboxradio/checkboxradio.html @@ -64,6 +64,18 @@ + + +
    diff --git a/tests/unit/checkboxradio/core.js b/tests/unit/checkboxradio/core.js index 8b0e1de8ee3..ad27f1be0fb 100644 --- a/tests/unit/checkboxradio/core.js +++ b/tests/unit/checkboxradio/core.js @@ -131,4 +131,41 @@ QUnit.test( "Calling checkboxradio on an input with no label throws an error", f ); } ); +QUnit.test( "Inheriting label from initial HTML", function( assert ) { + var tests = [ + { + id: "label-with-no-for-with-html", + expectedLabel: "Hi, I'm a label" + }, + { + id: "label-with-no-for-with-text", + expectedLabel: "Hi, I'm a label" + }, + { + id: "label-with-no-for-with-html-like-text", + expectedLabel: "<em>Hi, I'm a label</em>" + } + ]; + + assert.expect( tests.length ); + + tests.forEach( function( testData ) { + var id = testData.id; + var expectedLabel = testData.expectedLabel; + var inputElem = $( "#" + id ); + var labelElem = inputElem.parent(); + + inputElem.checkboxradio( { icon: false } ); + + var labelWithoutInput = labelElem.clone(); + labelWithoutInput.find( "input" ).remove(); + + assert.strictEqual( + labelWithoutInput.html().trim(), + expectedLabel.trim(), + "Label correct [" + id + "]" + ); + } ); +} ); + } ); diff --git a/tests/unit/checkboxradio/methods.js b/tests/unit/checkboxradio/methods.js index 09510ec715f..f6c94f94fa8 100644 --- a/tests/unit/checkboxradio/methods.js +++ b/tests/unit/checkboxradio/methods.js @@ -96,4 +96,42 @@ QUnit.test( "Input wrapped in a label preserved on refresh", function( assert ) assert.strictEqual( input.parent()[ 0 ], element[ 0 ], "Input preserved" ); } ); +QUnit.test( "Initial text label not turned to HTML on refresh", function( assert ) { + var tests = [ + { + id: "label-with-no-for-with-html", + expectedLabel: "Hi, I'm a label" + }, + { + id: "label-with-no-for-with-text", + expectedLabel: "Hi, I'm a label" + }, + { + id: "label-with-no-for-with-html-like-text", + expectedLabel: "<em>Hi, I'm a label</em>" + } + ]; + + assert.expect( tests.length ); + + tests.forEach( function( testData ) { + var id = testData.id; + var expectedLabel = testData.expectedLabel; + var inputElem = $( "#" + id ); + var labelElem = inputElem.parent(); + + inputElem.checkboxradio( { icon: false } ); + inputElem.checkboxradio( "refresh" ); + + var labelWithoutInput = labelElem.clone(); + labelWithoutInput.find( "input" ).remove(); + + assert.strictEqual( + labelWithoutInput.html().trim(), + expectedLabel.trim(), + "Label correct [" + id + "]" + ); + } ); +} ); + } ); diff --git a/ui/widgets/checkboxradio.js b/ui/widgets/checkboxradio.js index b2537d29283..afa4a446d4f 100644 --- a/ui/widgets/checkboxradio.js +++ b/ui/widgets/checkboxradio.js @@ -50,8 +50,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, { }, _getCreateOptions: function() { - var disabled, labels; - var that = this; + var disabled, labels, labelContents; var options = this._super() || {}; // We read the type here, because it makes more sense to throw a element type error first, @@ -71,12 +70,18 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, { // We need to get the label text but this may also need to make sure it does not contain the // input itself. - this.label.contents().not( this.element[ 0 ] ).each( function() { - - // The label contents could be text, html, or a mix. We concat each element to get a - // string representation of the label, without the input as part of it. - that.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML; - } ); + // The label contents could be text, html, or a mix. We wrap all elements + // and read the wrapper's `innerHTML` to get a string representation of + // the label, without the input as part of it. + labelContents = this.label.contents().not( this.element[ 0 ] ); + + if ( labelContents.length ) { + this.originalLabel += labelContents + .clone() + .wrapAll( "
    " ) + .parent() + .html(); + } // Set the label option if we found label text if ( this.originalLabel ) { From d6c028cc2e214a4f9f3a787313ef03a17a33a008 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Thu, 14 Jul 2022 21:10:31 +0200 Subject: [PATCH 17/17] 1.13.2 --- bower.json | 4 +- dist/jquery-ui.js | 19062 ++++++++++++++++ dist/jquery-ui.min.js | 6 + .../base/images/ui-icons_444444_256x240.png | Bin 0 -> 7142 bytes .../base/images/ui-icons_555555_256x240.png | Bin 0 -> 7126 bytes .../base/images/ui-icons_777620_256x240.png | Bin 0 -> 4670 bytes .../base/images/ui-icons_777777_256x240.png | Bin 0 -> 7163 bytes .../base/images/ui-icons_cc0000_256x240.png | Bin 0 -> 4670 bytes .../base/images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/base/jquery-ui.css | 1314 ++ dist/themes/base/jquery-ui.min.css | 7 + dist/themes/base/theme.css | 446 + .../ui-bg_diagonals-thick_8_333333_40x40.png | Bin 0 -> 435 bytes .../images/ui-bg_glass_40_111111_1x400.png | Bin 0 -> 375 bytes .../images/ui-bg_glass_55_1c1c1c_1x400.png | Bin 0 -> 375 bytes .../ui-bg_highlight-hard_100_f9f9f9_1x100.png | Bin 0 -> 367 bytes .../ui-bg_highlight-hard_40_aaaaaa_1x100.png | Bin 0 -> 368 bytes .../ui-bg_highlight-soft_50_aaaaaa_1x100.png | Bin 0 -> 379 bytes .../ui-bg_inset-hard_45_cd0a0a_1x100.png | Bin 0 -> 434 bytes .../ui-bg_inset-hard_55_ffeb80_1x100.png | Bin 0 -> 419 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 7077 bytes .../images/ui-icons_4ca300_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_bbbbbb_256x240.png | Bin 0 -> 7144 bytes .../images/ui-icons_ededed_256x240.png | Bin 0 -> 7063 bytes .../images/ui-icons_ffcf29_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/black-tie/jquery-ui.css | 1314 ++ dist/themes/black-tie/jquery-ui.min.css | 7 + dist/themes/black-tie/theme.css | 446 + .../ui-bg_diagonals-thick_75_f3d8d8_40x40.png | Bin 0 -> 523 bytes .../images/ui-bg_dots-small_65_a6a6a6_2x2.png | Bin 0 -> 318 bytes .../images/ui-bg_glass_55_fbf8ee_1x400.png | Bin 0 -> 450 bytes .../ui-bg_highlight-hard_100_eeeeee_1x100.png | Bin 0 -> 368 bytes .../ui-bg_highlight-hard_100_f6f6f6_1x100.png | Bin 0 -> 368 bytes .../ui-bg_highlight-soft_15_cc0000_1x100.png | Bin 0 -> 437 bytes .../images/ui-icons_004276_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_cc0000_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/blitzer/jquery-ui.css | 1314 ++ dist/themes/blitzer/jquery-ui.min.css | 7 + dist/themes/blitzer/theme.css | 446 + .../ui-bg_diagonals-thick_90_eeeeee_40x40.png | Bin 0 -> 432 bytes .../images/ui-bg_glass_100_e4f1fb_1x400.png | Bin 0 -> 460 bytes .../images/ui-bg_glass_50_3baae3_1x400.png | Bin 0 -> 446 bytes .../images/ui-bg_glass_80_d7ebf9_1x400.png | Bin 0 -> 456 bytes .../ui-bg_highlight-hard_100_f2f5f7_1x100.png | Bin 0 -> 442 bytes .../ui-bg_highlight-hard_70_000000_1x100.png | Bin 0 -> 362 bytes .../ui-bg_highlight-soft_100_deedf7_1x100.png | Bin 0 -> 497 bytes .../ui-bg_highlight-soft_25_ffef8f_1x100.png | Bin 0 -> 419 bytes .../images/ui-icons_2694e8_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_3d80b3_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_72a7cf_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/cupertino/jquery-ui.css | 1314 ++ dist/themes/cupertino/jquery-ui.min.css | 7 + dist/themes/cupertino/theme.css | 446 + .../images/ui-bg_glass_40_ffc73d_1x400.png | Bin 0 -> 426 bytes .../ui-bg_highlight-hard_20_0972a5_1x100.png | Bin 0 -> 433 bytes .../ui-bg_highlight-soft_33_003147_1x100.png | Bin 0 -> 453 bytes .../ui-bg_highlight-soft_35_222222_1x100.png | Bin 0 -> 394 bytes .../ui-bg_highlight-soft_44_444444_1x100.png | Bin 0 -> 380 bytes .../ui-bg_highlight-soft_80_eeeeee_1x100.png | Bin 0 -> 387 bytes .../images/ui-bg_loop_25_000000_21x21.png | Bin 0 -> 430 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 7077 bytes .../images/ui-icons_4b8e0b_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_a83300_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_cccccc_256x240.png | Bin 0 -> 7086 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/dark-hive/jquery-ui.css | 1314 ++ dist/themes/dark-hive/jquery-ui.min.css | 7 + dist/themes/dark-hive/theme.css | 446 + .../ui-bg_diagonals-thick_15_0b3e6f_40x40.png | Bin 0 -> 534 bytes .../ui-bg_dots-medium_30_0b58a2_4x4.png | Bin 0 -> 347 bytes .../images/ui-bg_dots-small_20_333333_2x2.png | Bin 0 -> 318 bytes .../images/ui-bg_dots-small_30_a32d00_2x2.png | Bin 0 -> 328 bytes .../images/ui-bg_dots-small_40_00498f_2x2.png | Bin 0 -> 334 bytes .../ui-bg_gloss-wave_20_111111_500x100.png | Bin 0 -> 4042 bytes .../images/ui-icons_00498f_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_98d2fb_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_9ccdfc_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/dot-luv/jquery-ui.css | 1314 ++ dist/themes/dot-luv/jquery-ui.min.css | 7 + dist/themes/dot-luv/theme.css | 446 + .../ui-bg_gloss-wave_30_3d3644_500x100.png | Bin 0 -> 6051 bytes .../ui-bg_highlight-soft_100_dcd9de_1x100.png | Bin 0 -> 452 bytes .../ui-bg_highlight-soft_100_eae6ea_1x100.png | Bin 0 -> 483 bytes .../ui-bg_highlight-soft_25_30273a_1x100.png | Bin 0 -> 472 bytes .../ui-bg_highlight-soft_45_5f5964_1x100.png | Bin 0 -> 457 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 7142 bytes .../images/ui-icons_734d99_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_8d78a5_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_a8a3ae_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ebccce_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/eggplant/jquery-ui.css | 1314 ++ dist/themes/eggplant/jquery-ui.min.css | 7 + dist/themes/eggplant/theme.css | 446 + .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 0 -> 452 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 0 -> 527 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 0 -> 519 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 0 -> 516 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 0 -> 377 bytes .../ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 0 -> 366 bytes .../images/ui-icons_0a82eb_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_0b54d5_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_5fa5e3_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_fcdd4a_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/excite-bike/jquery-ui.css | 1314 ++ dist/themes/excite-bike/jquery-ui.min.css | 7 + dist/themes/excite-bike/theme.css | 446 + .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 317 bytes .../ui-bg_highlight-soft_100_f6f6f6_1x100.png | Bin 0 -> 382 bytes .../ui-bg_highlight-soft_25_0073ea_1x100.png | Bin 0 -> 445 bytes .../ui-bg_highlight-soft_50_dddddd_1x100.png | Bin 0 -> 391 bytes .../flick/images/ui-icons_0073ea_256x240.png | Bin 0 -> 4670 bytes .../flick/images/ui-icons_454545_256x240.png | Bin 0 -> 7142 bytes .../flick/images/ui-icons_666666_256x240.png | Bin 0 -> 7163 bytes .../flick/images/ui-icons_ff0084_256x240.png | Bin 0 -> 4670 bytes .../flick/images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/flick/jquery-ui.css | 1314 ++ dist/themes/flick/jquery-ui.min.css | 7 + dist/themes/flick/theme.css | 446 + .../ui-bg_diagonals-small_40_db4865_40x40.png | Bin 0 -> 442 bytes .../ui-bg_diagonals-small_50_93c3cd_40x40.png | Bin 0 -> 443 bytes .../ui-bg_diagonals-small_50_ff3853_40x40.png | Bin 0 -> 440 bytes .../ui-bg_diagonals-small_75_ccd232_40x40.png | Bin 0 -> 443 bytes .../ui-bg_dots-medium_80_ffff38_4x4.png | Bin 0 -> 335 bytes .../images/ui-bg_dots-small_35_35414f_2x2.png | Bin 0 -> 333 bytes .../ui-bg_white-lines_85_f7f7ba_40x100.png | Bin 0 -> 474 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 7142 bytes .../images/ui-icons_88a206_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_c02669_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_e1e463_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffeb33_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/hot-sneaks/jquery-ui.css | 1314 ++ dist/themes/hot-sneaks/jquery-ui.min.css | 7 + dist/themes/hot-sneaks/theme.css | 446 + .../images/ui-bg_glass_100_f5f0e5_1x400.png | Bin 0 -> 464 bytes .../images/ui-bg_glass_25_cb842e_1x400.png | Bin 0 -> 445 bytes .../images/ui-bg_glass_70_ede4d4_1x400.png | Bin 0 -> 464 bytes .../ui-bg_highlight-hard_100_f4f0ec_1x100.png | Bin 0 -> 437 bytes .../ui-bg_highlight-hard_65_fee4bd_1x100.png | Bin 0 -> 424 bytes .../ui-bg_highlight-hard_75_f5f5b5_1x100.png | Bin 0 -> 433 bytes .../ui-bg_inset-soft_100_f4f0ec_1x100.png | Bin 0 -> 513 bytes .../images/ui-icons_c47a23_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_cb672b_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_f08000_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_f35f07_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ff7519_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/humanity/jquery-ui.css | 1314 ++ dist/themes/humanity/jquery-ui.min.css | 7 + dist/themes/humanity/theme.css | 446 + .../ui-bg_diagonals-small_0_aaaaaa_40x40.png | Bin 0 -> 317 bytes .../ui-bg_diagonals-thick_15_444444_40x40.png | Bin 0 -> 435 bytes .../ui-bg_diagonals-thick_95_ffdc2e_40x40.png | Bin 0 -> 521 bytes .../images/ui-bg_glass_55_fbf5d0_1x400.png | Bin 0 -> 446 bytes .../ui-bg_highlight-hard_30_285c00_1x100.png | Bin 0 -> 434 bytes .../ui-bg_highlight-soft_33_3a8104_1x100.png | Bin 0 -> 455 bytes .../ui-bg_highlight-soft_50_4eb305_1x100.png | Bin 0 -> 461 bytes .../ui-bg_highlight-soft_60_4ca20b_1x100.png | Bin 0 -> 469 bytes .../ui-bg_inset-soft_10_285c00_1x100.png | Bin 0 -> 476 bytes .../images/ui-icons_4eb305_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_72b42d_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/le-frog/jquery-ui.css | 1314 ++ dist/themes/le-frog/jquery-ui.min.css | 7 + dist/themes/le-frog/theme.css | 446 + .../images/ui-bg_glass_15_5f391b_1x400.png | Bin 0 -> 445 bytes .../ui-bg_gloss-wave_20_1c160d_500x100.png | Bin 0 -> 5903 bytes .../ui-bg_gloss-wave_25_453326_500x100.png | Bin 0 -> 5962 bytes .../ui-bg_gloss-wave_30_44372c_500x100.png | Bin 0 -> 6024 bytes .../ui-bg_highlight-soft_20_201913_1x100.png | Bin 0 -> 485 bytes .../ui-bg_highlight-soft_20_619226_1x100.png | Bin 0 -> 453 bytes .../ui-bg_inset-soft_10_201913_1x100.png | Bin 0 -> 490 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 7077 bytes .../images/ui-icons_9bcc60_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_add978_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_e3ddc9_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_f1fd86_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/mint-choc/jquery-ui.css | 1314 ++ dist/themes/mint-choc/jquery-ui.min.css | 7 + dist/themes/mint-choc/theme.css | 446 + .../images/ui-bg_glass_100_f8f8f8_1x400.png | Bin 0 -> 376 bytes .../images/ui-bg_glass_35_dddddd_1x400.png | Bin 0 -> 375 bytes .../images/ui-bg_glass_60_eeeeee_1x400.png | Bin 0 -> 375 bytes .../ui-bg_inset-hard_75_999999_1x100.png | Bin 0 -> 362 bytes .../ui-bg_inset-soft_50_c9c9c9_1x100.png | Bin 0 -> 381 bytes .../images/ui-icons_3383bb_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 7142 bytes .../images/ui-icons_70b2e1_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_999999_256x240.png | Bin 0 -> 7163 bytes .../images/ui-icons_fbc856_256x240.png | Bin 0 -> 4670 bytes dist/themes/overcast/jquery-ui.css | 1314 ++ dist/themes/overcast/jquery-ui.min.css | 7 + dist/themes/overcast/theme.css | 446 + .../ui-bg_diagonal-maze_20_6e4f1c_10x10.png | Bin 0 -> 406 bytes .../ui-bg_diagonal-maze_40_000000_10x10.png | Bin 0 -> 353 bytes .../ui-bg_fine-grain_10_eceadf_60x60.png | Bin 0 -> 10869 bytes .../ui-bg_fine-grain_10_f8f7f6_60x60.png | Bin 0 -> 10014 bytes .../ui-bg_fine-grain_15_eceadf_60x60.png | Bin 0 -> 10639 bytes .../ui-bg_fine-grain_15_f7f3de_60x60.png | Bin 0 -> 11001 bytes .../ui-bg_fine-grain_15_ffffff_60x60.png | Bin 0 -> 4314 bytes .../ui-bg_fine-grain_65_654b24_60x60.png | Bin 0 -> 14555 bytes .../ui-bg_fine-grain_68_b83400_60x60.png | Bin 0 -> 11987 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 7077 bytes .../images/ui-icons_3572ac_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_8c291d_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_b83400_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_fbdb93_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/pepper-grinder/jquery-ui.css | 1314 ++ dist/themes/pepper-grinder/jquery-ui.min.css | 7 + dist/themes/pepper-grinder/theme.css | 446 + .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 0 -> 446 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 0 -> 451 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 442 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 0 -> 5934 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 0 -> 443 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 0 -> 402 bytes .../images/ui-icons_217bc0_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_469bdd_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 0 -> 4670 bytes dist/themes/redmond/jquery-ui.css | 1314 ++ dist/themes/redmond/jquery-ui.min.css | 7 + dist/themes/redmond/theme.css | 446 + .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 445 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 317 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 375 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 376 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 442 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 377 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 7077 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 7142 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 7163 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4670 bytes dist/themes/smoothness/jquery-ui.css | 1314 ++ dist/themes/smoothness/jquery-ui.min.css | 7 + dist/themes/smoothness/theme.css | 446 + .../images/ui-bg_glass_55_fcf0ba_1x400.png | Bin 0 -> 443 bytes .../ui-bg_gloss-wave_100_ece8da_500x100.png | Bin 0 -> 5869 bytes .../ui-bg_highlight-hard_100_f5f3e5_1x100.png | Bin 0 -> 446 bytes .../ui-bg_highlight-hard_100_fafaf4_1x100.png | Bin 0 -> 431 bytes .../ui-bg_highlight-hard_15_459e00_1x100.png | Bin 0 -> 432 bytes .../ui-bg_highlight-hard_95_cccccc_1x100.png | Bin 0 -> 369 bytes .../ui-bg_highlight-soft_25_67b021_1x100.png | Bin 0 -> 463 bytes .../ui-bg_highlight-soft_95_ffedad_1x100.png | Bin 0 -> 461 bytes .../ui-bg_inset-soft_15_2b2922_1x100.png | Bin 0 -> 432 bytes .../images/ui-icons_808080_256x240.png | Bin 0 -> 7169 bytes .../images/ui-icons_847e71_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_8DC262_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_eeeeee_256x240.png | Bin 0 -> 7062 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/south-street/jquery-ui.css | 1314 ++ dist/themes/south-street/jquery-ui.min.css | 7 + dist/themes/south-street/theme.css | 446 + .../images/ui-bg_glass_45_0078ae_1x400.png | Bin 0 -> 455 bytes .../images/ui-bg_glass_55_f8da4e_1x400.png | Bin 0 -> 455 bytes .../images/ui-bg_glass_75_79c9ec_1x400.png | Bin 0 -> 458 bytes .../ui-bg_gloss-wave_45_e14f1c_500x100.png | Bin 0 -> 5974 bytes .../ui-bg_gloss-wave_50_6eac2c_500x100.png | Bin 0 -> 6016 bytes .../ui-bg_gloss-wave_75_2191c0_500x100.png | Bin 0 -> 6087 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 0 -> 402 bytes .../start/images/ui-icons_0078ae_256x240.png | Bin 0 -> 4670 bytes .../start/images/ui-icons_056b93_256x240.png | Bin 0 -> 4670 bytes .../start/images/ui-icons_d8e7f3_256x240.png | Bin 0 -> 4670 bytes .../start/images/ui-icons_e0fdff_256x240.png | Bin 0 -> 4670 bytes .../start/images/ui-icons_f5e175_256x240.png | Bin 0 -> 4670 bytes .../start/images/ui-icons_f7a50d_256x240.png | Bin 0 -> 4670 bytes .../start/images/ui-icons_fcd113_256x240.png | Bin 0 -> 4670 bytes dist/themes/start/jquery-ui.css | 1314 ++ dist/themes/start/jquery-ui.min.css | 7 + dist/themes/start/theme.css | 446 + ...ui-bg_diagonals-medium_20_d34d17_40x40.png | Bin 0 -> 492 bytes .../ui-bg_gloss-wave_45_817865_500x100.png | Bin 0 -> 6000 bytes .../ui-bg_gloss-wave_60_fece2f_500x100.png | Bin 0 -> 5960 bytes .../ui-bg_gloss-wave_70_ffdd57_500x100.png | Bin 0 -> 5653 bytes .../ui-bg_gloss-wave_90_fff9e5_500x100.png | Bin 0 -> 5499 bytes .../ui-bg_highlight-soft_100_feeebd_1x100.png | Bin 0 -> 453 bytes .../ui-bg_inset-soft_30_ffffff_1x100.png | Bin 0 -> 313 bytes .../sunny/images/ui-icons_3d3d3d_256x240.png | Bin 0 -> 7126 bytes .../sunny/images/ui-icons_bd7b00_256x240.png | Bin 0 -> 4670 bytes .../sunny/images/ui-icons_d19405_256x240.png | Bin 0 -> 4670 bytes .../sunny/images/ui-icons_eb990f_256x240.png | Bin 0 -> 4670 bytes .../sunny/images/ui-icons_ed9f26_256x240.png | Bin 0 -> 4670 bytes .../sunny/images/ui-icons_fadc7a_256x240.png | Bin 0 -> 4670 bytes .../sunny/images/ui-icons_ffe180_256x240.png | Bin 0 -> 4670 bytes dist/themes/sunny/jquery-ui.css | 1314 ++ dist/themes/sunny/jquery-ui.min.css | 7 + dist/themes/sunny/theme.css | 446 + .../images/ui-bg_diamond_10_4f4221_10x8.png | Bin 0 -> 417 bytes .../images/ui-bg_diamond_20_372806_10x8.png | Bin 0 -> 420 bytes .../images/ui-bg_diamond_25_675423_10x8.png | Bin 0 -> 422 bytes .../images/ui-bg_diamond_25_d5ac5d_10x8.png | Bin 0 -> 423 bytes .../images/ui-bg_diamond_8_261803_10x8.png | Bin 0 -> 420 bytes .../images/ui-bg_diamond_8_443113_10x8.png | Bin 0 -> 420 bytes .../ui-bg_highlight-hard_65_fee4bd_1x100.png | Bin 0 -> 424 bytes .../images/ui-icons_070603_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_e8e2b5_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_e9cd86_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_efec9f_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_f2ec64_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_f9f2bd_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ff7519_256x240.png | Bin 0 -> 4670 bytes dist/themes/swanky-purse/jquery-ui.css | 1314 ++ dist/themes/swanky-purse/jquery-ui.min.css | 7 + dist/themes/swanky-purse/theme.css | 446 + .../ui-bg_diagonals-small_50_262626_40x40.png | Bin 0 -> 373 bytes .../images/ui-bg_glass_40_0a0a0a_1x400.png | Bin 0 -> 374 bytes .../images/ui-bg_glass_55_f1fbe5_1x400.png | Bin 0 -> 458 bytes .../images/ui-bg_glass_60_000000_1x400.png | Bin 0 -> 375 bytes .../ui-bg_gloss-wave_55_000000_500x100.png | Bin 0 -> 4412 bytes .../ui-bg_gloss-wave_85_9fda58_500x100.png | Bin 0 -> 6050 bytes .../ui-bg_gloss-wave_95_f6ecd5_500x100.png | Bin 0 -> 5908 bytes .../images/ui-icons_000000_256x240.png | Bin 0 -> 5634 bytes .../images/ui-icons_1f1f1f_256x240.png | Bin 0 -> 7077 bytes .../images/ui-icons_9fda58_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_b8ec79_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/trontastic/jquery-ui.css | 1314 ++ dist/themes/trontastic/jquery-ui.min.css | 7 + dist/themes/trontastic/theme.css | 446 + .../images/ui-bg_glass_20_555555_1x400.png | Bin 0 -> 370 bytes .../images/ui-bg_glass_40_0078a3_1x400.png | Bin 0 -> 452 bytes .../images/ui-bg_glass_40_ffc73d_1x400.png | Bin 0 -> 426 bytes .../ui-bg_gloss-wave_25_333333_500x100.png | Bin 0 -> 4028 bytes .../ui-bg_highlight-soft_80_eeeeee_1x100.png | Bin 0 -> 387 bytes .../ui-bg_inset-soft_25_000000_1x100.png | Bin 0 -> 364 bytes .../ui-bg_inset-soft_30_f58400_1x100.png | Bin 0 -> 450 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 7077 bytes .../images/ui-icons_4b8e0b_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_a83300_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_cccccc_256x240.png | Bin 0 -> 7086 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/ui-darkness/jquery-ui.css | 1314 ++ dist/themes/ui-darkness/jquery-ui.min.css | 7 + dist/themes/ui-darkness/theme.css | 446 + .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 528 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 436 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 376 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 458 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 317 bytes .../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 5925 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 394 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 438 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 7077 bytes .../images/ui-icons_228ef1_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 0 -> 4670 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6539 bytes dist/themes/ui-lightness/jquery-ui.css | 1314 ++ dist/themes/ui-lightness/jquery-ui.min.css | 7 + dist/themes/ui-lightness/theme.css | 446 + .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 442 bytes .../ui-bg_gloss-wave_16_121212_500x100.png | Bin 0 -> 4083 bytes .../ui-bg_highlight-hard_15_888888_1x100.png | Bin 0 -> 363 bytes .../ui-bg_highlight-hard_55_555555_1x100.png | Bin 0 -> 363 bytes .../ui-bg_highlight-soft_35_adadad_1x100.png | Bin 0 -> 378 bytes .../ui-bg_highlight-soft_60_dddddd_1x100.png | Bin 0 -> 394 bytes .../ui-bg_inset-soft_15_121212_1x100.png | Bin 0 -> 374 bytes .../vader/images/ui-icons_666666_256x240.png | Bin 0 -> 7163 bytes .../vader/images/ui-icons_777777_256x240.png | Bin 0 -> 7163 bytes .../vader/images/ui-icons_aaaaaa_256x240.png | Bin 0 -> 7127 bytes .../vader/images/ui-icons_c98000_256x240.png | Bin 0 -> 4670 bytes .../vader/images/ui-icons_cccccc_256x240.png | Bin 0 -> 7086 bytes .../vader/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4670 bytes .../vader/images/ui-icons_f29a00_256x240.png | Bin 0 -> 4670 bytes dist/themes/vader/jquery-ui.css | 1314 ++ dist/themes/vader/jquery-ui.min.css | 7 + dist/themes/vader/theme.css | 446 + package.json | 4 +- themes/base/accordion.css | 2 +- themes/base/all.css | 2 +- themes/base/autocomplete.css | 2 +- themes/base/base.css | 2 +- themes/base/button.css | 2 +- themes/base/checkboxradio.css | 2 +- themes/base/controlgroup.css | 2 +- themes/base/core.css | 2 +- themes/base/datepicker.css | 2 +- themes/base/dialog.css | 2 +- themes/base/draggable.css | 2 +- themes/base/menu.css | 2 +- themes/base/progressbar.css | 2 +- themes/base/resizable.css | 2 +- themes/base/selectable.css | 2 +- themes/base/selectmenu.css | 2 +- themes/base/slider.css | 2 +- themes/base/sortable.css | 2 +- themes/base/spinner.css | 2 +- themes/base/tabs.css | 2 +- themes/base/theme.css | 2 +- themes/base/tooltip.css | 2 +- ui/data.js | 2 +- ui/disable-selection.js | 2 +- ui/effect.js | 4 +- ui/effects/effect-blind.js | 2 +- ui/effects/effect-bounce.js | 2 +- ui/effects/effect-clip.js | 2 +- ui/effects/effect-drop.js | 2 +- ui/effects/effect-explode.js | 2 +- ui/effects/effect-fade.js | 2 +- ui/effects/effect-fold.js | 2 +- ui/effects/effect-highlight.js | 2 +- ui/effects/effect-puff.js | 2 +- ui/effects/effect-pulsate.js | 2 +- ui/effects/effect-scale.js | 2 +- ui/effects/effect-shake.js | 2 +- ui/effects/effect-size.js | 2 +- ui/effects/effect-slide.js | 2 +- ui/effects/effect-transfer.js | 2 +- ui/focusable.js | 2 +- ui/form-reset-mixin.js | 2 +- ui/jquery-patch.js | 2 +- ui/keycode.js | 2 +- ui/labels.js | 2 +- ui/position.js | 2 +- ui/scroll-parent.js | 2 +- ui/tabbable.js | 2 +- ui/unique-id.js | 2 +- ui/version.js | 2 +- ui/widget.js | 2 +- ui/widgets/accordion.js | 4 +- ui/widgets/autocomplete.js | 4 +- ui/widgets/button.js | 4 +- ui/widgets/checkboxradio.js | 4 +- ui/widgets/controlgroup.js | 4 +- ui/widgets/datepicker.js | 6 +- ui/widgets/dialog.js | 4 +- ui/widgets/draggable.js | 4 +- ui/widgets/droppable.js | 4 +- ui/widgets/menu.js | 4 +- ui/widgets/mouse.js | 4 +- ui/widgets/progressbar.js | 4 +- ui/widgets/resizable.js | 4 +- ui/widgets/selectable.js | 4 +- ui/widgets/selectmenu.js | 4 +- ui/widgets/slider.js | 4 +- ui/widgets/sortable.js | 4 +- ui/widgets/spinner.js | 4 +- ui/widgets/tabs.js | 4 +- ui/widgets/tooltip.js | 4 +- 455 files changed, 63340 insertions(+), 97 deletions(-) create mode 100644 dist/jquery-ui.js create mode 100644 dist/jquery-ui.min.js create mode 100644 dist/themes/base/images/ui-icons_444444_256x240.png create mode 100644 dist/themes/base/images/ui-icons_555555_256x240.png create mode 100644 dist/themes/base/images/ui-icons_777620_256x240.png create mode 100644 dist/themes/base/images/ui-icons_777777_256x240.png create mode 100644 dist/themes/base/images/ui-icons_cc0000_256x240.png create mode 100644 dist/themes/base/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/base/jquery-ui.css create mode 100644 dist/themes/base/jquery-ui.min.css create mode 100644 dist/themes/base/theme.css create mode 100644 dist/themes/black-tie/images/ui-bg_diagonals-thick_8_333333_40x40.png create mode 100644 dist/themes/black-tie/images/ui-bg_glass_40_111111_1x400.png create mode 100644 dist/themes/black-tie/images/ui-bg_glass_55_1c1c1c_1x400.png create mode 100644 dist/themes/black-tie/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png create mode 100644 dist/themes/black-tie/images/ui-bg_highlight-hard_40_aaaaaa_1x100.png create mode 100644 dist/themes/black-tie/images/ui-bg_highlight-soft_50_aaaaaa_1x100.png create mode 100644 dist/themes/black-tie/images/ui-bg_inset-hard_45_cd0a0a_1x100.png create mode 100644 dist/themes/black-tie/images/ui-bg_inset-hard_55_ffeb80_1x100.png create mode 100644 dist/themes/black-tie/images/ui-icons_222222_256x240.png create mode 100644 dist/themes/black-tie/images/ui-icons_4ca300_256x240.png create mode 100644 dist/themes/black-tie/images/ui-icons_bbbbbb_256x240.png create mode 100644 dist/themes/black-tie/images/ui-icons_ededed_256x240.png create mode 100644 dist/themes/black-tie/images/ui-icons_ffcf29_256x240.png create mode 100644 dist/themes/black-tie/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/black-tie/jquery-ui.css create mode 100644 dist/themes/black-tie/jquery-ui.min.css create mode 100644 dist/themes/black-tie/theme.css create mode 100644 dist/themes/blitzer/images/ui-bg_diagonals-thick_75_f3d8d8_40x40.png create mode 100644 dist/themes/blitzer/images/ui-bg_dots-small_65_a6a6a6_2x2.png create mode 100644 dist/themes/blitzer/images/ui-bg_glass_55_fbf8ee_1x400.png create mode 100644 dist/themes/blitzer/images/ui-bg_highlight-hard_100_eeeeee_1x100.png create mode 100644 dist/themes/blitzer/images/ui-bg_highlight-hard_100_f6f6f6_1x100.png create mode 100644 dist/themes/blitzer/images/ui-bg_highlight-soft_15_cc0000_1x100.png create mode 100644 dist/themes/blitzer/images/ui-icons_004276_256x240.png create mode 100644 dist/themes/blitzer/images/ui-icons_cc0000_256x240.png create mode 100644 dist/themes/blitzer/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/blitzer/jquery-ui.css create mode 100644 dist/themes/blitzer/jquery-ui.min.css create mode 100644 dist/themes/blitzer/theme.css create mode 100644 dist/themes/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png create mode 100644 dist/themes/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png create mode 100644 dist/themes/cupertino/images/ui-bg_glass_50_3baae3_1x400.png create mode 100644 dist/themes/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png create mode 100644 dist/themes/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png create mode 100644 dist/themes/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png create mode 100644 dist/themes/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png create mode 100644 dist/themes/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png create mode 100644 dist/themes/cupertino/images/ui-icons_2694e8_256x240.png create mode 100644 dist/themes/cupertino/images/ui-icons_2e83ff_256x240.png create mode 100644 dist/themes/cupertino/images/ui-icons_3d80b3_256x240.png create mode 100644 dist/themes/cupertino/images/ui-icons_72a7cf_256x240.png create mode 100644 dist/themes/cupertino/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/cupertino/jquery-ui.css create mode 100644 dist/themes/cupertino/jquery-ui.min.css create mode 100644 dist/themes/cupertino/theme.css create mode 100644 dist/themes/dark-hive/images/ui-bg_glass_40_ffc73d_1x400.png create mode 100644 dist/themes/dark-hive/images/ui-bg_highlight-hard_20_0972a5_1x100.png create mode 100644 dist/themes/dark-hive/images/ui-bg_highlight-soft_33_003147_1x100.png create mode 100644 dist/themes/dark-hive/images/ui-bg_highlight-soft_35_222222_1x100.png create mode 100644 dist/themes/dark-hive/images/ui-bg_highlight-soft_44_444444_1x100.png create mode 100644 dist/themes/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png create mode 100644 dist/themes/dark-hive/images/ui-bg_loop_25_000000_21x21.png create mode 100644 dist/themes/dark-hive/images/ui-icons_222222_256x240.png create mode 100644 dist/themes/dark-hive/images/ui-icons_4b8e0b_256x240.png create mode 100644 dist/themes/dark-hive/images/ui-icons_a83300_256x240.png create mode 100644 dist/themes/dark-hive/images/ui-icons_cccccc_256x240.png create mode 100644 dist/themes/dark-hive/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/dark-hive/jquery-ui.css create mode 100644 dist/themes/dark-hive/jquery-ui.min.css create mode 100644 dist/themes/dark-hive/theme.css create mode 100644 dist/themes/dot-luv/images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png create mode 100644 dist/themes/dot-luv/images/ui-bg_dots-medium_30_0b58a2_4x4.png create mode 100644 dist/themes/dot-luv/images/ui-bg_dots-small_20_333333_2x2.png create mode 100644 dist/themes/dot-luv/images/ui-bg_dots-small_30_a32d00_2x2.png create mode 100644 dist/themes/dot-luv/images/ui-bg_dots-small_40_00498f_2x2.png create mode 100644 dist/themes/dot-luv/images/ui-bg_gloss-wave_20_111111_500x100.png create mode 100644 dist/themes/dot-luv/images/ui-icons_00498f_256x240.png create mode 100644 dist/themes/dot-luv/images/ui-icons_98d2fb_256x240.png create mode 100644 dist/themes/dot-luv/images/ui-icons_9ccdfc_256x240.png create mode 100644 dist/themes/dot-luv/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/dot-luv/jquery-ui.css create mode 100644 dist/themes/dot-luv/jquery-ui.min.css create mode 100644 dist/themes/dot-luv/theme.css create mode 100644 dist/themes/eggplant/images/ui-bg_gloss-wave_30_3d3644_500x100.png create mode 100644 dist/themes/eggplant/images/ui-bg_highlight-soft_100_dcd9de_1x100.png create mode 100644 dist/themes/eggplant/images/ui-bg_highlight-soft_100_eae6ea_1x100.png create mode 100644 dist/themes/eggplant/images/ui-bg_highlight-soft_25_30273a_1x100.png create mode 100644 dist/themes/eggplant/images/ui-bg_highlight-soft_45_5f5964_1x100.png create mode 100644 dist/themes/eggplant/images/ui-icons_454545_256x240.png create mode 100644 dist/themes/eggplant/images/ui-icons_734d99_256x240.png create mode 100644 dist/themes/eggplant/images/ui-icons_8d78a5_256x240.png create mode 100644 dist/themes/eggplant/images/ui-icons_a8a3ae_256x240.png create mode 100644 dist/themes/eggplant/images/ui-icons_ebccce_256x240.png create mode 100644 dist/themes/eggplant/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/eggplant/jquery-ui.css create mode 100644 dist/themes/eggplant/jquery-ui.min.css create mode 100644 dist/themes/eggplant/theme.css create mode 100644 dist/themes/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png create mode 100644 dist/themes/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png create mode 100644 dist/themes/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png create mode 100644 dist/themes/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png create mode 100644 dist/themes/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png create mode 100644 dist/themes/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png create mode 100644 dist/themes/excite-bike/images/ui-icons_0a82eb_256x240.png create mode 100644 dist/themes/excite-bike/images/ui-icons_0b54d5_256x240.png create mode 100644 dist/themes/excite-bike/images/ui-icons_5fa5e3_256x240.png create mode 100644 dist/themes/excite-bike/images/ui-icons_fcdd4a_256x240.png create mode 100644 dist/themes/excite-bike/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/excite-bike/jquery-ui.css create mode 100644 dist/themes/excite-bike/jquery-ui.min.css create mode 100644 dist/themes/excite-bike/theme.css create mode 100644 dist/themes/flick/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 dist/themes/flick/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png create mode 100644 dist/themes/flick/images/ui-bg_highlight-soft_25_0073ea_1x100.png create mode 100644 dist/themes/flick/images/ui-bg_highlight-soft_50_dddddd_1x100.png create mode 100644 dist/themes/flick/images/ui-icons_0073ea_256x240.png create mode 100644 dist/themes/flick/images/ui-icons_454545_256x240.png create mode 100644 dist/themes/flick/images/ui-icons_666666_256x240.png create mode 100644 dist/themes/flick/images/ui-icons_ff0084_256x240.png create mode 100644 dist/themes/flick/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/flick/jquery-ui.css create mode 100644 dist/themes/flick/jquery-ui.min.css create mode 100644 dist/themes/flick/theme.css create mode 100644 dist/themes/hot-sneaks/images/ui-bg_diagonals-small_40_db4865_40x40.png create mode 100644 dist/themes/hot-sneaks/images/ui-bg_diagonals-small_50_93c3cd_40x40.png create mode 100644 dist/themes/hot-sneaks/images/ui-bg_diagonals-small_50_ff3853_40x40.png create mode 100644 dist/themes/hot-sneaks/images/ui-bg_diagonals-small_75_ccd232_40x40.png create mode 100644 dist/themes/hot-sneaks/images/ui-bg_dots-medium_80_ffff38_4x4.png create mode 100644 dist/themes/hot-sneaks/images/ui-bg_dots-small_35_35414f_2x2.png create mode 100644 dist/themes/hot-sneaks/images/ui-bg_white-lines_85_f7f7ba_40x100.png create mode 100644 dist/themes/hot-sneaks/images/ui-icons_454545_256x240.png create mode 100644 dist/themes/hot-sneaks/images/ui-icons_88a206_256x240.png create mode 100644 dist/themes/hot-sneaks/images/ui-icons_c02669_256x240.png create mode 100644 dist/themes/hot-sneaks/images/ui-icons_e1e463_256x240.png create mode 100644 dist/themes/hot-sneaks/images/ui-icons_ffeb33_256x240.png create mode 100644 dist/themes/hot-sneaks/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/hot-sneaks/jquery-ui.css create mode 100644 dist/themes/hot-sneaks/jquery-ui.min.css create mode 100644 dist/themes/hot-sneaks/theme.css create mode 100644 dist/themes/humanity/images/ui-bg_glass_100_f5f0e5_1x400.png create mode 100644 dist/themes/humanity/images/ui-bg_glass_25_cb842e_1x400.png create mode 100644 dist/themes/humanity/images/ui-bg_glass_70_ede4d4_1x400.png create mode 100644 dist/themes/humanity/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png create mode 100644 dist/themes/humanity/images/ui-bg_highlight-hard_65_fee4bd_1x100.png create mode 100644 dist/themes/humanity/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png create mode 100644 dist/themes/humanity/images/ui-bg_inset-soft_100_f4f0ec_1x100.png create mode 100644 dist/themes/humanity/images/ui-icons_c47a23_256x240.png create mode 100644 dist/themes/humanity/images/ui-icons_cb672b_256x240.png create mode 100644 dist/themes/humanity/images/ui-icons_f08000_256x240.png create mode 100644 dist/themes/humanity/images/ui-icons_f35f07_256x240.png create mode 100644 dist/themes/humanity/images/ui-icons_ff7519_256x240.png create mode 100644 dist/themes/humanity/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/humanity/jquery-ui.css create mode 100644 dist/themes/humanity/jquery-ui.min.css create mode 100644 dist/themes/humanity/theme.css create mode 100644 dist/themes/le-frog/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png create mode 100644 dist/themes/le-frog/images/ui-bg_diagonals-thick_15_444444_40x40.png create mode 100644 dist/themes/le-frog/images/ui-bg_diagonals-thick_95_ffdc2e_40x40.png create mode 100644 dist/themes/le-frog/images/ui-bg_glass_55_fbf5d0_1x400.png create mode 100644 dist/themes/le-frog/images/ui-bg_highlight-hard_30_285c00_1x100.png create mode 100644 dist/themes/le-frog/images/ui-bg_highlight-soft_33_3a8104_1x100.png create mode 100644 dist/themes/le-frog/images/ui-bg_highlight-soft_50_4eb305_1x100.png create mode 100644 dist/themes/le-frog/images/ui-bg_highlight-soft_60_4ca20b_1x100.png create mode 100644 dist/themes/le-frog/images/ui-bg_inset-soft_10_285c00_1x100.png create mode 100644 dist/themes/le-frog/images/ui-icons_4eb305_256x240.png create mode 100644 dist/themes/le-frog/images/ui-icons_72b42d_256x240.png create mode 100644 dist/themes/le-frog/images/ui-icons_cd0a0a_256x240.png create mode 100644 dist/themes/le-frog/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/le-frog/jquery-ui.css create mode 100644 dist/themes/le-frog/jquery-ui.min.css create mode 100644 dist/themes/le-frog/theme.css create mode 100644 dist/themes/mint-choc/images/ui-bg_glass_15_5f391b_1x400.png create mode 100644 dist/themes/mint-choc/images/ui-bg_gloss-wave_20_1c160d_500x100.png create mode 100644 dist/themes/mint-choc/images/ui-bg_gloss-wave_25_453326_500x100.png create mode 100644 dist/themes/mint-choc/images/ui-bg_gloss-wave_30_44372c_500x100.png create mode 100644 dist/themes/mint-choc/images/ui-bg_highlight-soft_20_201913_1x100.png create mode 100644 dist/themes/mint-choc/images/ui-bg_highlight-soft_20_619226_1x100.png create mode 100644 dist/themes/mint-choc/images/ui-bg_inset-soft_10_201913_1x100.png create mode 100644 dist/themes/mint-choc/images/ui-icons_222222_256x240.png create mode 100644 dist/themes/mint-choc/images/ui-icons_9bcc60_256x240.png create mode 100644 dist/themes/mint-choc/images/ui-icons_add978_256x240.png create mode 100644 dist/themes/mint-choc/images/ui-icons_e3ddc9_256x240.png create mode 100644 dist/themes/mint-choc/images/ui-icons_f1fd86_256x240.png create mode 100644 dist/themes/mint-choc/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/mint-choc/jquery-ui.css create mode 100644 dist/themes/mint-choc/jquery-ui.min.css create mode 100644 dist/themes/mint-choc/theme.css create mode 100644 dist/themes/overcast/images/ui-bg_glass_100_f8f8f8_1x400.png create mode 100644 dist/themes/overcast/images/ui-bg_glass_35_dddddd_1x400.png create mode 100644 dist/themes/overcast/images/ui-bg_glass_60_eeeeee_1x400.png create mode 100644 dist/themes/overcast/images/ui-bg_inset-hard_75_999999_1x100.png create mode 100644 dist/themes/overcast/images/ui-bg_inset-soft_50_c9c9c9_1x100.png create mode 100644 dist/themes/overcast/images/ui-icons_3383bb_256x240.png create mode 100644 dist/themes/overcast/images/ui-icons_454545_256x240.png create mode 100644 dist/themes/overcast/images/ui-icons_70b2e1_256x240.png create mode 100644 dist/themes/overcast/images/ui-icons_999999_256x240.png create mode 100644 dist/themes/overcast/images/ui-icons_fbc856_256x240.png create mode 100644 dist/themes/overcast/jquery-ui.css create mode 100644 dist/themes/overcast/jquery-ui.min.css create mode 100644 dist/themes/overcast/theme.css create mode 100644 dist/themes/pepper-grinder/images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png create mode 100644 dist/themes/pepper-grinder/images/ui-bg_diagonal-maze_40_000000_10x10.png create mode 100644 dist/themes/pepper-grinder/images/ui-bg_fine-grain_10_eceadf_60x60.png create mode 100644 dist/themes/pepper-grinder/images/ui-bg_fine-grain_10_f8f7f6_60x60.png create mode 100644 dist/themes/pepper-grinder/images/ui-bg_fine-grain_15_eceadf_60x60.png create mode 100644 dist/themes/pepper-grinder/images/ui-bg_fine-grain_15_f7f3de_60x60.png create mode 100644 dist/themes/pepper-grinder/images/ui-bg_fine-grain_15_ffffff_60x60.png create mode 100644 dist/themes/pepper-grinder/images/ui-bg_fine-grain_65_654b24_60x60.png create mode 100644 dist/themes/pepper-grinder/images/ui-bg_fine-grain_68_b83400_60x60.png create mode 100644 dist/themes/pepper-grinder/images/ui-icons_222222_256x240.png create mode 100644 dist/themes/pepper-grinder/images/ui-icons_3572ac_256x240.png create mode 100644 dist/themes/pepper-grinder/images/ui-icons_8c291d_256x240.png create mode 100644 dist/themes/pepper-grinder/images/ui-icons_b83400_256x240.png create mode 100644 dist/themes/pepper-grinder/images/ui-icons_fbdb93_256x240.png create mode 100644 dist/themes/pepper-grinder/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/pepper-grinder/jquery-ui.css create mode 100644 dist/themes/pepper-grinder/jquery-ui.min.css create mode 100644 dist/themes/pepper-grinder/theme.css create mode 100644 dist/themes/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png create mode 100644 dist/themes/redmond/images/ui-bg_glass_85_dfeffc_1x400.png create mode 100644 dist/themes/redmond/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 dist/themes/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png create mode 100644 dist/themes/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png create mode 100644 dist/themes/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png create mode 100644 dist/themes/redmond/images/ui-icons_217bc0_256x240.png create mode 100644 dist/themes/redmond/images/ui-icons_2e83ff_256x240.png create mode 100644 dist/themes/redmond/images/ui-icons_469bdd_256x240.png create mode 100644 dist/themes/redmond/images/ui-icons_6da8d5_256x240.png create mode 100644 dist/themes/redmond/images/ui-icons_cd0a0a_256x240.png create mode 100644 dist/themes/redmond/images/ui-icons_d8e7f3_256x240.png create mode 100644 dist/themes/redmond/images/ui-icons_f9bd01_256x240.png create mode 100644 dist/themes/redmond/jquery-ui.css create mode 100644 dist/themes/redmond/jquery-ui.min.css create mode 100644 dist/themes/redmond/theme.css create mode 100644 dist/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 dist/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 dist/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 dist/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 dist/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 dist/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 dist/themes/smoothness/images/ui-icons_222222_256x240.png create mode 100644 dist/themes/smoothness/images/ui-icons_2e83ff_256x240.png create mode 100644 dist/themes/smoothness/images/ui-icons_454545_256x240.png create mode 100644 dist/themes/smoothness/images/ui-icons_888888_256x240.png create mode 100644 dist/themes/smoothness/images/ui-icons_cd0a0a_256x240.png create mode 100644 dist/themes/smoothness/jquery-ui.css create mode 100644 dist/themes/smoothness/jquery-ui.min.css create mode 100644 dist/themes/smoothness/theme.css create mode 100644 dist/themes/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png create mode 100644 dist/themes/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png create mode 100644 dist/themes/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png create mode 100644 dist/themes/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png create mode 100644 dist/themes/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png create mode 100644 dist/themes/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png create mode 100644 dist/themes/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png create mode 100644 dist/themes/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png create mode 100644 dist/themes/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png create mode 100644 dist/themes/south-street/images/ui-icons_808080_256x240.png create mode 100644 dist/themes/south-street/images/ui-icons_847e71_256x240.png create mode 100644 dist/themes/south-street/images/ui-icons_8DC262_256x240.png create mode 100644 dist/themes/south-street/images/ui-icons_cd0a0a_256x240.png create mode 100644 dist/themes/south-street/images/ui-icons_eeeeee_256x240.png create mode 100644 dist/themes/south-street/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/south-street/jquery-ui.css create mode 100644 dist/themes/south-street/jquery-ui.min.css create mode 100644 dist/themes/south-street/theme.css create mode 100644 dist/themes/start/images/ui-bg_glass_45_0078ae_1x400.png create mode 100644 dist/themes/start/images/ui-bg_glass_55_f8da4e_1x400.png create mode 100644 dist/themes/start/images/ui-bg_glass_75_79c9ec_1x400.png create mode 100644 dist/themes/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png create mode 100644 dist/themes/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png create mode 100644 dist/themes/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png create mode 100644 dist/themes/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png create mode 100644 dist/themes/start/images/ui-icons_0078ae_256x240.png create mode 100644 dist/themes/start/images/ui-icons_056b93_256x240.png create mode 100644 dist/themes/start/images/ui-icons_d8e7f3_256x240.png create mode 100644 dist/themes/start/images/ui-icons_e0fdff_256x240.png create mode 100644 dist/themes/start/images/ui-icons_f5e175_256x240.png create mode 100644 dist/themes/start/images/ui-icons_f7a50d_256x240.png create mode 100644 dist/themes/start/images/ui-icons_fcd113_256x240.png create mode 100644 dist/themes/start/jquery-ui.css create mode 100644 dist/themes/start/jquery-ui.min.css create mode 100644 dist/themes/start/theme.css create mode 100644 dist/themes/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png create mode 100644 dist/themes/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png create mode 100644 dist/themes/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png create mode 100644 dist/themes/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png create mode 100644 dist/themes/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png create mode 100644 dist/themes/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png create mode 100644 dist/themes/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png create mode 100644 dist/themes/sunny/images/ui-icons_3d3d3d_256x240.png create mode 100644 dist/themes/sunny/images/ui-icons_bd7b00_256x240.png create mode 100644 dist/themes/sunny/images/ui-icons_d19405_256x240.png create mode 100644 dist/themes/sunny/images/ui-icons_eb990f_256x240.png create mode 100644 dist/themes/sunny/images/ui-icons_ed9f26_256x240.png create mode 100644 dist/themes/sunny/images/ui-icons_fadc7a_256x240.png create mode 100644 dist/themes/sunny/images/ui-icons_ffe180_256x240.png create mode 100644 dist/themes/sunny/jquery-ui.css create mode 100644 dist/themes/sunny/jquery-ui.min.css create mode 100644 dist/themes/sunny/theme.css create mode 100644 dist/themes/swanky-purse/images/ui-bg_diamond_10_4f4221_10x8.png create mode 100644 dist/themes/swanky-purse/images/ui-bg_diamond_20_372806_10x8.png create mode 100644 dist/themes/swanky-purse/images/ui-bg_diamond_25_675423_10x8.png create mode 100644 dist/themes/swanky-purse/images/ui-bg_diamond_25_d5ac5d_10x8.png create mode 100644 dist/themes/swanky-purse/images/ui-bg_diamond_8_261803_10x8.png create mode 100644 dist/themes/swanky-purse/images/ui-bg_diamond_8_443113_10x8.png create mode 100644 dist/themes/swanky-purse/images/ui-bg_highlight-hard_65_fee4bd_1x100.png create mode 100644 dist/themes/swanky-purse/images/ui-icons_070603_256x240.png create mode 100644 dist/themes/swanky-purse/images/ui-icons_e8e2b5_256x240.png create mode 100644 dist/themes/swanky-purse/images/ui-icons_e9cd86_256x240.png create mode 100644 dist/themes/swanky-purse/images/ui-icons_efec9f_256x240.png create mode 100644 dist/themes/swanky-purse/images/ui-icons_f2ec64_256x240.png create mode 100644 dist/themes/swanky-purse/images/ui-icons_f9f2bd_256x240.png create mode 100644 dist/themes/swanky-purse/images/ui-icons_ff7519_256x240.png create mode 100644 dist/themes/swanky-purse/jquery-ui.css create mode 100644 dist/themes/swanky-purse/jquery-ui.min.css create mode 100644 dist/themes/swanky-purse/theme.css create mode 100644 dist/themes/trontastic/images/ui-bg_diagonals-small_50_262626_40x40.png create mode 100644 dist/themes/trontastic/images/ui-bg_glass_40_0a0a0a_1x400.png create mode 100644 dist/themes/trontastic/images/ui-bg_glass_55_f1fbe5_1x400.png create mode 100644 dist/themes/trontastic/images/ui-bg_glass_60_000000_1x400.png create mode 100644 dist/themes/trontastic/images/ui-bg_gloss-wave_55_000000_500x100.png create mode 100644 dist/themes/trontastic/images/ui-bg_gloss-wave_85_9fda58_500x100.png create mode 100644 dist/themes/trontastic/images/ui-bg_gloss-wave_95_f6ecd5_500x100.png create mode 100644 dist/themes/trontastic/images/ui-icons_000000_256x240.png create mode 100644 dist/themes/trontastic/images/ui-icons_1f1f1f_256x240.png create mode 100644 dist/themes/trontastic/images/ui-icons_9fda58_256x240.png create mode 100644 dist/themes/trontastic/images/ui-icons_b8ec79_256x240.png create mode 100644 dist/themes/trontastic/images/ui-icons_cd0a0a_256x240.png create mode 100644 dist/themes/trontastic/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/trontastic/jquery-ui.css create mode 100644 dist/themes/trontastic/jquery-ui.min.css create mode 100644 dist/themes/trontastic/theme.css create mode 100644 dist/themes/ui-darkness/images/ui-bg_glass_20_555555_1x400.png create mode 100644 dist/themes/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png create mode 100644 dist/themes/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png create mode 100644 dist/themes/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png create mode 100644 dist/themes/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png create mode 100644 dist/themes/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png create mode 100644 dist/themes/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png create mode 100644 dist/themes/ui-darkness/images/ui-icons_222222_256x240.png create mode 100644 dist/themes/ui-darkness/images/ui-icons_4b8e0b_256x240.png create mode 100644 dist/themes/ui-darkness/images/ui-icons_a83300_256x240.png create mode 100644 dist/themes/ui-darkness/images/ui-icons_cccccc_256x240.png create mode 100644 dist/themes/ui-darkness/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/ui-darkness/jquery-ui.css create mode 100644 dist/themes/ui-darkness/jquery-ui.min.css create mode 100644 dist/themes/ui-darkness/theme.css create mode 100644 dist/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100644 dist/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100644 dist/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100644 dist/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100644 dist/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 dist/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100644 dist/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100644 dist/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100644 dist/themes/ui-lightness/images/ui-icons_222222_256x240.png create mode 100644 dist/themes/ui-lightness/images/ui-icons_228ef1_256x240.png create mode 100644 dist/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png create mode 100644 dist/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png create mode 100644 dist/themes/ui-lightness/images/ui-icons_ffffff_256x240.png create mode 100644 dist/themes/ui-lightness/jquery-ui.css create mode 100644 dist/themes/ui-lightness/jquery-ui.min.css create mode 100644 dist/themes/ui-lightness/theme.css create mode 100644 dist/themes/vader/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 dist/themes/vader/images/ui-bg_gloss-wave_16_121212_500x100.png create mode 100644 dist/themes/vader/images/ui-bg_highlight-hard_15_888888_1x100.png create mode 100644 dist/themes/vader/images/ui-bg_highlight-hard_55_555555_1x100.png create mode 100644 dist/themes/vader/images/ui-bg_highlight-soft_35_adadad_1x100.png create mode 100644 dist/themes/vader/images/ui-bg_highlight-soft_60_dddddd_1x100.png create mode 100644 dist/themes/vader/images/ui-bg_inset-soft_15_121212_1x100.png create mode 100644 dist/themes/vader/images/ui-icons_666666_256x240.png create mode 100644 dist/themes/vader/images/ui-icons_777777_256x240.png create mode 100644 dist/themes/vader/images/ui-icons_aaaaaa_256x240.png create mode 100644 dist/themes/vader/images/ui-icons_c98000_256x240.png create mode 100644 dist/themes/vader/images/ui-icons_cccccc_256x240.png create mode 100644 dist/themes/vader/images/ui-icons_cd0a0a_256x240.png create mode 100644 dist/themes/vader/images/ui-icons_f29a00_256x240.png create mode 100644 dist/themes/vader/jquery-ui.css create mode 100644 dist/themes/vader/jquery-ui.min.css create mode 100644 dist/themes/vader/theme.css diff --git a/bower.json b/bower.json index 9366cbfe834..191f9827747 100644 --- a/bower.json +++ b/bower.json @@ -20,7 +20,6 @@ "qunit-assert-close": "JamesMGreene/qunit-assert-close#v1.1.1", "qunit-composite": "JamesMGreene/qunit-composite#v1.1.0", "requirejs": "2.1.14", - "jquery-1.8.0": "jquery#1.8.0", "jquery-1.8.1": "jquery#1.8.1", "jquery-1.8.2": "jquery#1.8.2", @@ -68,5 +67,6 @@ "jquery-3.6.0": "jquery#3.6.0", "jquery-migrate-1.4.1": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-1.4.1.tgz", "jquery-migrate-3.3.2": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-3.3.2.tgz" - } + }, + "version": "1.13.2" } diff --git a/dist/jquery-ui.js b/dist/jquery-ui.js new file mode 100644 index 00000000000..1a613bf2f94 --- /dev/null +++ b/dist/jquery-ui.js @@ -0,0 +1,19062 @@ +/*! jQuery UI - v1.13.2 - 2022-07-14 +* http://jqueryui.com +* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +( function( factory ) { + "use strict"; + + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ "jquery" ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +} )( function( $ ) { +"use strict"; + +$.ui = $.ui || {}; + +var version = $.ui.version = "1.13.2"; + + +/*! + * jQuery UI Widget 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Widget +//>>group: Core +//>>description: Provides a factory for creating stateful widgets with a common API. +//>>docs: http://api.jqueryui.com/jQuery.widget/ +//>>demos: http://jqueryui.com/widget/ + + +var widgetUuid = 0; +var widgetHasOwnProperty = Array.prototype.hasOwnProperty; +var widgetSlice = Array.prototype.slice; + +$.cleanData = ( function( orig ) { + return function( elems ) { + var events, elem, i; + for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { + + // Only trigger remove when necessary to save time + events = $._data( elem, "events" ); + if ( events && events.remove ) { + $( elem ).triggerHandler( "remove" ); + } + } + orig( elems ); + }; +} )( $.cleanData ); + +$.widget = function( name, base, prototype ) { + var existingConstructor, constructor, basePrototype; + + // ProxiedPrototype allows the provided prototype to remain unmodified + // so that it can be used as a mixin for multiple widgets (#8876) + var proxiedPrototype = {}; + + var namespace = name.split( "." )[ 0 ]; + name = name.split( "." )[ 1 ]; + var fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + if ( Array.isArray( prototype ) ) { + prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); + } + + // Create selector for plugin + $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) { + return !!$.data( elem, fullName ); + }; + + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + + // Allow instantiation without "new" keyword + if ( !this || !this._createWidget ) { + return new constructor( options, element ); + } + + // Allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + + // Extend with the existing constructor to carry over any static properties + $.extend( constructor, existingConstructor, { + version: prototype.version, + + // Copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend( {}, prototype ), + + // Track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + } ); + + basePrototype = new base(); + + // We need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from + basePrototype.options = $.widget.extend( {}, basePrototype.options ); + $.each( prototype, function( prop, value ) { + if ( typeof value !== "function" ) { + proxiedPrototype[ prop ] = value; + return; + } + proxiedPrototype[ prop ] = ( function() { + function _super() { + return base.prototype[ prop ].apply( this, arguments ); + } + + function _superApply( args ) { + return base.prototype[ prop ].apply( this, args ); + } + + return function() { + var __super = this._super; + var __superApply = this._superApply; + var returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply( this, arguments ); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + } )(); + } ); + constructor.prototype = $.widget.extend( basePrototype, { + + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name + }, proxiedPrototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + widgetFullName: fullName + } ); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { + var childPrototype = child.prototype; + + // Redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, + child._proto ); + } ); + + // Remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push( constructor ); + } + + $.widget.bridge( name, constructor ); + + return constructor; +}; + +$.widget.extend = function( target ) { + var input = widgetSlice.call( arguments, 1 ); + var inputIndex = 0; + var inputLength = input.length; + var key; + var value; + + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) { + + // Clone objects + if ( $.isPlainObject( value ) ) { + target[ key ] = $.isPlainObject( target[ key ] ) ? + $.widget.extend( {}, target[ key ], value ) : + + // Don't extend strings, arrays, etc. with objects + $.widget.extend( {}, value ); + + // Copy everything else by reference + } else { + target[ key ] = value; + } + } + } + } + return target; +}; + +$.widget.bridge = function( name, object ) { + var fullName = object.prototype.widgetFullName || name; + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string"; + var args = widgetSlice.call( arguments, 1 ); + var returnValue = this; + + if ( isMethodCall ) { + + // If this is an empty collection, we need to have the instance method + // return undefined instead of the jQuery instance + if ( !this.length && options === "instance" ) { + returnValue = undefined; + } else { + this.each( function() { + var methodValue; + var instance = $.data( this, fullName ); + + if ( options === "instance" ) { + returnValue = instance; + return false; + } + + if ( !instance ) { + return $.error( "cannot call methods on " + name + + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + + if ( typeof instance[ options ] !== "function" || + options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + + " widget instance" ); + } + + methodValue = instance[ options ].apply( instance, args ); + + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + } ); + } + } else { + + // Allow multiple hashes to be passed on init + if ( args.length ) { + options = $.widget.extend.apply( null, [ options ].concat( args ) ); + } + + this.each( function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} ); + if ( instance._init ) { + instance._init(); + } + } else { + $.data( this, fullName, new object( options, this ) ); + } + } ); + } + + return returnValue; + }; +}; + +$.Widget = function( /* options, element */ ) {}; +$.Widget._childConstructors = []; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "
    ", + + options: { + classes: {}, + disabled: false, + + // Callbacks + create: null + }, + + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); + this.uuid = widgetUuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + + this.bindings = $(); + this.hoverable = $(); + this.focusable = $(); + this.classesElementLookup = {}; + + if ( element !== this ) { + $.data( element, this.widgetFullName, this ); + this._on( true, this.element, { + remove: function( event ) { + if ( event.target === element ) { + this.destroy(); + } + } + } ); + this.document = $( element.style ? + + // Element within the document + element.ownerDocument : + + // Element is window or document + element.document || element ); + this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); + } + + this.options = $.widget.extend( {}, + this.options, + this._getCreateOptions(), + options ); + + this._create(); + + if ( this.options.disabled ) { + this._setOptionDisabled( this.options.disabled ); + } + + this._trigger( "create", null, this._getCreateEventData() ); + this._init(); + }, + + _getCreateOptions: function() { + return {}; + }, + + _getCreateEventData: $.noop, + + _create: $.noop, + + _init: $.noop, + + destroy: function() { + var that = this; + + this._destroy(); + $.each( this.classesElementLookup, function( key, value ) { + that._removeClass( value, key ); + } ); + + // We can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .off( this.eventNamespace ) + .removeData( this.widgetFullName ); + this.widget() + .off( this.eventNamespace ) + .removeAttr( "aria-disabled" ); + + // Clean up events and states + this.bindings.off( this.eventNamespace ); + }, + + _destroy: $.noop, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key; + var parts; + var curOption; + var i; + + if ( arguments.length === 0 ) { + + // Don't return a reference to the internal hash + return $.widget.extend( {}, this.options ); + } + + if ( typeof key === "string" ) { + + // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split( "." ); + key = parts.shift(); + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; + } + key = parts.pop(); + if ( arguments.length === 1 ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; + } + curOption[ key ] = value; + } else { + if ( arguments.length === 1 ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; + } + options[ key ] = value; + } + } + + this._setOptions( options ); + + return this; + }, + + _setOptions: function( options ) { + var key; + + for ( key in options ) { + this._setOption( key, options[ key ] ); + } + + return this; + }, + + _setOption: function( key, value ) { + if ( key === "classes" ) { + this._setOptionClasses( value ); + } + + this.options[ key ] = value; + + if ( key === "disabled" ) { + this._setOptionDisabled( value ); + } + + return this; + }, + + _setOptionClasses: function( value ) { + var classKey, elements, currentElements; + + for ( classKey in value ) { + currentElements = this.classesElementLookup[ classKey ]; + if ( value[ classKey ] === this.options.classes[ classKey ] || + !currentElements || + !currentElements.length ) { + continue; + } + + // We are doing this to create a new jQuery object because the _removeClass() call + // on the next line is going to destroy the reference to the current elements being + // tracked. We need to save a copy of this collection so that we can add the new classes + // below. + elements = $( currentElements.get() ); + this._removeClass( currentElements, classKey ); + + // We don't use _addClass() here, because that uses this.options.classes + // for generating the string of classes. We want to use the value passed in from + // _setOption(), this is the new value of the classes option which was passed to + // _setOption(). We pass this value directly to _classes(). + elements.addClass( this._classes( { + element: elements, + keys: classKey, + classes: value, + add: true + } ) ); + } + }, + + _setOptionDisabled: function( value ) { + this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); + + // If the widget is becoming disabled, then nothing is interactive + if ( value ) { + this._removeClass( this.hoverable, null, "ui-state-hover" ); + this._removeClass( this.focusable, null, "ui-state-focus" ); + } + }, + + enable: function() { + return this._setOptions( { disabled: false } ); + }, + + disable: function() { + return this._setOptions( { disabled: true } ); + }, + + _classes: function( options ) { + var full = []; + var that = this; + + options = $.extend( { + element: this.element, + classes: this.options.classes || {} + }, options ); + + function bindRemoveEvent() { + var nodesToBind = []; + + options.element.each( function( _, element ) { + var isTracked = $.map( that.classesElementLookup, function( elements ) { + return elements; + } ) + .some( function( elements ) { + return elements.is( element ); + } ); + + if ( !isTracked ) { + nodesToBind.push( element ); + } + } ); + + that._on( $( nodesToBind ), { + remove: "_untrackClassesElement" + } ); + } + + function processClassString( classes, checkOption ) { + var current, i; + for ( i = 0; i < classes.length; i++ ) { + current = that.classesElementLookup[ classes[ i ] ] || $(); + if ( options.add ) { + bindRemoveEvent(); + current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) ); + } else { + current = $( current.not( options.element ).get() ); + } + that.classesElementLookup[ classes[ i ] ] = current; + full.push( classes[ i ] ); + if ( checkOption && options.classes[ classes[ i ] ] ) { + full.push( options.classes[ classes[ i ] ] ); + } + } + } + + if ( options.keys ) { + processClassString( options.keys.match( /\S+/g ) || [], true ); + } + if ( options.extra ) { + processClassString( options.extra.match( /\S+/g ) || [] ); + } + + return full.join( " " ); + }, + + _untrackClassesElement: function( event ) { + var that = this; + $.each( that.classesElementLookup, function( key, value ) { + if ( $.inArray( event.target, value ) !== -1 ) { + that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); + } + } ); + + this._off( $( event.target ) ); + }, + + _removeClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, false ); + }, + + _addClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, true ); + }, + + _toggleClass: function( element, keys, extra, add ) { + add = ( typeof add === "boolean" ) ? add : extra; + var shift = ( typeof element === "string" || element === null ), + options = { + extra: shift ? keys : extra, + keys: shift ? element : keys, + element: shift ? this.element : element, + add: add + }; + options.element.toggleClass( this._classes( options ), add ); + return this; + }, + + _on: function( suppressDisabledCheck, element, handlers ) { + var delegateElement; + var instance = this; + + // No suppressDisabledCheck flag, shuffle arguments + if ( typeof suppressDisabledCheck !== "boolean" ) { + handlers = element; + element = suppressDisabledCheck; + suppressDisabledCheck = false; + } + + // No element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { + element = delegateElement = $( element ); + this.bindings = this.bindings.add( element ); + } + + $.each( handlers, function( event, handler ) { + function handlerProxy() { + + // Allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if ( !suppressDisabledCheck && + ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) ) { + return; + } + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + + // Copy the guid so direct unbinding works + if ( typeof handler !== "string" ) { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match( /^([\w:-]*)\s*(.*)$/ ); + var eventName = match[ 1 ] + instance.eventNamespace; + var selector = match[ 2 ]; + + if ( selector ) { + delegateElement.on( eventName, selector, handlerProxy ); + } else { + element.on( eventName, handlerProxy ); + } + } ); + }, + + _off: function( element, eventName ) { + eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + + this.eventNamespace; + element.off( eventName ); + + // Clear the stack to avoid memory leaks (#10056) + this.bindings = $( this.bindings.not( element ).get() ); + this.focusable = $( this.focusable.not( element ).get() ); + this.hoverable = $( this.hoverable.not( element ).get() ); + }, + + _delay: function( handler, delay ) { + function handlerProxy() { + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); + }, + + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); + }, + mouseleave: function( event ) { + this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); + } + } ); + }, + + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); + }, + focusout: function( event ) { + this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); + } + } ); + }, + + _trigger: function( type, event, data ) { + var prop, orig; + var callback = this.options[ type ]; + + data = data || {}; + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + + // The original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; + + // Copy original event properties over to the new event + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } + } + } + + this.element.trigger( event, data ); + return !( typeof callback === "function" && + callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); + } +}; + +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { + options = { effect: options }; + } + + var hasOptions; + var effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + + options = options || {}; + if ( typeof options === "number" ) { + options = { duration: options }; + } else if ( options === true ) { + options = {}; + } + + hasOptions = !$.isEmptyObject( options ); + options.complete = callback; + + if ( options.delay ) { + element.delay( options.delay ); + } + + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element.queue( function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + next(); + } ); + } + }; +} ); + +var widget = $.widget; + + +/*! + * jQuery UI Position 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/position/ + */ + +//>>label: Position +//>>group: Core +//>>description: Positions elements relative to other elements. +//>>docs: http://api.jqueryui.com/position/ +//>>demos: http://jqueryui.com/position/ + + +( function() { +var cachedScrollbarWidth, + max = Math.max, + abs = Math.abs, + rhorizontal = /left|center|right/, + rvertical = /top|center|bottom/, + roffset = /[\+\-]\d+(\.[\d]+)?%?/, + rposition = /^\w+/, + rpercent = /%$/, + _position = $.fn.position; + +function getOffsets( offsets, width, height ) { + return [ + parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), + parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) + ]; +} + +function parseCss( element, property ) { + return parseInt( $.css( element, property ), 10 ) || 0; +} + +function isWindow( obj ) { + return obj != null && obj === obj.window; +} + +function getDimensions( elem ) { + var raw = elem[ 0 ]; + if ( raw.nodeType === 9 ) { + return { + width: elem.width(), + height: elem.height(), + offset: { top: 0, left: 0 } + }; + } + if ( isWindow( raw ) ) { + return { + width: elem.width(), + height: elem.height(), + offset: { top: elem.scrollTop(), left: elem.scrollLeft() } + }; + } + if ( raw.preventDefault ) { + return { + width: 0, + height: 0, + offset: { top: raw.pageY, left: raw.pageX } + }; + } + return { + width: elem.outerWidth(), + height: elem.outerHeight(), + offset: elem.offset() + }; +} + +$.position = { + scrollbarWidth: function() { + if ( cachedScrollbarWidth !== undefined ) { + return cachedScrollbarWidth; + } + var w1, w2, + div = $( "
    " + + "
    " ), + innerDiv = div.children()[ 0 ]; + + $( "body" ).append( div ); + w1 = innerDiv.offsetWidth; + div.css( "overflow", "scroll" ); + + w2 = innerDiv.offsetWidth; + + if ( w1 === w2 ) { + w2 = div[ 0 ].clientWidth; + } + + div.remove(); + + return ( cachedScrollbarWidth = w1 - w2 ); + }, + getScrollInfo: function( within ) { + var overflowX = within.isWindow || within.isDocument ? "" : + within.element.css( "overflow-x" ), + overflowY = within.isWindow || within.isDocument ? "" : + within.element.css( "overflow-y" ), + hasOverflowX = overflowX === "scroll" || + ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), + hasOverflowY = overflowY === "scroll" || + ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); + return { + width: hasOverflowY ? $.position.scrollbarWidth() : 0, + height: hasOverflowX ? $.position.scrollbarWidth() : 0 + }; + }, + getWithinInfo: function( element ) { + var withinElement = $( element || window ), + isElemWindow = isWindow( withinElement[ 0 ] ), + isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, + hasOffset = !isElemWindow && !isDocument; + return { + element: withinElement, + isWindow: isElemWindow, + isDocument: isDocument, + offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, + scrollLeft: withinElement.scrollLeft(), + scrollTop: withinElement.scrollTop(), + width: withinElement.outerWidth(), + height: withinElement.outerHeight() + }; + } +}; + +$.fn.position = function( options ) { + if ( !options || !options.of ) { + return _position.apply( this, arguments ); + } + + // Make a copy, we don't want to modify arguments + options = $.extend( {}, options ); + + var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, + + // Make sure string options are treated as CSS selectors + target = typeof options.of === "string" ? + $( document ).find( options.of ) : + $( options.of ), + + within = $.position.getWithinInfo( options.within ), + scrollInfo = $.position.getScrollInfo( within ), + collision = ( options.collision || "flip" ).split( " " ), + offsets = {}; + + dimensions = getDimensions( target ); + if ( target[ 0 ].preventDefault ) { + + // Force left top to allow flipping + options.at = "left top"; + } + targetWidth = dimensions.width; + targetHeight = dimensions.height; + targetOffset = dimensions.offset; + + // Clone to reuse original targetOffset later + basePosition = $.extend( {}, targetOffset ); + + // Force my and at to have valid horizontal and vertical positions + // if a value is missing or invalid, it will be converted to center + $.each( [ "my", "at" ], function() { + var pos = ( options[ this ] || "" ).split( " " ), + horizontalOffset, + verticalOffset; + + if ( pos.length === 1 ) { + pos = rhorizontal.test( pos[ 0 ] ) ? + pos.concat( [ "center" ] ) : + rvertical.test( pos[ 0 ] ) ? + [ "center" ].concat( pos ) : + [ "center", "center" ]; + } + pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; + pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; + + // Calculate offsets + horizontalOffset = roffset.exec( pos[ 0 ] ); + verticalOffset = roffset.exec( pos[ 1 ] ); + offsets[ this ] = [ + horizontalOffset ? horizontalOffset[ 0 ] : 0, + verticalOffset ? verticalOffset[ 0 ] : 0 + ]; + + // Reduce to just the positions without the offsets + options[ this ] = [ + rposition.exec( pos[ 0 ] )[ 0 ], + rposition.exec( pos[ 1 ] )[ 0 ] + ]; + } ); + + // Normalize collision option + if ( collision.length === 1 ) { + collision[ 1 ] = collision[ 0 ]; + } + + if ( options.at[ 0 ] === "right" ) { + basePosition.left += targetWidth; + } else if ( options.at[ 0 ] === "center" ) { + basePosition.left += targetWidth / 2; + } + + if ( options.at[ 1 ] === "bottom" ) { + basePosition.top += targetHeight; + } else if ( options.at[ 1 ] === "center" ) { + basePosition.top += targetHeight / 2; + } + + atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); + basePosition.left += atOffset[ 0 ]; + basePosition.top += atOffset[ 1 ]; + + return this.each( function() { + var collisionPosition, using, + elem = $( this ), + elemWidth = elem.outerWidth(), + elemHeight = elem.outerHeight(), + marginLeft = parseCss( this, "marginLeft" ), + marginTop = parseCss( this, "marginTop" ), + collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + + scrollInfo.width, + collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + + scrollInfo.height, + position = $.extend( {}, basePosition ), + myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); + + if ( options.my[ 0 ] === "right" ) { + position.left -= elemWidth; + } else if ( options.my[ 0 ] === "center" ) { + position.left -= elemWidth / 2; + } + + if ( options.my[ 1 ] === "bottom" ) { + position.top -= elemHeight; + } else if ( options.my[ 1 ] === "center" ) { + position.top -= elemHeight / 2; + } + + position.left += myOffset[ 0 ]; + position.top += myOffset[ 1 ]; + + collisionPosition = { + marginLeft: marginLeft, + marginTop: marginTop + }; + + $.each( [ "left", "top" ], function( i, dir ) { + if ( $.ui.position[ collision[ i ] ] ) { + $.ui.position[ collision[ i ] ][ dir ]( position, { + targetWidth: targetWidth, + targetHeight: targetHeight, + elemWidth: elemWidth, + elemHeight: elemHeight, + collisionPosition: collisionPosition, + collisionWidth: collisionWidth, + collisionHeight: collisionHeight, + offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], + my: options.my, + at: options.at, + within: within, + elem: elem + } ); + } + } ); + + if ( options.using ) { + + // Adds feedback as second argument to using callback, if present + using = function( props ) { + var left = targetOffset.left - position.left, + right = left + targetWidth - elemWidth, + top = targetOffset.top - position.top, + bottom = top + targetHeight - elemHeight, + feedback = { + target: { + element: target, + left: targetOffset.left, + top: targetOffset.top, + width: targetWidth, + height: targetHeight + }, + element: { + element: elem, + left: position.left, + top: position.top, + width: elemWidth, + height: elemHeight + }, + horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", + vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" + }; + if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { + feedback.horizontal = "center"; + } + if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { + feedback.vertical = "middle"; + } + if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { + feedback.important = "horizontal"; + } else { + feedback.important = "vertical"; + } + options.using.call( this, props, feedback ); + }; + } + + elem.offset( $.extend( position, { using: using } ) ); + } ); +}; + +$.ui.position = { + fit: { + left: function( position, data ) { + var within = data.within, + withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, + outerWidth = within.width, + collisionPosLeft = position.left - data.collisionPosition.marginLeft, + overLeft = withinOffset - collisionPosLeft, + overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, + newOverRight; + + // Element is wider than within + if ( data.collisionWidth > outerWidth ) { + + // Element is initially over the left side of within + if ( overLeft > 0 && overRight <= 0 ) { + newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - + withinOffset; + position.left += overLeft - newOverRight; + + // Element is initially over right side of within + } else if ( overRight > 0 && overLeft <= 0 ) { + position.left = withinOffset; + + // Element is initially over both left and right sides of within + } else { + if ( overLeft > overRight ) { + position.left = withinOffset + outerWidth - data.collisionWidth; + } else { + position.left = withinOffset; + } + } + + // Too far left -> align with left edge + } else if ( overLeft > 0 ) { + position.left += overLeft; + + // Too far right -> align with right edge + } else if ( overRight > 0 ) { + position.left -= overRight; + + // Adjust based on position and margin + } else { + position.left = max( position.left - collisionPosLeft, position.left ); + } + }, + top: function( position, data ) { + var within = data.within, + withinOffset = within.isWindow ? within.scrollTop : within.offset.top, + outerHeight = data.within.height, + collisionPosTop = position.top - data.collisionPosition.marginTop, + overTop = withinOffset - collisionPosTop, + overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, + newOverBottom; + + // Element is taller than within + if ( data.collisionHeight > outerHeight ) { + + // Element is initially over the top of within + if ( overTop > 0 && overBottom <= 0 ) { + newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - + withinOffset; + position.top += overTop - newOverBottom; + + // Element is initially over bottom of within + } else if ( overBottom > 0 && overTop <= 0 ) { + position.top = withinOffset; + + // Element is initially over both top and bottom of within + } else { + if ( overTop > overBottom ) { + position.top = withinOffset + outerHeight - data.collisionHeight; + } else { + position.top = withinOffset; + } + } + + // Too far up -> align with top + } else if ( overTop > 0 ) { + position.top += overTop; + + // Too far down -> align with bottom edge + } else if ( overBottom > 0 ) { + position.top -= overBottom; + + // Adjust based on position and margin + } else { + position.top = max( position.top - collisionPosTop, position.top ); + } + } + }, + flip: { + left: function( position, data ) { + var within = data.within, + withinOffset = within.offset.left + within.scrollLeft, + outerWidth = within.width, + offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, + collisionPosLeft = position.left - data.collisionPosition.marginLeft, + overLeft = collisionPosLeft - offsetLeft, + overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, + myOffset = data.my[ 0 ] === "left" ? + -data.elemWidth : + data.my[ 0 ] === "right" ? + data.elemWidth : + 0, + atOffset = data.at[ 0 ] === "left" ? + data.targetWidth : + data.at[ 0 ] === "right" ? + -data.targetWidth : + 0, + offset = -2 * data.offset[ 0 ], + newOverRight, + newOverLeft; + + if ( overLeft < 0 ) { + newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - + outerWidth - withinOffset; + if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { + position.left += myOffset + atOffset + offset; + } + } else if ( overRight > 0 ) { + newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + + atOffset + offset - offsetLeft; + if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { + position.left += myOffset + atOffset + offset; + } + } + }, + top: function( position, data ) { + var within = data.within, + withinOffset = within.offset.top + within.scrollTop, + outerHeight = within.height, + offsetTop = within.isWindow ? within.scrollTop : within.offset.top, + collisionPosTop = position.top - data.collisionPosition.marginTop, + overTop = collisionPosTop - offsetTop, + overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, + top = data.my[ 1 ] === "top", + myOffset = top ? + -data.elemHeight : + data.my[ 1 ] === "bottom" ? + data.elemHeight : + 0, + atOffset = data.at[ 1 ] === "top" ? + data.targetHeight : + data.at[ 1 ] === "bottom" ? + -data.targetHeight : + 0, + offset = -2 * data.offset[ 1 ], + newOverTop, + newOverBottom; + if ( overTop < 0 ) { + newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - + outerHeight - withinOffset; + if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { + position.top += myOffset + atOffset + offset; + } + } else if ( overBottom > 0 ) { + newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + + offset - offsetTop; + if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { + position.top += myOffset + atOffset + offset; + } + } + } + }, + flipfit: { + left: function() { + $.ui.position.flip.left.apply( this, arguments ); + $.ui.position.fit.left.apply( this, arguments ); + }, + top: function() { + $.ui.position.flip.top.apply( this, arguments ); + $.ui.position.fit.top.apply( this, arguments ); + } + } +}; + +} )(); + +var position = $.ui.position; + + +/*! + * jQuery UI :data 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: :data Selector +//>>group: Core +//>>description: Selects elements which have data stored under the specified key. +//>>docs: http://api.jqueryui.com/data-selector/ + + +var data = $.extend( $.expr.pseudos, { + data: $.expr.createPseudo ? + $.expr.createPseudo( function( dataName ) { + return function( elem ) { + return !!$.data( elem, dataName ); + }; + } ) : + + // Support: jQuery <1.8 + function( elem, i, match ) { + return !!$.data( elem, match[ 3 ] ); + } +} ); + +/*! + * jQuery UI Disable Selection 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: disableSelection +//>>group: Core +//>>description: Disable selection of text content within the set of matched elements. +//>>docs: http://api.jqueryui.com/disableSelection/ + +// This file is deprecated + +var disableSelection = $.fn.extend( { + disableSelection: ( function() { + var eventType = "onselectstart" in document.createElement( "div" ) ? + "selectstart" : + "mousedown"; + + return function() { + return this.on( eventType + ".ui-disableSelection", function( event ) { + event.preventDefault(); + } ); + }; + } )(), + + enableSelection: function() { + return this.off( ".ui-disableSelection" ); + } +} ); + + + +// Create a local jQuery because jQuery Color relies on it and the +// global may not exist with AMD and a custom build (#10199). +// This module is a noop if used as a regular AMD module. +// eslint-disable-next-line no-unused-vars +var jQuery = $; + + +/*! + * jQuery Color Animations v2.2.0 + * https://github.com/jquery/jquery-color + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * Date: Sun May 10 09:02:36 2020 +0200 + */ + + + + var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " + + "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", + + class2type = {}, + toString = class2type.toString, + + // plusequals test for += 100 -= 100 + rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, + + // a set of RE's that can match strings and generate color tuples. + stringParsers = [ { + re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ], + execResult[ 3 ], + execResult[ 4 ] + ]; + } + }, { + re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ] * 2.55, + execResult[ 2 ] * 2.55, + execResult[ 3 ] * 2.55, + execResult[ 4 ] + ]; + } + }, { + + // this regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ], 16 ), + execResult[ 4 ] ? + ( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) : + 1 + ]; + } + }, { + + // this regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ), + execResult[ 4 ] ? + ( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 ) + .toFixed( 2 ) : + 1 + ]; + } + }, { + re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + space: "hsla", + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ] / 100, + execResult[ 3 ] / 100, + execResult[ 4 ] + ]; + } + } ], + + // jQuery.Color( ) + color = jQuery.Color = function( color, green, blue, alpha ) { + return new jQuery.Color.fn.parse( color, green, blue, alpha ); + }, + spaces = { + rgba: { + props: { + red: { + idx: 0, + type: "byte" + }, + green: { + idx: 1, + type: "byte" + }, + blue: { + idx: 2, + type: "byte" + } + } + }, + + hsla: { + props: { + hue: { + idx: 0, + type: "degrees" + }, + saturation: { + idx: 1, + type: "percent" + }, + lightness: { + idx: 2, + type: "percent" + } + } + } + }, + propTypes = { + "byte": { + floor: true, + max: 255 + }, + "percent": { + max: 1 + }, + "degrees": { + mod: 360, + floor: true + } + }, + support = color.support = {}, + + // element for support tests + supportElem = jQuery( "

    " )[ 0 ], + + // colors = jQuery.Color.names + colors, + + // local aliases of functions called often + each = jQuery.each; + +// determine rgba support immediately +supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; +support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; + +// define cache name and alpha properties +// for rgba and hsla spaces +each( spaces, function( spaceName, space ) { + space.cache = "_" + spaceName; + space.props.alpha = { + idx: 3, + type: "percent", + def: 1 + }; +} ); + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function getType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + return typeof obj === "object" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} + +function clamp( value, prop, allowEmpty ) { + var type = propTypes[ prop.type ] || {}; + + if ( value == null ) { + return ( allowEmpty || !prop.def ) ? null : prop.def; + } + + // ~~ is an short way of doing floor for positive numbers + value = type.floor ? ~~value : parseFloat( value ); + + // IE will pass in empty strings as value for alpha, + // which will hit this case + if ( isNaN( value ) ) { + return prop.def; + } + + if ( type.mod ) { + + // we add mod before modding to make sure that negatives values + // get converted properly: -10 -> 350 + return ( value + type.mod ) % type.mod; + } + + // for now all property types without mod have min and max + return Math.min( type.max, Math.max( 0, value ) ); +} + +function stringParse( string ) { + var inst = color(), + rgba = inst._rgba = []; + + string = string.toLowerCase(); + + each( stringParsers, function( _i, parser ) { + var parsed, + match = parser.re.exec( string ), + values = match && parser.parse( match ), + spaceName = parser.space || "rgba"; + + if ( values ) { + parsed = inst[ spaceName ]( values ); + + // if this was an rgba parse the assignment might happen twice + // oh well.... + inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; + rgba = inst._rgba = parsed._rgba; + + // exit each( stringParsers ) here because we matched + return false; + } + } ); + + // Found a stringParser that handled it + if ( rgba.length ) { + + // if this came from a parsed string, force "transparent" when alpha is 0 + // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) + if ( rgba.join() === "0,0,0,0" ) { + jQuery.extend( rgba, colors.transparent ); + } + return inst; + } + + // named colors + return colors[ string ]; +} + +color.fn = jQuery.extend( color.prototype, { + parse: function( red, green, blue, alpha ) { + if ( red === undefined ) { + this._rgba = [ null, null, null, null ]; + return this; + } + if ( red.jquery || red.nodeType ) { + red = jQuery( red ).css( green ); + green = undefined; + } + + var inst = this, + type = getType( red ), + rgba = this._rgba = []; + + // more than 1 argument specified - assume ( red, green, blue, alpha ) + if ( green !== undefined ) { + red = [ red, green, blue, alpha ]; + type = "array"; + } + + if ( type === "string" ) { + return this.parse( stringParse( red ) || colors._default ); + } + + if ( type === "array" ) { + each( spaces.rgba.props, function( _key, prop ) { + rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); + } ); + return this; + } + + if ( type === "object" ) { + if ( red instanceof color ) { + each( spaces, function( _spaceName, space ) { + if ( red[ space.cache ] ) { + inst[ space.cache ] = red[ space.cache ].slice(); + } + } ); + } else { + each( spaces, function( _spaceName, space ) { + var cache = space.cache; + each( space.props, function( key, prop ) { + + // if the cache doesn't exist, and we know how to convert + if ( !inst[ cache ] && space.to ) { + + // if the value was null, we don't need to copy it + // if the key was alpha, we don't need to copy it either + if ( key === "alpha" || red[ key ] == null ) { + return; + } + inst[ cache ] = space.to( inst._rgba ); + } + + // this is the only case where we allow nulls for ALL properties. + // call clamp with alwaysAllowEmpty + inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); + } ); + + // everything defined but alpha? + if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { + + // use the default of 1 + if ( inst[ cache ][ 3 ] == null ) { + inst[ cache ][ 3 ] = 1; + } + + if ( space.from ) { + inst._rgba = space.from( inst[ cache ] ); + } + } + } ); + } + return this; + } + }, + is: function( compare ) { + var is = color( compare ), + same = true, + inst = this; + + each( spaces, function( _, space ) { + var localCache, + isCache = is[ space.cache ]; + if ( isCache ) { + localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; + each( space.props, function( _, prop ) { + if ( isCache[ prop.idx ] != null ) { + same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); + return same; + } + } ); + } + return same; + } ); + return same; + }, + _space: function() { + var used = [], + inst = this; + each( spaces, function( spaceName, space ) { + if ( inst[ space.cache ] ) { + used.push( spaceName ); + } + } ); + return used.pop(); + }, + transition: function( other, distance ) { + var end = color( other ), + spaceName = end._space(), + space = spaces[ spaceName ], + startColor = this.alpha() === 0 ? color( "transparent" ) : this, + start = startColor[ space.cache ] || space.to( startColor._rgba ), + result = start.slice(); + + end = end[ space.cache ]; + each( space.props, function( _key, prop ) { + var index = prop.idx, + startValue = start[ index ], + endValue = end[ index ], + type = propTypes[ prop.type ] || {}; + + // if null, don't override start value + if ( endValue === null ) { + return; + } + + // if null - use end + if ( startValue === null ) { + result[ index ] = endValue; + } else { + if ( type.mod ) { + if ( endValue - startValue > type.mod / 2 ) { + startValue += type.mod; + } else if ( startValue - endValue > type.mod / 2 ) { + startValue -= type.mod; + } + } + result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); + } + } ); + return this[ spaceName ]( result ); + }, + blend: function( opaque ) { + + // if we are already opaque - return ourself + if ( this._rgba[ 3 ] === 1 ) { + return this; + } + + var rgb = this._rgba.slice(), + a = rgb.pop(), + blend = color( opaque )._rgba; + + return color( jQuery.map( rgb, function( v, i ) { + return ( 1 - a ) * blend[ i ] + a * v; + } ) ); + }, + toRgbaString: function() { + var prefix = "rgba(", + rgba = jQuery.map( this._rgba, function( v, i ) { + if ( v != null ) { + return v; + } + return i > 2 ? 1 : 0; + } ); + + if ( rgba[ 3 ] === 1 ) { + rgba.pop(); + prefix = "rgb("; + } + + return prefix + rgba.join() + ")"; + }, + toHslaString: function() { + var prefix = "hsla(", + hsla = jQuery.map( this.hsla(), function( v, i ) { + if ( v == null ) { + v = i > 2 ? 1 : 0; + } + + // catch 1 and 2 + if ( i && i < 3 ) { + v = Math.round( v * 100 ) + "%"; + } + return v; + } ); + + if ( hsla[ 3 ] === 1 ) { + hsla.pop(); + prefix = "hsl("; + } + return prefix + hsla.join() + ")"; + }, + toHexString: function( includeAlpha ) { + var rgba = this._rgba.slice(), + alpha = rgba.pop(); + + if ( includeAlpha ) { + rgba.push( ~~( alpha * 255 ) ); + } + + return "#" + jQuery.map( rgba, function( v ) { + + // default to 0 when nulls exist + v = ( v || 0 ).toString( 16 ); + return v.length === 1 ? "0" + v : v; + } ).join( "" ); + }, + toString: function() { + return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); + } +} ); +color.fn.parse.prototype = color.fn; + +// hsla conversions adapted from: +// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 + +function hue2rgb( p, q, h ) { + h = ( h + 1 ) % 1; + if ( h * 6 < 1 ) { + return p + ( q - p ) * h * 6; + } + if ( h * 2 < 1 ) { + return q; + } + if ( h * 3 < 2 ) { + return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6; + } + return p; +} + +spaces.hsla.to = function( rgba ) { + if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { + return [ null, null, null, rgba[ 3 ] ]; + } + var r = rgba[ 0 ] / 255, + g = rgba[ 1 ] / 255, + b = rgba[ 2 ] / 255, + a = rgba[ 3 ], + max = Math.max( r, g, b ), + min = Math.min( r, g, b ), + diff = max - min, + add = max + min, + l = add * 0.5, + h, s; + + if ( min === max ) { + h = 0; + } else if ( r === max ) { + h = ( 60 * ( g - b ) / diff ) + 360; + } else if ( g === max ) { + h = ( 60 * ( b - r ) / diff ) + 120; + } else { + h = ( 60 * ( r - g ) / diff ) + 240; + } + + // chroma (diff) == 0 means greyscale which, by definition, saturation = 0% + // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) + if ( diff === 0 ) { + s = 0; + } else if ( l <= 0.5 ) { + s = diff / add; + } else { + s = diff / ( 2 - add ); + } + return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ]; +}; + +spaces.hsla.from = function( hsla ) { + if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { + return [ null, null, null, hsla[ 3 ] ]; + } + var h = hsla[ 0 ] / 360, + s = hsla[ 1 ], + l = hsla[ 2 ], + a = hsla[ 3 ], + q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, + p = 2 * l - q; + + return [ + Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), + Math.round( hue2rgb( p, q, h ) * 255 ), + Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), + a + ]; +}; + + +each( spaces, function( spaceName, space ) { + var props = space.props, + cache = space.cache, + to = space.to, + from = space.from; + + // makes rgba() and hsla() + color.fn[ spaceName ] = function( value ) { + + // generate a cache for this space if it doesn't exist + if ( to && !this[ cache ] ) { + this[ cache ] = to( this._rgba ); + } + if ( value === undefined ) { + return this[ cache ].slice(); + } + + var ret, + type = getType( value ), + arr = ( type === "array" || type === "object" ) ? value : arguments, + local = this[ cache ].slice(); + + each( props, function( key, prop ) { + var val = arr[ type === "object" ? key : prop.idx ]; + if ( val == null ) { + val = local[ prop.idx ]; + } + local[ prop.idx ] = clamp( val, prop ); + } ); + + if ( from ) { + ret = color( from( local ) ); + ret[ cache ] = local; + return ret; + } else { + return color( local ); + } + }; + + // makes red() green() blue() alpha() hue() saturation() lightness() + each( props, function( key, prop ) { + + // alpha is included in more than one space + if ( color.fn[ key ] ) { + return; + } + color.fn[ key ] = function( value ) { + var local, cur, match, fn, + vtype = getType( value ); + + if ( key === "alpha" ) { + fn = this._hsla ? "hsla" : "rgba"; + } else { + fn = spaceName; + } + local = this[ fn ](); + cur = local[ prop.idx ]; + + if ( vtype === "undefined" ) { + return cur; + } + + if ( vtype === "function" ) { + value = value.call( this, cur ); + vtype = getType( value ); + } + if ( value == null && prop.empty ) { + return this; + } + if ( vtype === "string" ) { + match = rplusequals.exec( value ); + if ( match ) { + value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); + } + } + local[ prop.idx ] = value; + return this[ fn ]( local ); + }; + } ); +} ); + +// add cssHook and .fx.step function for each named hook. +// accept a space separated string of properties +color.hook = function( hook ) { + var hooks = hook.split( " " ); + each( hooks, function( _i, hook ) { + jQuery.cssHooks[ hook ] = { + set: function( elem, value ) { + var parsed, curElem, + backgroundColor = ""; + + if ( value !== "transparent" && ( getType( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) { + value = color( parsed || value ); + if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { + curElem = hook === "backgroundColor" ? elem.parentNode : elem; + while ( + ( backgroundColor === "" || backgroundColor === "transparent" ) && + curElem && curElem.style + ) { + try { + backgroundColor = jQuery.css( curElem, "backgroundColor" ); + curElem = curElem.parentNode; + } catch ( e ) { + } + } + + value = value.blend( backgroundColor && backgroundColor !== "transparent" ? + backgroundColor : + "_default" ); + } + + value = value.toRgbaString(); + } + try { + elem.style[ hook ] = value; + } catch ( e ) { + + // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' + } + } + }; + jQuery.fx.step[ hook ] = function( fx ) { + if ( !fx.colorInit ) { + fx.start = color( fx.elem, hook ); + fx.end = color( fx.end ); + fx.colorInit = true; + } + jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); + }; + } ); + +}; + +color.hook( stepHooks ); + +jQuery.cssHooks.borderColor = { + expand: function( value ) { + var expanded = {}; + + each( [ "Top", "Right", "Bottom", "Left" ], function( _i, part ) { + expanded[ "border" + part + "Color" ] = value; + } ); + return expanded; + } +}; + +// Basic color names only. +// Usage of any of the other color names requires adding yourself or including +// jquery.color.svg-names.js. +colors = jQuery.Color.names = { + + // 4.1. Basic color keywords + aqua: "#00ffff", + black: "#000000", + blue: "#0000ff", + fuchsia: "#ff00ff", + gray: "#808080", + green: "#008000", + lime: "#00ff00", + maroon: "#800000", + navy: "#000080", + olive: "#808000", + purple: "#800080", + red: "#ff0000", + silver: "#c0c0c0", + teal: "#008080", + white: "#ffffff", + yellow: "#ffff00", + + // 4.2.3. "transparent" color keyword + transparent: [ null, null, null, 0 ], + + _default: "#ffffff" +}; + + +/*! + * jQuery UI Effects 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Effects Core +//>>group: Effects +/* eslint-disable max-len */ +//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects. +/* eslint-enable max-len */ +//>>docs: http://api.jqueryui.com/category/effects-core/ +//>>demos: http://jqueryui.com/effect/ + + +var dataSpace = "ui-effects-", + dataSpaceStyle = "ui-effects-style", + dataSpaceAnimated = "ui-effects-animated"; + +$.effects = { + effect: {} +}; + +/******************************************************************************/ +/****************************** CLASS ANIMATIONS ******************************/ +/******************************************************************************/ +( function() { + +var classAnimationActions = [ "add", "remove", "toggle" ], + shorthandStyles = { + border: 1, + borderBottom: 1, + borderColor: 1, + borderLeft: 1, + borderRight: 1, + borderTop: 1, + borderWidth: 1, + margin: 1, + padding: 1 + }; + +$.each( + [ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], + function( _, prop ) { + $.fx.step[ prop ] = function( fx ) { + if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { + jQuery.style( fx.elem, prop, fx.end ); + fx.setAttr = true; + } + }; + } +); + +function camelCase( string ) { + return string.replace( /-([\da-z])/gi, function( all, letter ) { + return letter.toUpperCase(); + } ); +} + +function getElementStyles( elem ) { + var key, len, + style = elem.ownerDocument.defaultView ? + elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : + elem.currentStyle, + styles = {}; + + if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { + len = style.length; + while ( len-- ) { + key = style[ len ]; + if ( typeof style[ key ] === "string" ) { + styles[ camelCase( key ) ] = style[ key ]; + } + } + + // Support: Opera, IE <9 + } else { + for ( key in style ) { + if ( typeof style[ key ] === "string" ) { + styles[ key ] = style[ key ]; + } + } + } + + return styles; +} + +function styleDifference( oldStyle, newStyle ) { + var diff = {}, + name, value; + + for ( name in newStyle ) { + value = newStyle[ name ]; + if ( oldStyle[ name ] !== value ) { + if ( !shorthandStyles[ name ] ) { + if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { + diff[ name ] = value; + } + } + } + } + + return diff; +} + +// Support: jQuery <1.8 +if ( !$.fn.addBack ) { + $.fn.addBack = function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + }; +} + +$.effects.animateClass = function( value, duration, easing, callback ) { + var o = $.speed( duration, easing, callback ); + + return this.queue( function() { + var animated = $( this ), + baseClass = animated.attr( "class" ) || "", + applyClassChange, + allAnimations = o.children ? animated.find( "*" ).addBack() : animated; + + // Map the animated objects to store the original styles. + allAnimations = allAnimations.map( function() { + var el = $( this ); + return { + el: el, + start: getElementStyles( this ) + }; + } ); + + // Apply class change + applyClassChange = function() { + $.each( classAnimationActions, function( i, action ) { + if ( value[ action ] ) { + animated[ action + "Class" ]( value[ action ] ); + } + } ); + }; + applyClassChange(); + + // Map all animated objects again - calculate new styles and diff + allAnimations = allAnimations.map( function() { + this.end = getElementStyles( this.el[ 0 ] ); + this.diff = styleDifference( this.start, this.end ); + return this; + } ); + + // Apply original class + animated.attr( "class", baseClass ); + + // Map all animated objects again - this time collecting a promise + allAnimations = allAnimations.map( function() { + var styleInfo = this, + dfd = $.Deferred(), + opts = $.extend( {}, o, { + queue: false, + complete: function() { + dfd.resolve( styleInfo ); + } + } ); + + this.el.animate( this.diff, opts ); + return dfd.promise(); + } ); + + // Once all animations have completed: + $.when.apply( $, allAnimations.get() ).done( function() { + + // Set the final class + applyClassChange(); + + // For each animated element, + // clear all css properties that were animated + $.each( arguments, function() { + var el = this.el; + $.each( this.diff, function( key ) { + el.css( key, "" ); + } ); + } ); + + // This is guarnteed to be there if you use jQuery.speed() + // it also handles dequeuing the next anim... + o.complete.call( animated[ 0 ] ); + } ); + } ); +}; + +$.fn.extend( { + addClass: ( function( orig ) { + return function( classNames, speed, easing, callback ) { + return speed ? + $.effects.animateClass.call( this, + { add: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + } )( $.fn.addClass ), + + removeClass: ( function( orig ) { + return function( classNames, speed, easing, callback ) { + return arguments.length > 1 ? + $.effects.animateClass.call( this, + { remove: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + } )( $.fn.removeClass ), + + toggleClass: ( function( orig ) { + return function( classNames, force, speed, easing, callback ) { + if ( typeof force === "boolean" || force === undefined ) { + if ( !speed ) { + + // Without speed parameter + return orig.apply( this, arguments ); + } else { + return $.effects.animateClass.call( this, + ( force ? { add: classNames } : { remove: classNames } ), + speed, easing, callback ); + } + } else { + + // Without force parameter + return $.effects.animateClass.call( this, + { toggle: classNames }, force, speed, easing ); + } + }; + } )( $.fn.toggleClass ), + + switchClass: function( remove, add, speed, easing, callback ) { + return $.effects.animateClass.call( this, { + add: add, + remove: remove + }, speed, easing, callback ); + } +} ); + +} )(); + +/******************************************************************************/ +/*********************************** EFFECTS **********************************/ +/******************************************************************************/ + +( function() { + +if ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) { + $.expr.pseudos.animated = ( function( orig ) { + return function( elem ) { + return !!$( elem ).data( dataSpaceAnimated ) || orig( elem ); + }; + } )( $.expr.pseudos.animated ); +} + +if ( $.uiBackCompat !== false ) { + $.extend( $.effects, { + + // Saves a set of properties in a data storage + save: function( element, set ) { + var i = 0, length = set.length; + for ( ; i < length; i++ ) { + if ( set[ i ] !== null ) { + element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); + } + } + }, + + // Restores a set of previously saved properties from a data storage + restore: function( element, set ) { + var val, i = 0, length = set.length; + for ( ; i < length; i++ ) { + if ( set[ i ] !== null ) { + val = element.data( dataSpace + set[ i ] ); + element.css( set[ i ], val ); + } + } + }, + + setMode: function( el, mode ) { + if ( mode === "toggle" ) { + mode = el.is( ":hidden" ) ? "show" : "hide"; + } + return mode; + }, + + // Wraps the element around a wrapper that copies position properties + createWrapper: function( element ) { + + // If the element is already wrapped, return it + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + return element.parent(); + } + + // Wrap the element + var props = { + width: element.outerWidth( true ), + height: element.outerHeight( true ), + "float": element.css( "float" ) + }, + wrapper = $( "

    " ) + .addClass( "ui-effects-wrapper" ) + .css( { + fontSize: "100%", + background: "transparent", + border: "none", + margin: 0, + padding: 0 + } ), + + // Store the size in case width/height are defined in % - Fixes #5245 + size = { + width: element.width(), + height: element.height() + }, + active = document.activeElement; + + // Support: Firefox + // Firefox incorrectly exposes anonymous content + // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 + try { + // eslint-disable-next-line no-unused-expressions + active.id; + } catch ( e ) { + active = document.body; + } + + element.wrap( wrapper ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).trigger( "focus" ); + } + + // Hotfix for jQuery 1.4 since some change in wrap() seems to actually + // lose the reference to the wrapped element + wrapper = element.parent(); + + // Transfer positioning properties to the wrapper + if ( element.css( "position" ) === "static" ) { + wrapper.css( { position: "relative" } ); + element.css( { position: "relative" } ); + } else { + $.extend( props, { + position: element.css( "position" ), + zIndex: element.css( "z-index" ) + } ); + $.each( [ "top", "left", "bottom", "right" ], function( i, pos ) { + props[ pos ] = element.css( pos ); + if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { + props[ pos ] = "auto"; + } + } ); + element.css( { + position: "relative", + top: 0, + left: 0, + right: "auto", + bottom: "auto" + } ); + } + element.css( size ); + + return wrapper.css( props ).show(); + }, + + removeWrapper: function( element ) { + var active = document.activeElement; + + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + element.parent().replaceWith( element ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).trigger( "focus" ); + } + } + + return element; + } + } ); +} + +$.extend( $.effects, { + version: "1.13.2", + + define: function( name, mode, effect ) { + if ( !effect ) { + effect = mode; + mode = "effect"; + } + + $.effects.effect[ name ] = effect; + $.effects.effect[ name ].mode = mode; + + return effect; + }, + + scaledDimensions: function( element, percent, direction ) { + if ( percent === 0 ) { + return { + height: 0, + width: 0, + outerHeight: 0, + outerWidth: 0 + }; + } + + var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1, + y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1; + + return { + height: element.height() * y, + width: element.width() * x, + outerHeight: element.outerHeight() * y, + outerWidth: element.outerWidth() * x + }; + + }, + + clipToBox: function( animation ) { + return { + width: animation.clip.right - animation.clip.left, + height: animation.clip.bottom - animation.clip.top, + left: animation.clip.left, + top: animation.clip.top + }; + }, + + // Injects recently queued functions to be first in line (after "inprogress") + unshift: function( element, queueLength, count ) { + var queue = element.queue(); + + if ( queueLength > 1 ) { + queue.splice.apply( queue, + [ 1, 0 ].concat( queue.splice( queueLength, count ) ) ); + } + element.dequeue(); + }, + + saveStyle: function( element ) { + element.data( dataSpaceStyle, element[ 0 ].style.cssText ); + }, + + restoreStyle: function( element ) { + element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || ""; + element.removeData( dataSpaceStyle ); + }, + + mode: function( element, mode ) { + var hidden = element.is( ":hidden" ); + + if ( mode === "toggle" ) { + mode = hidden ? "show" : "hide"; + } + if ( hidden ? mode === "hide" : mode === "show" ) { + mode = "none"; + } + return mode; + }, + + // Translates a [top,left] array into a baseline value + getBaseline: function( origin, original ) { + var y, x; + + switch ( origin[ 0 ] ) { + case "top": + y = 0; + break; + case "middle": + y = 0.5; + break; + case "bottom": + y = 1; + break; + default: + y = origin[ 0 ] / original.height; + } + + switch ( origin[ 1 ] ) { + case "left": + x = 0; + break; + case "center": + x = 0.5; + break; + case "right": + x = 1; + break; + default: + x = origin[ 1 ] / original.width; + } + + return { + x: x, + y: y + }; + }, + + // Creates a placeholder element so that the original element can be made absolute + createPlaceholder: function( element ) { + var placeholder, + cssPosition = element.css( "position" ), + position = element.position(); + + // Lock in margins first to account for form elements, which + // will change margin if you explicitly set height + // see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380 + // Support: Safari + element.css( { + marginTop: element.css( "marginTop" ), + marginBottom: element.css( "marginBottom" ), + marginLeft: element.css( "marginLeft" ), + marginRight: element.css( "marginRight" ) + } ) + .outerWidth( element.outerWidth() ) + .outerHeight( element.outerHeight() ); + + if ( /^(static|relative)/.test( cssPosition ) ) { + cssPosition = "absolute"; + + placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( { + + // Convert inline to inline block to account for inline elements + // that turn to inline block based on content (like img) + display: /^(inline|ruby)/.test( element.css( "display" ) ) ? + "inline-block" : + "block", + visibility: "hidden", + + // Margins need to be set to account for margin collapse + marginTop: element.css( "marginTop" ), + marginBottom: element.css( "marginBottom" ), + marginLeft: element.css( "marginLeft" ), + marginRight: element.css( "marginRight" ), + "float": element.css( "float" ) + } ) + .outerWidth( element.outerWidth() ) + .outerHeight( element.outerHeight() ) + .addClass( "ui-effects-placeholder" ); + + element.data( dataSpace + "placeholder", placeholder ); + } + + element.css( { + position: cssPosition, + left: position.left, + top: position.top + } ); + + return placeholder; + }, + + removePlaceholder: function( element ) { + var dataKey = dataSpace + "placeholder", + placeholder = element.data( dataKey ); + + if ( placeholder ) { + placeholder.remove(); + element.removeData( dataKey ); + } + }, + + // Removes a placeholder if it exists and restores + // properties that were modified during placeholder creation + cleanUp: function( element ) { + $.effects.restoreStyle( element ); + $.effects.removePlaceholder( element ); + }, + + setTransition: function( element, list, factor, value ) { + value = value || {}; + $.each( list, function( i, x ) { + var unit = element.cssUnit( x ); + if ( unit[ 0 ] > 0 ) { + value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; + } + } ); + return value; + } +} ); + +// Return an effect options object for the given parameters: +function _normalizeArguments( effect, options, speed, callback ) { + + // Allow passing all options as the first parameter + if ( $.isPlainObject( effect ) ) { + options = effect; + effect = effect.effect; + } + + // Convert to an object + effect = { effect: effect }; + + // Catch (effect, null, ...) + if ( options == null ) { + options = {}; + } + + // Catch (effect, callback) + if ( typeof options === "function" ) { + callback = options; + speed = null; + options = {}; + } + + // Catch (effect, speed, ?) + if ( typeof options === "number" || $.fx.speeds[ options ] ) { + callback = speed; + speed = options; + options = {}; + } + + // Catch (effect, options, callback) + if ( typeof speed === "function" ) { + callback = speed; + speed = null; + } + + // Add options to effect + if ( options ) { + $.extend( effect, options ); + } + + speed = speed || options.duration; + effect.duration = $.fx.off ? 0 : + typeof speed === "number" ? speed : + speed in $.fx.speeds ? $.fx.speeds[ speed ] : + $.fx.speeds._default; + + effect.complete = callback || options.complete; + + return effect; +} + +function standardAnimationOption( option ) { + + // Valid standard speeds (nothing, number, named speed) + if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { + return true; + } + + // Invalid strings - treat as "normal" speed + if ( typeof option === "string" && !$.effects.effect[ option ] ) { + return true; + } + + // Complete callback + if ( typeof option === "function" ) { + return true; + } + + // Options hash (but not naming an effect) + if ( typeof option === "object" && !option.effect ) { + return true; + } + + // Didn't match any standard API + return false; +} + +$.fn.extend( { + effect: function( /* effect, options, speed, callback */ ) { + var args = _normalizeArguments.apply( this, arguments ), + effectMethod = $.effects.effect[ args.effect ], + defaultMode = effectMethod.mode, + queue = args.queue, + queueName = queue || "fx", + complete = args.complete, + mode = args.mode, + modes = [], + prefilter = function( next ) { + var el = $( this ), + normalizedMode = $.effects.mode( el, mode ) || defaultMode; + + // Sentinel for duck-punching the :animated pseudo-selector + el.data( dataSpaceAnimated, true ); + + // Save effect mode for later use, + // we can't just call $.effects.mode again later, + // as the .show() below destroys the initial state + modes.push( normalizedMode ); + + // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14 + if ( defaultMode && ( normalizedMode === "show" || + ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) { + el.show(); + } + + if ( !defaultMode || normalizedMode !== "none" ) { + $.effects.saveStyle( el ); + } + + if ( typeof next === "function" ) { + next(); + } + }; + + if ( $.fx.off || !effectMethod ) { + + // Delegate to the original method (e.g., .show()) if possible + if ( mode ) { + return this[ mode ]( args.duration, complete ); + } else { + return this.each( function() { + if ( complete ) { + complete.call( this ); + } + } ); + } + } + + function run( next ) { + var elem = $( this ); + + function cleanup() { + elem.removeData( dataSpaceAnimated ); + + $.effects.cleanUp( elem ); + + if ( args.mode === "hide" ) { + elem.hide(); + } + + done(); + } + + function done() { + if ( typeof complete === "function" ) { + complete.call( elem[ 0 ] ); + } + + if ( typeof next === "function" ) { + next(); + } + } + + // Override mode option on a per element basis, + // as toggle can be either show or hide depending on element state + args.mode = modes.shift(); + + if ( $.uiBackCompat !== false && !defaultMode ) { + if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { + + // Call the core method to track "olddisplay" properly + elem[ mode ](); + done(); + } else { + effectMethod.call( elem[ 0 ], args, done ); + } + } else { + if ( args.mode === "none" ) { + + // Call the core method to track "olddisplay" properly + elem[ mode ](); + done(); + } else { + effectMethod.call( elem[ 0 ], args, cleanup ); + } + } + } + + // Run prefilter on all elements first to ensure that + // any showing or hiding happens before placeholder creation, + // which ensures that any layout changes are correctly captured. + return queue === false ? + this.each( prefilter ).each( run ) : + this.queue( queueName, prefilter ).queue( queueName, run ); + }, + + show: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "show"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.show ), + + hide: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "hide"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.hide ), + + toggle: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) || typeof option === "boolean" ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "toggle"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.toggle ), + + cssUnit: function( key ) { + var style = this.css( key ), + val = []; + + $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { + if ( style.indexOf( unit ) > 0 ) { + val = [ parseFloat( style ), unit ]; + } + } ); + return val; + }, + + cssClip: function( clipObj ) { + if ( clipObj ) { + return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " + + clipObj.bottom + "px " + clipObj.left + "px)" ); + } + return parseClip( this.css( "clip" ), this ); + }, + + transfer: function( options, done ) { + var element = $( this ), + target = $( options.to ), + targetFixed = target.css( "position" ) === "fixed", + body = $( "body" ), + fixTop = targetFixed ? body.scrollTop() : 0, + fixLeft = targetFixed ? body.scrollLeft() : 0, + endPosition = target.offset(), + animation = { + top: endPosition.top - fixTop, + left: endPosition.left - fixLeft, + height: target.innerHeight(), + width: target.innerWidth() + }, + startPosition = element.offset(), + transfer = $( "
    " ); + + transfer + .appendTo( "body" ) + .addClass( options.className ) + .css( { + top: startPosition.top - fixTop, + left: startPosition.left - fixLeft, + height: element.innerHeight(), + width: element.innerWidth(), + position: targetFixed ? "fixed" : "absolute" + } ) + .animate( animation, options.duration, options.easing, function() { + transfer.remove(); + if ( typeof done === "function" ) { + done(); + } + } ); + } +} ); + +function parseClip( str, element ) { + var outerWidth = element.outerWidth(), + outerHeight = element.outerHeight(), + clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/, + values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ]; + + return { + top: parseFloat( values[ 1 ] ) || 0, + right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ), + bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ), + left: parseFloat( values[ 4 ] ) || 0 + }; +} + +$.fx.step.clip = function( fx ) { + if ( !fx.clipInit ) { + fx.start = $( fx.elem ).cssClip(); + if ( typeof fx.end === "string" ) { + fx.end = parseClip( fx.end, fx.elem ); + } + fx.clipInit = true; + } + + $( fx.elem ).cssClip( { + top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top, + right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right, + bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom, + left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left + } ); +}; + +} )(); + +/******************************************************************************/ +/*********************************** EASING ***********************************/ +/******************************************************************************/ + +( function() { + +// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing) + +var baseEasings = {}; + +$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { + baseEasings[ name ] = function( p ) { + return Math.pow( p, i + 2 ); + }; +} ); + +$.extend( baseEasings, { + Sine: function( p ) { + return 1 - Math.cos( p * Math.PI / 2 ); + }, + Circ: function( p ) { + return 1 - Math.sqrt( 1 - p * p ); + }, + Elastic: function( p ) { + return p === 0 || p === 1 ? p : + -Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 ); + }, + Back: function( p ) { + return p * p * ( 3 * p - 2 ); + }, + Bounce: function( p ) { + var pow2, + bounce = 4; + + while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} + return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); + } +} ); + +$.each( baseEasings, function( name, easeIn ) { + $.easing[ "easeIn" + name ] = easeIn; + $.easing[ "easeOut" + name ] = function( p ) { + return 1 - easeIn( 1 - p ); + }; + $.easing[ "easeInOut" + name ] = function( p ) { + return p < 0.5 ? + easeIn( p * 2 ) / 2 : + 1 - easeIn( p * -2 + 2 ) / 2; + }; +} ); + +} )(); + +var effect = $.effects; + + +/*! + * jQuery UI Effects Blind 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Blind Effect +//>>group: Effects +//>>description: Blinds the element. +//>>docs: http://api.jqueryui.com/blind-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) { + var map = { + up: [ "bottom", "top" ], + vertical: [ "bottom", "top" ], + down: [ "top", "bottom" ], + left: [ "right", "left" ], + horizontal: [ "right", "left" ], + right: [ "left", "right" ] + }, + element = $( this ), + direction = options.direction || "up", + start = element.cssClip(), + animate = { clip: $.extend( {}, start ) }, + placeholder = $.effects.createPlaceholder( element ); + + animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ]; + + if ( options.mode === "show" ) { + element.cssClip( animate.clip ); + if ( placeholder ) { + placeholder.css( $.effects.clipToBox( animate ) ); + } + + animate.clip = start; + } + + if ( placeholder ) { + placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing ); + } + + element.animate( animate, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Bounce 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Bounce Effect +//>>group: Effects +//>>description: Bounces an element horizontally or vertically n times. +//>>docs: http://api.jqueryui.com/bounce-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) { + var upAnim, downAnim, refValue, + element = $( this ), + + // Defaults: + mode = options.mode, + hide = mode === "hide", + show = mode === "show", + direction = options.direction || "up", + distance = options.distance, + times = options.times || 5, + + // Number of internal animations + anims = times * 2 + ( show || hide ? 1 : 0 ), + speed = options.duration / anims, + easing = options.easing, + + // Utility: + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + motion = ( direction === "up" || direction === "left" ), + i = 0, + + queuelen = element.queue().length; + + $.effects.createPlaceholder( element ); + + refValue = element.css( ref ); + + // Default distance for the BIGGEST bounce is the outer Distance / 3 + if ( !distance ) { + distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; + } + + if ( show ) { + downAnim = { opacity: 1 }; + downAnim[ ref ] = refValue; + + // If we are showing, force opacity 0 and set the initial position + // then do the "first" animation + element + .css( "opacity", 0 ) + .css( ref, motion ? -distance * 2 : distance * 2 ) + .animate( downAnim, speed, easing ); + } + + // Start at the smallest distance if we are hiding + if ( hide ) { + distance = distance / Math.pow( 2, times - 1 ); + } + + downAnim = {}; + downAnim[ ref ] = refValue; + + // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here + for ( ; i < times; i++ ) { + upAnim = {}; + upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + + element + .animate( upAnim, speed, easing ) + .animate( downAnim, speed, easing ); + + distance = hide ? distance * 2 : distance / 2; + } + + // Last Bounce when Hiding + if ( hide ) { + upAnim = { opacity: 0 }; + upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + + element.animate( upAnim, speed, easing ); + } + + element.queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Clip 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Clip Effect +//>>group: Effects +//>>description: Clips the element on and off like an old TV. +//>>docs: http://api.jqueryui.com/clip-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) { + var start, + animate = {}, + element = $( this ), + direction = options.direction || "vertical", + both = direction === "both", + horizontal = both || direction === "horizontal", + vertical = both || direction === "vertical"; + + start = element.cssClip(); + animate.clip = { + top: vertical ? ( start.bottom - start.top ) / 2 : start.top, + right: horizontal ? ( start.right - start.left ) / 2 : start.right, + bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom, + left: horizontal ? ( start.right - start.left ) / 2 : start.left + }; + + $.effects.createPlaceholder( element ); + + if ( options.mode === "show" ) { + element.cssClip( animate.clip ); + animate.clip = start; + } + + element.animate( animate, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); + +} ); + + +/*! + * jQuery UI Effects Drop 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Drop Effect +//>>group: Effects +//>>description: Moves an element in one direction and hides it at the same time. +//>>docs: http://api.jqueryui.com/drop-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) { + + var distance, + element = $( this ), + mode = options.mode, + show = mode === "show", + direction = options.direction || "left", + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=", + oppositeMotion = ( motion === "+=" ) ? "-=" : "+=", + animation = { + opacity: 0 + }; + + $.effects.createPlaceholder( element ); + + distance = options.distance || + element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2; + + animation[ ref ] = motion + distance; + + if ( show ) { + element.css( animation ); + + animation[ ref ] = oppositeMotion + distance; + animation.opacity = 1; + } + + // Animate + element.animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Explode 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Explode Effect +//>>group: Effects +/* eslint-disable max-len */ +//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness. +/* eslint-enable max-len */ +//>>docs: http://api.jqueryui.com/explode-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) { + + var i, j, left, top, mx, my, + rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3, + cells = rows, + element = $( this ), + mode = options.mode, + show = mode === "show", + + // Show and then visibility:hidden the element before calculating offset + offset = element.show().css( "visibility", "hidden" ).offset(), + + // Width and height of a piece + width = Math.ceil( element.outerWidth() / cells ), + height = Math.ceil( element.outerHeight() / rows ), + pieces = []; + + // Children animate complete: + function childComplete() { + pieces.push( this ); + if ( pieces.length === rows * cells ) { + animComplete(); + } + } + + // Clone the element for each row and cell. + for ( i = 0; i < rows; i++ ) { // ===> + top = offset.top + i * height; + my = i - ( rows - 1 ) / 2; + + for ( j = 0; j < cells; j++ ) { // ||| + left = offset.left + j * width; + mx = j - ( cells - 1 ) / 2; + + // Create a clone of the now hidden main element that will be absolute positioned + // within a wrapper div off the -left and -top equal to size of our pieces + element + .clone() + .appendTo( "body" ) + .wrap( "
    " ) + .css( { + position: "absolute", + visibility: "visible", + left: -j * width, + top: -i * height + } ) + + // Select the wrapper - make it overflow: hidden and absolute positioned based on + // where the original was located +left and +top equal to the size of pieces + .parent() + .addClass( "ui-effects-explode" ) + .css( { + position: "absolute", + overflow: "hidden", + width: width, + height: height, + left: left + ( show ? mx * width : 0 ), + top: top + ( show ? my * height : 0 ), + opacity: show ? 0 : 1 + } ) + .animate( { + left: left + ( show ? 0 : mx * width ), + top: top + ( show ? 0 : my * height ), + opacity: show ? 1 : 0 + }, options.duration || 500, options.easing, childComplete ); + } + } + + function animComplete() { + element.css( { + visibility: "visible" + } ); + $( pieces ).remove(); + done(); + } +} ); + + +/*! + * jQuery UI Effects Fade 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Fade Effect +//>>group: Effects +//>>description: Fades the element. +//>>docs: http://api.jqueryui.com/fade-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) { + var show = options.mode === "show"; + + $( this ) + .css( "opacity", show ? 0 : 1 ) + .animate( { + opacity: show ? 1 : 0 + }, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Fold 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Fold Effect +//>>group: Effects +//>>description: Folds an element first horizontally and then vertically. +//>>docs: http://api.jqueryui.com/fold-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) { + + // Create element + var element = $( this ), + mode = options.mode, + show = mode === "show", + hide = mode === "hide", + size = options.size || 15, + percent = /([0-9]+)%/.exec( size ), + horizFirst = !!options.horizFirst, + ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ], + duration = options.duration / 2, + + placeholder = $.effects.createPlaceholder( element ), + + start = element.cssClip(), + animation1 = { clip: $.extend( {}, start ) }, + animation2 = { clip: $.extend( {}, start ) }, + + distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ], + + queuelen = element.queue().length; + + if ( percent ) { + size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; + } + animation1.clip[ ref[ 0 ] ] = size; + animation2.clip[ ref[ 0 ] ] = size; + animation2.clip[ ref[ 1 ] ] = 0; + + if ( show ) { + element.cssClip( animation2.clip ); + if ( placeholder ) { + placeholder.css( $.effects.clipToBox( animation2 ) ); + } + + animation2.clip = start; + } + + // Animate + element + .queue( function( next ) { + if ( placeholder ) { + placeholder + .animate( $.effects.clipToBox( animation1 ), duration, options.easing ) + .animate( $.effects.clipToBox( animation2 ), duration, options.easing ); + } + + next(); + } ) + .animate( animation1, duration, options.easing ) + .animate( animation2, duration, options.easing ) + .queue( done ); + + $.effects.unshift( element, queuelen, 4 ); +} ); + + +/*! + * jQuery UI Effects Highlight 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Highlight Effect +//>>group: Effects +//>>description: Highlights the background of an element in a defined color for a custom duration. +//>>docs: http://api.jqueryui.com/highlight-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) { + var element = $( this ), + animation = { + backgroundColor: element.css( "backgroundColor" ) + }; + + if ( options.mode === "hide" ) { + animation.opacity = 0; + } + + $.effects.saveStyle( element ); + + element + .css( { + backgroundImage: "none", + backgroundColor: options.color || "#ffff99" + } ) + .animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Size 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Size Effect +//>>group: Effects +//>>description: Resize an element to a specified width and height. +//>>docs: http://api.jqueryui.com/size-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectSize = $.effects.define( "size", function( options, done ) { + + // Create element + var baseline, factor, temp, + element = $( this ), + + // Copy for children + cProps = [ "fontSize" ], + vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], + hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], + + // Set options + mode = options.mode, + restore = mode !== "effect", + scale = options.scale || "both", + origin = options.origin || [ "middle", "center" ], + position = element.css( "position" ), + pos = element.position(), + original = $.effects.scaledDimensions( element ), + from = options.from || original, + to = options.to || $.effects.scaledDimensions( element, 0 ); + + $.effects.createPlaceholder( element ); + + if ( mode === "show" ) { + temp = from; + from = to; + to = temp; + } + + // Set scaling factor + factor = { + from: { + y: from.height / original.height, + x: from.width / original.width + }, + to: { + y: to.height / original.height, + x: to.width / original.width + } + }; + + // Scale the css box + if ( scale === "box" || scale === "both" ) { + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + from = $.effects.setTransition( element, vProps, factor.from.y, from ); + to = $.effects.setTransition( element, vProps, factor.to.y, to ); + } + + // Horizontal props scaling + if ( factor.from.x !== factor.to.x ) { + from = $.effects.setTransition( element, hProps, factor.from.x, from ); + to = $.effects.setTransition( element, hProps, factor.to.x, to ); + } + } + + // Scale the content + if ( scale === "content" || scale === "both" ) { + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + from = $.effects.setTransition( element, cProps, factor.from.y, from ); + to = $.effects.setTransition( element, cProps, factor.to.y, to ); + } + } + + // Adjust the position properties based on the provided origin points + if ( origin ) { + baseline = $.effects.getBaseline( origin, original ); + from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top; + from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left; + to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top; + to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left; + } + delete from.outerHeight; + delete from.outerWidth; + element.css( from ); + + // Animate the children if desired + if ( scale === "content" || scale === "both" ) { + + vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps ); + hProps = hProps.concat( [ "marginLeft", "marginRight" ] ); + + // Only animate children with width attributes specified + // TODO: is this right? should we include anything with css width specified as well + element.find( "*[width]" ).each( function() { + var child = $( this ), + childOriginal = $.effects.scaledDimensions( child ), + childFrom = { + height: childOriginal.height * factor.from.y, + width: childOriginal.width * factor.from.x, + outerHeight: childOriginal.outerHeight * factor.from.y, + outerWidth: childOriginal.outerWidth * factor.from.x + }, + childTo = { + height: childOriginal.height * factor.to.y, + width: childOriginal.width * factor.to.x, + outerHeight: childOriginal.height * factor.to.y, + outerWidth: childOriginal.width * factor.to.x + }; + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom ); + childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo ); + } + + // Horizontal props scaling + if ( factor.from.x !== factor.to.x ) { + childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom ); + childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo ); + } + + if ( restore ) { + $.effects.saveStyle( child ); + } + + // Animate children + child.css( childFrom ); + child.animate( childTo, options.duration, options.easing, function() { + + // Restore children + if ( restore ) { + $.effects.restoreStyle( child ); + } + } ); + } ); + } + + // Animate + element.animate( to, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: function() { + + var offset = element.offset(); + + if ( to.opacity === 0 ) { + element.css( "opacity", from.opacity ); + } + + if ( !restore ) { + element + .css( "position", position === "static" ? "relative" : position ) + .offset( offset ); + + // Need to save style here so that automatic style restoration + // doesn't restore to the original styles from before the animation. + $.effects.saveStyle( element ); + } + + done(); + } + } ); + +} ); + + +/*! + * jQuery UI Effects Scale 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Scale Effect +//>>group: Effects +//>>description: Grows or shrinks an element and its content. +//>>docs: http://api.jqueryui.com/scale-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectScale = $.effects.define( "scale", function( options, done ) { + + // Create element + var el = $( this ), + mode = options.mode, + percent = parseInt( options.percent, 10 ) || + ( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ), + + newOptions = $.extend( true, { + from: $.effects.scaledDimensions( el ), + to: $.effects.scaledDimensions( el, percent, options.direction || "both" ), + origin: options.origin || [ "middle", "center" ] + }, options ); + + // Fade option to support puff + if ( options.fade ) { + newOptions.from.opacity = 1; + newOptions.to.opacity = 0; + } + + $.effects.effect.size.call( this, newOptions, done ); +} ); + + +/*! + * jQuery UI Effects Puff 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Puff Effect +//>>group: Effects +//>>description: Creates a puff effect by scaling the element up and hiding it at the same time. +//>>docs: http://api.jqueryui.com/puff-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) { + var newOptions = $.extend( true, {}, options, { + fade: true, + percent: parseInt( options.percent, 10 ) || 150 + } ); + + $.effects.effect.scale.call( this, newOptions, done ); +} ); + + +/*! + * jQuery UI Effects Pulsate 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Pulsate Effect +//>>group: Effects +//>>description: Pulsates an element n times by changing the opacity to zero and back. +//>>docs: http://api.jqueryui.com/pulsate-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) { + var element = $( this ), + mode = options.mode, + show = mode === "show", + hide = mode === "hide", + showhide = show || hide, + + // Showing or hiding leaves off the "last" animation + anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), + duration = options.duration / anims, + animateTo = 0, + i = 1, + queuelen = element.queue().length; + + if ( show || !element.is( ":visible" ) ) { + element.css( "opacity", 0 ).show(); + animateTo = 1; + } + + // Anims - 1 opacity "toggles" + for ( ; i < anims; i++ ) { + element.animate( { opacity: animateTo }, duration, options.easing ); + animateTo = 1 - animateTo; + } + + element.animate( { opacity: animateTo }, duration, options.easing ); + + element.queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Shake 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Shake Effect +//>>group: Effects +//>>description: Shakes an element horizontally or vertically n times. +//>>docs: http://api.jqueryui.com/shake-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectShake = $.effects.define( "shake", function( options, done ) { + + var i = 1, + element = $( this ), + direction = options.direction || "left", + distance = options.distance || 20, + times = options.times || 3, + anims = times * 2 + 1, + speed = Math.round( options.duration / anims ), + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + positiveMotion = ( direction === "up" || direction === "left" ), + animation = {}, + animation1 = {}, + animation2 = {}, + + queuelen = element.queue().length; + + $.effects.createPlaceholder( element ); + + // Animation + animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; + animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; + animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; + + // Animate + element.animate( animation, speed, options.easing ); + + // Shakes + for ( ; i < times; i++ ) { + element + .animate( animation1, speed, options.easing ) + .animate( animation2, speed, options.easing ); + } + + element + .animate( animation1, speed, options.easing ) + .animate( animation, speed / 2, options.easing ) + .queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Slide 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Slide Effect +//>>group: Effects +//>>description: Slides an element in and out of the viewport. +//>>docs: http://api.jqueryui.com/slide-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) { + var startClip, startRef, + element = $( this ), + map = { + up: [ "bottom", "top" ], + down: [ "top", "bottom" ], + left: [ "right", "left" ], + right: [ "left", "right" ] + }, + mode = options.mode, + direction = options.direction || "left", + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + positiveMotion = ( direction === "up" || direction === "left" ), + distance = options.distance || + element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ), + animation = {}; + + $.effects.createPlaceholder( element ); + + startClip = element.cssClip(); + startRef = element.position()[ ref ]; + + // Define hide animation + animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef; + animation.clip = element.cssClip(); + animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ]; + + // Reverse the animation if we're showing + if ( mode === "show" ) { + element.cssClip( animation.clip ); + element.css( ref, animation[ ref ] ); + animation.clip = startClip; + animation[ ref ] = startRef; + } + + // Actually animate + element.animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Transfer 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Transfer Effect +//>>group: Effects +//>>description: Displays a transfer effect from one element to another. +//>>docs: http://api.jqueryui.com/transfer-effect/ +//>>demos: http://jqueryui.com/effect/ + + +var effect; +if ( $.uiBackCompat !== false ) { + effect = $.effects.define( "transfer", function( options, done ) { + $( this ).transfer( options, done ); + } ); +} +var effectsEffectTransfer = effect; + + +/*! + * jQuery UI Focusable 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: :focusable Selector +//>>group: Core +//>>description: Selects elements which can be focused. +//>>docs: http://api.jqueryui.com/focusable-selector/ + + +// Selectors +$.ui.focusable = function( element, hasTabindex ) { + var map, mapName, img, focusableIfVisible, fieldset, + nodeName = element.nodeName.toLowerCase(); + + if ( "area" === nodeName ) { + map = element.parentNode; + mapName = map.name; + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { + return false; + } + img = $( "img[usemap='#" + mapName + "']" ); + return img.length > 0 && img.is( ":visible" ); + } + + if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) { + focusableIfVisible = !element.disabled; + + if ( focusableIfVisible ) { + + // Form controls within a disabled fieldset are disabled. + // However, controls within the fieldset's legend do not get disabled. + // Since controls generally aren't placed inside legends, we skip + // this portion of the check. + fieldset = $( element ).closest( "fieldset" )[ 0 ]; + if ( fieldset ) { + focusableIfVisible = !fieldset.disabled; + } + } + } else if ( "a" === nodeName ) { + focusableIfVisible = element.href || hasTabindex; + } else { + focusableIfVisible = hasTabindex; + } + + return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) ); +}; + +// Support: IE 8 only +// IE 8 doesn't resolve inherit to visible/hidden for computed values +function visible( element ) { + var visibility = element.css( "visibility" ); + while ( visibility === "inherit" ) { + element = element.parent(); + visibility = element.css( "visibility" ); + } + return visibility === "visible"; +} + +$.extend( $.expr.pseudos, { + focusable: function( element ) { + return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); + } +} ); + +var focusable = $.ui.focusable; + + + +// Support: IE8 Only +// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop +// with a string, so we need to find the proper form. +var form = $.fn._form = function() { + return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); +}; + + +/*! + * jQuery UI Form Reset Mixin 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Form Reset Mixin +//>>group: Core +//>>description: Refresh input widgets when their form is reset +//>>docs: http://api.jqueryui.com/form-reset-mixin/ + + +var formResetMixin = $.ui.formResetMixin = { + _formResetHandler: function() { + var form = $( this ); + + // Wait for the form reset to actually happen before refreshing + setTimeout( function() { + var instances = form.data( "ui-form-reset-instances" ); + $.each( instances, function() { + this.refresh(); + } ); + } ); + }, + + _bindFormResetHandler: function() { + this.form = this.element._form(); + if ( !this.form.length ) { + return; + } + + var instances = this.form.data( "ui-form-reset-instances" ) || []; + if ( !instances.length ) { + + // We don't use _on() here because we use a single event handler per form + this.form.on( "reset.ui-form-reset", this._formResetHandler ); + } + instances.push( this ); + this.form.data( "ui-form-reset-instances", instances ); + }, + + _unbindFormResetHandler: function() { + if ( !this.form.length ) { + return; + } + + var instances = this.form.data( "ui-form-reset-instances" ); + instances.splice( $.inArray( this, instances ), 1 ); + if ( instances.length ) { + this.form.data( "ui-form-reset-instances", instances ); + } else { + this.form + .removeData( "ui-form-reset-instances" ) + .off( "reset.ui-form-reset" ); + } + } +}; + + +/*! + * jQuery UI Support for jQuery core 1.8.x and newer 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + */ + +//>>label: jQuery 1.8+ Support +//>>group: Core +//>>description: Support version 1.8.x and newer of jQuery core + + +// Support: jQuery 1.9.x or older +// $.expr[ ":" ] is deprecated. +if ( !$.expr.pseudos ) { + $.expr.pseudos = $.expr[ ":" ]; +} + +// Support: jQuery 1.11.x or older +// $.unique has been renamed to $.uniqueSort +if ( !$.uniqueSort ) { + $.uniqueSort = $.unique; +} + +// Support: jQuery 2.2.x or older. +// This method has been defined in jQuery 3.0.0. +// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js +if ( !$.escapeSelector ) { + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + + var fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }; + + $.escapeSelector = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); + }; +} + +// Support: jQuery 3.4.x or older +// These methods have been defined in jQuery 3.5.0. +if ( !$.fn.even || !$.fn.odd ) { + $.fn.extend( { + even: function() { + return this.filter( function( i ) { + return i % 2 === 0; + } ); + }, + odd: function() { + return this.filter( function( i ) { + return i % 2 === 1; + } ); + } + } ); +} + +; +/*! + * jQuery UI Keycode 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Keycode +//>>group: Core +//>>description: Provide keycodes as keynames +//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/ + + +var keycode = $.ui.keyCode = { + BACKSPACE: 8, + COMMA: 188, + DELETE: 46, + DOWN: 40, + END: 35, + ENTER: 13, + ESCAPE: 27, + HOME: 36, + LEFT: 37, + PAGE_DOWN: 34, + PAGE_UP: 33, + PERIOD: 190, + RIGHT: 39, + SPACE: 32, + TAB: 9, + UP: 38 +}; + + +/*! + * jQuery UI Labels 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: labels +//>>group: Core +//>>description: Find all the labels associated with a given input +//>>docs: http://api.jqueryui.com/labels/ + + +var labels = $.fn.labels = function() { + var ancestor, selector, id, labels, ancestors; + + if ( !this.length ) { + return this.pushStack( [] ); + } + + // Check control.labels first + if ( this[ 0 ].labels && this[ 0 ].labels.length ) { + return this.pushStack( this[ 0 ].labels ); + } + + // Support: IE <= 11, FF <= 37, Android <= 2.3 only + // Above browsers do not support control.labels. Everything below is to support them + // as well as document fragments. control.labels does not work on document fragments + labels = this.eq( 0 ).parents( "label" ); + + // Look for the label based on the id + id = this.attr( "id" ); + if ( id ) { + + // We don't search against the document in case the element + // is disconnected from the DOM + ancestor = this.eq( 0 ).parents().last(); + + // Get a full set of top level ancestors + ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); + + // Create a selector for the label based on the id + selector = "label[for='" + $.escapeSelector( id ) + "']"; + + labels = labels.add( ancestors.find( selector ).addBack( selector ) ); + + } + + // Return whatever we have found for labels + return this.pushStack( labels ); +}; + + +/*! + * jQuery UI Scroll Parent 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: scrollParent +//>>group: Core +//>>description: Get the closest ancestor element that is scrollable. +//>>docs: http://api.jqueryui.com/scrollParent/ + + +var scrollParent = $.fn.scrollParent = function( includeHidden ) { + var position = this.css( "position" ), + excludeStaticParent = position === "absolute", + overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, + scrollParent = this.parents().filter( function() { + var parent = $( this ); + if ( excludeStaticParent && parent.css( "position" ) === "static" ) { + return false; + } + return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + + parent.css( "overflow-x" ) ); + } ).eq( 0 ); + + return position === "fixed" || !scrollParent.length ? + $( this[ 0 ].ownerDocument || document ) : + scrollParent; +}; + + +/*! + * jQuery UI Tabbable 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: :tabbable Selector +//>>group: Core +//>>description: Selects elements which can be tabbed to. +//>>docs: http://api.jqueryui.com/tabbable-selector/ + + +var tabbable = $.extend( $.expr.pseudos, { + tabbable: function( element ) { + var tabIndex = $.attr( element, "tabindex" ), + hasTabindex = tabIndex != null; + return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); + } +} ); + + +/*! + * jQuery UI Unique ID 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: uniqueId +//>>group: Core +//>>description: Functions to generate and remove uniqueId's +//>>docs: http://api.jqueryui.com/uniqueId/ + + +var uniqueId = $.fn.extend( { + uniqueId: ( function() { + var uuid = 0; + + return function() { + return this.each( function() { + if ( !this.id ) { + this.id = "ui-id-" + ( ++uuid ); + } + } ); + }; + } )(), + + removeUniqueId: function() { + return this.each( function() { + if ( /^ui-id-\d+$/.test( this.id ) ) { + $( this ).removeAttr( "id" ); + } + } ); + } +} ); + + +/*! + * jQuery UI Accordion 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Accordion +//>>group: Widgets +/* eslint-disable max-len */ +//>>description: Displays collapsible content panels for presenting information in a limited amount of space. +/* eslint-enable max-len */ +//>>docs: http://api.jqueryui.com/accordion/ +//>>demos: http://jqueryui.com/accordion/ +//>>css.structure: ../../themes/base/core.css +//>>css.structure: ../../themes/base/accordion.css +//>>css.theme: ../../themes/base/theme.css + + +var widgetsAccordion = $.widget( "ui.accordion", { + version: "1.13.2", + options: { + active: 0, + animate: {}, + classes: { + "ui-accordion-header": "ui-corner-top", + "ui-accordion-header-collapsed": "ui-corner-all", + "ui-accordion-content": "ui-corner-bottom" + }, + collapsible: false, + event: "click", + header: function( elem ) { + return elem.find( "> li > :first-child" ).add( elem.find( "> :not(li)" ).even() ); + }, + heightStyle: "auto", + icons: { + activeHeader: "ui-icon-triangle-1-s", + header: "ui-icon-triangle-1-e" + }, + + // Callbacks + activate: null, + beforeActivate: null + }, + + hideProps: { + borderTopWidth: "hide", + borderBottomWidth: "hide", + paddingTop: "hide", + paddingBottom: "hide", + height: "hide" + }, + + showProps: { + borderTopWidth: "show", + borderBottomWidth: "show", + paddingTop: "show", + paddingBottom: "show", + height: "show" + }, + + _create: function() { + var options = this.options; + + this.prevShow = this.prevHide = $(); + this._addClass( "ui-accordion", "ui-widget ui-helper-reset" ); + this.element.attr( "role", "tablist" ); + + // Don't allow collapsible: false and active: false / null + if ( !options.collapsible && ( options.active === false || options.active == null ) ) { + options.active = 0; + } + + this._processPanels(); + + // handle negative values + if ( options.active < 0 ) { + options.active += this.headers.length; + } + this._refresh(); + }, + + _getCreateEventData: function() { + return { + header: this.active, + panel: !this.active.length ? $() : this.active.next() + }; + }, + + _createIcons: function() { + var icon, children, + icons = this.options.icons; + + if ( icons ) { + icon = $( "" ); + this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header ); + icon.prependTo( this.headers ); + children = this.active.children( ".ui-accordion-header-icon" ); + this._removeClass( children, icons.header ) + ._addClass( children, null, icons.activeHeader ) + ._addClass( this.headers, "ui-accordion-icons" ); + } + }, + + _destroyIcons: function() { + this._removeClass( this.headers, "ui-accordion-icons" ); + this.headers.children( ".ui-accordion-header-icon" ).remove(); + }, + + _destroy: function() { + var contents; + + // Clean up main element + this.element.removeAttr( "role" ); + + // Clean up headers + this.headers + .removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" ) + .removeUniqueId(); + + this._destroyIcons(); + + // Clean up content panels + contents = this.headers.next() + .css( "display", "" ) + .removeAttr( "role aria-hidden aria-labelledby" ) + .removeUniqueId(); + + if ( this.options.heightStyle !== "content" ) { + contents.css( "height", "" ); + } + }, + + _setOption: function( key, value ) { + if ( key === "active" ) { + + // _activate() will handle invalid values and update this.options + this._activate( value ); + return; + } + + if ( key === "event" ) { + if ( this.options.event ) { + this._off( this.headers, this.options.event ); + } + this._setupEvents( value ); + } + + this._super( key, value ); + + // Setting collapsible: false while collapsed; open first panel + if ( key === "collapsible" && !value && this.options.active === false ) { + this._activate( 0 ); + } + + if ( key === "icons" ) { + this._destroyIcons(); + if ( value ) { + this._createIcons(); + } + } + }, + + _setOptionDisabled: function( value ) { + this._super( value ); + + this.element.attr( "aria-disabled", value ); + + // Support: IE8 Only + // #5332 / #6059 - opacity doesn't cascade to positioned elements in IE + // so we need to add the disabled class to the headers and panels + this._toggleClass( null, "ui-state-disabled", !!value ); + this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled", + !!value ); + }, + + _keydown: function( event ) { + if ( event.altKey || event.ctrlKey ) { + return; + } + + var keyCode = $.ui.keyCode, + length = this.headers.length, + currentIndex = this.headers.index( event.target ), + toFocus = false; + + switch ( event.keyCode ) { + case keyCode.RIGHT: + case keyCode.DOWN: + toFocus = this.headers[ ( currentIndex + 1 ) % length ]; + break; + case keyCode.LEFT: + case keyCode.UP: + toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; + break; + case keyCode.SPACE: + case keyCode.ENTER: + this._eventHandler( event ); + break; + case keyCode.HOME: + toFocus = this.headers[ 0 ]; + break; + case keyCode.END: + toFocus = this.headers[ length - 1 ]; + break; + } + + if ( toFocus ) { + $( event.target ).attr( "tabIndex", -1 ); + $( toFocus ).attr( "tabIndex", 0 ); + $( toFocus ).trigger( "focus" ); + event.preventDefault(); + } + }, + + _panelKeyDown: function( event ) { + if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { + $( event.currentTarget ).prev().trigger( "focus" ); + } + }, + + refresh: function() { + var options = this.options; + this._processPanels(); + + // Was collapsed or no panel + if ( ( options.active === false && options.collapsible === true ) || + !this.headers.length ) { + options.active = false; + this.active = $(); + + // active false only when collapsible is true + } else if ( options.active === false ) { + this._activate( 0 ); + + // was active, but active panel is gone + } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { + + // all remaining panel are disabled + if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) { + options.active = false; + this.active = $(); + + // activate previous panel + } else { + this._activate( Math.max( 0, options.active - 1 ) ); + } + + // was active, active panel still exists + } else { + + // make sure active index is correct + options.active = this.headers.index( this.active ); + } + + this._destroyIcons(); + + this._refresh(); + }, + + _processPanels: function() { + var prevHeaders = this.headers, + prevPanels = this.panels; + + if ( typeof this.options.header === "function" ) { + this.headers = this.options.header( this.element ); + } else { + this.headers = this.element.find( this.options.header ); + } + this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed", + "ui-state-default" ); + + this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide(); + this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" ); + + // Avoid memory leaks (#10056) + if ( prevPanels ) { + this._off( prevHeaders.not( this.headers ) ); + this._off( prevPanels.not( this.panels ) ); + } + }, + + _refresh: function() { + var maxHeight, + options = this.options, + heightStyle = options.heightStyle, + parent = this.element.parent(); + + this.active = this._findActive( options.active ); + this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" ) + ._removeClass( this.active, "ui-accordion-header-collapsed" ); + this._addClass( this.active.next(), "ui-accordion-content-active" ); + this.active.next().show(); + + this.headers + .attr( "role", "tab" ) + .each( function() { + var header = $( this ), + headerId = header.uniqueId().attr( "id" ), + panel = header.next(), + panelId = panel.uniqueId().attr( "id" ); + header.attr( "aria-controls", panelId ); + panel.attr( "aria-labelledby", headerId ); + } ) + .next() + .attr( "role", "tabpanel" ); + + this.headers + .not( this.active ) + .attr( { + "aria-selected": "false", + "aria-expanded": "false", + tabIndex: -1 + } ) + .next() + .attr( { + "aria-hidden": "true" + } ) + .hide(); + + // Make sure at least one header is in the tab order + if ( !this.active.length ) { + this.headers.eq( 0 ).attr( "tabIndex", 0 ); + } else { + this.active.attr( { + "aria-selected": "true", + "aria-expanded": "true", + tabIndex: 0 + } ) + .next() + .attr( { + "aria-hidden": "false" + } ); + } + + this._createIcons(); + + this._setupEvents( options.event ); + + if ( heightStyle === "fill" ) { + maxHeight = parent.height(); + this.element.siblings( ":visible" ).each( function() { + var elem = $( this ), + position = elem.css( "position" ); + + if ( position === "absolute" || position === "fixed" ) { + return; + } + maxHeight -= elem.outerHeight( true ); + } ); + + this.headers.each( function() { + maxHeight -= $( this ).outerHeight( true ); + } ); + + this.headers.next() + .each( function() { + $( this ).height( Math.max( 0, maxHeight - + $( this ).innerHeight() + $( this ).height() ) ); + } ) + .css( "overflow", "auto" ); + } else if ( heightStyle === "auto" ) { + maxHeight = 0; + this.headers.next() + .each( function() { + var isVisible = $( this ).is( ":visible" ); + if ( !isVisible ) { + $( this ).show(); + } + maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); + if ( !isVisible ) { + $( this ).hide(); + } + } ) + .height( maxHeight ); + } + }, + + _activate: function( index ) { + var active = this._findActive( index )[ 0 ]; + + // Trying to activate the already active panel + if ( active === this.active[ 0 ] ) { + return; + } + + // Trying to collapse, simulate a click on the currently active header + active = active || this.active[ 0 ]; + + this._eventHandler( { + target: active, + currentTarget: active, + preventDefault: $.noop + } ); + }, + + _findActive: function( selector ) { + return typeof selector === "number" ? this.headers.eq( selector ) : $(); + }, + + _setupEvents: function( event ) { + var events = { + keydown: "_keydown" + }; + if ( event ) { + $.each( event.split( " " ), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + } ); + } + + this._off( this.headers.add( this.headers.next() ) ); + this._on( this.headers, events ); + this._on( this.headers.next(), { keydown: "_panelKeyDown" } ); + this._hoverable( this.headers ); + this._focusable( this.headers ); + }, + + _eventHandler: function( event ) { + var activeChildren, clickedChildren, + options = this.options, + active = this.active, + clicked = $( event.currentTarget ), + clickedIsActive = clicked[ 0 ] === active[ 0 ], + collapsing = clickedIsActive && options.collapsible, + toShow = collapsing ? $() : clicked.next(), + toHide = active.next(), + eventData = { + oldHeader: active, + oldPanel: toHide, + newHeader: collapsing ? $() : clicked, + newPanel: toShow + }; + + event.preventDefault(); + + if ( + + // click on active header, but not collapsible + ( clickedIsActive && !options.collapsible ) || + + // allow canceling activation + ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { + return; + } + + options.active = collapsing ? false : this.headers.index( clicked ); + + // When the call to ._toggle() comes after the class changes + // it causes a very odd bug in IE 8 (see #6720) + this.active = clickedIsActive ? $() : clicked; + this._toggle( eventData ); + + // Switch classes + // corner classes on the previously active header stay after the animation + this._removeClass( active, "ui-accordion-header-active", "ui-state-active" ); + if ( options.icons ) { + activeChildren = active.children( ".ui-accordion-header-icon" ); + this._removeClass( activeChildren, null, options.icons.activeHeader ) + ._addClass( activeChildren, null, options.icons.header ); + } + + if ( !clickedIsActive ) { + this._removeClass( clicked, "ui-accordion-header-collapsed" ) + ._addClass( clicked, "ui-accordion-header-active", "ui-state-active" ); + if ( options.icons ) { + clickedChildren = clicked.children( ".ui-accordion-header-icon" ); + this._removeClass( clickedChildren, null, options.icons.header ) + ._addClass( clickedChildren, null, options.icons.activeHeader ); + } + + this._addClass( clicked.next(), "ui-accordion-content-active" ); + } + }, + + _toggle: function( data ) { + var toShow = data.newPanel, + toHide = this.prevShow.length ? this.prevShow : data.oldPanel; + + // Handle activating a panel during the animation for another activation + this.prevShow.add( this.prevHide ).stop( true, true ); + this.prevShow = toShow; + this.prevHide = toHide; + + if ( this.options.animate ) { + this._animate( toShow, toHide, data ); + } else { + toHide.hide(); + toShow.show(); + this._toggleComplete( data ); + } + + toHide.attr( { + "aria-hidden": "true" + } ); + toHide.prev().attr( { + "aria-selected": "false", + "aria-expanded": "false" + } ); + + // if we're switching panels, remove the old header from the tab order + // if we're opening from collapsed state, remove the previous header from the tab order + // if we're collapsing, then keep the collapsing header in the tab order + if ( toShow.length && toHide.length ) { + toHide.prev().attr( { + "tabIndex": -1, + "aria-expanded": "false" + } ); + } else if ( toShow.length ) { + this.headers.filter( function() { + return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0; + } ) + .attr( "tabIndex", -1 ); + } + + toShow + .attr( "aria-hidden", "false" ) + .prev() + .attr( { + "aria-selected": "true", + "aria-expanded": "true", + tabIndex: 0 + } ); + }, + + _animate: function( toShow, toHide, data ) { + var total, easing, duration, + that = this, + adjust = 0, + boxSizing = toShow.css( "box-sizing" ), + down = toShow.length && + ( !toHide.length || ( toShow.index() < toHide.index() ) ), + animate = this.options.animate || {}, + options = down && animate.down || animate, + complete = function() { + that._toggleComplete( data ); + }; + + if ( typeof options === "number" ) { + duration = options; + } + if ( typeof options === "string" ) { + easing = options; + } + + // fall back from options to animation in case of partial down settings + easing = easing || options.easing || animate.easing; + duration = duration || options.duration || animate.duration; + + if ( !toHide.length ) { + return toShow.animate( this.showProps, duration, easing, complete ); + } + if ( !toShow.length ) { + return toHide.animate( this.hideProps, duration, easing, complete ); + } + + total = toShow.show().outerHeight(); + toHide.animate( this.hideProps, { + duration: duration, + easing: easing, + step: function( now, fx ) { + fx.now = Math.round( now ); + } + } ); + toShow + .hide() + .animate( this.showProps, { + duration: duration, + easing: easing, + complete: complete, + step: function( now, fx ) { + fx.now = Math.round( now ); + if ( fx.prop !== "height" ) { + if ( boxSizing === "content-box" ) { + adjust += fx.now; + } + } else if ( that.options.heightStyle !== "content" ) { + fx.now = Math.round( total - toHide.outerHeight() - adjust ); + adjust = 0; + } + } + } ); + }, + + _toggleComplete: function( data ) { + var toHide = data.oldPanel, + prev = toHide.prev(); + + this._removeClass( toHide, "ui-accordion-content-active" ); + this._removeClass( prev, "ui-accordion-header-active" ) + ._addClass( prev, "ui-accordion-header-collapsed" ); + + // Work around for rendering bug in IE (#5421) + if ( toHide.length ) { + toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className; + } + this._trigger( "activate", null, data ); + } +} ); + + + +var safeActiveElement = $.ui.safeActiveElement = function( document ) { + var activeElement; + + // Support: IE 9 only + // IE9 throws an "Unspecified error" accessing document.activeElement from an