From 63d5191e9118812066911718e0fe275f5eef73fa Mon Sep 17 00:00:00 2001 From: NukhbaAhmad Date: Thu, 16 Nov 2023 23:57:00 -0800 Subject: [PATCH] Upadated Work --- build/Css/style.css | 25 + build/JS/main.js | 134 + build/index.html | 134 + node_modules/.package-lock.json | 44 + node_modules/@types/jquery/JQuery.d.ts | 13362 +++++++++++++++ node_modules/@types/jquery/JQueryStatic.d.ts | 13941 ++++++++++++++++ node_modules/@types/jquery/LICENSE | 21 + node_modules/@types/jquery/README.md | 15 + .../@types/jquery/dist/jquery.slim.d.ts | 3 + node_modules/@types/jquery/index.d.ts | 7 + node_modules/@types/jquery/legacy.d.ts | 204 + node_modules/@types/jquery/misc.d.ts | 7357 ++++++++ node_modules/@types/jquery/package.json | 132 + node_modules/@types/sizzle/LICENSE | 21 + node_modules/@types/sizzle/README.md | 15 + node_modules/@types/sizzle/index.d.ts | 90 + node_modules/@types/sizzle/package.json | 25 + node_modules/@types/toastr/LICENSE | 21 + node_modules/@types/toastr/README.md | 15 + node_modules/@types/toastr/index.d.ts | 361 + node_modules/@types/toastr/package.json | 27 + node_modules/jquery/AUTHORS.txt | 371 + node_modules/jquery/LICENSE.txt | 20 + node_modules/jquery/README.md | 60 + node_modules/jquery/bower.json | 14 + node_modules/jquery/dist/jquery.js | 10716 ++++++++++++ node_modules/jquery/dist/jquery.min.js | 2 + node_modules/jquery/dist/jquery.min.map | 1 + node_modules/jquery/dist/jquery.slim.js | 8617 ++++++++++ node_modules/jquery/dist/jquery.slim.min.js | 2 + node_modules/jquery/dist/jquery.slim.min.map | 1 + node_modules/jquery/package.json | 122 + node_modules/jquery/src/ajax.js | 876 + node_modules/jquery/src/ajax/jsonp.js | 103 + node_modules/jquery/src/ajax/load.js | 77 + node_modules/jquery/src/ajax/script.js | 74 + node_modules/jquery/src/ajax/var/location.js | 5 + node_modules/jquery/src/ajax/var/nonce.js | 5 + node_modules/jquery/src/ajax/var/rquery.js | 5 + node_modules/jquery/src/ajax/xhr.js | 170 + node_modules/jquery/src/attributes.js | 13 + node_modules/jquery/src/attributes/attr.js | 141 + node_modules/jquery/src/attributes/classes.js | 184 + node_modules/jquery/src/attributes/prop.js | 142 + node_modules/jquery/src/attributes/support.js | 33 + node_modules/jquery/src/attributes/val.js | 191 + node_modules/jquery/src/callbacks.js | 236 + node_modules/jquery/src/core.js | 442 + node_modules/jquery/src/core/DOMEval.js | 43 + node_modules/jquery/src/core/access.js | 72 + node_modules/jquery/src/core/camelCase.js | 23 + node_modules/jquery/src/core/init.js | 129 + node_modules/jquery/src/core/isAttached.js | 26 + node_modules/jquery/src/core/nodeName.js | 13 + node_modules/jquery/src/core/parseHTML.js | 65 + node_modules/jquery/src/core/parseXML.js | 35 + .../jquery/src/core/ready-no-deferred.js | 97 + node_modules/jquery/src/core/ready.js | 86 + .../jquery/src/core/readyException.js | 13 + .../jquery/src/core/stripAndCollapse.js | 14 + node_modules/jquery/src/core/support.js | 20 + node_modules/jquery/src/core/toType.js | 20 + node_modules/jquery/src/core/var/rhtml.js | 7 + .../jquery/src/core/var/rsingleTag.js | 7 + node_modules/jquery/src/css.js | 507 + node_modules/jquery/src/css/addGetHookIf.js | 26 + node_modules/jquery/src/css/adjustCSS.js | 74 + node_modules/jquery/src/css/curCSS.js | 100 + node_modules/jquery/src/css/finalPropName.js | 42 + .../jquery/src/css/hiddenVisibleSelectors.js | 15 + node_modules/jquery/src/css/showHide.js | 105 + node_modules/jquery/src/css/support.js | 152 + node_modules/jquery/src/css/var/cssExpand.js | 5 + node_modules/jquery/src/css/var/getStyles.js | 17 + .../jquery/src/css/var/isHiddenWithinTree.js | 34 + node_modules/jquery/src/css/var/rboxStyle.js | 7 + .../jquery/src/css/var/rcustomProp.js | 7 + node_modules/jquery/src/css/var/rnumnonpx.js | 7 + node_modules/jquery/src/css/var/swap.js | 26 + node_modules/jquery/src/data.js | 180 + node_modules/jquery/src/data/Data.js | 162 + .../jquery/src/data/var/acceptData.js | 19 + node_modules/jquery/src/data/var/dataPriv.js | 7 + node_modules/jquery/src/data/var/dataUser.js | 7 + node_modules/jquery/src/deferred.js | 406 + .../jquery/src/deferred/exceptionHook.js | 25 + node_modules/jquery/src/deprecated.js | 89 + .../jquery/src/deprecated/ajax-event-alias.js | 22 + node_modules/jquery/src/deprecated/event.js | 52 + node_modules/jquery/src/dimensions.js | 60 + node_modules/jquery/src/effects.js | 702 + node_modules/jquery/src/effects/Tween.js | 125 + .../jquery/src/effects/animatedSelector.js | 15 + node_modules/jquery/src/event.js | 970 ++ node_modules/jquery/src/event/trigger.js | 199 + node_modules/jquery/src/exports/amd.js | 26 + node_modules/jquery/src/exports/global.js | 34 + node_modules/jquery/src/jquery.js | 40 + node_modules/jquery/src/manipulation.js | 488 + .../jquery/src/manipulation/_evalUrl.js | 32 + .../jquery/src/manipulation/buildFragment.js | 106 + .../jquery/src/manipulation/getAll.js | 32 + .../jquery/src/manipulation/setGlobalEval.js | 22 + .../jquery/src/manipulation/support.js | 41 + .../src/manipulation/var/rscriptType.js | 5 + .../jquery/src/manipulation/var/rtagName.js | 8 + .../jquery/src/manipulation/wrapMap.js | 30 + node_modules/jquery/src/offset.js | 232 + node_modules/jquery/src/queue.js | 145 + node_modules/jquery/src/queue/delay.js | 23 + node_modules/jquery/src/selector-native.js | 190 + node_modules/jquery/src/selector.js | 2117 +++ node_modules/jquery/src/selector/contains.js | 21 + .../jquery/src/selector/escapeSelector.js | 31 + node_modules/jquery/src/serialize.js | 134 + node_modules/jquery/src/traversing.js | 198 + .../jquery/src/traversing/findFilter.js | 97 + node_modules/jquery/src/traversing/var/dir.js | 22 + .../src/traversing/var/rneedsContext.js | 8 + .../jquery/src/traversing/var/siblings.js | 17 + .../jquery/src/var/ObjectFunctionString.js | 7 + node_modules/jquery/src/var/arr.js | 5 + node_modules/jquery/src/var/class2type.js | 6 + node_modules/jquery/src/var/document.js | 5 + .../jquery/src/var/documentElement.js | 7 + node_modules/jquery/src/var/flat.js | 16 + node_modules/jquery/src/var/fnToString.js | 7 + node_modules/jquery/src/var/getProto.js | 5 + node_modules/jquery/src/var/hasOwn.js | 7 + node_modules/jquery/src/var/indexOf.js | 7 + node_modules/jquery/src/var/isFunction.js | 17 + node_modules/jquery/src/var/isWindow.js | 8 + node_modules/jquery/src/var/pnum.js | 5 + node_modules/jquery/src/var/pop.js | 9 + node_modules/jquery/src/var/push.js | 7 + node_modules/jquery/src/var/rcheckableType.js | 5 + node_modules/jquery/src/var/rcssNum.js | 9 + node_modules/jquery/src/var/rnothtmlwhite.js | 8 + node_modules/jquery/src/var/rtrimCSS.js | 12 + node_modules/jquery/src/var/slice.js | 7 + node_modules/jquery/src/var/sort.js | 9 + node_modules/jquery/src/var/splice.js | 9 + node_modules/jquery/src/var/support.js | 6 + node_modules/jquery/src/var/toString.js | 7 + node_modules/jquery/src/var/whitespace.js | 8 + node_modules/jquery/src/wrap.js | 78 + node_modules/toastr/.gitattributes | 15 + node_modules/toastr/.jscsrc | 90 + node_modules/toastr/.jshintrc | 63 + node_modules/toastr/.npmignore | 58 + node_modules/toastr/.travis.yml | 19 + node_modules/toastr/CHANGELOG.md | 155 + node_modules/toastr/README.md | 250 + node_modules/toastr/build/toastr.css | 228 + node_modules/toastr/build/toastr.js.map | 1 + node_modules/toastr/build/toastr.min.css | 1 + node_modules/toastr/build/toastr.min.js | 2 + node_modules/toastr/demo.html | 351 + node_modules/toastr/gulpfile.js | 172 + node_modules/toastr/karma.conf.js | 73 + .../toastr/nuget/content/content/toastr.css | 180 + .../toastr/nuget/content/content/toastr.less | 232 + .../nuget/content/content/toastr.min.css | 1 + .../toastr/nuget/content/content/toastr.scss | 183 + .../toastr/nuget/content/scripts/toastr.js | 338 + .../nuget/content/scripts/toastr.min.js | 1 + .../nuget/content/scripts/toastr.min.js.map | 8 + node_modules/toastr/nuget/toastr.1.0.0.nupkg | Bin 0 -> 7341 bytes node_modules/toastr/nuget/toastr.1.0.0.nuspec | 35 + node_modules/toastr/nuget/toastr.1.0.1.nupkg | Bin 0 -> 7745 bytes node_modules/toastr/nuget/toastr.1.0.1.nuspec | Bin 0 -> 3764 bytes node_modules/toastr/nuget/toastr.1.0.2.nupkg | Bin 0 -> 7794 bytes node_modules/toastr/nuget/toastr.1.0.2.nuspec | Bin 0 -> 3914 bytes node_modules/toastr/nuget/toastr.1.0.3.nupkg | Bin 0 -> 7761 bytes node_modules/toastr/nuget/toastr.1.0.3.nuspec | 38 + node_modules/toastr/nuget/toastr.1.1.0.nupkg | Bin 0 -> 7789 bytes node_modules/toastr/nuget/toastr.1.1.0.nuspec | 35 + node_modules/toastr/nuget/toastr.1.1.1.nupkg | Bin 0 -> 7789 bytes node_modules/toastr/nuget/toastr.1.1.1.nuspec | 35 + node_modules/toastr/nuget/toastr.1.1.2.nupkg | Bin 0 -> 7850 bytes node_modules/toastr/nuget/toastr.1.1.2.nuspec | 35 + node_modules/toastr/nuget/toastr.1.1.3.nupkg | Bin 0 -> 11781 bytes .../toastr/nuget/toastr.1.1.4.1.nupkg | Bin 0 -> 11768 bytes .../toastr/nuget/toastr.1.1.4.1.nuspec | 40 + .../toastr/nuget/toastr.1.1.4.2.nupkg | Bin 0 -> 11772 bytes .../toastr/nuget/toastr.1.1.4.2.nuspec | 40 + node_modules/toastr/nuget/toastr.1.1.4.nupkg | Bin 0 -> 11802 bytes node_modules/toastr/nuget/toastr.1.1.4.nuspec | 40 + node_modules/toastr/nuget/toastr.1.1.5.nupkg | Bin 0 -> 11634 bytes node_modules/toastr/nuget/toastr.1.1.5.nuspec | 38 + node_modules/toastr/nuget/toastr.1.2.0.nupkg | Bin 0 -> 11716 bytes node_modules/toastr/nuget/toastr.1.2.0.nuspec | 40 + node_modules/toastr/nuget/toastr.1.2.1.nupkg | Bin 0 -> 11728 bytes node_modules/toastr/nuget/toastr.1.2.1.nuspec | 40 + node_modules/toastr/nuget/toastr.1.2.2.nupkg | Bin 0 -> 11719 bytes node_modules/toastr/nuget/toastr.1.2.2.nuspec | 40 + node_modules/toastr/nuget/toastr.1.3.0.nupkg | Bin 0 -> 15020 bytes node_modules/toastr/nuget/toastr.1.3.0.nuspec | 48 + node_modules/toastr/nuget/toastr.1.3.1.nupkg | Bin 0 -> 15568 bytes node_modules/toastr/nuget/toastr.1.3.1.nuspec | 63 + .../toastr/nuget/toastr.2.0.0-rc1.nupkg | Bin 0 -> 19421 bytes .../toastr/nuget/toastr.2.0.0-rc1.nuspec | 49 + node_modules/toastr/nuget/toastr.2.0.1.nupkg | Bin 0 -> 19400 bytes node_modules/toastr/nuget/toastr.2.0.1.nuspec | 49 + node_modules/toastr/nuget/toastr.2.0.2.nupkg | Bin 0 -> 23037 bytes node_modules/toastr/nuget/toastr.2.0.2.nuspec | 41 + node_modules/toastr/nuget/toastr.2.0.3.nupkg | Bin 0 -> 23027 bytes node_modules/toastr/nuget/toastr.2.0.3.nuspec | 41 + node_modules/toastr/package-lock.json | 7707 +++++++++ node_modules/toastr/package.json | 68 + node_modules/toastr/release checklist.md | 32 + node_modules/toastr/tests/qunit/qunit.css | 244 + node_modules/toastr/tests/qunit/qunit.js | 2212 +++ node_modules/toastr/tests/toastr-tests.html | 21 + .../toastr/tests/unit/qunit-helper.js | 13 + .../toastr/tests/unit/toastr-tests.js | 861 + node_modules/toastr/tests/unit/x.js | 3 + node_modules/toastr/toastr-icon.png | Bin 0 -> 25510 bytes node_modules/toastr/toastr.js | 476 + node_modules/toastr/toastr.less | 302 + node_modules/toastr/toastr.scss | 201 + package-lock.json | 52 + package.json | 8 + src/main.ts | 159 + tsconfig.json | 109 + 225 files changed, 83422 insertions(+) create mode 100644 build/Css/style.css create mode 100644 build/JS/main.js create mode 100644 build/index.html create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/@types/jquery/JQuery.d.ts create mode 100644 node_modules/@types/jquery/JQueryStatic.d.ts create mode 100644 node_modules/@types/jquery/LICENSE create mode 100644 node_modules/@types/jquery/README.md create mode 100644 node_modules/@types/jquery/dist/jquery.slim.d.ts create mode 100644 node_modules/@types/jquery/index.d.ts create mode 100644 node_modules/@types/jquery/legacy.d.ts create mode 100644 node_modules/@types/jquery/misc.d.ts create mode 100644 node_modules/@types/jquery/package.json create mode 100644 node_modules/@types/sizzle/LICENSE create mode 100644 node_modules/@types/sizzle/README.md create mode 100644 node_modules/@types/sizzle/index.d.ts create mode 100644 node_modules/@types/sizzle/package.json create mode 100644 node_modules/@types/toastr/LICENSE create mode 100644 node_modules/@types/toastr/README.md create mode 100644 node_modules/@types/toastr/index.d.ts create mode 100644 node_modules/@types/toastr/package.json create mode 100644 node_modules/jquery/AUTHORS.txt create mode 100644 node_modules/jquery/LICENSE.txt create mode 100644 node_modules/jquery/README.md create mode 100644 node_modules/jquery/bower.json create mode 100644 node_modules/jquery/dist/jquery.js create mode 100644 node_modules/jquery/dist/jquery.min.js create mode 100644 node_modules/jquery/dist/jquery.min.map create mode 100644 node_modules/jquery/dist/jquery.slim.js create mode 100644 node_modules/jquery/dist/jquery.slim.min.js create mode 100644 node_modules/jquery/dist/jquery.slim.min.map create mode 100644 node_modules/jquery/package.json create mode 100644 node_modules/jquery/src/ajax.js create mode 100644 node_modules/jquery/src/ajax/jsonp.js create mode 100644 node_modules/jquery/src/ajax/load.js create mode 100644 node_modules/jquery/src/ajax/script.js create mode 100644 node_modules/jquery/src/ajax/var/location.js create mode 100644 node_modules/jquery/src/ajax/var/nonce.js create mode 100644 node_modules/jquery/src/ajax/var/rquery.js create mode 100644 node_modules/jquery/src/ajax/xhr.js create mode 100644 node_modules/jquery/src/attributes.js create mode 100644 node_modules/jquery/src/attributes/attr.js create mode 100644 node_modules/jquery/src/attributes/classes.js create mode 100644 node_modules/jquery/src/attributes/prop.js create mode 100644 node_modules/jquery/src/attributes/support.js create mode 100644 node_modules/jquery/src/attributes/val.js create mode 100644 node_modules/jquery/src/callbacks.js create mode 100644 node_modules/jquery/src/core.js create mode 100644 node_modules/jquery/src/core/DOMEval.js create mode 100644 node_modules/jquery/src/core/access.js create mode 100644 node_modules/jquery/src/core/camelCase.js create mode 100644 node_modules/jquery/src/core/init.js create mode 100644 node_modules/jquery/src/core/isAttached.js create mode 100644 node_modules/jquery/src/core/nodeName.js create mode 100644 node_modules/jquery/src/core/parseHTML.js create mode 100644 node_modules/jquery/src/core/parseXML.js create mode 100644 node_modules/jquery/src/core/ready-no-deferred.js create mode 100644 node_modules/jquery/src/core/ready.js create mode 100644 node_modules/jquery/src/core/readyException.js create mode 100644 node_modules/jquery/src/core/stripAndCollapse.js create mode 100644 node_modules/jquery/src/core/support.js create mode 100644 node_modules/jquery/src/core/toType.js create mode 100644 node_modules/jquery/src/core/var/rhtml.js create mode 100644 node_modules/jquery/src/core/var/rsingleTag.js create mode 100644 node_modules/jquery/src/css.js create mode 100644 node_modules/jquery/src/css/addGetHookIf.js create mode 100644 node_modules/jquery/src/css/adjustCSS.js create mode 100644 node_modules/jquery/src/css/curCSS.js create mode 100644 node_modules/jquery/src/css/finalPropName.js create mode 100644 node_modules/jquery/src/css/hiddenVisibleSelectors.js create mode 100644 node_modules/jquery/src/css/showHide.js create mode 100644 node_modules/jquery/src/css/support.js create mode 100644 node_modules/jquery/src/css/var/cssExpand.js create mode 100644 node_modules/jquery/src/css/var/getStyles.js create mode 100644 node_modules/jquery/src/css/var/isHiddenWithinTree.js create mode 100644 node_modules/jquery/src/css/var/rboxStyle.js create mode 100644 node_modules/jquery/src/css/var/rcustomProp.js create mode 100644 node_modules/jquery/src/css/var/rnumnonpx.js create mode 100644 node_modules/jquery/src/css/var/swap.js create mode 100644 node_modules/jquery/src/data.js create mode 100644 node_modules/jquery/src/data/Data.js create mode 100644 node_modules/jquery/src/data/var/acceptData.js create mode 100644 node_modules/jquery/src/data/var/dataPriv.js create mode 100644 node_modules/jquery/src/data/var/dataUser.js create mode 100644 node_modules/jquery/src/deferred.js create mode 100644 node_modules/jquery/src/deferred/exceptionHook.js create mode 100644 node_modules/jquery/src/deprecated.js create mode 100644 node_modules/jquery/src/deprecated/ajax-event-alias.js create mode 100644 node_modules/jquery/src/deprecated/event.js create mode 100644 node_modules/jquery/src/dimensions.js create mode 100644 node_modules/jquery/src/effects.js create mode 100644 node_modules/jquery/src/effects/Tween.js create mode 100644 node_modules/jquery/src/effects/animatedSelector.js create mode 100644 node_modules/jquery/src/event.js create mode 100644 node_modules/jquery/src/event/trigger.js create mode 100644 node_modules/jquery/src/exports/amd.js create mode 100644 node_modules/jquery/src/exports/global.js create mode 100644 node_modules/jquery/src/jquery.js create mode 100644 node_modules/jquery/src/manipulation.js create mode 100644 node_modules/jquery/src/manipulation/_evalUrl.js create mode 100644 node_modules/jquery/src/manipulation/buildFragment.js create mode 100644 node_modules/jquery/src/manipulation/getAll.js create mode 100644 node_modules/jquery/src/manipulation/setGlobalEval.js create mode 100644 node_modules/jquery/src/manipulation/support.js create mode 100644 node_modules/jquery/src/manipulation/var/rscriptType.js create mode 100644 node_modules/jquery/src/manipulation/var/rtagName.js create mode 100644 node_modules/jquery/src/manipulation/wrapMap.js create mode 100644 node_modules/jquery/src/offset.js create mode 100644 node_modules/jquery/src/queue.js create mode 100644 node_modules/jquery/src/queue/delay.js create mode 100644 node_modules/jquery/src/selector-native.js create mode 100644 node_modules/jquery/src/selector.js create mode 100644 node_modules/jquery/src/selector/contains.js create mode 100644 node_modules/jquery/src/selector/escapeSelector.js create mode 100644 node_modules/jquery/src/serialize.js create mode 100644 node_modules/jquery/src/traversing.js create mode 100644 node_modules/jquery/src/traversing/findFilter.js create mode 100644 node_modules/jquery/src/traversing/var/dir.js create mode 100644 node_modules/jquery/src/traversing/var/rneedsContext.js create mode 100644 node_modules/jquery/src/traversing/var/siblings.js create mode 100644 node_modules/jquery/src/var/ObjectFunctionString.js create mode 100644 node_modules/jquery/src/var/arr.js create mode 100644 node_modules/jquery/src/var/class2type.js create mode 100644 node_modules/jquery/src/var/document.js create mode 100644 node_modules/jquery/src/var/documentElement.js create mode 100644 node_modules/jquery/src/var/flat.js create mode 100644 node_modules/jquery/src/var/fnToString.js create mode 100644 node_modules/jquery/src/var/getProto.js create mode 100644 node_modules/jquery/src/var/hasOwn.js create mode 100644 node_modules/jquery/src/var/indexOf.js create mode 100644 node_modules/jquery/src/var/isFunction.js create mode 100644 node_modules/jquery/src/var/isWindow.js create mode 100644 node_modules/jquery/src/var/pnum.js create mode 100644 node_modules/jquery/src/var/pop.js create mode 100644 node_modules/jquery/src/var/push.js create mode 100644 node_modules/jquery/src/var/rcheckableType.js create mode 100644 node_modules/jquery/src/var/rcssNum.js create mode 100644 node_modules/jquery/src/var/rnothtmlwhite.js create mode 100644 node_modules/jquery/src/var/rtrimCSS.js create mode 100644 node_modules/jquery/src/var/slice.js create mode 100644 node_modules/jquery/src/var/sort.js create mode 100644 node_modules/jquery/src/var/splice.js create mode 100644 node_modules/jquery/src/var/support.js create mode 100644 node_modules/jquery/src/var/toString.js create mode 100644 node_modules/jquery/src/var/whitespace.js create mode 100644 node_modules/jquery/src/wrap.js create mode 100644 node_modules/toastr/.gitattributes create mode 100644 node_modules/toastr/.jscsrc create mode 100644 node_modules/toastr/.jshintrc create mode 100644 node_modules/toastr/.npmignore create mode 100644 node_modules/toastr/.travis.yml create mode 100644 node_modules/toastr/CHANGELOG.md create mode 100644 node_modules/toastr/README.md create mode 100644 node_modules/toastr/build/toastr.css create mode 100644 node_modules/toastr/build/toastr.js.map create mode 100644 node_modules/toastr/build/toastr.min.css create mode 100644 node_modules/toastr/build/toastr.min.js create mode 100644 node_modules/toastr/demo.html create mode 100644 node_modules/toastr/gulpfile.js create mode 100644 node_modules/toastr/karma.conf.js create mode 100644 node_modules/toastr/nuget/content/content/toastr.css create mode 100644 node_modules/toastr/nuget/content/content/toastr.less create mode 100644 node_modules/toastr/nuget/content/content/toastr.min.css create mode 100644 node_modules/toastr/nuget/content/content/toastr.scss create mode 100644 node_modules/toastr/nuget/content/scripts/toastr.js create mode 100644 node_modules/toastr/nuget/content/scripts/toastr.min.js create mode 100644 node_modules/toastr/nuget/content/scripts/toastr.min.js.map create mode 100644 node_modules/toastr/nuget/toastr.1.0.0.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.0.0.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.0.1.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.0.1.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.0.2.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.0.2.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.0.3.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.0.3.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.1.0.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.1.0.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.1.1.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.1.1.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.1.2.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.1.2.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.1.3.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.1.4.1.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.1.4.1.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.1.4.2.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.1.4.2.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.1.4.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.1.4.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.1.5.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.1.5.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.2.0.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.2.0.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.2.1.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.2.1.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.2.2.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.2.2.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.3.0.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.3.0.nuspec create mode 100644 node_modules/toastr/nuget/toastr.1.3.1.nupkg create mode 100644 node_modules/toastr/nuget/toastr.1.3.1.nuspec create mode 100644 node_modules/toastr/nuget/toastr.2.0.0-rc1.nupkg create mode 100644 node_modules/toastr/nuget/toastr.2.0.0-rc1.nuspec create mode 100644 node_modules/toastr/nuget/toastr.2.0.1.nupkg create mode 100644 node_modules/toastr/nuget/toastr.2.0.1.nuspec create mode 100644 node_modules/toastr/nuget/toastr.2.0.2.nupkg create mode 100644 node_modules/toastr/nuget/toastr.2.0.2.nuspec create mode 100644 node_modules/toastr/nuget/toastr.2.0.3.nupkg create mode 100644 node_modules/toastr/nuget/toastr.2.0.3.nuspec create mode 100644 node_modules/toastr/package-lock.json create mode 100644 node_modules/toastr/package.json create mode 100644 node_modules/toastr/release checklist.md create mode 100644 node_modules/toastr/tests/qunit/qunit.css create mode 100644 node_modules/toastr/tests/qunit/qunit.js create mode 100644 node_modules/toastr/tests/toastr-tests.html create mode 100644 node_modules/toastr/tests/unit/qunit-helper.js create mode 100644 node_modules/toastr/tests/unit/toastr-tests.js create mode 100644 node_modules/toastr/tests/unit/x.js create mode 100644 node_modules/toastr/toastr-icon.png create mode 100644 node_modules/toastr/toastr.js create mode 100644 node_modules/toastr/toastr.less create mode 100644 node_modules/toastr/toastr.scss create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/main.ts create mode 100644 tsconfig.json diff --git a/build/Css/style.css b/build/Css/style.css new file mode 100644 index 0000000..ea24534 --- /dev/null +++ b/build/Css/style.css @@ -0,0 +1,25 @@ +* { + padding: 0; + margin: 0; +} + +.welcome { + font-size: 40px; + font-weight: bold; + + font-family: monospace; +} +.masterTask { + font-style: italic; + font-family: monospace; +} +.actionButtons { + width: 9%; + border-radius: 3px; +} +.taskBoxBorder { + border: 2px solid #928686; +} +.editAction { + border-radius: 3px; +} diff --git a/build/JS/main.js b/build/JS/main.js new file mode 100644 index 0000000..124e292 --- /dev/null +++ b/build/JS/main.js @@ -0,0 +1,134 @@ +"use strict"; +// ifSavedlocallyAnyTask +const taskFromStorage = localStorage.getItem("tasksList"); +// Input Element +const inputTask = document.getElementById("inputTask"); +// Add Button +const addButton = document.querySelector(".addTask"); +// Save button +const saveTask = document.querySelector(".saveTask"); +// Task Container +const taskListContainer = document.querySelector(".taskListContainer"); +// TaskList +let tasksList = []; +// handleTaskDisplay +const handleTask = () => { + displayTask(tasksList); + inputTask.value = ""; +}; +// dispalyAllTodoToUser +const displayTask = (taskList) => { + let htmlTaskString = ""; + taskList.map((task) => { + htmlTaskString += `
+
+ + + +
+ +
+ + + + + +
+ +
+ + `; + }); + taskListContainer.innerHTML = htmlTaskString; +}; +// localSavedDataAddedToTaskList +if (taskFromStorage) { + tasksList = JSON.parse(taskFromStorage); + handleTask(); +} +// addingTaskOnClick[add] +addButton === null || addButton === void 0 ? void 0 : addButton.addEventListener("click", () => { + const userTask = inputTask.value; + if (userTask) { + tasksList.push({ + id: tasksList.length + 1, + task: userTask, + isCompleted: false, + }); + handleTask(); + } + else { + toastr.error("Kindly Enter the Task.", "Note:", { + positionClass: "toast-bottom-right", + showDuration: 70, + closeButton: true, + progressBar: false, + preventDuplicates: true, + }); + } +}); +// editTask +const taskToEdit = document.querySelector(".taskToEdit"); +let taskIdToEdit; +const editTask = (id) => { + taskIdToEdit = id; + // toFindObjectWithTaskToBeEditedId + tasksList.forEach((task) => { + if (task.id == taskIdToEdit) { + console.log(taskToEdit); + taskToEdit.value = task.task; + } + }); +}; +// savingTheEditedTaskToObject +const saveEditedTask = () => { + if (taskToEdit.value == "") { + toastr.error("Kindly Enter the Task.Task is not edited.", "Note:", { + positionClass: "toast-bottom-right", + showDuration: 70, + closeButton: true, + progressBar: false, + preventDuplicates: true, + }); + } + else { + tasksList[taskIdToEdit - 1].task = taskToEdit.value; + handleTask(); + } +}; +// deleteTaskonClick[delete] +const deleteTask = (taskIdToRemove) => { + tasksList = tasksList.filter((task) => task.id != taskIdToRemove); + displayTask(tasksList); +}; +// updateTaskStatus[checkbox - complete/incomplete] +const taskCompletionStatus = (taskStatusToUpdate) => { + tasksList.find((task) => { + if (task.id == taskStatusToUpdate) { + task.isCompleted = !task.isCompleted; + } + }); +}; +// userSearchForAnyTask +const searchTasks = (toSearch) => { + let searchedTasks = []; + // userTypedSomething + if (toSearch !== "") { + // filterTaskSavedToArray - noChangesMadeToTasksList + searchedTasks = tasksList.filter((task) => { + const Data = Object.values(task).join("").toLowerCase(); + if (Data.includes(toSearch.toLowerCase())) { + return task; + } + }); + } + else { + searchedTasks = tasksList; + } + // showTheSearchedTasks => [ tasksList/SearchedTasks] + displayTask(searchedTasks); +}; +// saveToLocalStorageOnClick[save] +saveTask === null || saveTask === void 0 ? void 0 : saveTask.addEventListener("click", () => { + localStorage.setItem("tasksList", JSON.stringify(tasksList)); +}); diff --git a/build/index.html b/build/index.html new file mode 100644 index 0000000..d9a3b74 --- /dev/null +++ b/build/index.html @@ -0,0 +1,134 @@ + + + + + + TodoForge + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

TodoForge

+

"Master your day, one task at a time."

+
+
+ + +
+
+
+ +
+
+
+ +
+
+
+ + + +
+
+
+ + +
+
+
+
+ +
+
+ +
+
+
+
+
+ + + +
+
+ + + +
+
+ + + + diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..cab6e57 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,44 @@ +{ + "name": "1_TodoForge", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@types/jquery": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.27.tgz", + "integrity": "sha512-TR28Y8ezIGgfyA02UOh9x+Fy16/1qWYAnvtRd2gTBJuccX/vmddyti0MezLkTv7f+OLofVc2T961VPyKv1tXJQ==", + "dev": true, + "dependencies": { + "@types/sizzle": "*" + } + }, + "node_modules/@types/sizzle": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.6.tgz", + "integrity": "sha512-m04Om5Gz6kbjUwAQ7XJJQ30OdEFsSmAVsvn4NYwcTRyMVpKKa1aPuESw1n2CxS5fYkOQv3nHgDKeNa8e76fUkw==", + "dev": true + }, + "node_modules/@types/toastr": { + "version": "2.1.43", + "resolved": "https://registry.npmjs.org/@types/toastr/-/toastr-2.1.43.tgz", + "integrity": "sha512-sLC2fr2OXeE1iyhUixpQ64wQ2tA26awmLidn4tXTLBz4yP/VhtYUKHpmiIyDtztKkHjucdiTLH8F5uRRyhNi2Q==", + "dev": true, + "dependencies": { + "@types/jquery": "*" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, + "node_modules/toastr": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", + "integrity": "sha512-LIy77F5n+sz4tefMmFOntcJ6HL0Fv3k1TDnNmFZ0bU/GcvIIfy6eG2v7zQmMiYgaalAiUv75ttFrPn5s0gyqlA==", + "dependencies": { + "jquery": ">=1.12.0" + } + } + } +} diff --git a/node_modules/@types/jquery/JQuery.d.ts b/node_modules/@types/jquery/JQuery.d.ts new file mode 100644 index 0000000..61d6b6e --- /dev/null +++ b/node_modules/@types/jquery/JQuery.d.ts @@ -0,0 +1,13362 @@ +// tslint:disable:jsdoc-format +// tslint:disable:no-irregular-whitespace + +interface JQuery extends Iterable { + /** + * A string containing the jQuery version number. + * @see \`{@link https://api.jquery.com/jquery-2/#jquery1 }\` + * @since 1.0 + * @example ​ ````Determine if an object is a jQuery object +```javascript +var a = { what: "A regular JS object" }, + b = $( "body" ); +​ +if ( a.jquery ) { // Falsy, since it's undefined + alert( "a is a jQuery object!" ); +} +​ +if ( b.jquery ) { // Truthy, since it's a string + alert( "b is a jQuery object!" ); +} +``` + * @example ​ ````Get the current version of jQuery running on the page +```javascript +alert( "You are running jQuery version: " + $.fn.jquery ); +``` + */ + jquery: string; + /** + * The number of elements in the jQuery object. + * @see \`{@link https://api.jquery.com/length/ }\` + * @since 1.0 + * @example ​ ````Count the divs. Click to add more. +```html + + + + + length demo + + + + +​ +
​ + +​ + + +``` + */ + length: number; + /** + * Create a new jQuery object with elements added to the set of matched elements. + * @param selector A string representing a selector expression to find additional elements to add to the set of matched elements. + * @param context The point in the document at which the selector should begin matching; similar to the context + * argument of the $(selector, context) method. + * @see \`{@link https://api.jquery.com/add/ }\` + * @since 1.4 + */ + add(selector: JQuery.Selector, context: Element): this; + // TODO: The return type should reflect newly selected types. + /** + * Create a new jQuery object with elements added to the set of matched elements. + * @param selector_elements_html_selection _@param_ `selector_elements_html_selection` + *
+ * * `selector` — A string representing a selector expression to find additional elements to add to the set of matched elements.
+ * * `elements` — One or more elements to add to the set of matched elements.
+ * * `html` — An HTML fragment to add to the set of matched elements.
+ * * `selection` — An existing jQuery object to add to the set of matched elements. + * @see \`{@link https://api.jquery.com/add/ }\` + * @since 1.0 + * @since 1.3.2 + * @example ​ ````Finds all divs and makes a border. Then adds all paragraphs to the jQuery object to set their backgrounds yellow. +```html + + + + + add demo + + + + +​ +
+
+
+
+
+
+​ +

Added this... (notice no border)

+​ + +​ + + +``` + * @example ​ ````Adds more elements, matched by the given expression, to the set of matched elements. +```html + + + + + add demo + + + +​ +

Hello

+Hello Again +​ + +​ + + +``` + * @example ​ ````Adds more elements, created on the fly, to the set of matched elements. +```html + + + + + add demo + + + +​ +

Hello

+​ + +​ + + +``` + * @example ​ ````Adds one or more Elements to the set of matched elements. +```html + + + + + add demo + + + +​ +

Hello

+Hello Again +​ + +​ + + +``` + * @example ​ ````Demonstrates how to add (or push) elements to an existing collection +```html + + + + + add demo + + + +​ +

Hello

+Hello Again +​ + +​ + + +``` + */ + add( + selector_elements_html_selection: + | JQuery.Selector + | JQuery.TypeOrArray + | JQuery.htmlString + | JQuery + | JQuery.Node, + ): this; + /** + * Add the previous set of elements on the stack to the current set, optionally filtered by a selector. + * @param selector A string containing a selector expression to match the current set of elements against. + * @see \`{@link https://api.jquery.com/addBack/ }\` + * @since 1.8 + * @example ​ ````The .addBack() method causes the previous set of DOM elements in the traversal stack to be added to the current set. In the first example, the top stack contains the set resulting from .find("p"). In the second example, .addBack() adds the previous set of elements on the stack — in this case $("div.after-addback") — to the current set, selecting both the div and its enclosed paragraphs. +```html + + + + + addBack demo + + + + +​ +
+

Before addBack()

+
+

First Paragraph

+

Second Paragraph

+
+
+
+

After addBack()

+
+

First Paragraph

+

Second Paragraph

+
+
+​ + +​ + + +``` + */ + addBack(selector?: JQuery.Selector): this; + /** + * Adds the specified class(es) to each element in the set of matched elements. + * @param className_function _@param_ `className_function` + *
+ * * `className` — One or more space-separated classes to be added to the class attribute of each matched element.
+ * * `function` — A function returning one or more space-separated class names to be added to the existing class + * name(s). Receives the index position of the element in the set and the existing class name(s) as + * arguments. Within the function, `this` refers to the current element in the set. + * @see \`{@link https://api.jquery.com/addClass/ }\` + * @since 1.0 + * @since 1.4 + * @since 3.3 + * @example ​ ````Add the class "selected" to the matched elements. +```html + + + + + addClass demo + + + + +​ +

Hello

+

and

+

Goodbye

+​ + +​ + + +``` + * @example ​ ````Add the classes "selected" and "highlight" to the matched elements. +```html + + + + + addClass demo + + + + +​ +

Hello

+

and

+

Goodbye

+​ + +​ + + +``` + * @example ​ ````Pass in a function to .addClass() to add the "green" class to a div that already has a "red" class. +```html + + + + + addClass demo + + + + +​ +
This div should be white
+
This div will be green because it now has the "green" and "red" classes. + It would be red if the addClass function failed.
+
This div should be white
+

There are zero green divs

+​ + +​ + + +``` + */ + addClass( + className_function: + | JQuery.TypeOrArray + | ((this: TElement, index: number, currentClassName: string) => string), + ): this; + /** + * Insert content, specified by the parameter, after each element in the set of matched elements. + * @param contents One or more additional DOM elements, text nodes, arrays of elements and text nodes, HTML strings, or + * jQuery objects to insert after each element in the set of matched elements. + * @see \`{@link https://api.jquery.com/after/ }\` + * @since 1.0 + * @example ​ ````Inserts some HTML after all paragraphs. +```html + + + + + after demo + + + + +​ +

I would like to say:

+​ + +​ + + +``` + * @example ​ ````Inserts a DOM element after all paragraphs. +```html + + + + + after demo + + + + +​ +

I would like to say:

+​ + +​ + + +``` + * @example ​ ````Inserts a jQuery object (similar to an Array of DOM Elements) after all paragraphs. +```html + + + + + after demo + + + + +​ +Hello +

I would like to say:

+​ + +​ + + +``` + */ + after(...contents: Array>>): this; + /** + * Insert content, specified by the parameter, after each element in the set of matched elements. + * @param function_functionーhtml _@param_ `function_functionーhtml` + *
+ * * `function` — A function that returns an HTML string, DOM element(s), text node(s), or jQuery object to insert + * after each element in the set of matched elements. Receives the index position of the element in the + * set as an argument. Within the function, `this` refers to the current element in the set.
+ * * `functionーhtml` — A function that returns an HTML string, DOM element(s), text node(s), or jQuery object to insert + * after each element in the set of matched elements. Receives the index position of the element in the + * set and the old HTML value of the element as arguments. Within the function, `this` refers to the + * current element in the set. + * @see \`{@link https://api.jquery.com/after/ }\` + * @since 1.4 + * @since 1.10 + */ + after( + function_functionーhtml: ( + this: TElement, + index: number, + html: string, + ) => JQuery.htmlString | JQuery.TypeOrArray>, + ): this; + /** + * Register a handler to be called when Ajax requests complete. This is an AjaxEvent. + * @param handler The function to be invoked. + * @see \`{@link https://api.jquery.com/ajaxComplete/ }\` + * @since 1.0 + * @example ​ ````Show a message when an Ajax request completes. +```javascript +$( document ).ajaxComplete(function( event, request, settings ) { + $( "#msg" ).append( "
  • Request Complete.
  • " ); +}); +``` + */ + ajaxComplete( + handler: ( + this: Document, + event: JQuery.TriggeredEvent, + jqXHR: JQuery.jqXHR, + ajaxOptions: JQuery.AjaxSettings, + ) => void | false, + ): this; + /** + * Register a handler to be called when Ajax requests complete with an error. This is an Ajax Event. + * @param handler The function to be invoked. + * @see \`{@link https://api.jquery.com/ajaxError/ }\` + * @since 1.0 + * @example ​ ````Show a message when an Ajax request fails. +```javascript +$( document ).ajaxError(function( event, request, settings ) { + $( "#msg" ).append( "
  • Error requesting page " + settings.url + "
  • " ); +}); +``` + */ + ajaxError( + handler: ( + this: Document, + event: JQuery.TriggeredEvent, + jqXHR: JQuery.jqXHR, + ajaxSettings: JQuery.AjaxSettings, + thrownError: string, + ) => void | false, + ): this; + /** + * Attach a function to be executed before an Ajax request is sent. This is an Ajax Event. + * @param handler The function to be invoked. + * @see \`{@link https://api.jquery.com/ajaxSend/ }\` + * @since 1.0 + * @example ​ ````Show a message before an Ajax request is sent. +```javascript +$( document ).ajaxSend(function( event, request, settings ) { + $( "#msg" ).append( "
  • Starting request at " + settings.url + "
  • " ); +}); +``` + */ + ajaxSend( + handler: ( + this: Document, + event: JQuery.TriggeredEvent, + jqXHR: JQuery.jqXHR, + ajaxOptions: JQuery.AjaxSettings, + ) => void | false, + ): this; + /** + * Register a handler to be called when the first Ajax request begins. This is an Ajax Event. + * @param handler The function to be invoked. + * @see \`{@link https://api.jquery.com/ajaxStart/ }\` + * @since 1.0 + * @example ​ ````Show a loading message whenever an Ajax request starts (and none is already active). +```javascript +$( document ).ajaxStart(function() { + $( "#loading" ).show(); +}); +``` + */ + ajaxStart(handler: (this: Document) => void | false): this; + /** + * Register a handler to be called when all Ajax requests have completed. This is an Ajax Event. + * @param handler The function to be invoked. + * @see \`{@link https://api.jquery.com/ajaxStop/ }\` + * @since 1.0 + * @example ​ ````Hide a loading message after all the Ajax requests have stopped. +```javascript +$( document ).ajaxStop(function() { + $( "#loading" ).hide(); +}); +``` + */ + ajaxStop(handler: (this: Document) => void | false): this; + /** + * Attach a function to be executed whenever an Ajax request completes successfully. This is an Ajax Event. + * @param handler The function to be invoked. + * @see \`{@link https://api.jquery.com/ajaxSuccess/ }\` + * @since 1.0 + * @example ​ ````Show a message when an Ajax request completes successfully. +```javascript +$( document ).ajaxSuccess(function( event, request, settings ) { + $( "#msg" ).append( "
  • Successful Request!
  • " ); +}); +``` + */ + ajaxSuccess( + handler: ( + this: Document, + event: JQuery.TriggeredEvent, + jqXHR: JQuery.jqXHR, + ajaxOptions: JQuery.AjaxSettings, + data: JQuery.PlainObject, + ) => void | false, + ): this; + /** + * Perform a custom animation of a set of CSS properties. + * @param properties An object of CSS properties and values that the animation will move toward. + * @param duration A string or number determining how long the animation will run. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/animate/ }\` + * @since 1.0 + * @example ​ ````An example of using an 'easing' function to provide a different style of animation. This will only work if you have a plugin that provides this easing function. Note, this code will do nothing unless the paragraph element is hidden. +```javascript +$( "p" ).animate({ + opacity: "show" +}, "slow", "easein" ); +``` + * @example ​ ````Animate all paragraphs and execute a callback function when the animation is complete. The first argument is an object of CSS properties, the second specifies that the animation should take 1000 milliseconds to complete, the third states the easing type, and the fourth argument is an anonymous callback function. +```javascript +$( "p" ).animate({ + height: 200, + width: 400, + opacity: 0.5 +}, 1000, "linear", function() { + alert( "all done" ); +}); +``` + */ + animate( + properties: JQuery.PlainObject, + duration: JQuery.Duration, + easing: string, + complete?: (this: TElement) => void, + ): this; + /** + * Perform a custom animation of a set of CSS properties. + * @param properties An object of CSS properties and values that the animation will move toward. + * @param duration_easing _@param_ `duration_easing` + *
    + * * `duration` — A string or number determining how long the animation will run.
    + * * `easing` — A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/animate/ }\` + * @since 1.0 + * @example ​ ````Click the button to animate the div with a number of different properties. +```html + + + + + animate demo + + + + +​ + +
    Hello!
    +​ + +​ + + +``` + * @example ​ ````Animates a div's left property with a relative value. Click several times on the buttons to see the relative animations queued up. +```html + + + + + animate demo + + + + +​ + + +
    +​ + +​ + + +``` + * @example ​ ````Animate all paragraphs to toggle both height and opacity, completing the animation within 600 milliseconds. +```javascript +$( "p" ).animate({ + height: "toggle", + opacity: "toggle" +}, "slow" ); +``` + * @example ​ ````Animate all paragraphs to a left style of 50 and opacity of 1 (opaque, visible), completing the animation within 500 milliseconds. +```javascript +$( "p" ).animate({ + left: 50, + opacity: 1 +}, 500 ); +``` + */ + animate( + properties: JQuery.PlainObject, + duration_easing: JQuery.Duration | string, + complete?: (this: TElement) => void, + ): this; + /** + * Perform a custom animation of a set of CSS properties. + * @param properties An object of CSS properties and values that the animation will move toward. + * @param options A map of additional options to pass to the method. + * @see \`{@link https://api.jquery.com/animate/ }\` + * @since 1.0 + * @example ​ ````The first button shows how an unqueued animation works. It expands the div out to 90% width while the font-size is increasing. Once the font-size change is complete, the border animation will begin. + +The second button starts a traditional chained animation, where each animation will start once the previous animation on the element has completed. +```html + + + + + animate demo + + + + +​ + + + + +
    Block1
    +
    Block2
    +​ + +​ + + +``` + * @example ​ ````Animates the first div's left property and synchronizes the remaining divs, using the step function to set their left properties at each stage of the animation. +```html + + + + + animate demo + + + + +​ +

    +
    +
    +
    +
    +
    +
    +​ + +​ + + +``` + * @example ​ ````Animate the left and opacity style properties of all paragraphs; run the animation outside the queue, so that it will automatically start without waiting for its turn. +```javascript +$( "p" ).animate({ + left: "50px", + opacity: 1 +}, { + duration: 500, + queue: false +}); +``` + * @example ​ ````Animates all paragraphs to toggle both height and opacity, completing the animation within 600 milliseconds. +```javascript +$( "p" ).animate({ + height: "toggle", + opacity: "toggle" +}, { + duration: "slow" +}); +``` + * @example ​ ````Use an easing function to provide a different style of animation. This will only work if you have a plugin that provides this easing function. +```javascript +$( "p" ).animate({ + opacity: "show" +}, { + duration: "slow", + easing: "easein" +}); +``` + */ + animate(properties: JQuery.PlainObject, options: JQuery.EffectsOptions): this; + /** + * Perform a custom animation of a set of CSS properties. + * @param properties An object of CSS properties and values that the animation will move toward. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/animate/ }\` + * @since 1.0 + */ + animate(properties: JQuery.PlainObject, complete?: (this: TElement) => void): this; + /** + * Insert content, specified by the parameter, to the end of each element in the set of matched elements. + * @param contents One or more additional DOM elements, text nodes, arrays of elements and text nodes, HTML strings, or + * jQuery objects to insert at the end of each element in the set of matched elements. + * @see \`{@link https://api.jquery.com/append/ }\` + * @since 1.0 + * @example ​ ````Appends some HTML to all paragraphs. +```html + + + + + append demo + + + + +​ +

    I would like to say:

    +​ + +​ + + +``` + * @example ​ ````Appends an Element to all paragraphs. +```html + + + + + append demo + + + + +​ +

    I would like to say:

    +​ + +​ + + +``` + * @example ​ ````Appends a jQuery object (similar to an Array of DOM Elements) to all paragraphs. +```html + + + + + append demo + + + + +​ +Hello world!!! +

    I would like to say:

    +​ + +​ + + +``` + */ + append(...contents: Array>>): this; + /** + * Insert content, specified by the parameter, to the end of each element in the set of matched elements. + * @param funсtion A function that returns an HTML string, DOM element(s), text node(s), or jQuery object to insert at + * the end of each element in the set of matched elements. Receives the index position of the element + * in the set and the old HTML value of the element as arguments. Within the function, `this` refers to + * the current element in the set. + * @see \`{@link https://api.jquery.com/append/ }\` + * @since 1.4 + */ + append( + funсtion: ( + this: TElement, + index: number, + html: string, + ) => JQuery.htmlString | JQuery.TypeOrArray>, + ): this; + /** + * Insert every element in the set of matched elements to the end of the target. + * @param target A selector, element, HTML string, array of elements, or jQuery object; the matched set of elements + * will be inserted at the end of the element(s) specified by this parameter. + * @see \`{@link https://api.jquery.com/appendTo/ }\` + * @since 1.0 + * @example ​ ````Append all spans to the element with the ID "foo" (Check append() documentation for more examples) +```html + + + + + appendTo demo + + + + +​ +I have nothing more to say... +​ +
    FOO!
    +​ + +​ + + +``` + */ + appendTo( + target: JQuery.Selector | JQuery.htmlString | JQuery.TypeOrArray | JQuery, + ): this; + /** + * Set one or more attributes for the set of matched elements. + * @param attributeName The name of the attribute to set. + * @param value_function _@param_ `value_function` + *
    + * * `value` — A value to set for the attribute. If `null`, the specified attribute will be removed (as in \`{@link removeAttr .removeAttr()}`).
    + * * `function` — A function returning the value to set. `this` is the current element. Receives the index position of + * the element in the set and the old attribute value as arguments. + * @see \`{@link https://api.jquery.com/attr/ }\` + * @since 1.0 + * @since 1.1 + * @example ​ ````Set the id for divs based on the position in the page. +```html + + + + + attr demo + + + + +​ +
    Zero-th
    +
    First
    +
    Second
    +​ + +​ + + +``` + * @example ​ ````Set the src attribute from title attribute on the image. +```html + + + + + attr demo + + + +​ + +​ + +​ + + +``` + */ + attr( + attributeName: string, + value_function: + | string + | number + | null + | ((this: TElement, index: number, attr: string) => string | number | void | undefined), + ): this; + /** + * Set one or more attributes for the set of matched elements. + * @param attributes An object of attribute-value pairs to set. + * @see \`{@link https://api.jquery.com/attr/ }\` + * @since 1.0 + * @example ​ ````Set some attributes for all <img>s in the page. +```html + + + + + attr demo + + + + +​ + + + +​ +
    Attribute of Ajax
    +​ + +​ + + +``` + */ + attr(attributes: JQuery.PlainObject): this; + /** + * Get the value of an attribute for the first element in the set of matched elements. + * @param attributeName The name of the attribute to get. + * @see \`{@link https://api.jquery.com/attr/ }\` + * @since 1.0 + * @example ​ ````Display the checked attribute and property of a checkbox as it changes. +```html + + + + + attr demo + + + + +​ + + +

    +​ + +​ + + +``` + * @example ​ ````Find the title attribute of the first <em> in the page. +```html + + + + + attr demo + + + + +​ +

    Once there was a large dinosaur...

    +​ +The title of the emphasis is:
    +​ + +​ + + +``` + */ + attr(attributeName: string): string | undefined; + /** + * Insert content, specified by the parameter, before each element in the set of matched elements. + * @param contents One or more additional DOM elements, text nodes, arrays of elements and text nodes, HTML strings, or + * jQuery objects to insert before each element in the set of matched elements. + * @see \`{@link https://api.jquery.com/before/ }\` + * @since 1.0 + * @example ​ ````Inserts some HTML before all paragraphs. +```html + + + + + before demo + + + + +​ +

    is what I said...

    +​ + +​ + + +``` + * @example ​ ````Inserts a DOM element before all paragraphs. +```html + + + + + before demo + + + + +​ +

    is what I said...

    +​ + +​ + + +``` + * @example ​ ````Inserts a jQuery object (similar to an Array of DOM Elements) before all paragraphs. +```html + + + + + before demo + + + + +​ +

    is what I said...

    Hello +​ + +​ + + +``` + */ + before(...contents: Array>>): this; + /** + * Insert content, specified by the parameter, before each element in the set of matched elements. + * @param function_functionーhtml _@param_ `function_functionーhtml` + *
    + * * `function` — A function that returns an HTML string, DOM element(s), text node(s), or jQuery object to insert + * before each element in the set of matched elements. Receives the index position of the element in + * the set as an argument. Within the function, `this` refers to the current element in the set.
    + * * `functionーhtml` — A function that returns an HTML string, DOM element(s), text node(s), or jQuery object to insert + * before each element in the set of matched elements. Receives the index position of the element in + * the set and the old HTML value of the element as arguments. Within the function, `this` refers to the + * current element in the set. + * @see \`{@link https://api.jquery.com/before/ }\` + * @since 1.4 + * @since 1.10 + */ + before( + function_functionーhtml: ( + this: TElement, + index: number, + html: string, + ) => JQuery.htmlString | JQuery.TypeOrArray>, + ): this; + // [bind() overloads] https://github.com/jquery/api.jquery.com/issues/1048 + /** + * Attach a handler to an event for the elements. + * @param eventType A string containing one or more DOM event types, such as "click" or "submit," or custom event names. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/bind/ }\` + * @since 1.0 + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.0. Use \`{@link on }\`. + * + * **Cause**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update. + * + * **Solution**: Change the method call to use `.on()` or `.off()`, the documentation for the old methods include specific instructions. In general, the `.bind()` and `.unbind()` methods can be renamed directly to `.on()` and `.off()` respectively since the argument orders are identical. + */ + bind( + eventType: TType, + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Attach a handler to an event for the elements. + * @param eventType A string containing one or more DOM event types, such as "click" or "submit," or custom event names. + * @param handler_preventBubble _@param_ `handler_preventBubble` + *
    + * * `handler` — A function to execute each time the event is triggered.
    + * * `preventBubble` — Setting the third argument to false will attach a function that prevents the default action from + * occurring and stops the event from bubbling. The default is `true`. + * @see \`{@link https://api.jquery.com/bind/ }\` + * @since 1.0 + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.0. Use \`{@link on }\`. + * + * **Cause**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update. + * + * **Solution**: Change the method call to use `.on()` or `.off()`, the documentation for the old methods include specific instructions. In general, the `.bind()` and `.unbind()` methods can be renamed directly to `.on()` and `.off()` respectively since the argument orders are identical. + * @example ​ ````Handle click and double-click for the paragraph. Note: the coordinates are window relative, so in this case relative to the demo iframe. +```html + + + + + bind demo + + + + +​ +

    Click or double click here.

    + +​ + +​ + + +``` + * @example ​ ````To display each paragraph's text in an alert box whenever it is clicked: +```javascript +$( "p" ).bind( "click", function() { + alert( $( this ).text() ); +}); +``` + * @example ​ ````Cancel a default action and prevent it from bubbling up by returning false: +```javascript +$( "form" ).bind( "submit", function() { + return false; +}) +``` + * @example ​ ````Cancel only the default action by using the .preventDefault() method. +```javascript +$( "form" ).bind( "submit", function( event ) { + event.preventDefault(); +}); +``` + * @example ​ ````Stop an event from bubbling without preventing the default action by using the .stopPropagation() method. +```javascript +$( "form" ).bind( "submit", function( event ) { + event.stopPropagation(); +}); +``` + * @example ​ ````Bind custom events. +```html + + + + + bind demo + + + + +​ +

    Has an attached custom event.

    + + +​ + +​ + + +``` + */ + bind( + eventType: TType, + handler_preventBubble: + | JQuery.TypeEventHandler + | false + | null + | undefined, + ): this; + /** + * Attach a handler to an event for the elements. + * @param events An object containing one or more DOM event types and functions to execute for them. + * @see \`{@link https://api.jquery.com/bind/ }\` + * @since 1.4 + * @deprecated ​ Deprecated since 3.0. Use \`{@link on }\`. + * + * **Cause**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update. + * + * **Solution**: Change the method call to use `.on()` or `.off()`, the documentation for the old methods include specific instructions. In general, the `.bind()` and `.unbind()` methods can be renamed directly to `.on()` and `.off()` respectively since the argument orders are identical. + * @example ​ ````Bind multiple events simultaneously. +```javascript +$( "div.test" ).bind({ + click: function() { + $( this ).addClass( "active" ); + }, + mouseenter: function() { + $( this ).addClass( "inside" ); + }, + mouseleave: function() { + $( this ).removeClass( "inside" ); + } +}); +``` + */ + bind(events: JQuery.TypeEventHandlers): this; + /** + * Bind an event handler to the "blur" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/blur/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + blur(eventData: TData, handler: JQuery.TypeEventHandler): this; + /** + * Bind an event handler to the "blur" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/blur/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````To trigger the blur event on all paragraphs: +```javascript +$( "p" ).blur(); +``` + */ + blur( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to the "change" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/change/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + change( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "change" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/change/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Attaches a change event to the select that gets the text for each selected option and writes them in the div. It then triggers the event for the initial text draw. +```html + + + + + change demo + + + + +​ + +
    +​ + +​ + + +``` + * @example ​ ````To add a validity test to all text input elements: +```javascript +$( "input[type='text']" ).change(function() { + // Check input( $( this ).val() ) for validity here +}); +``` + */ + change( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Get the children of each element in the set of matched elements, optionally filtered by a selector. + * @param selector A string containing a selector expression to match elements against. + * @see \`{@link https://api.jquery.com/children/ }\` + * @since 1.0 + * @example ​ ````Find all children of the clicked element. +```html + + + + + children demo + + + + +​ +
    +
    +

    This is the way we + write the demo,

    +
    +​ +
    + write the demo, demo, +
    +​ +
    + This the way we write the demo so + in +
    +​ +

    + the morning. + Found 0 children in TAG. +

    +
    +​ + +​ + + +``` + * @example ​ ````Find all children of each div. +```html + + + + + children demo + + + + +​ +

    Hello (this is a paragraph)

    +​ +
    Hello Again (this span is a child of the a div)
    +

    And Again (in another paragraph)

    +​ +
    And One Last Time (most text directly in a div)
    +​ + +​ + + +``` + * @example ​ ````Find all children with a class "selected" of each div. +```html + + + + + children demo + + + + +​ +
    + Hello +

    Hello Again

    +
    And Again
    +

    And One Last Time

    +
    +​ + +​ + + +``` + */ + children(selector: K): JQuery; + children(selector: K): JQuery; + children(selector?: JQuery.Selector): JQuery; + /** + * Remove from the queue all items that have not yet been run. + * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue. + * @see \`{@link https://api.jquery.com/clearQueue/ }\` + * @since 1.4 + * @example ​ ````Empty the queue. +```html + + + + + clearQueue demo + + + + +​ + + +
    +​ + +​ + + +``` + */ + clearQueue(queueName?: string): this; + /** + * Bind an event handler to the "click" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/click/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + click( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "click" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/click/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Hide paragraphs on a page when they are clicked: +```html + + + + + click demo + + + + +​ +

    First Paragraph

    +

    Second Paragraph

    +

    Yet one more Paragraph

    +​ + +​ + + +``` + * @example ​ ````Trigger the click event on all of the paragraphs on the page: +```javascript +$( "p" ).click(); +``` + */ + click( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Create a deep copy of the set of matched elements. + * @param withDataAndEvents A Boolean indicating whether event handlers and data should be copied along with the elements. The + * default value is false. *In jQuery 1.5.0 the default value was incorrectly true; it was changed back + * to false in 1.5.1 and up. + * @param deepWithDataAndEvents A Boolean indicating whether event handlers and data for all children of the cloned element should + * be copied. By default its value matches the first argument's value (which defaults to false). + * @see \`{@link https://api.jquery.com/clone/ }\` + * @since 1.0 + * @since 1.5 + * @example ​ ````Clones all b elements (and selects the clones) and prepends them to all paragraphs. +```html + + + + + clone demo + + + +​ +Hello

    , how are you?

    +​ + +​ + + +``` + */ + clone(withDataAndEvents?: boolean, deepWithDataAndEvents?: boolean): this; + /** + * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. + * @param selector A string containing a selector expression to match elements against. + * @param context A DOM element within which a matching element may be found. + * @see \`{@link https://api.jquery.com/closest/ }\` + * @since 1.4 + */ + closest(selector: JQuery.Selector, context: Element): this; + /** + * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. + * @param selector_selection_element _@param_ `selector_selection_element` + *
    + * * `selector` — A string containing a selector expression to match elements against.
    + * * `selection` — A jQuery object to match elements against.
    + * * `element` — An element to match elements against. + * @see \`{@link https://api.jquery.com/closest/ }\` + * @since 1.3 + * @since 1.6 + * @example ​ ````Show how event delegation can be done with closest. The closest list element toggles a yellow background when it or its descendent is clicked. +```html + + + + + closest demo + + + + +​ +
      +
    • Click me!
    • +
    • You can also Click me!
    • +
    +​ + +​ + + +``` + * @example ​ ````Pass a jQuery object to closest. The closest list element toggles a yellow background when it or its descendent is clicked. +```html + + + + + closest demo + + + + +​ +
      +
    • Click me!
    • +
    • You can also Click me!
    • +
    +​ + +​ + + +``` + */ + closest(selector_selection_element: JQuery.Selector | Element | JQuery): this; + /** + * Get the children of each element in the set of matched elements, including text and comment nodes. + * @see \`{@link https://api.jquery.com/contents/ }\` + * @since 1.2 + * @example ​ ````Find all the text nodes inside a paragraph and wrap them with a bold tag. +```html + + + + + contents demo + + + +​ +

    Hello John, how are you doing?

    +​ + +​ + + +``` + * @example ​ ````Change the background color of links inside of an iframe. +```html + + + + + contents demo + + + +​ + +​ + +​ + + +``` + */ + contents(): JQuery; + /** + * Bind an event handler to the "contextmenu" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/contextmenu/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + contextmenu( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "contextmenu" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/contextmenu/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````To show a "Hello World!" alert box when the contextmenu event is triggered on a paragraph on the page: +```javascript +$( "p" ).contextmenu(function() { + alert( "Hello World!" ); +}); +``` + * @example ​ ````Right click to toggle background color. +```html + + + + + contextmenu demo + + + + +​ +
    +Right click the block +​ + +​ + + +``` + */ + contextmenu( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Set one or more CSS properties for the set of matched elements. + * @param propertyName A CSS property name. + * @param value_function _@param_ `value_function` + *
    + * * `value` — A value to set for the property.
    + * * `function` — A function returning the value to set. `this` is the current element. Receives the index position of + * the element in the set and the old value as arguments. + * @see \`{@link https://api.jquery.com/css/ }\` + * @since 1.0 + * @since 1.4 + * @example ​ ````Change the color of any paragraph to red on mouseover event. +```html + + + + + css demo + + + + +​ +

    Just roll the mouse over me.

    +​ +

    Or me to see a color change.

    +​ + +​ + + +``` + * @example ​ ````Increase the width of #box by 200 pixels the first time it is clicked. +```html + + + + + css demo + + + + +​ +
    Click me to grow
    +​ + +​ + + +``` + * @example ​ ````Highlight a clicked word in the paragraph. +```html + + + + + css demo + + + + +​ +

    + Once upon a time there was a man + who lived in a pizza parlor. This + man just loved pizza and ate it all + the time. He went on to be the + happiest man in the world. The end. +

    +​ + +​ + + +``` + */ + css( + propertyName: string, + value_function: + | string + | number + | ((this: TElement, index: number, value: string) => string | number | void | undefined), + ): this; + /** + * Set one or more CSS properties for the set of matched elements. + * @param properties An object of property-value pairs to set. + * @see \`{@link https://api.jquery.com/css/ }\` + * @since 1.0 + * @example ​ ````Change the font weight and background color on mouseenter and mouseleave. +```html + + + + + css demo + + + + +​ +

    Move the mouse over a paragraph.

    +

    Like this one or the one above.

    +​ + +​ + + +``` + * @example ​ ````Increase the size of a div when you click it. +```html + + + + + css demo + + + + +​ +
    click
    +
    click
    +​ + +​ + + +``` + */ + css( + properties: JQuery.PlainObject< + string | number | ((this: TElement, index: number, value: string) => string | number | void | undefined) + >, + ): this; + /** + * Get the computed style properties for the first element in the set of matched elements. + * @param propertyName A CSS property. + * @see \`{@link https://api.jquery.com/css/ }\` + * @since 1.0 + * @example ​ ````Get the background color of a clicked div. +```html + + + + + css demo + + + + +​ +  +
    +
    +
    +
    +​ + +​ + + +``` + */ + css(propertyName: string): string; + /** + * Get the computed style properties for the first element in the set of matched elements. + * @param propertyNames An array of one or more CSS properties. + * @see \`{@link https://api.jquery.com/css/ }\` + * @since 1.9 + * @example ​ ````Get the width, height, text color, and background color of a clicked div. +```html + + + + + css demo + + + + +​ +

     

    +
    1
    +
    2
    +
    3
    +
    4
    +​ + +​ + + +``` + */ + css(propertyNames: string[]): JQuery.PlainObject; + /** + * Store arbitrary data associated with the matched elements. + * @param key A string naming the piece of data to set. + * @param value The new data value; this can be any Javascript type except `undefined`. + * @see \`{@link https://api.jquery.com/data/ }\` + * @since 1.2.3 + * @example ​ ````Store then retrieve a value from the div element. +```html + + + + + data demo + + + + +​ +
    + The values stored were + + and + +
    +​ + +​ + + +``` + */ + data(key: string, value: string | number | boolean | symbol | object | null): this; + /** + * Store arbitrary data associated with the matched elements. + * @param obj An object of key-value pairs of data to update. + * @see \`{@link https://api.jquery.com/data/ }\` + * @since 1.4.3 + */ + data(obj: JQuery.PlainObject): this; + /** + * Return the value at the named data store for the first element in the jQuery collection, as set by data(name, value) or by an HTML5 data-* attribute. + * @param key Name of the data stored. + * @param value `undefined` is not recognized as a data value. Calls such as `.data( "name", undefined )` + * will return the jQuery object that it was called on, allowing for chaining. + * @see \`{@link https://api.jquery.com/data/ }\` + * @since 1.2.3 + */ + // `unified-signatures` is disabled so that behavior when passing `undefined` to `value` can be documented. Unifying the signatures + // results in potential confusion for users from an unexpected parameter. + // tslint:disable-next-line:unified-signatures + data(key: string, value: undefined): any; + /** + * Return the value at the named data store for the first element in the jQuery collection, as set by data(name, value) or by an HTML5 data-* attribute. + * @param key Name of the data stored. + * @see \`{@link https://api.jquery.com/data/ }\` + * @since 1.2.3 + * @example ​ ````Get the data named "blah" stored at for an element. +```html + + + + + data demo + + + + +​ +
    A div
    + + + + +

    The "blah" value of this div is ?

    +​ + +​ + + +``` + */ + data(key: string): any; + /** + * Return the value at the named data store for the first element in the jQuery collection, as set by data(name, value) or by an HTML5 data-* attribute. + * @see \`{@link https://api.jquery.com/data/ }\` + * @since 1.4 + */ + data(): JQuery.PlainObject; + /** + * Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/dblclick/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + dblclick( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/dblclick/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````To bind a "Hello World!" alert box to the dblclick event on every paragraph on the page: +```javascript +$( "p" ).dblclick(function() { + alert( "Hello World!" ); +}); +``` + * @example ​ ````Double click to toggle background color. +```html + + + + + dblclick demo + + + + +​ +
    +Double click the block +​ + +​ + + +``` + */ + dblclick( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Set a timer to delay execution of subsequent items in the queue. + * @param duration An integer indicating the number of milliseconds to delay execution of the next item in the queue. + * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue. + * @see \`{@link https://api.jquery.com/delay/ }\` + * @since 1.4 + * @example ​ ````Animate the hiding and showing of two divs, delaying the first before showing it. +```html + + + + + delay demo + + + + +​ +

    +
    +
    +​ + +​ + + +``` + */ + delay(duration: JQuery.Duration, queueName?: string): this; + /** + * Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. + * @param selector A selector to filter the elements that trigger the event. + * @param eventType A string containing one or more space-separated JavaScript event types, such as "click" or + * "keydown," or custom event names. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/delegate/ }\` + * @since 1.4.2 + * @deprecated ​ Deprecated since 3.0. Use \`{@link on }\`. + * + * **Cause**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update. + * + * **Solution**: Change the method call to use `.on()` or `.off()`, the documentation for the old methods include specific instructions. In general, the `.bind()` and `.unbind()` methods can be renamed directly to `.on()` and `.off()` respectively since the argument orders are identical. + */ + delegate( + selector: JQuery.Selector, + eventType: TType, + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. + * @param selector A selector to filter the elements that trigger the event. + * @param eventType A string containing one or more space-separated JavaScript event types, such as "click" or + * "keydown," or custom event names. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/delegate/ }\` + * @since 1.4.2 + * @deprecated ​ Deprecated since 3.0. Use \`{@link on }\`. + * + * **Cause**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update. + * + * **Solution**: Change the method call to use `.on()` or `.off()`, the documentation for the old methods include specific instructions. In general, the `.bind()` and `.unbind()` methods can be renamed directly to `.on()` and `.off()` respectively since the argument orders are identical. + * @example ​ ````Click a paragraph to add another. Note that .delegate() attaches a click event handler to all paragraphs - even new ones. +```html + + + + + delegate demo + + + + +​ +

    Click me!

    +​ + +​ + +​ + + +``` + * @example ​ ````To display each paragraph's text in an alert box whenever it is clicked: +```javascript +$( "body" ).delegate( "p", "click", function() { + alert( $( this ).text() ); +}); +``` + * @example ​ ````To cancel a default action and prevent it from bubbling up, return false: +```javascript +$( "body" ).delegate( "a", "click", function() { + return false; +}); +``` + * @example ​ ````To cancel only the default action by using the preventDefault method. +```javascript +$( "body" ).delegate( "a", "click", function( event ) { + event.preventDefault(); +}); +``` + * @example ​ ````Can bind custom events too. +```html + + + + + delegate demo + + + + +​ +

    Has an attached custom event.

    + + +​ + +​ + + +``` + */ + delegate( + selector: JQuery.Selector, + eventType: TType, + handler: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. + * @param selector A selector to filter the elements that trigger the event. + * @param events A plain object of one or more event types and functions to execute for them. + * @see \`{@link https://api.jquery.com/delegate/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.0. Use \`{@link on }\`. + * + * **Cause**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update. + * + * **Solution**: Change the method call to use `.on()` or `.off()`, the documentation for the old methods include specific instructions. In general, the `.bind()` and `.unbind()` methods can be renamed directly to `.on()` and `.off()` respectively since the argument orders are identical. + */ + delegate(selector: JQuery.Selector, events: JQuery.TypeEventHandlers): this; + /** + * Execute the next function on the queue for the matched elements. + * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue. + * @see \`{@link https://api.jquery.com/dequeue/ }\` + * @since 1.2 + * @example ​ ````Use dequeue to end a custom queue function which allows the queue to keep going. +```html + + + + + dequeue demo + + + + +​ + +
    +​ + +​ + + +``` + */ + dequeue(queueName?: string): this; + /** + * Remove the set of matched elements from the DOM. + * @param selector A selector expression that filters the set of matched elements to be removed. + * @see \`{@link https://api.jquery.com/detach/ }\` + * @since 1.4 + * @example ​ ````Detach all paragraphs from the DOM +```html + + + + + detach demo + + + + +​ +

    Hello

    +how are +

    you?

    + +​ + +​ + + +``` + */ + detach(selector?: JQuery.Selector): this; + /** + * Iterate over a jQuery object, executing a function for each matched element. + * @param funсtion A function to execute for each matched element. + * @see \`{@link https://api.jquery.com/each/ }\` + * @since 1.0 + * @example ​ ````Iterate over three divs and sets their color property. +```html + + + + + each demo + + + + +​ +
    Click here
    +
    to iterate through
    +
    these divs.
    +​ + +​ + + +``` + * @example ​ ````To access a jQuery object instead of the regular DOM element, use $( this ). For example: +```html + + + + + each demo + + + + +​ +To do list: (click here to change) +
      +
    • Eat
    • +
    • Sleep
    • +
    • Be merry
    • +
    +​ + +​ + + +``` + * @example ​ ````Use return false to break out of each() loops early. +```html + + + + + each demo + + + + +​ + + +
    +
    +
    +
    +
    Stop here
    +
    +
    +
    +​ + +​ + + +``` + */ + each(funсtion: (this: TElement, index: number, element: TElement) => void | false): this; + /** + * Remove all child nodes of the set of matched elements from the DOM. + * @see \`{@link https://api.jquery.com/empty/ }\` + * @since 1.0 + * @example ​ ````Removes all child nodes (including text nodes) from all paragraphs +```html + + + + + empty demo + + + + +​ +

    + Hello, Person and person. +

    +​ + +​ + +​ + + +``` + */ + empty(): this; + /** + * End the most recent filtering operation in the current chain and return the set of matched elements to its previous state. + * @see \`{@link https://api.jquery.com/end/ }\` + * @since 1.0 + * @example ​ ````Selects all paragraphs, finds span elements inside these, and reverts the selection back to the paragraphs. +```html + + + + + end demo + + + + +​ +

    + Hi there how are you doing? +

    +​ +

    + This span is one of + several spans in this + sentence. +

    +​ +
    + Tags in jQuery object initially: +
    +​ +
    + Tags in jQuery object after find: +
    +​ +
    + Tags in jQuery object after end: +
    +​ + +​ + + +``` + * @example ​ ````Selects all paragraphs, finds span elements inside these, and reverts the selection back to the paragraphs. +```html + + + + + end demo + + + + +​ +

    Hello, how are you?

    +​ + +​ + + +``` + */ + end(): this; + /** + * Reduce the set of matched elements to the one at the specified index. + * @param index An integer indicating the 0-based position of the element. + * An integer indicating the position of the element, counting backwards from the last element in the set. + * @see \`{@link https://api.jquery.com/eq/ }\` + * @since 1.1.2 + * @since 1.4 + * @example ​ ````Turn the div with index 2 blue by adding an appropriate class. +```html + + + + + eq demo + + + + +​ +
    +
    +
    +
    +
    +
    +​ + +​ + + +``` + */ + eq(index: number): this; + /** + * Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods. + * @param obj An object to merge onto the jQuery prototype. + * @see \`{@link https://api.jquery.com/jQuery.fn.extend/ }\` + * @since 1.0 + * @example ​ ````Add two methods to the jQuery prototype ($.fn) object and then use one of them. +```html + + + + + jQuery.fn.extend demo + + + + +​ + + +​ + +​ + + +``` + */ + extend(obj: object): this; + /** + * Display the matched elements by fading them to opaque. + * @param duration A string or number determining how long the animation will run. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/fadeIn/ }\` + * @since 1.4.3 + */ + fadeIn(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this; + /** + * Display the matched elements by fading them to opaque. + * @param duration_easing _@param_ `duration_easing` + *
    + * * `duration` — A string or number determining how long the animation will run.
    + * * `easing` — A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/fadeIn/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Fades a red block in over the text. Once the animation is done, it quickly fades in more text on top. +```html + + + + + fadeIn demo + + + + +​ +

    + Let it be known that the party of the first part + and the party of the second part are henceforth + and hereto directed to assess the allegations + for factual correctness... (click!) +

    CENSORED!
    +

    +​ + +​ + + +``` + */ + fadeIn(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this; + /** + * Display the matched elements by fading them to opaque. + * @param duration_easing_complete_options _@param_ `duration_easing_complete_options` + *
    + * * `duration` — A string or number determining how long the animation will run.
    + * * `easing` — A string indicating which easing function to use for the transition.
    + * * `complete` — A function to call once the animation is complete, called once per matched element.
    + * * `options` — A map of additional options to pass to the method. + * @see \`{@link https://api.jquery.com/fadeIn/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Animates hidden divs to fade in one by one, completing each animation within 600 milliseconds. +```html + + + + + fadeIn demo + + + + +​ +Click here... +
    +
    +
    +​ + +​ + + +``` + */ + fadeIn( + duration_easing_complete_options?: + | JQuery.Duration + | string + | ((this: TElement) => void) + | JQuery.EffectsOptions, + ): this; + /** + * Hide the matched elements by fading them to transparent. + * @param duration A string or number determining how long the animation will run. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/fadeOut/ }\` + * @since 1.4.3 + * @example ​ ````Fades out two divs, one with a "linear" easing and one with the default, "swing," easing. +```html + + + + + fadeOut demo + + + + +​ + + +​ +
    +​ +
    linear
    +
    swing
    +​ + +​ + + +``` + */ + fadeOut(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this; + /** + * Hide the matched elements by fading them to transparent. + * @param duration_easing _@param_ `duration_easing` + *
    + * * `duration` — A string or number determining how long the animation will run.
    + * * `easing` — A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/fadeOut/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Fades out spans in one section that you click on. +```html + + + + + fadeOut demo + + + + +​ +

    Find the modifiers -

    +

    + If you really want to go outside + in the cold then make sure to wear + your warm jacket given to you by + your favorite teacher. +

    +​ + +​ + + +``` + */ + fadeOut(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this; + /** + * Hide the matched elements by fading them to transparent. + * @param duration_easing_complete_options _@param_ `duration_easing_complete_options` + *
    + * * `duration` — A string or number determining how long the animation will run.
    + * * `easing` — A string indicating which easing function to use for the transition.
    + * * `complete` — A function to call once the animation is complete, called once per matched element.
    + * * `options` — A map of additional options to pass to the method. + * @see \`{@link https://api.jquery.com/fadeOut/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Animates all paragraphs to fade out, completing the animation within 600 milliseconds. +```html + + + + + fadeOut demo + + + + +​ +

    + If you click on this paragraph + you'll see it just fade away. +

    +​ + +​ + + +``` + */ + fadeOut( + duration_easing_complete_options?: + | JQuery.Duration + | string + | ((this: TElement) => void) + | JQuery.EffectsOptions, + ): this; + /** + * Adjust the opacity of the matched elements. + * @param duration A string or number determining how long the animation will run. + * @param opacity A number between 0 and 1 denoting the target opacity. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/fadeTo/ }\` + * @since 1.4.3 + */ + fadeTo(duration: JQuery.Duration, opacity: number, easing: string, complete?: (this: TElement) => void): this; + /** + * Adjust the opacity of the matched elements. + * @param duration A string or number determining how long the animation will run. + * @param opacity A number between 0 and 1 denoting the target opacity. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/fadeTo/ }\` + * @since 1.0 + * @example ​ ````Animates first paragraph to fade to an opacity of 0.33 (33%, about one third visible), completing the animation within 600 milliseconds. +```html + + + + + fadeTo demo + + + +​ +

    +Click this paragraph to see it fade. +

    +​ +

    +Compare to this one that won't fade. +

    +​ + +​ + + +``` + * @example ​ ````Fade div to a random opacity on each click, completing the animation within 200 milliseconds. +```html + + + + + fadeTo demo + + + + +​ +

    And this is the library that John built...

    +​ +
    +
    +
    +​ + +​ + + +``` + * @example ​ ````Find the right answer! The fade will take 250 milliseconds and change various styles when it completes. +```html + + + + + fadeTo demo + + + + +​ +

    Wrong

    +
    +

    Wrong

    +
    +

    Right!

    +
    +​ + +​ + + +``` + */ + fadeTo(duration: JQuery.Duration, opacity: number, complete?: (this: TElement) => void): this; + /** + * Display or hide the matched elements by animating their opacity. + * @param duration A string or number determining how long the animation will run. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/fadeToggle/ }\` + * @since 1.4.4 + * @example ​ ````Fades first paragraph in or out, completing the animation within 600 milliseconds and using a linear easing. Fades last paragraph in or out for 200 milliseconds, inserting a "finished" message upon completion. +```html + + + + + fadeToggle demo + + + +​ + + +

    This paragraph has a slow, linear fade.

    +

    This paragraph has a fast animation.

    +
    +​ + +​ + + +``` + */ + fadeToggle(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this; + /** + * Display or hide the matched elements by animating their opacity. + * @param duration_easing _@param_ `duration_easing` + *
    + * * `duration` — A string or number determining how long the animation will run.
    + * * `easing` — A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/fadeToggle/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Fades first paragraph in or out, completing the animation within 600 milliseconds and using a linear easing. Fades last paragraph in or out for 200 milliseconds, inserting a "finished" message upon completion. +```html + + + + + fadeToggle demo + + + +​ + + +

    This paragraph has a slow, linear fade.

    +

    This paragraph has a fast animation.

    +
    +​ + +​ + + +``` + */ + fadeToggle(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this; + /** + * Display or hide the matched elements by animating their opacity. + * @param duration_easing_complete_options _@param_ `duration_easing_complete_options` + *
    + * * `duration` — A string or number determining how long the animation will run.
    + * * `easing` — A string indicating which easing function to use for the transition.
    + * * `complete` — A function to call once the animation is complete, called once per matched element.
    + * * `options` — A map of additional options to pass to the method. + * @see \`{@link https://api.jquery.com/fadeToggle/ }\` + * @since 1.0 + * @since 1.4.3 + */ + fadeToggle( + duration_easing_complete_options?: + | JQuery.Duration + | string + | ((this: TElement) => void) + | JQuery.EffectsOptions, + ): this; + /** + * Reduce the set of matched elements to those that match the selector or pass the function's test. + * @param selector_elements_selection_function _@param_ `selector_elements_selection_function` + *
    + * * `selector` — A string containing a selector expression to match the current set of elements against.
    + * * `elements` — One or more DOM elements to match the current set of elements against.
    + * * `selection` — An existing jQuery object to match the current set of elements against.
    + * * `function` — A function used as a test for each element in the set. this is the current DOM element. + * @see \`{@link https://api.jquery.com/filter/ }\` + * @since 1.0 + * @since 1.4 + * @example ​ ````Change the color of all divs; then add a border to those with a "middle" class. +```html + + + + + filter demo + + + + +​ +
    +
    +
    +
    +
    +
    +​ + +​ + + +``` + * @example ​ ````Change the color of all divs; then add a border to the second one (index == 1) and the div with an id of "fourth." +```html + + + + + filter demo + + + + +​ +
    +
    +
    +
    +
    +
    +​ + +​ + + +``` + * @example ​ ````Select all divs and filter the selection with a DOM element, keeping only the one with an id of "unique". +```javascript +$( "div" ).filter( document.getElementById( "unique" ) ); +``` + * @example ​ ````Select all divs and filter the selection with a jQuery object, keeping only the one with an id of "unique". +```javascript +$( "div" ).filter( $( "#unique" ) ); +``` + */ + filter( + selector_elements_selection_function: + | JQuery.Selector + | JQuery.TypeOrArray + | JQuery + | ((this: TElement, index: number, element: TElement) => boolean), + ): this; + /** + * Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. + * @param selector_element _@param_ `selector_element` + *
    + * * `selector` — A string containing a selector expression to match elements against.
    + * * `element` — An element or a jQuery object to match elements against. + * @see \`{@link https://api.jquery.com/find/ }\` + * @since 1.0 + * @since 1.6 + * @example ​ ````Starts with all paragraphs and searches for descendant span elements, same as $( "p span" ) +```html + + + + + find demo + + + +​ +

    Hello, how are you?

    +

    Me? I'm good.

    +​ + +​ + + +``` + * @example ​ ````A selection using a jQuery collection of all span tags. Only spans within p tags are changed to red while others are left blue. +```html + + + + + find demo + + + + +​ +

    Hello, how are you?

    +

    Me? I'm good.

    +
    Did you eat yet?
    +​ + +​ + + +``` + * @example ​ ````Add spans around each word then add a hover and italicize words with the letter t. +```html + + + + + find demo + + + + +​ +

    + When the day is short + find that which matters to you + or stop believing +

    +​ + +​ + + +``` + */ + find(selector_element: K | JQuery): JQuery; + find(selector_element: K | JQuery): JQuery; + find(selector_element: JQuery.Selector | Element | E | JQuery): JQuery; + /** + * Stop the currently-running animation, remove all queued animations, and complete all animations for the matched elements. + * @param queue The name of the queue in which to stop animations. + * @see \`{@link https://api.jquery.com/finish/ }\` + * @since 1.9 + * @example ​ ````Click the Go button once to start the animation, and then click the other buttons to see how they affect the current and queued animations. +```html + + + + + finish demo + + + + +​ +
    +
    + +
    + + +
    + + +
    + + +
    + +
    + +
    +​ + +​ + + +``` + */ + finish(queue?: string): this; + /** + * Reduce the set of matched elements to the first in the set. + * @see \`{@link https://api.jquery.com/first/ }\` + * @since 1.4 + * @example ​ ````Highlight the first span in a paragraph. +```html + + + + + first demo + + + + +​ +

    + Look: + This is some text in a paragraph. + This is a note about it. +

    +​ + +​ + + +``` + */ + first(): this; + /** + * Bind an event handler to the "focus" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/focus/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + focus( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "focus" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/focus/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Fire focus. +```html + + + + + focus demo + + + + +​ +

    focus fire

    +

    focus fire

    +​ + +​ + + +``` + * @example ​ ````To stop people from writing in text input boxes, try: +```javascript +$( "input[type=text]" ).focus(function() { + $( this ).blur(); +}); +``` + * @example ​ ````To focus on a login input box with id 'login' on page startup, try: +```javascript +$( document ).ready(function() { + $( "#login" ).focus(); +}); +``` + */ + focus( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to the "focusin" event. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/focusin/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + focusin( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "focusin" event. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/focusin/ }\` + * @since 1.4 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Watch for a focus to occur within the paragraphs on the page. +```html + + + + + focusin demo + + + + +​ +

    focusin fire

    +

    focusin fire

    +​ + +​ + + +``` + */ + focusin( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to the "focusout" JavaScript event. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/focusout/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + focusout( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "focusout" JavaScript event. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/focusout/ }\` + * @since 1.4 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Watch for a loss of focus to occur inside paragraphs and note the difference between the focusout count and the blur count. (The blur count does not change because those events do not bubble.) +```html + + + + + focusout demo + + + + +​ +
    +

    +
    + +

    +

    + +

    +
    +
    focusout fire
    +
    blur fire
    +​ + +​ + + +``` + */ + focusout( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Retrieve one of the elements matched by the jQuery object. + * @param index A zero-based integer indicating which element to retrieve. + * @see \`{@link https://api.jquery.com/get/ }\` + * @since 1.0 + * @example ​ ````Display the tag name of the click element. +```html + + + + + get demo + + + + +​ +  +

    In this paragraph is an important section

    +
    +​ + +​ + + +``` + */ + get(index: number): TElement | undefined; + /** + * Retrieve the elements matched by the jQuery object. If the value of index is out of bounds — less than the negative number of elements or equal to or greater than the number of elements — it returns undefined. + * @see \`{@link https://api.jquery.com/get/ }\` + * @since 1.0 + * @example ​ ````Select all divs in the document and return the DOM Elements as an Array; then use the built-in reverse() method to reverse that array. +```html + + + + + get demo + + + + +​ +Reversed - +​ +
    One
    +
    Two
    +
    Three
    +​ + +​ + + +``` + */ + get(): TElement[]; + /** + * Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element. + * @param selector_contained _@param_ `selector_contained` + *
    + * * `selector` — A string containing a selector expression to match elements against.
    + * * `contained` — A DOM element to match elements against. + * @see \`{@link https://api.jquery.com/has/ }\` + * @since 1.4 + * @example ​ ````Check if an element is inside another. +```html + + + + + has demo + + + + +​ +
    • Does the UL contain an LI?
    +​ + +​ + + +``` + */ + has(selector_contained: string | Element): this; + /** + * Determine whether any of the matched elements are assigned the given class. + * @param className The class name to search for. + * @see \`{@link https://api.jquery.com/hasClass/ }\` + * @since 1.2 + * @example ​ ````Looks for the paragraph that contains 'selected' as a class. +```html + + + + + hasClass demo + + + + +​ +

    This paragraph is black and is the first paragraph.

    +

    This paragraph is red and is the second paragraph.

    +
    First paragraph has selected class:
    +
    Second paragraph has selected class:
    +
    At least one paragraph has selected class:
    +​ + +​ + + +``` + */ + hasClass(className: string): boolean; + /** + * Set the CSS height of every matched element. + * @param value_function _@param_ `value_function` + *
    + * * `value` — An integer representing the number of pixels, or an integer with an optional unit of measure + * appended (as a string).
    + * * `function` — A function returning the height to set. Receives the index position of the element in the set and + * the old height as arguments. Within the function, `this` refers to the current element in the set. + * @see \`{@link https://api.jquery.com/height/ }\` + * @since 1.0 + * @since 1.4.1 + * @example ​ ````To set the height of each div on click to 30px plus a color change. +```html + + + + + height demo + + + + +​ +
    +
    +
    +
    +
    +​ + +​ + + +``` + */ + height( + value_function: string | number | ((this: TElement, index: number, height: number) => string | number), + ): this; + /** + * Get the current computed height for the first element in the set of matched elements. + * @see \`{@link https://api.jquery.com/height/ }\` + * @since 1.0 + * @example ​ ````Show various heights. Note the values are from the iframe so might be smaller than you expected. The yellow highlight shows the iframe body. +```html + + + + + height demo + + + + +​ + + + +​ +
     
    +

    + Sample paragraph to test height +

    +​ + +​ + + +``` + */ + height(): number | undefined; + /** + * Hide the matched elements. + * @param duration A string or number determining how long the animation will run. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/hide/ }\` + * @since 1.4.3 + */ + hide(duration: JQuery.Duration, easing: string, complete: (this: TElement) => void): this; + /** + * Hide the matched elements. + * @param duration A string or number determining how long the animation will run. + * @param easing_complete _@param_ `easing_complete` + *
    + * * `easing` — A string indicating which easing function to use for the transition.
    + * * `complete` — A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/hide/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Animates all spans (words in this case) to hide fastly, completing each animation within 200 milliseconds. Once each animation is done, it starts the next one. +```html + + + + + hide demo + + + + +​ + + +
    + Once upon a + time there were + three programmers... +
    +​ + +​ + + +``` + * @example ​ ````Hides the divs when clicked over 2 seconds, then removes the div element when its hidden. Try clicking on more than one box at a time. +```html + + + + + hide demo + + + + +​ +
    +​ + +​ + + +``` + */ + hide(duration: JQuery.Duration, easing_complete: string | ((this: TElement) => void)): this; + /** + * Hide the matched elements. + * @param duration_complete_options _@param_ `duration_complete_options` + *
    + * * `duration` — A string or number determining how long the animation will run.
    + * * `complete` — A function to call once the animation is complete, called once per matched element.
    + * * `options` — A map of additional options to pass to the method. + * @see \`{@link https://api.jquery.com/hide/ }\` + * @since 1.0 + * @example ​ ````Hides all paragraphs then the link on click. +```html + + + + + hide demo + + + +​ +

    Hello

    +Click to hide me too +

    Here is another paragraph

    +​ + +​ + + +``` + * @example ​ ````Animates all shown paragraphs to hide slowly, completing the animation within 600 milliseconds. +```html + + + + + hide demo + + + + +​ + +

    Hiya

    +

    Such interesting text, eh?

    +​ + +​ + + +``` + */ + hide( + duration_complete_options?: JQuery.Duration | ((this: TElement) => void) | JQuery.EffectsOptions, + ): this; + /** + * Bind two handlers to the matched elements, to be executed when the mouse pointer enters and leaves the elements. + * @param handlerIn A function to execute when the mouse pointer enters the element. + * @param handlerOut A function to execute when the mouse pointer leaves the element. + * @see \`{@link https://api.jquery.com/hover/ }\` + * @since 1.0 + * @deprecated ​ Deprecated. + * + * **Cause**: The `.hover()` method is a shorthand for the use of the `mouseover`/`mouseout` events. It is often a poor user interface choice because it does not allow for any small amounts of delay between when the mouse enters or exits an area and when the event fires. This can make it quite difficult to use with UI widgets such as drop-down menus. For more information on the problems of hovering, see the \`{@link http://cherne.net/brian/resources/jquery.hoverIntent.html hoverIntent plugin}\`. + * + * **Solution**: Review uses of `.hover()` to determine if they are appropriate, and consider use of plugins such as `hoverIntent` as an alternative. The direct replacement for `.hover(fn1, fn2)`, is `.on("mouseenter", fn1).on("mouseleave", fn2)`. + * @example ​ ````To add a special style to list items that are being hovered over, try: +```html + + + + + hover demo + + + + +​ +
      +
    • Milk
    • +
    • Bread
    • +
    • Chips
    • +
    • Socks
    • +
    +​ + +​ + + +``` + * @example ​ ````To add a special style to table cells that are being hovered over, try: +```javascript +$( "td" ).hover( + function() { + $( this ).addClass( "hover" ); + }, function() { + $( this ).removeClass( "hover" ); + } +); +``` + * @example ​ ````To unbind the above example use: +```javascript +$( "td" ).off( "mouseenter mouseleave" ); +``` + */ + hover( + handlerIn: + | JQuery.TypeEventHandler + | false, + handlerOut: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind a single handler to the matched elements, to be executed when the mouse pointer enters or leaves the elements. + * @param handlerInOut A function to execute when the mouse pointer enters or leaves the element. + * @see \`{@link https://api.jquery.com/hover/ }\` + * @since 1.4 + * @deprecated ​ Deprecated. + * + * **Cause**: The `.hover()` method is a shorthand for the use of the `mouseover`/`mouseout` events. It is often a poor user interface choice because it does not allow for any small amounts of delay between when the mouse enters or exits an area and when the event fires. This can make it quite difficult to use with UI widgets such as drop-down menus. For more information on the problems of hovering, see the \`{@link http://cherne.net/brian/resources/jquery.hoverIntent.html hoverIntent plugin}\`. + * + * **Solution**: Review uses of `.hover()` to determine if they are appropriate, and consider use of plugins such as `hoverIntent` as an alternative. The direct replacement for `.hover(fn1, fn2)`, is `.on("mouseenter", fn1).on("mouseleave", fn2)`. + * @example ​ ````Slide the next sibling LI up or down on hover, and toggle a class. +```html + + + + + hover demo + + + + +​ +
      +
    • Milk
    • +
    • White
    • +
    • Carrots
    • +
    • Orange
    • +
    • Broccoli
    • +
    • Green
    • +
    +​ + +​ + + +``` + */ + hover( + handlerInOut: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Set the HTML contents of each element in the set of matched elements. + * @param htmlString_function _@param_ `htmlString_function` + *
    + * * `htmlString` — A string of HTML to set as the content of each matched element.
    + * * `function` — A function returning the HTML content to set. Receives the index position of the element in the set + * and the old HTML value as arguments. jQuery empties the element before calling the function; use the + * oldhtml argument to reference the previous content. Within the function, `this` refers to the current + * element in the set. + * @see \`{@link https://api.jquery.com/html/ }\` + * @since 1.0 + * @since 1.4 + * @example ​ ````Add some html to each div. +```html + + + + + html demo + + + + +​ +Hello +
    +
    +
    +​ + +​ + + +``` + * @example ​ ````Add some html to each div then immediately do further manipulations to the inserted html. +```html + + + + + html demo + + + + +​ +
    +
    +
    +​ + +​ + + +``` + */ + html( + htmlString_function: + | JQuery.htmlString + | JQuery.Node + | ((this: TElement, index: number, oldhtml: JQuery.htmlString) => JQuery.htmlString | JQuery.Node), + ): this; + /** + * Get the HTML contents of the first element in the set of matched elements. + * @see \`{@link https://api.jquery.com/html/ }\` + * @since 1.0 + * @example ​ ````Click a paragraph to convert it from html to text. +```html + + + + + html demo + + + + +​ +

    + Click to change the html +

    +

    + to a text node. +

    +

    + This does nothing. +

    +​ + +​ + + +``` + */ + html(): string; + /** + * Search for a given element from among the matched elements. + * @param selector_element _@param_ `selector_element` + *
    + * * `selector` — A selector representing a jQuery collection in which to look for an element.
    + * * `element` — The DOM element or first element within the jQuery object to look for. + * @see \`{@link https://api.jquery.com/index/ }\` + * @since 1.0 + * @since 1.4 + * @example ​ ````On click, returns the index (zero-based) of that div in the page. +```html + + + + + index demo + + + + +​ +Click a div! +
    First div
    +
    Second div
    +
    Third div
    +​ + +​ + + +``` + * @example ​ ````Returns the index for the element with ID bar. +```html + + + + + index demo + + + + +​ +
      +
    • foo
    • +
    • bar
    • +
    • baz
    • +
    +
    +​ + +​ + + +``` + * @example ​ ````Returns the index for the first item in the jQuery collection. +```html + + + + + index demo + + + + +​ +
      +
    • foo
    • +
    • bar
    • +
    • baz
    • +
    +
    +​ + +​ + + +``` + * @example ​ ````Returns the index for the element with ID bar in relation to all <li> elements. +```html + + + + + index demo + + + + +​ +
      +
    • foo
    • +
    • bar
    • +
    • baz
    • +
    +
    +​ + +​ + + +``` + * @example ​ ````Returns the index for the element with ID bar in relation to its siblings. +```html + + + + + index demo + + + + +​ +
      +
    • foo
    • +
    • bar
    • +
    • baz
    • +
    +
    +​ + +​ + + +``` + * @example ​ ````Returns -1, as there is no element with ID foobar. +```html + + + + + index demo + + + + +​ +
      +
    • foo
    • +
    • bar
    • +
    • baz
    • +
    +
    +​ + +​ + + +``` + */ + index(selector_element?: JQuery.Selector | Element | JQuery): number; + /** + * Set the CSS inner height of each element in the set of matched elements. + * @param value_function _@param_ `value_function` + *
    + * * `value` — A number representing the number of pixels, or a number along with an optional unit of measure + * appended (as a string).
    + * * `function` — A function returning the inner height (including padding but not border) to set. Receives the index + * position of the element in the set and the old inner height as arguments. Within the function, `this` + * refers to the current element in the set. + * @see \`{@link https://api.jquery.com/innerHeight/ }\` + * @since 1.8.0 + * @example ​ ````Change the inner height of each div the first time it is clicked (and change its color). +```html + + + + + innerHeight demo + + + + +​ +
    d
    +
    d
    +
    d
    +
    d
    +
    d
    +​ + +​ + + +``` + */ + innerHeight( + value_function: string | number | ((this: TElement, index: number, height: number) => string | number), + ): this; + /** + * Get the current computed height for the first element in the set of matched elements, including padding but not border. + * @see \`{@link https://api.jquery.com/innerHeight/ }\` + * @since 1.2.6 + * @example ​ ````Get the innerHeight of a paragraph. +```html + + + + + innerHeight demo + + + + +​ +

    Hello

    +

    +​ + +​ + + +``` + */ + innerHeight(): number | undefined; + /** + * Set the CSS inner width of each element in the set of matched elements. + * @param value_function _@param_ `value_function` + *
    + * * `value` — A number representing the number of pixels, or a number along with an optional unit of measure + * appended (as a string).
    + * * `function` — A function returning the inner width (including padding but not border) to set. Receives the index + * position of the element in the set and the old inner width as arguments. Within the function, `this` + * refers to the current element in the set. + * @see \`{@link https://api.jquery.com/innerWidth/ }\` + * @since 1.8.0 + * @example ​ ````Change the inner width of each div the first time it is clicked (and change its color). +```html + + + + + innerWidth demo + + + + +​ +
    d
    +
    d
    +
    d
    +
    d
    +
    d
    +​ + +​ + + +``` + */ + innerWidth( + value_function: string | number | ((this: TElement, index: number, width: number) => string | number), + ): this; + /** + * Get the current computed inner width for the first element in the set of matched elements, including padding but not border. + * @see \`{@link https://api.jquery.com/innerWidth/ }\` + * @since 1.2.6 + * @example ​ ````Get the innerWidth of a paragraph. +```html + + + + + innerWidth demo + + + + +​ +

    Hello

    +

    +​ + +​ + + +``` + */ + innerWidth(): number | undefined; + /** + * Insert every element in the set of matched elements after the target. + * @param target A selector, element, array of elements, HTML string, or jQuery object; the matched set of elements + * will be inserted after the element(s) specified by this parameter. + * @see \`{@link https://api.jquery.com/insertAfter/ }\` + * @since 1.0 + * @example ​ ````Insert all paragraphs after an element with id of "foo". Same as $( "#foo" ).after( "p" ) +```html + + + + + insertAfter demo + + + + +​ +

    is what I said...

    +
    FOO!
    +​ + +​ + + +``` + */ + insertAfter(target: JQuery.Selector | JQuery.htmlString | JQuery.TypeOrArray | JQuery): this; + /** + * Insert every element in the set of matched elements before the target. + * @param target A selector, element, array of elements, HTML string, or jQuery object; the matched set of elements + * will be inserted before the element(s) specified by this parameter. + * @see \`{@link https://api.jquery.com/insertBefore/ }\` + * @since 1.0 + * @example ​ ````Insert all paragraphs before an element with id of "foo". Same as $( "#foo" ).before( "p" ) +```html + + + + + insertBefore demo + + + + +​ +
    FOO!
    +

    I would like to say:

    +​ + +​ + + +``` + */ + insertBefore(target: JQuery.Selector | JQuery.htmlString | JQuery.TypeOrArray | JQuery): this; + /** + * Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. + * @param selector_function_selection_elements _@param_ `selector_function_selection_elements` + *
    + * * `selector` — A string containing a selector expression to match elements against.
    + * * `function` — A function used as a test for every element in the set. It accepts two arguments, `index`, which is + * the element's index in the jQuery collection, and `element`, which is the DOM element. Within the + * function, `this` refers to the current DOM element.
    + * * `selection` — An existing jQuery object to match the current set of elements against.
    + * * `elements` — One or more elements to match the current set of elements against. + * @see \`{@link https://api.jquery.com/is/ }\` + * @since 1.0 + * @since 1.6 + * @example ​ ````Shows a few ways is() can be used inside an event handler. +```html + + + + + is demo + + + + +​ +
    +
    +
    +
    +

    Peter
    +
    +

     

    +​ + +​ + + +``` + * @example ​ ````Returns true, because the parent of the input is a form element. +```html + + + + + is demo + + + + +​ +
    + +
    +
    +​ + +​ + + +``` + * @example ​ ````Returns false, because the parent of the input is a p element. +```html + + + + + is demo + + + + +​ +
    +

    +
    +
    +​ + +​ + + +``` + * @example ​ ````Checks against an existing collection of alternating list elements. Blue, alternating list elements slide up while others turn red. +```html + + + + + is demo + + + + +​ +
      +
    • Chrome
    • +
    • Safari
    • +
    • Firefox
    • +
    • Opera
    • +
    +​ + +​ + + +``` + * @example ​ ````An alternate way to achieve the above example using an element rather than a jQuery object. Checks against an existing collection of alternating list elements. Blue, alternating list elements slide up while others turn red. +```html + + + + + is demo + + + + +​ +
      +
    • Chrome
    • +
    • Safari
    • +
    • Firefox
    • +
    • Opera
    • +
    +​ + +​ + + +``` + */ + is( + selector_function_selection_elements: + | JQuery.Selector + | JQuery.TypeOrArray + | JQuery + | ((this: TElement, index: number, element: TElement) => boolean), + ): boolean; + /** + * Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/keydown/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + keydown( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/keydown/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Show the event object for the keydown handler when a key is pressed in the input. +```html + + + + + keydown demo + + + + +​ +
    +
    + + +
    +
    + + +​ + +​ + + +``` + */ + keydown( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/keypress/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + keypress( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/keypress/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Show the event object when a key is pressed in the input. Note: This demo relies on a simple $.print() plugin (https://api.jquery.com/resources/events.js) for the event object's output. +```html + + + + + keypress demo + + + + +​ +
    +
    + + +
    +
    + + +​ + +​ + + +``` + */ + keypress( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/keyup/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + keyup( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/keyup/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Show the event object for the keyup handler (using a simple $.print plugin) when a key is released in the input. +```html + + + + + keyup demo + + + + +​ +
    +
    + + +
    +
    + + +​ + +​ + + +``` + */ + keyup( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Reduce the set of matched elements to the final one in the set. + * @see \`{@link https://api.jquery.com/last/ }\` + * @since 1.4 + * @example ​ ````Highlight the last span in a paragraph. +```html + + + + + last demo + + + + +​ +

    Look: This is some text in a paragraph. This is a note about it.

    +​ + +​ + + +``` + */ + last(): this; + + /** + * Reduce the set of matched elements to the even ones in the set, numbered from zero. + * @see \`{@link https://api.jquery.com/even/ }\` + * @since 3.5 + * @example ​ ````Highlight the even items in a list. +```html + + + + + even demo + + + + + +
      +
    • Look:
    • +
    • This is some text in a list.
    • +
    • This is a note about it.
    • +
    • This is another note about it.
    • +
    + + + + + +``` + */ + even(): this; + + /** + * Reduce the set of matched elements to the odd ones in the set, numbered from zero. + * @see \`{@link https://api.jquery.com/odd/ }\` + * @since 3.5 + * @example ​ ````Highlight the odd items in a list. +```html + + + + + odd demo + + + + + +
      +
    • Look:
    • +
    • This is some text in a list.
    • +
    • This is a note about it.
    • +
    • This is another note about it.
    • +
    + + + + + +``` + */ + odd(): this; + + /** + * Load data from the server and place the returned HTML into the matched element. + * @param url A string containing the URL to which the request is sent. + * @param data A plain object or string that is sent to the server with the request. + * @param complete A callback function that is executed when the request completes. + * @see \`{@link https://api.jquery.com/load/ }\` + * @since 1.0 + * @example ​ ````Same as above, but will POST the additional parameters to the server and a callback that is executed when the server is finished responding. +```javascript +$( "#feeds" ).load( "feeds.php", { limit: 25 }, function() { + alert( "The last 25 entries in the feed have been loaded" ); +}); +``` + */ + load( + url: string, + data: string | JQuery.PlainObject, + complete: ( + this: TElement, + responseText: string, + textStatus: JQuery.Ajax.TextStatus, + jqXHR: JQuery.jqXHR, + ) => void, + ): this; + /** + * Load data from the server and place the returned HTML into the matched element. + * @param url A string containing the URL to which the request is sent. + * @param complete_data _@param_ `complete_data` + *
    + * * `complete` — A callback function that is executed when the request completes.
    + * * `data` — A plain object or string that is sent to the server with the request. + * @see \`{@link https://api.jquery.com/load/ }\` + * @since 1.0 + * @example ​ ````Load another page's list items into an ordered list. +```html + + + + + load demo + + + + +​ +Projects: +
      +​ + +​ + + +``` + * @example ​ ````Display a notice if the Ajax request encounters an error. +```html + + + + + load demo + + + + +​ +Successful Response (should be blank): +
      +Error Response: +
      +​ + +​ + + +``` + * @example ​ ````Load the feeds.html file into the div with the ID of feeds. +```javascript +$( "#feeds" ).load( "feeds.html" ); +``` + * @example ​ ````pass arrays of data to the server. +```javascript +$( "#objectID" ).load( "test.php", { "choices[]": [ "Jon", "Susan" ] } ); +``` + */ + load( + url: string, + complete_data?: + | ((this: TElement, responseText: string, textStatus: JQuery.Ajax.TextStatus, jqXHR: JQuery.jqXHR) => void) + | string + | JQuery.PlainObject, + ): this; + /** + * Pass each element in the current matched set through a function, producing a new jQuery object containing the return values. + * @param callback A function object that will be invoked for each element in the current set. + * @see \`{@link https://api.jquery.com/map/ }\` + * @since 1.2 + * @example ​ ````Build a list of all the values within a form. +```html + + + + + map demo + + + + +​ +

      Values:

      +
      + + + +
      +​ + +​ + + +``` + * @example ​ ````A contrived example to show some functionality. +```html + + + + + map demo + + + + +​ +
        +
      • First
      • +
      • Second
      • +
      • Third
      • +
      • Fourth
      • +
      • Fifth
      • +
      +
        +
      +​ + +​ + + +``` + * @example ​ ````Equalize the heights of the divs. +```html + + + + + map demo + + + + +​ + +
      +
      +
      +​ + +​ + + +``` + */ + map( + callback: ( + this: TElement, + index: number, + domElement: TElement, + ) => JQuery.TypeOrArray | null | undefined, + ): JQuery; + /** + * Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mousedown/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + mousedown( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mousedown/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Show texts when mouseup and mousedown event triggering. +```html + + + + + mousedown demo + + + +​ +

      Press mouse and release here.

      +​ + +​ + + +``` + */ + mousedown( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mouseenter/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + mouseenter( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mouseenter/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Show texts when mouseenter and mouseout event triggering. + mouseover fires when the pointer moves into the child element as well, while mouseenter fires only when the pointer moves into the bound element. +```html + + + + + mouseenter demo + + + + +​ +
      +

      move your mouse

      +

      move your mouse

      0

      +

      0

      +
      +​ +
      +

      move your mouse

      +

      move your mouse

      0

      +

      0

      +
      +​ + +​ + + +``` + */ + mouseenter( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mouseleave/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + mouseleave( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mouseleave/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Show number of times mouseout and mouseleave events are triggered. mouseout fires when the pointer moves out of child element as well, while mouseleave fires only when the pointer moves out of the bound element. +```html + + + + + mouseleave demo + + + + +​ +
      +

      move your mouse

      +

      move your mouse

      0

      +

      0

      +
      +
      +

      move your mouse

      +

      move your mouse

      0

      +

      0

      +
      +​ + +​ + + +``` + */ + mouseleave( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mousemove/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + mousemove( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mousemove/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Show the mouse coordinates when the mouse is moved over the yellow div. Coordinates are relative to the window, which in this case is the iframe. +```html + + + + + mousemove demo + + + + +​ +

      + Move the mouse over the div. +   +

      +
      +​ + +​ + + +``` + */ + mousemove( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mouseout/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + mouseout( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mouseout/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Show the number of times mouseout and mouseleave events are triggered. + mouseout fires when the pointer moves out of the child element as well, while mouseleave fires only when the pointer moves out of the bound element. +```html + + + + + mouseout demo + + + + +​ +
      +

      move your mouse

      +

      move your mouse

      0

      +

      0

      +
      +​ +
      +

      move your mouse

      +

      move your mouse

      0

      +

      0

      +
      +​ + +​ + + +``` + */ + mouseout( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mouseover/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + mouseover( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mouseover/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Show the number of times mouseover and mouseenter events are triggered. +mouseover fires when the pointer moves into the child element as well, while mouseenter fires only when the pointer moves into the bound element. +```html + + + + + mouseover demo + + + + +​ +
      + move your mouse +
      +
      +
      +​ +
      + move your mouse +
      +
      +
      +​ + +​ + + +``` + */ + mouseover( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mouseup/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + mouseup( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/mouseup/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````Show texts when mouseup and mousedown event triggering. +```html + + + + + mouseup demo + + + +​ +

      Press mouse and release here.

      +​ + +​ + + +``` + */ + mouseup( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector. + * @param selector A string containing a selector expression to match elements against. + * @see \`{@link https://api.jquery.com/next/ }\` + * @since 1.0 + * @example ​ ````Find the very next sibling of each disabled button and change its text "this button is disabled". +```html + + + + + next demo + + + + +​ +
      -
      +
      -
      +
      -
      +​ + +​ + + +``` + * @example ​ ````Find the very next sibling of each paragraph. Keep only the ones with a class "selected". +```html + + + + + next demo + + + +​ +

      Hello

      +

      Hello Again

      +
      And Again
      +​ + +​ + + +``` + */ + next(selector?: JQuery.Selector): this; + /** + * Get all following siblings of each element in the set of matched elements, optionally filtered by a selector. + * @param selector A string containing a selector expression to match elements against. + * @see \`{@link https://api.jquery.com/nextAll/ }\` + * @since 1.2 + * @example ​ ````Locate all the divs after the first and give them a class. +```html + + + + + nextAll demo + + + + +​ +
      first
      +
      sibling
      child
      +
      sibling
      +
      sibling
      ​ + +​ + + +``` + * @example ​ ````Locate all the paragraphs after the second child in the body and give them a class. +```html + + + + + nextAll demo + + + + +​ +

      p

      +
      div
      +

      p

      +

      p

      +
      div
      +

      p

      +
      div
      +​ + +​ + + +``` + */ + nextAll(selector?: string): this; + /** + * Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed. + * @param selector_element _@param_ `selector_element` + *
      + * * `selector` — A string containing a selector expression to indicate where to stop matching following sibling elements.
      + * * `element` — A DOM node or jQuery object indicating where to stop matching following sibling elements. + * @param filter A string containing a selector expression to match elements against. + * @see \`{@link https://api.jquery.com/nextUntil/ }\` + * @since 1.4 + * @since 1.6 + * @example ​ ````Find the siblings that follow <dt id="term-2"> up to the next <dt> and give them a red background color. Also, find <dd> siblings that follow <dt id="term-1"> up to <dt id="term-3"> and give them a green text color. +```html + + + + + nextUntil demo + + + +​ +
      +
      term 1
      +
      definition 1-a
      +
      definition 1-b
      +
      definition 1-c
      +
      definition 1-d
      +
      term 2
      +
      definition 2-a
      +
      definition 2-b
      +
      definition 2-c
      +
      term 3
      +
      definition 3-a
      +
      definition 3-b
      +
      +​ + +​ + + +``` + */ + nextUntil(selector_element?: JQuery.Selector | Element | JQuery, filter?: JQuery.Selector): this; + /** + * Remove elements from the set of matched elements. + * @param selector_function_selection _@param_ `selector_function_selection` + *
      + * * `selector` — A string containing a selector expression, a DOM element, or an array of elements to match against the set.
      + * * `function` — A function used as a test for each element in the set. It accepts two arguments, `index`, which is + * the element's index in the jQuery collection, and `element`, which is the DOM element. Within the + * function, `this` refers to the current DOM element.
      + * * `selection` — An existing jQuery object to match the current set of elements against. + * @see \`{@link https://api.jquery.com/not/ }\` + * @since 1.0 + * @since 1.4 + * @example ​ ````Adds a border to divs that are not green or blue. +```html + + + + + not demo + + + + +​ +
      +
      +
      +
      +
      +
      +
      +​ + +​ + + +``` + * @example ​ ````Removes the element with the ID "selected" from the set of all paragraphs. +```javascript +$( "p" ).not( $( "#selected" )[ 0 ] ); +``` + * @example ​ ````Removes the element with the ID "selected" from the set of all paragraphs. +```javascript +$( "p" ).not( "#selected" ); +``` + * @example ​ ````Removes all elements that match "div p.selected" from the total set of all paragraphs. +```javascript +$( "p" ).not( $( "div p.selected" ) ); +``` + */ + not( + selector_function_selection: + | JQuery.Selector + | JQuery.TypeOrArray + | JQuery + | ((this: TElement, index: number, element: TElement) => boolean), + ): this; + /** + * Remove an event handler. + * @param events One or more space-separated event types and optional namespaces, or just namespaces, such as + * "click", "keydown.myPlugin", or ".myPlugin". + * @param selector A selector which should match the one originally passed to .on() when attaching event handlers. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/off/ }\` + * @since 1.7 + * @example ​ ````Add and remove event handlers on the colored button. +```html + + + + + off demo + + + + +​ + + + +
      Click!
      +​ + +​ + + +``` + * @example ​ ````Remove just one previously bound handler by passing it as the third argument: +```javascript +var foo = function() { + // Code to handle some kind of event +}; +​ +// ... Now foo will be called when paragraphs are clicked ... +$( "body" ).on( "click", "p", foo ); +​ +// ... Foo will no longer be called. +$( "body" ).off( "click", "p", foo ); +``` + */ + off( + events: TType, + selector: JQuery.Selector, + handler: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Remove an event handler. + * @param events One or more space-separated event types and optional namespaces, or just namespaces, such as + * "click", "keydown.myPlugin", or ".myPlugin". + * @param selector_handler _@param_ `selector_handler` + *
      + * * `selector` — A selector which should match the one originally passed to `.on()` when attaching event handlers.
      + * * `handler` — A handler function previously attached for the event(s), or the special value `false`. + * @see \`{@link https://api.jquery.com/off/ }\` + * @since 1.7 + * @example ​ ````Remove all delegated click handlers from all paragraphs: +```javascript +$( "p" ).off( "click", "**" ); +``` + * @example ​ ````Unbind all delegated event handlers by their namespace: +```javascript +var validate = function() { + // Code to validate form entries +}; +​ +// Delegate events under the ".validator" namespace +$( "form" ).on( "click.validator", "button", validate ); +​ +$( "form" ).on( "keypress.validator", "input[type='text']", validate ); +​ +// Remove event handlers in the ".validator" namespace +$( "form" ).off( ".validator" ); +``` + */ + off( + events: TType, + selector_handler?: + | JQuery.Selector + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Remove an event handler. + * @param events An object where the string keys represent one or more space-separated event types and optional + * namespaces, and the values represent handler functions previously attached for the event(s). + * @param selector A selector which should match the one originally passed to .on() when attaching event handlers. + * @see \`{@link https://api.jquery.com/off/ }\` + * @since 1.7 + */ + off(events: JQuery.TypeEventHandlers, selector?: JQuery.Selector): this; + /** + * Remove an event handler. + * @param event A jQuery.Event object. + * @see \`{@link https://api.jquery.com/off/ }\` + * @since 1.7 + * @example ​ ````Remove all event handlers from all paragraphs: +```javascript +$( "p" ).off(); +``` + */ + off(event?: JQuery.TriggeredEvent): this; + /** + * Set the current coordinates of every element in the set of matched elements, relative to the document. + * @param coordinates_function _@param_ `coordinates_function` + *
      + * * `coordinates` — An object containing the properties `top` and `left`, which are numbers indicating the new top and + * left coordinates for the elements.
      + * * `function` — A function to return the coordinates to set. Receives the index of the element in the collection as + * the first argument and the current coordinates as the second argument. The function should return an + * object with the new `top` and `left` properties. + * @see \`{@link https://api.jquery.com/offset/ }\` + * @since 1.4 + * @example ​ ````Set the offset of the second paragraph: +```html + + + + + offset demo + + + + +​ +

      Hello

      2nd Paragraph

      +​ + +​ + + +``` + */ + offset( + coordinates_function: + | JQuery.CoordinatesPartial + | ((this: TElement, index: number, coords: JQuery.Coordinates) => JQuery.CoordinatesPartial), + ): this; + /** + * Get the current coordinates of the first element in the set of matched elements, relative to the document. + * @see \`{@link https://api.jquery.com/offset/ }\` + * @since 1.2 + * @example ​ ````Access the offset of the second paragraph: +```html + + + + + offset demo + + + + +​ +

      Hello

      2nd Paragraph

      +​ + +​ + + +``` + * @example ​ ````Click to see the offset. +```html + + + + + offset demo + + + + +​ +
      Click an element.
      +

      + This is the best way to find an offset. +

      +
      +
      +​ + +​ + + +``` + */ + offset(): JQuery.Coordinates | undefined; + /** + * Get the closest ancestor element that is positioned. + * @see \`{@link https://api.jquery.com/offsetParent/ }\` + * @since 1.2.6 + * @example ​ ````Find the offsetParent of item "A." +```html + + + + + offsetParent demo + + + +​ +
        +
      • I
      • +
      • II +
          +
        • A
        • +
        • B +
            +
          • 1
          • +
          • 2
          • +
          • 3
          • +
          +
        • +
        • C
        • +
        +
      • +
      • III
      • +
      +​ + +​ + + +``` + */ + offsetParent(): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param selector A selector string to filter the descendants of the selected elements that trigger the event. If the + * selector is null or omitted, the event is always triggered when it reaches the selected element. + * @param data Data to be passed to the handler in event.data when an event is triggered. + * @param handler A function to execute when the event is triggered. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + */ + on( + events: TType, + selector: JQuery.Selector, + data: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param selector A selector string to filter the descendants of the selected elements that trigger the event. If the + * selector is null or omitted, the event is always triggered when it reaches the selected element. + * @param data Data to be passed to the handler in event.data when an event is triggered. + * @param handler A function to execute when the event is triggered. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + */ + on( + events: TType, + selector: null | undefined, + data: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param selector A selector string to filter the descendants of the selected elements that trigger the event. If the + * selector is null or omitted, the event is always triggered when it reaches the selected element. + * @param data Data to be passed to the handler in event.data when an event is triggered. + * @param handler A function to execute when the event is triggered. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + * @deprecated ​ Deprecated. Use \`{@link JQuery.Event }\` in place of \`{@link JQueryEventObject }\`. + */ + on( + events: string, + selector: JQuery.Selector | null | undefined, + data: any, + handler: (event: JQueryEventObject) => void, + ): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param selector A selector string to filter the descendants of the selected elements that trigger the event. If the + * selector is null or omitted, the event is always triggered when it reaches the selected element. + * @param handler A function to execute when the event is triggered. The value false is also allowed as a shorthand + * for a function that simply does return false. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + * @example ​ ````Click any paragraph to add another after it. Note that .on() allows a click event on any paragraph--even new ones--since the event is handled by the ever-present body element after it bubbles to there. +```html + + + + + on demo + + + + +​ +

      Click me!

      + +​ + +​ + + +``` + * @example ​ ````Display each paragraph's text in an alert box whenever it is clicked: +```javascript +$( "body" ).on( "click", "p", function() { + alert( $( this ).text() ); +}); +``` + * @example ​ ````Cancel a link's default action using the .preventDefault() method: +```javascript +$( "body" ).on( "click", "a", function( event ) { + event.preventDefault(); +}); +``` + */ + on( + events: TType, + selector: JQuery.Selector, + handler: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param data Data to be passed to the handler in event.data when an event is triggered. + * @param handler A function to execute when the event is triggered. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + * @example ​ ````Pass data to the event handler, which is specified here by name: +```javascript +function myHandler( event ) { + alert( event.data.foo ); +} +$( "p" ).on( "click", { foo: "bar" }, myHandler ); +``` + */ + on( + events: TType, + data: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param selector_data _@param_ `selector_data` + *
      + * * `selector` — A selector string to filter the descendants of the selected elements that trigger the event. If the + * selector is null or omitted, the event is always triggered when it reaches the selected element.
      + * * `data` — Data to be passed to the handler in event.data when an event is triggered. + * @param handler A function to execute when the event is triggered. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + * @deprecated ​ Deprecated. Use \`{@link JQuery.Event }\` in place of \`{@link JQueryEventObject }\`. + * @example ​ ````Click any paragraph to add another after it. Note that .on() allows a click event on any paragraph--even new ones--since the event is handled by the ever-present body element after it bubbles to there. +```html + + + + + on demo + + + + +​ +

      Click me!

      + +​ + +​ + + +``` + * @example ​ ````Display each paragraph's text in an alert box whenever it is clicked: +```javascript +$( "body" ).on( "click", "p", function() { + alert( $( this ).text() ); +}); +``` + * @example ​ ````Cancel a link's default action using the .preventDefault() method: +```javascript +$( "body" ).on( "click", "a", function( event ) { + event.preventDefault(); +}); +``` + * @example ​ ````Pass data to the event handler, which is specified here by name: +```javascript +function myHandler( event ) { + alert( event.data.foo ); +} +$( "p" ).on( "click", { foo: "bar" }, myHandler ); +``` + */ + on(events: string, selector_data: any, handler: (event: JQueryEventObject) => void): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param handler A function to execute when the event is triggered. The value false is also allowed as a shorthand + * for a function that simply does return false. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + * @example ​ ````Display a paragraph's text in an alert when it is clicked: +```javascript +$( "p" ).on( "click", function() { + alert( $( this ).text() ); +}); +``` + * @example ​ ````Cancel a form submit action and prevent the event from bubbling up by returning false: +```javascript +$( "form" ).on( "submit", false ); +``` + * @example ​ ````Cancel only the default action by using .preventDefault(). +```javascript +$( "form" ).on( "submit", function( event ) { + event.preventDefault(); +}); +``` + * @example ​ ````Stop submit events from bubbling without preventing form submit, using .stopPropagation(). +```javascript +$( "form" ).on( "submit", function( event ) { + event.stopPropagation(); +}); +``` + * @example ​ ````Pass data to the event handler using the second argument to .trigger() +```javascript +$( "div" ).on( "click", function( event, person ) { + alert( "Hello, " + person.name ); +}); +$( "div" ).trigger( "click", { name: "Jim" } ); +``` + * @example ​ ````Use the the second argument of .trigger() to pass an array of data to the event handler +```javascript +$( "div" ).on( "click", function( event, salutation, name ) { + alert( salutation + ", " + name ); +}); +$( "div" ).trigger( "click", [ "Goodbye", "Jim" ] ); +``` + * @example ​ ````Attach and trigger custom (non-browser) events. +```html + + + + + on demo + + + + +​ +

      Has an attached custom event.

      + + +​ + +​ + + +``` + * @example ​ ````Attach multiple events—one on mouseenter and one on mouseleave to the same element: +```javascript +$( "#cart" ).on( "mouseenter mouseleave", function( event ) { + $( this ).toggleClass( "active" ); +}); +``` + */ + on( + events: TType, + handler: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param handler A function to execute when the event is triggered. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + * @deprecated ​ Deprecated. Use \`{@link JQuery.Event }\` in place of \`{@link JQueryEventObject }\`. + * @example ​ ````Display a paragraph's text in an alert when it is clicked: +```javascript +$( "p" ).on( "click", function() { + alert( $( this ).text() ); +}); +``` + * @example ​ ````Cancel a form submit action and prevent the event from bubbling up by returning false: +```javascript +$( "form" ).on( "submit", false ); +``` + * @example ​ ````Cancel only the default action by using .preventDefault(). +```javascript +$( "form" ).on( "submit", function( event ) { + event.preventDefault(); +}); +``` + * @example ​ ````Stop submit events from bubbling without preventing form submit, using .stopPropagation(). +```javascript +$( "form" ).on( "submit", function( event ) { + event.stopPropagation(); +}); +``` + * @example ​ ````Pass data to the event handler using the second argument to .trigger() +```javascript +$( "div" ).on( "click", function( event, person ) { + alert( "Hello, " + person.name ); +}); +$( "div" ).trigger( "click", { name: "Jim" } ); +``` + * @example ​ ````Use the the second argument of .trigger() to pass an array of data to the event handler +```javascript +$( "div" ).on( "click", function( event, salutation, name ) { + alert( salutation + ", " + name ); +}); +$( "div" ).trigger( "click", [ "Goodbye", "Jim" ] ); +``` + * @example ​ ````Attach and trigger custom (non-browser) events. +```html + + + + + on demo + + + + +​ +

      Has an attached custom event.

      + + +​ + +​ + + +``` + * @example ​ ````Attach multiple events—one on mouseenter and one on mouseleave to the same element: +```javascript +$( "#cart" ).on( "mouseenter mouseleave", function( event ) { + $( this ).toggleClass( "active" ); +}); +``` + */ + on(events: string, handler: (event: JQueryEventObject) => void): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events An object in which the string keys represent one or more space-separated event types and optional + * namespaces, and the values represent a handler function to be called for the event(s). + * @param selector A selector string to filter the descendants of the selected elements that will call the handler. If + * the selector is null or omitted, the handler is always called when it reaches the selected element. + * @param data Data to be passed to the handler in event.data when an event occurs. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + */ + on( + events: JQuery.TypeEventHandlers, + selector: JQuery.Selector, + data: TData, + ): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events An object in which the string keys represent one or more space-separated event types and optional + * namespaces, and the values represent a handler function to be called for the event(s). + * @param selector A selector string to filter the descendants of the selected elements that will call the handler. If + * the selector is null or omitted, the handler is always called when it reaches the selected element. + * @param data Data to be passed to the handler in event.data when an event occurs. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + */ + on( + events: JQuery.TypeEventHandlers, + selector: null | undefined, + data: TData, + ): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events An object in which the string keys represent one or more space-separated event types and optional + * namespaces, and the values represent a handler function to be called for the event(s). + * @param selector A selector string to filter the descendants of the selected elements that will call the handler. If + * the selector is null or omitted, the handler is always called when it reaches the selected element. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + */ + on(events: JQuery.TypeEventHandlers, selector: JQuery.Selector): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events An object in which the string keys represent one or more space-separated event types and optional + * namespaces, and the values represent a handler function to be called for the event(s). + * @param data Data to be passed to the handler in event.data when an event occurs. + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + */ + on( + events: JQuery.TypeEventHandlers, + data: TData, + ): this; + /** + * Attach an event handler function for one or more events to the selected elements. + * @param events An object in which the string keys represent one or more space-separated event types and optional + * namespaces, and the values represent a handler function to be called for the event(s). + * @see \`{@link https://api.jquery.com/on/ }\` + * @since 1.7 + * @example ​ ````Attach multiple event handlers simultaneously using a plain object. +```html + + + + + on demo + + + + +​ +
      test div
      +​ + +​ + + +``` + */ + on(events: JQuery.TypeEventHandlers): this; + /** + * Attach a handler to an event for the elements. The handler is executed at most once per element per event type. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param selector A selector string to filter the descendants of the selected elements that trigger the event. If the + * selector is null or omitted, the event is always triggered when it reaches the selected element. + * @param data Data to be passed to the handler in event.data when an event is triggered. + * @param handler A function to execute when the event is triggered. + * @see \`{@link https://api.jquery.com/one/ }\` + * @since 1.7 + */ + one( + events: TType, + selector: JQuery.Selector, + data: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Attach a handler to an event for the elements. The handler is executed at most once per element per event type. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param selector A selector string to filter the descendants of the selected elements that trigger the event. If the + * selector is null or omitted, the event is always triggered when it reaches the selected element. + * @param data Data to be passed to the handler in event.data when an event is triggered. + * @param handler A function to execute when the event is triggered. + * @see \`{@link https://api.jquery.com/one/ }\` + * @since 1.7 + */ + one( + events: TType, + selector: null | undefined, + data: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Attach a handler to an event for the elements. The handler is executed at most once per element per event type. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param selector A selector string to filter the descendants of the selected elements that trigger the event. If the + * selector is null or omitted, the event is always triggered when it reaches the selected element. + * @param handler A function to execute when the event is triggered. The value false is also allowed as a shorthand + * for a function that simply does return false. + * @see \`{@link https://api.jquery.com/one/ }\` + * @since 1.7 + */ + one( + events: TType, + selector: JQuery.Selector, + handler: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Attach a handler to an event for the elements. The handler is executed at most once per element per event type. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param data Data to be passed to the handler in event.data when an event is triggered. + * @param handler A function to execute when the event is triggered. + * @see \`{@link https://api.jquery.com/one/ }\` + * @since 1.7 + */ + one( + events: TType, + data: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Attach a handler to an event for the elements. The handler is executed at most once per element per event type. + * @param events One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + * @param handler A function to execute when the event is triggered. The value false is also allowed as a shorthand + * for a function that simply does return false. + * @see \`{@link https://api.jquery.com/one/ }\` + * @since 1.7 + * @example ​ ````Tie a one-time click to each div. +```html + + + + + one demo + + + + +​ +
      +
      +
      +
      +
      +

      Click a green square...

      +​ + +​ + + +``` + * @example ​ ````To display the text of all paragraphs in an alert box the first time each of them is clicked: +```javascript +$( "p" ).one( "click", function() { + alert( $( this ).text() ); +}); +``` + * @example ​ ````Event handlers will trigger once per element per event type +```html + + + + + one demo + + + +​ +
      0
      +
      Hover/click me
      +​ + +​ + + +``` + */ + one( + events: TType, + handler: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Attach a handler to an event for the elements. The handler is executed at most once per element per event type. + * @param events An object in which the string keys represent one or more space-separated event types and optional + * namespaces, and the values represent a handler function to be called for the event(s). + * @param selector A selector string to filter the descendants of the selected elements that will call the handler. If + * the selector is null or omitted, the handler is always called when it reaches the selected element. + * @param data Data to be passed to the handler in event.data when an event occurs. + * @see \`{@link https://api.jquery.com/one/ }\` + * @since 1.7 + */ + one( + events: JQuery.TypeEventHandlers, + selector: JQuery.Selector, + data: TData, + ): this; + /** + * Attach a handler to an event for the elements. The handler is executed at most once per element per event type. + * @param events An object in which the string keys represent one or more space-separated event types and optional + * namespaces, and the values represent a handler function to be called for the event(s). + * @param selector A selector string to filter the descendants of the selected elements that will call the handler. If + * the selector is null or omitted, the handler is always called when it reaches the selected element. + * @param data Data to be passed to the handler in event.data when an event occurs. + * @see \`{@link https://api.jquery.com/one/ }\` + * @since 1.7 + */ + one( + events: JQuery.TypeEventHandlers, + selector: null | undefined, + data: TData, + ): this; + /** + * Attach a handler to an event for the elements. The handler is executed at most once per element per event type. + * @param events An object in which the string keys represent one or more space-separated event types and optional + * namespaces, and the values represent a handler function to be called for the event(s). + * @param selector A selector string to filter the descendants of the selected elements that will call the handler. If + * the selector is null or omitted, the handler is always called when it reaches the selected element. + * @see \`{@link https://api.jquery.com/one/ }\` + * @since 1.7 + */ + one(events: JQuery.TypeEventHandlers, selector: JQuery.Selector): this; + /** + * Attach a handler to an event for the elements. The handler is executed at most once per element per event type. + * @param events An object in which the string keys represent one or more space-separated event types and optional + * namespaces, and the values represent a handler function to be called for the event(s). + * @param data Data to be passed to the handler in event.data when an event occurs. + * @see \`{@link https://api.jquery.com/one/ }\` + * @since 1.7 + */ + one( + events: JQuery.TypeEventHandlers, + data: TData, + ): this; + /** + * Attach a handler to an event for the elements. The handler is executed at most once per element per event type. + * @param events An object in which the string keys represent one or more space-separated event types and optional + * namespaces, and the values represent a handler function to be called for the event(s). + * @see \`{@link https://api.jquery.com/one/ }\` + * @since 1.7 + */ + one(events: JQuery.TypeEventHandlers): this; + /** + * Set the CSS outer height of each element in the set of matched elements. + * @param value_function _@param_ `value_function` + *
      + * * `value` — A number representing the number of pixels, or a number along with an optional unit of measure + * appended (as a string).
      + * * `function` — A function returning the outer height to set. Receives the index position of the element in the set + * and the old outer height as arguments. Within the function, `this` refers to the current element in + * the set. + * @see \`{@link https://api.jquery.com/outerHeight/ }\` + * @since 1.8.0 + * @example ​ ````Change the outer height of each div the first time it is clicked (and change its color). +```html + + + + + outerHeight demo + + + + +​ +
      d
      +
      d
      +
      d
      +
      d
      +
      d
      +​ + +​ + + +``` + */ + outerHeight( + value_function: string | number | ((this: TElement, index: number, height: number) => string | number), + includeMargin?: boolean, + ): this; + /** + * Get the current computed outer height (including padding, border, and optionally margin) for the first element in the set of matched elements. + * @param includeMargin A Boolean indicating whether to include the element's margin in the calculation. + * @see \`{@link https://api.jquery.com/outerHeight/ }\` + * @since 1.2.6 + * @example ​ ````Get the outerHeight of a paragraph. +```html + + + + + outerHeight demo + + + + +​ +

      Hello

      +​ + +​ + + +``` + */ + outerHeight(includeMargin?: boolean): number | undefined; + /** + * Set the CSS outer width of each element in the set of matched elements. + * @param value_function _@param_ `value_function` + *
      + * * `value` — A number representing the number of pixels, or a number along with an optional unit of measure + * appended (as a string).
      + * * `function` — A function returning the outer width to set. Receives the index position of the element in the set + * and the old outer width as arguments. Within the function, `this` refers to the current element in + * the set. + * @see \`{@link https://api.jquery.com/outerWidth/ }\` + * @since 1.8.0 + * @example ​ ````Change the outer width of each div the first time it is clicked (and change its color). +```html + + + + + outerWidth demo + + + + +​ +
      d
      +
      d
      +
      d
      +
      d
      +
      d
      +​ + +​ + + +``` + */ + outerWidth( + value_function: string | number | ((this: TElement, index: number, width: number) => string | number), + includeMargin?: boolean, + ): this; + /** + * Get the current computed outer width (including padding, border, and optionally margin) for the first element in the set of matched elements. + * @param includeMargin A Boolean indicating whether to include the element's margin in the calculation. + * @see \`{@link https://api.jquery.com/outerWidth/ }\` + * @since 1.2.6 + * @example ​ ````Get the outerWidth of a paragraph. +```html + + + + + outerWidth demo + + + + +​ +

      Hello

      +​ + +​ + + +``` + */ + outerWidth(includeMargin?: boolean): number | undefined; + /** + * Get the parent of each element in the current set of matched elements, optionally filtered by a selector. + * @param selector A string containing a selector expression to match elements against. + * @see \`{@link https://api.jquery.com/parent/ }\` + * @since 1.0 + * @example ​ ````Shows the parent of each element as (parent > child). Check the View Source to see the raw html. +```html + + + + + parent demo + + + + +​ +
      div, + span, + b +
      +​ +

      p, + span, + em + +

      +​ +
      div, + strong, + span, + em, + b, + + + b +
      +​ + +​ + + +``` + * @example ​ ````Find the parent element of each paragraph with a class "selected". +```html + + + + + parent demo + + + +​ +

      Hello

      +

      Hello Again

      +​ + +​ + + +``` + */ + parent(selector?: JQuery.Selector): this; + /** + * Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector. + * @param selector A string containing a selector expression to match elements against. + * @see \`{@link https://api.jquery.com/parents/ }\` + * @since 1.0 + * @example ​ ````Find all parent elements of each b. +```html + + + + + parents demo + + + + +​ +
      +

      + + My parents are: + +

      +
      +​ + +​ + + +``` + * @example ​ ````Click to find all unique div parent elements of each span. +```html + + + + + parents demo + + + + +​ +

      +

      +
      Hello
      + Hello Again +
      +
      + And Hello Again +
      +

      + Click Hellos to toggle their parents. +​ + +​ + + +``` + */ + parents(selector: K | JQuery): JQuery; + parents(selector: K | JQuery): JQuery; + // eslint-disable-next-line @definitelytyped/no-unnecessary-generics + parents(selector?: JQuery.Selector): JQuery; + /** + * Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object. + * @param selector_element _@param_ `selector_element` + *
      + * * `selector` — A string containing a selector expression to indicate where to stop matching ancestor elements.
      + * * `element` — A DOM node or jQuery object indicating where to stop matching ancestor elements. + * @param filter A string containing a selector expression to match elements against. + * @see \`{@link https://api.jquery.com/parentsUntil/ }\` + * @since 1.4 + * @since 1.6 + * @example ​ ````Find the ancestors of <li class="item-a"> up to <ul class="level-1"> and give them a red background color. Also, find ancestors of <li class="item-2"> that have a class of "yes" up to <ul class="level-1"> and give them a green border. +```html + + + + + parentsUntil demo + + + +​ +
        +
      • I
      • +
      • II +
          +
        • A
        • +
        • B +
            +
          • 1
          • +
          • 2
          • +
          • 3
          • +
          +
        • +
        • C
        • +
        +
      • +
      • III
      • +
      +​ + +​ + + +``` + */ + parentsUntil(selector_element?: JQuery.Selector | Element | JQuery, filter?: JQuery.Selector): this; + /** + * Get the current coordinates of the first element in the set of matched elements, relative to the offset parent. + * @see \`{@link https://api.jquery.com/position/ }\` + * @since 1.2 + * @example ​ ````Access the position of the second paragraph: +```html + + + + + position demo + + + + +​ +
      +

      Hello

      +
      +

      +​ + +​ + + +``` + */ + position(): JQuery.Coordinates; + /** + * Insert content, specified by the parameter, to the beginning of each element in the set of matched elements. + * @param contents One or more additional DOM elements, text nodes, arrays of elements and text nodes, HTML strings, or + * jQuery objects to insert at the beginning of each element in the set of matched elements. + * @see \`{@link https://api.jquery.com/prepend/ }\` + * @since 1.0 + * @example ​ ````Prepends some HTML to all paragraphs. +```html + + + + + prepend demo + + + + +​ +

      there, friend!

      +

      amigo!

      +​ + +​ + + +``` + * @example ​ ````Prepends a DOM Element to all paragraphs. +```html + + + + + prepend demo + + + + +​ +

      is what I'd say

      +

      is what I said

      +​ + +​ + + +``` + * @example ​ ````Prepends a jQuery object (similar to an Array of DOM Elements) to all paragraphs. +```html + + + + + prepend demo + + + + +​ +

      is what was said.

      Hello +​ + +​ + + +``` + */ + prepend(...contents: Array>>): this; + /** + * Insert content, specified by the parameter, to the beginning of each element in the set of matched elements. + * @param funсtion A function that returns an HTML string, DOM element(s), text node(s), or jQuery object to insert at + * the beginning of each element in the set of matched elements. Receives the index position of the + * element in the set and the old HTML value of the element as arguments. Within the function, `this` + * refers to the current element in the set. + * @see \`{@link https://api.jquery.com/prepend/ }\` + * @since 1.4 + */ + prepend( + funсtion: ( + this: TElement, + index: number, + html: string, + ) => JQuery.htmlString | JQuery.TypeOrArray>, + ): this; + /** + * Insert every element in the set of matched elements to the beginning of the target. + * @param target A selector, element, HTML string, array of elements, or jQuery object; the matched set of elements + * will be inserted at the beginning of the element(s) specified by this parameter. + * @see \`{@link https://api.jquery.com/prependTo/ }\` + * @since 1.0 + * @example ​ ````Prepend all spans to the element with the ID "foo" (Check .prepend() documentation for more examples) +```html + + + + + prependTo demo + + + + +​ +
      FOO!
      +I have something to say... +​ + +​ + + +``` + */ + prependTo( + target: JQuery.Selector | JQuery.htmlString | JQuery.TypeOrArray | JQuery, + ): this; + /** + * Get the immediately preceding sibling of each element in the set of matched elements. If a selector is provided, it retrieves the previous sibling only if it matches that selector. + * @param selector A string containing a selector expression to match elements against. + * @see \`{@link https://api.jquery.com/prev/ }\` + * @since 1.0 + * @example ​ ````Find the very previous sibling of each div. +```html + + + + + prev demo + + + + +​ +
      +
      +
      has child
      +
      +
      +
      +
      +
      +

      +​ + +​ + + +``` + * @example ​ ````For each paragraph, find the very previous sibling that has a class "selected". +```html + + + + + prev demo + + + +​ +
      Hello
      +

      Hello Again

      +

      And Again

      +​ + +​ + + +``` + */ + prev(selector?: JQuery.Selector): this; + /** + * Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector. + * @param selector A string containing a selector expression to match elements against. + * @see \`{@link https://api.jquery.com/prevAll/ }\` + * @since 1.2 + * @example ​ ````Locate all the divs preceding the last div and give them a class. +```html + + + + + prevAll demo + + + + +​ +
      +
      +
      +
      +​ + +​ + + +``` + */ + prevAll(selector?: JQuery.Selector): this; + /** + * Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object. + * @param selector_element _@param_ `selector_element` + *
      + * * `selector` — A string containing a selector expression to indicate where to stop matching preceding sibling elements.
      + * * `element` — A DOM node or jQuery object indicating where to stop matching preceding sibling elements. + * @param filter A string containing a selector expression to match elements against. + * @see \`{@link https://api.jquery.com/prevUntil/ }\` + * @since 1.4 + * @since 1.6 + * @example ​ ````Find the siblings that precede <dt id="term-2"> up to the preceding <dt> and give them a red background color. Also, find previous <dd> siblings of <dt id="term-3"> up to <dt id="term-1"> and give them a green text color. +```html + + + + + prevUntil demo + + + +​ +
      +
      term 1
      +
      definition 1-a
      +
      definition 1-b
      +
      definition 1-c
      +
      definition 1-d
      +​ +
      term 2
      +
      definition 2-a
      +
      definition 2-b
      +
      definition 2-c
      +​ +
      term 3
      +
      definition 3-a
      +
      definition 3-b
      +
      +​ + +​ + + +``` + */ + prevUntil(selector_element?: JQuery.Selector | Element | JQuery, filter?: JQuery.Selector): this; + /** + * Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished. + * @param type The type of queue that needs to be observed. + * @param target Object onto which the promise methods have to be attached + * @see \`{@link https://api.jquery.com/promise/ }\` + * @since 1.6 + */ + promise(type: string, target: T): T & JQuery.Promise; + /** + * Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished. + * @param target Object onto which the promise methods have to be attached + * @see \`{@link https://api.jquery.com/promise/ }\` + * @since 1.6 + */ + promise(target: T): T & JQuery.Promise; + /** + * Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished. + * @param type The type of queue that needs to be observed. + * @see \`{@link https://api.jquery.com/promise/ }\` + * @since 1.6 + * @example ​ ````Using .promise() on a collection with no active animation returns a resolved Promise: +```javascript +var div = $( "
      " ); +​ +div.promise().done(function( arg1 ) { + // Will fire right away and alert "true" + alert( this === div && arg1 === div ); +}); +``` + * @example ​ ````Resolve the returned Promise when all animations have ended (including those initiated in the animation callback or added later on): +```html + + + + + promise demo + + + + +​ + +

      Ready...

      +
      +
      +
      +
      +​ + +​ + + +``` + * @example ​ ````Resolve the returned Promise using a $.when() statement (the .promise() method makes it possible to do this with jQuery collections): +```html + + + + + promise demo + + + + +​ + +

      Ready...

      +
      +
      +
      +
      +​ + +​ + + +``` + */ + promise(type?: string): JQuery.Promise; + /** + * Set one or more properties for the set of matched elements. + * @param propertyName The name of the property to set. + * @param value_function _@param_ `value_function` + *
      + * * `value` — A value to set for the property.
      + * * `function` — A function returning the value to set. Receives the index position of the element in the set and the + * old property value as arguments. Within the function, the keyword `this` refers to the current element. + * @see \`{@link https://api.jquery.com/prop/ }\` + * @since 1.6 + */ + prop( + propertyName: string, + value_function: + | string + | number + | boolean + | symbol + | object + | null + | undefined + | ((this: TElement, index: number, oldPropertyValue: any) => any), + ): this; + /** + * Set one or more properties for the set of matched elements. + * @param properties An object of property-value pairs to set. + * @see \`{@link https://api.jquery.com/prop/ }\` + * @since 1.6 + * @example ​ ````Disable all checkboxes on the page. +```html + + + + + prop demo + + + + +​ + + + + +​ + +​ + + +``` + */ + prop(properties: JQuery.PlainObject): this; + /** + * Get the value of a property for the first element in the set of matched elements. + * @param propertyName The name of the property to get. + * @see \`{@link https://api.jquery.com/prop/ }\` + * @since 1.6 + * @example ​ ````Display the checked property and attribute of a checkbox as it changes. +```html + + + + + prop demo + + + + +​ + + +

      +​ + +​ + + +``` + */ + prop(propertyName: string): any; + /** + * Add a collection of DOM elements onto the jQuery stack. + * @param elements An array of elements to push onto the stack and make into a new jQuery object. + * @param name The name of a jQuery method that generated the array of elements. + * @param args The arguments that were passed in to the jQuery method (for serialization). + * @see \`{@link https://api.jquery.com/pushStack/ }\` + * @since 1.3 + */ + pushStack(elements: ArrayLike, name: string, args: any[]): this; + /** + * Add a collection of DOM elements onto the jQuery stack. + * @param elements An array of elements to push onto the stack and make into a new jQuery object. + * @see \`{@link https://api.jquery.com/pushStack/ }\` + * @since 1.0 + * @example ​ ````Add some elements onto the jQuery stack, then pop back off again. +```javascript +jQuery([]) + .pushStack( document.getElementsByTagName( "div" ) ) + .remove() + .end(); +``` + */ + pushStack(elements: ArrayLike): this; + /** + * Manipulate the queue of functions to be executed, once for each matched element. + * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue. + * @param newQueue The new function to add to the queue, with a function to call that will dequeue the next item. + * An array of functions to replace the current queue contents. + * @see \`{@link https://api.jquery.com/queue/ }\` + * @since 1.2 + * @example ​ ````Set a queue array to delete the queue. +```html + + + + + queue demo + + + + +​ + + +
      +​ + +​ + + +``` + */ + queue(queueName: string, newQueue: JQuery.TypeOrArray>): this; + /** + * Manipulate the queue of functions to be executed, once for each matched element. + * @param newQueue The new function to add to the queue, with a function to call that will dequeue the next item. + * An array of functions to replace the current queue contents. + * @see \`{@link https://api.jquery.com/queue/ }\` + * @since 1.2 + * @example ​ ````Queue a custom function. +```html + + + + + queue demo + + + + +​ +Click here... +
      +​ + +​ + + +``` + */ + queue(newQueue: JQuery.TypeOrArray>): this; + /** + * Show the queue of functions to be executed on the matched elements. + * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue. + * @see \`{@link https://api.jquery.com/queue/ }\` + * @since 1.2 + * @example ​ ````Show the length of the queue. +```html + + + + + queue demo + + + + +​ +

      The queue length is:

      +
      +​ + +​ + + +``` + */ + queue(queueName?: string): JQuery.Queue; + /** + * Specify a function to execute when the DOM is fully loaded. + * @param handler A function to execute after the DOM is ready. + * @see \`{@link https://api.jquery.com/ready/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.0. Use `jQuery(function() { })`. + * @example ​ ````Display a message when the DOM is loaded. +```html + + + + + ready demo + + + + + +​ +

      Not loaded yet.

      +​ + + +``` + */ + ready(handler: ($: JQueryStatic) => void): this; + /** + * Remove the set of matched elements from the DOM. + * @param selector A selector expression that filters the set of matched elements to be removed. + * @see \`{@link https://api.jquery.com/remove/ }\` + * @since 1.0 + * @example ​ ````Removes all paragraphs from the DOM +```html + + + + + remove demo + + + + +​ +

      Hello

      +how are +

      you?

      + +​ + +​ + + +``` + * @example ​ ````Removes all paragraphs that contain "Hello" from the DOM. Analogous to doing $("p").filter(":contains('Hello')").remove(). +```html + + + + + remove demo + + + + +​ +

      Hello

      +how are +

      you?

      + +​ + +​ + + +``` + */ + remove(selector?: string): this; + /** + * Remove an attribute from each element in the set of matched elements. + * @param attributeName An attribute to remove; as of version 1.7, it can be a space-separated list of attributes. + * @see \`{@link https://api.jquery.com/removeAttr/ }\` + * @since 1.0 + * @example ​ ````Clicking the button changes the title of the input next to it. Move the mouse pointer over the text input to see the effect of adding and removing the title attribute. +```html + + + + + removeAttr demo + + + +​ + + +
      +​ + +​ + + +``` + */ + removeAttr(attributeName: string): this; + /** + * Remove a single class, multiple classes, or all classes from each element in the set of matched elements. + * @param className_function _@param_ `className_function` + *
      + * * `className` — One or more space-separated classes to be removed from the class attribute of each matched element.
      + * * `function` — A function returning one or more space-separated class names to be removed. Receives the index + * position of the element in the set and the old class value as arguments. + * @see \`{@link https://api.jquery.com/removeClass/ }\` + * @since 1.0 + * @since 1.4 + * @since 3.3 + * @example ​ ````Remove the class 'blue' from the matched elements. +```html + + + + + removeClass demo + + + + +​ +

      Hello

      +

      and

      +

      then

      +

      Goodbye

      +​ + +​ + + +``` + * @example ​ ````Remove the class 'blue' and 'under' from the matched elements. +```html + + + + + removeClass demo + + + + +​ +

      Hello

      +

      and

      +

      then

      +

      Goodbye

      +​ + +​ + + +``` + * @example ​ ````Remove all the classes from the matched elements. +```html + + + + + removeClass demo + + + + +​ +

      Hello

      +

      and

      +

      then

      +

      Goodbye

      +​ + +​ + + +``` + */ + removeClass( + className_function?: + | JQuery.TypeOrArray + | ((this: TElement, index: number, className: string) => string), + ): this; + /** + * Remove a previously-stored piece of data. + * @param name A string naming the piece of data to delete. + * An array or space-separated string naming the pieces of data to delete. + * @see \`{@link https://api.jquery.com/removeData/ }\` + * @since 1.2.3 + * @since 1.7 + * @example ​ ````Set a data store for 2 names then remove one of them. +```html + + + + + removeData demo + + + + +​ +
      value1 before creation:
      +
      value1 after creation:
      +
      value1 after removal:
      +
      value2 after removal:
      +​ + +​ + + +``` + */ + removeData(name?: JQuery.TypeOrArray): this; + /** + * Remove a property for the set of matched elements. + * @param propertyName The name of the property to remove. + * @see \`{@link https://api.jquery.com/removeProp/ }\` + * @since 1.6 + * @example ​ ````Set a numeric property on a paragraph and then remove it. +```html + + + + + removeProp demo + + + + +​ +

      +​ + +​ + + +``` + */ + removeProp(propertyName: string): this; + /** + * Replace each target element with the set of matched elements. + * @param target A selector string, jQuery object, DOM element, or array of elements indicating which element(s) to replace. + * @see \`{@link https://api.jquery.com/replaceAll/ }\` + * @since 1.2 + * @example ​ ````Replace all the paragraphs with bold words. +```html + + + + + replaceAll demo + + + +​ +

      Hello

      +

      cruel

      +

      World

      +​ + +​ + + +``` + */ + replaceAll(target: JQuery.Selector | JQuery | JQuery.TypeOrArray): this; + /** + * Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed. + * @param newContent_function _@param_ `newContent_function` + *
      + * * `newContent` — The content to insert. May be an HTML string, DOM element, array of DOM elements, or jQuery object.
      + * * `function` — A function that returns content with which to replace the set of matched elements. + * @see \`{@link https://api.jquery.com/replaceWith/ }\` + * @since 1.2 + * @since 1.4 + * @example ​ ````On click, replace the button with a div containing the same word. +```html + + + + + replaceWith demo + + + + +​ + + + +​ + +​ + + +``` + * @example ​ ````Replace all paragraphs with bold words. +```html + + + + + replaceWith demo + + + +​ +

      Hello

      +

      cruel

      +

      World

      +​ + +​ + + +``` + * @example ​ ````On click, replace each paragraph with a div that is already in the DOM and selected with the $() function. Notice it doesn't clone the object but rather moves it to replace the paragraph. +```html + + + + + replaceWith demo + + + + +​ +

      Hello

      +

      cruel

      +

      World

      +
      Replaced!
      +​ + +​ + + +``` + * @example ​ ````On button click, replace the containing div with its child divs and append the class name of the selected element to the paragraph. +```html + + + + + replaceWith demo + + + + +​ +

      + +

      +
      +
      Scooby
      +
      Dooby
      +
      Doo
      +
      +​ + +​ + + +``` + */ + replaceWith( + newContent_function: + | JQuery.htmlString + | JQuery + | JQuery.TypeOrArray + | JQuery.Node + | ((this: TElement, index: number, oldhtml: JQuery.htmlString) => + | JQuery.htmlString + | JQuery + | JQuery.TypeOrArray + | JQuery.Node), + ): this; + /** + * Bind an event handler to the "resize" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/resize/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + resize( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "resize" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/resize/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````To see the window width while (or after) it is resized, try: +```javascript +$( window ).resize(function() { + $( "body" ).prepend( "
      " + $( window ).width() + "
      " ); +}); +``` + */ + resize( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/scroll/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + scroll( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/scroll/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````To do something when your page is scrolled: +```html + + + + + scroll demo + + + + +​ +
      Try scrolling the iframe.
      +

      Paragraph - Scroll happened!

      +​ + +​ + + +``` + */ + scroll( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Set the current horizontal position of the scroll bar for each of the set of matched elements. + * @param value An integer indicating the new position to set the scroll bar to. + * @see \`{@link https://api.jquery.com/scrollLeft/ }\` + * @since 1.2.6 + * @example ​ ````Set the scrollLeft of a div. +```html + + + + + scrollLeft demo + + + + +​ +

      lalala

      Hello

      +​ + +​ + + +``` + */ + scrollLeft(value: number): this; + /** + * Get the current horizontal position of the scroll bar for the first element in the set of matched elements. + * @see \`{@link https://api.jquery.com/scrollLeft/ }\` + * @since 1.2.6 + * @example ​ ````Get the scrollLeft of a paragraph. +```html + + + + + scrollLeft demo + + + + +​ +

      Hello

      +​ + +​ + + +``` + */ + scrollLeft(): number | undefined; + /** + * Set the current vertical position of the scroll bar for each of the set of matched elements. + * @param value A number indicating the new position to set the scroll bar to. + * @see \`{@link https://api.jquery.com/scrollTop/ }\` + * @since 1.2.6 + * @example ​ ````Set the scrollTop of a div. +```html + + + + + scrollTop demo + + + + +​ +

      lalala

      Hello

      +​ + +​ + + +``` + */ + scrollTop(value: number): this; + /** + * Get the current vertical position of the scroll bar for the first element in the set of matched elements or set the vertical position of the scroll bar for every matched element. + * @see \`{@link https://api.jquery.com/scrollTop/ }\` + * @since 1.2.6 + * @example ​ ````Get the scrollTop of a paragraph. +```html + + + + + scrollTop demo + + + + +​ +

      Hello

      +​ + +​ + + +``` + */ + scrollTop(): number | undefined; + /** + * Bind an event handler to the "select" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/select/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + select( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "select" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/select/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````To do something when text in input boxes is selected: +```html + + + + + select demo + + + + +​ +

      Click and drag the mouse to select text in the inputs.

      + + +
      + ​ + +​ + + +``` + * @example ​ ````To trigger the select event on all input elements, try: +```javascript +$( "input" ).select(); +``` + */ + select( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Encode a set of form elements as a string for submission. + * @see \`{@link https://api.jquery.com/serialize/ }\` + * @since 1.0 + * @example ​ ````Serialize a form to a query string that could be sent to a server in an Ajax request. +```html + + + + + serialize demo + + + + +​ +
      + +​ +
      + +​ +
      + + + + +​ +
      + + + + +
      +​ +

      +​ + +​ + + +``` + */ + serialize(): string; + /** + * Encode a set of form elements as an array of names and values. + * @see \`{@link https://api.jquery.com/serializeArray/ }\` + * @since 1.2 + * @example ​ ````Get the values from a form, iterate through them, and append them to a results display. +```html + + + + + serializeArray demo + + + + +​ +

      Results:

      +
      + + +
      + + + + + + + + +
      +​ + +​ + + +``` + */ + serializeArray(): JQuery.NameValuePair[]; + /** + * Display the matched elements. + * @param duration A string or number determining how long the animation will run. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/show/ }\` + * @since 1.4.3 + */ + show(duration: JQuery.Duration, easing: string, complete: (this: TElement) => void): this; + /** + * Display the matched elements. + * @param duration A string or number determining how long the animation will run. + * @param easing_complete _@param_ `easing_complete` + *
      + * * `easing` — A string indicating which easing function to use for the transition.
      + * * `complete` — A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/show/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Show the first div, followed by each next adjacent sibling div in order, with a 200ms animation. Each animation starts when the previous sibling div's animation ends. +```html + + + + + show demo + + + + +​ + + +
      Hello 3,
      +
      how
      +
      are
      +
      you?
      +​ + +​ + + +``` + * @example ​ ````Show all span and input elements with an animation. Change the text once the animation is done. +```html + + + + + show demo + + + + +​ + +Are you sure? (type 'yes' if you are) +
      +
      + +
      +
      +

      I'm hidden...

      +​ + +​ + + +``` + */ + show(duration: JQuery.Duration, easing_complete: string | ((this: TElement) => void)): this; + /** + * Display the matched elements. + * @param duration_complete_options _@param_ `duration_complete_options` + *
      + * * `duration` — A string or number determining how long the animation will run.
      + * * `complete` — A function to call once the animation is complete, called once per matched element.
      + * * `options` — A map of additional options to pass to the method. + * @see \`{@link https://api.jquery.com/show/ }\` + * @since 1.0 + * @example ​ ````Animates all hidden paragraphs to show slowly, completing the animation within 600 milliseconds. +```html + + + + + show demo + + + + +​ + +

      Hello 2

      +​ + +​ + + +``` + */ + show( + duration_complete_options?: JQuery.Duration | ((this: TElement) => void) | JQuery.EffectsOptions, + ): this; + /** + * Get the siblings of each element in the set of matched elements, optionally filtered by a selector. + * @param selector A string containing a selector expression to match elements against. + * @see \`{@link https://api.jquery.com/siblings/ }\` + * @since 1.0 + * @example ​ ````Find the unique siblings of all yellow li elements in the 3 lists (including other yellow li elements if appropriate). +```html + + + + + siblings demo + + + + +​ +
        +
      • One
      • +
      • Two
      • +
      • Three
      • +
      • Four
      • +
      +​ +
        +
      • Five
      • +
      • Six
      • +
      • Seven
      • +
      +​ +
        +
      • Eight
      • +
      • Nine
      • +
      • Ten
      • +
      • Eleven
      • +
      +​ +

      Unique siblings:

      +​ + +​ + + +``` + * @example ​ ````Find all siblings with a class "selected" of each div. +```html + + + + + siblings demo + + + +​ +
      Hello
      +

      Hello Again

      +

      And Again

      +​ + +​ + + +``` + */ + siblings(selector?: JQuery.Selector): this; + /** + * Reduce the set of matched elements to a subset specified by a range of indices. + * @param start An integer indicating the 0-based position at which the elements begin to be selected. If negative, + * it indicates an offset from the end of the set. + * @param end An integer indicating the 0-based position at which the elements stop being selected. If negative, + * it indicates an offset from the end of the set. If omitted, the range continues until the end of the set. + * @see \`{@link https://api.jquery.com/slice/ }\` + * @since 1.1.4 + * @example ​ ````Turns divs yellow based on a random slice. +```html + + + + + slice demo + + + + +​ +

      + Click the button!

      +
      +
      +
      +
      +
      +
      +
      +
      +
      + ​ + +​ + + +``` + * @example ​ ````Selects all paragraphs, then slices the selection to include only the first element. +```javascript +$( "p" ).slice( 0, 1 ).wrapInner( "" ); +``` + * @example ​ ````Selects all paragraphs, then slices the selection to include only the first and second element. +```javascript +$( "p" ).slice( 0, 2 ).wrapInner( "" ); +``` + * @example ​ ````Selects all paragraphs, then slices the selection to include only the second element. +```javascript +$( "p" ).slice( 1, 2 ).wrapInner( "" ); +``` + * @example ​ ````Selects all paragraphs, then slices the selection to include only the second and third element. +```javascript +$( "p" ).slice( 1 ).wrapInner( "" ); +``` + * @example ​ ````Selects all paragraphs, then slices the selection to include only the third element. +```javascript +$( "p" ).slice( -1 ).wrapInner( "" ); +``` + */ + slice(start: number, end?: number): this; + /** + * Display the matched elements with a sliding motion. + * @param duration A string or number determining how long the animation will run. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/slideDown/ }\` + * @since 1.4.3 + */ + slideDown(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this; + /** + * Display the matched elements with a sliding motion. + * @param duration_easing _@param_ `duration_easing` + *
      + * * `duration` — A string or number determining how long the animation will run.
      + * * `easing` — A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/slideDown/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Animates all inputs to slide down, completing the animation within 1000 milliseconds. Once the animation is done, the input look is changed especially if it is the middle input which gets the focus. +```html + + + + + slideDown demo + + + + +​ +
      Push!
      + + + + ​ + +​ + + +``` + */ + slideDown(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this; + /** + * Display the matched elements with a sliding motion. + * @param duration_easing_complete_options _@param_ `duration_easing_complete_options` + *
      + * * `duration` — A string or number determining how long the animation will run.
      + * * `easing` — A string indicating which easing function to use for the transition.
      + * * `complete` — A function to call once the animation is complete, called once per matched element.
      + * * `options` — A map of additional options to pass to the method. + * @see \`{@link https://api.jquery.com/slideDown/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Animates all divs to slide down and show themselves over 600 milliseconds. +```html + + + + + slideDown demo + + + + +​ +Click me! +
      +
      +
      +​ + +​ + + +``` + */ + slideDown( + duration_easing_complete_options?: + | JQuery.Duration + | string + | ((this: TElement) => void) + | JQuery.EffectsOptions, + ): this; + /** + * Display or hide the matched elements with a sliding motion. + * @param duration A string or number determining how long the animation will run. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/slideToggle/ }\` + * @since 1.4.3 + */ + slideToggle(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this; + /** + * Display or hide the matched elements with a sliding motion. + * @param duration_easing _@param_ `duration_easing` + *
      + * * `duration` — A string or number determining how long the animation will run.
      + * * `easing` — A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/slideToggle/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Animates divs between dividers with a toggle that makes some appear and some disappear. +```html + + + + + slideToggle demo + + + + +​ +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +

      There have been 0 toggled divs.

      +​ + +​ + + +``` + */ + slideToggle(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this; + /** + * Display or hide the matched elements with a sliding motion. + * @param duration_easing_complete_options _@param_ `duration_easing_complete_options` + *
      + * * `duration` — A string or number determining how long the animation will run.
      + * * `easing` — A string indicating which easing function to use for the transition.
      + * * `complete` — A function to call once the animation is complete, called once per matched element.
      + * * `options` — A map of additional options to pass to the method. + * @see \`{@link https://api.jquery.com/slideToggle/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Animates all paragraphs to slide up or down, completing the animation within 600 milliseconds. +```html + + + + + slideToggle demo + + + + +​ + +

      + This is the paragraph to end all paragraphs. You + should feel lucky to have seen such a paragraph in + your life. Congratulations! +

      +​ + +​ + + +``` + */ + slideToggle( + duration_easing_complete_options?: + | JQuery.Duration + | string + | ((this: TElement) => void) + | JQuery.EffectsOptions, + ): this; + /** + * Hide the matched elements with a sliding motion. + * @param duration A string or number determining how long the animation will run. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/slideUp/ }\` + * @since 1.4.3 + */ + slideUp(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this; + /** + * Hide the matched elements with a sliding motion. + * @param duration_easing _@param_ `duration_easing` + *
      + * * `duration` — A string or number determining how long the animation will run.
      + * * `easing` — A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/slideUp/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Animates the parent paragraph to slide up, completing the animation within 200 milliseconds. Once the animation is done, it displays an alert. +```html + + + + + slideUp demo + + + + +​ +
      + + +
      +​ +
      + + +
      +​ +
      + + +
      +​ +
      +​ + +​ + + +``` + */ + slideUp(duration_easing: JQuery.Duration | string, complete: (this: TElement) => void): this; + /** + * Hide the matched elements with a sliding motion. + * @param duration_easing_complete_options _@param_ `duration_easing_complete_options` + *
      + * * `duration` — A string or number determining how long the animation will run.
      + * * `easing` — A string indicating which easing function to use for the transition.
      + * * `complete` — A function to call once the animation is complete, called once per matched element.
      + * * `options` — A map of additional options to pass to the method. + * @see \`{@link https://api.jquery.com/slideUp/ }\` + * @since 1.0 + * @since 1.4.3 + * @example ​ ````Animates all divs to slide up, completing the animation within 400 milliseconds. +```html + + + + + slideUp demo + + + + +​ +Click me! +
      +
      +
      +
      +
      +​ + +​ + + +``` + */ + slideUp( + duration_easing_complete_options?: + | JQuery.Duration + | string + | ((this: TElement) => void) + | JQuery.EffectsOptions, + ): this; + /** + * Stop the currently-running animation on the matched elements. + * @param queue The name of the queue in which to stop animations. + * @param clearQueue A Boolean indicating whether to remove queued animation as well. Defaults to false. + * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately. Defaults to false. + * @see \`{@link https://api.jquery.com/stop/ }\` + * @since 1.7 + */ + stop(queue: string, clearQueue?: boolean, jumpToEnd?: boolean): this; + /** + * Stop the currently-running animation on the matched elements. + * @param clearQueue A Boolean indicating whether to remove queued animation as well. Defaults to false. + * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately. Defaults to false. + * @see \`{@link https://api.jquery.com/stop/ }\` + * @since 1.2 + * @example ​ ````Click the Go button once to start the animation, then click the STOP button to stop it where it's currently positioned. Another option is to click several buttons to queue them up and see that stop just kills the currently playing one. +```html + + + + + stop demo + + + + +​ + + + +
      +​ + +​ + + +``` + * @example ​ ````Click the slideToggle button to start the animation, then click again before the animation is completed. The animation will toggle the other direction from the saved starting point. +```html + + + + + stop demo + + + + +​ + +
      +​ + +​ + + +``` + */ + stop(clearQueue?: boolean, jumpToEnd?: boolean): this; + /** + * Bind an event handler to the "submit" JavaScript event, or trigger that event on an element. + * @param eventData An object containing data that will be passed to the event handler. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/submit/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + */ + submit( + eventData: TData, + handler: JQuery.TypeEventHandler, + ): this; + /** + * Bind an event handler to the "submit" JavaScript event, or trigger that event on an element. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/submit/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.3. Use \`{@link on }\` or \`{@link trigger }\`. + * + * **Cause**: The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu. + * + * **Solution**: Instead of `.click(fn)` use `.on("click", fn)`. Instead of `.click()` use `.trigger("click")`. + * @example ​ ````If you'd like to prevent forms from being submitted unless a flag variable is set, try: +```html + + + + + submit demo + + + + +​ +

      Type 'correct' to validate.

      +
      +
      + + +
      +
      + +​ + +​ + + +``` + * @example ​ ````If you'd like to prevent forms from being submitted unless a flag variable is set, try: +```javascript +$( "form" ).submit(function() { + return this.some_flag_variable; +}); +``` + * @example ​ ````To trigger the submit event on the first form on the page, try: +```javascript +$( "form:first" ).submit(); +``` + */ + submit( + handler?: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Set the content of each element in the set of matched elements to the specified text. + * @param text_function _@param_ `text_function` + *
      + * * `text` — The text to set as the content of each matched element. When Number or Boolean is supplied, it will + * be converted to a String representation.
      + * * `function` — A function returning the text content to set. Receives the index position of the element in the set + * and the old text value as arguments. + * @see \`{@link https://api.jquery.com/text/ }\` + * @since 1.0 + * @since 1.4 + * @example ​ ````Add text to the paragraph (notice the bold tag is escaped). +```html + + + + + text demo + + + + +​ +

      Test Paragraph.

      +​ + +​ + + +``` + */ + text( + text_function: + | string + | number + | boolean + | ((this: TElement, index: number, text: string) => string | number | boolean), + ): this; + /** + * Get the combined text contents of each element in the set of matched elements, including their descendants. + * @see \`{@link https://api.jquery.com/text/ }\` + * @since 1.0 + * @example ​ ````Find the text in the first paragraph (stripping out the html), then set the html of the last paragraph to show it is just text (the red bold is gone). +```html + + + + + text demo + + + + +​ +

      Test Paragraph.

      +

      +​ + +​ + + +``` + */ + text(): string; + /** + * Retrieve all the elements contained in the jQuery set, as an array. + * @see \`{@link https://api.jquery.com/toArray/ }\` + * @since 1.4 + * @example ​ ````Select all divs in the document and return the DOM Elements as an Array; then use the built-in reverse() method to reverse that array. +```html + + + + + toArray demo + + + + +​ +Reversed - +​ +
      One
      +
      Two
      +
      Three
      ​ + +​ + + +``` + */ + toArray(): TElement[]; + /** + * Display or hide the matched elements. + * @param duration A string or number determining how long the animation will run. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/toggle/ }\` + * @since 1.4.3 + */ + toggle(duration: JQuery.Duration, easing: string, complete?: (this: TElement) => void): this; + /** + * Display or hide the matched elements. + * @param duration A string or number determining how long the animation will run. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/toggle/ }\` + * @since 1.0 + */ + toggle(duration: JQuery.Duration, complete: (this: TElement) => void): this; + /** + * Display or hide the matched elements. + * @param duration_complete_options_display _@param_ `duration_complete_options_display` + *
      + * * `duration` — A string or number determining how long the animation will run.
      + * * `complete` — A function to call once the animation is complete, called once per matched element.
      + * * `options` — A map of additional options to pass to the method.
      + * * `display` — Use true to show the element or false to hide it. + * @see \`{@link https://api.jquery.com/toggle/ }\` + * @since 1.0 + * @since 1.3 + * @example ​ ````Toggles all paragraphs. +```html + + + + + toggle demo + + + +​ + +

      Hello

      +

      Good Bye

      +​ + +​ + + +``` + * @example ​ ````Animates all paragraphs to be shown if they are hidden and hidden if they are visible, completing the animation within 600 milliseconds. +```html + + + + + toggle demo + + + + +​ + +

      Hiya

      +

      Such interesting text, eh?

      +​ + +​ + + +``` + * @example ​ ````Shows all paragraphs, then hides them all, back and forth. +```html + + + + + toggle demo + + + +​ + +

      Hello

      +

      Good Bye

      +​ + +​ + + +``` + */ + toggle( + duration_complete_options_display?: + | JQuery.Duration + | ((this: TElement) => void) + | JQuery.EffectsOptions + | boolean, + ): this; + /** + * Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the state argument. + * @param className_function _@param_ `className_function` + *
      + * * `className` — One or more class names (separated by spaces) to be toggled for each element in the matched set.
      + * * `function` — A function that returns class names to be toggled in the class attribute of each element in the + * matched set. Receives the index position of the element in the set, the old class value, and the state as arguments. + * @param state A Boolean (not just truthy/falsy) value to determine whether the class should be added or removed. + * @see \`{@link https://api.jquery.com/toggleClass/ }\` + * @since 1.0 + * @since 1.3 + * @since 1.4 + * @since 3.3 + * @example ​ ````Toggle the class 'highlight' when a paragraph is clicked. +```html + + + + + toggleClass demo + + + + +​ +

      Click to toggle

      +

      highlight

      +

      on these

      +

      paragraphs

      +​ + +​ + + +``` + * @example ​ ````Add the "highlight" class to the clicked paragraph on every third click of that paragraph, remove it every first and second click. +```html + + + + + toggleClass demo + + + + +​ +

      Click to toggle (clicks: 0)

      +

      highlight (clicks: 0)

      +

      on these (clicks: 0)

      +

      paragraphs (clicks: 0)

      +​ + +​ + + +``` + * @example ​ ````Toggle the class name(s) indicated on the buttons for each div. +```html + + + + + toggleClass demo + + + + +​ +
      + + + + + reset +
      +
      +
      +
      +
      +
      +
      +​ + +​ + + +``` + */ + toggleClass( + className_function: + | JQuery.TypeOrArray + | ((this: TElement, index: number, className: string, state: TState) => string), + state?: TState, + ): this; + /** + * Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the state argument. + * @param state A boolean value to determine whether the class should be added or removed. + * @see \`{@link https://api.jquery.com/toggleClass/ }\` + * @since 1.4 + * @deprecated ​ Deprecated since 3.0. See \`{@link https://github.com/jquery/jquery/pull/2618 }\`. + * + * **Cause**: Calling `.toggleClass()` with no arguments, or with a single Boolean `true` or `false` argument, has been deprecated. Its behavior was poorly documented, but essentially the method saved away the current class value in a data item when the class was removed and restored the saved value when it was toggled back. If you do not believe you are specificially trying to use this form of the method, it is possible you are accidentally doing so via an inadvertent undefined value, as `.toggleClass( undefined )` toggles all classes. + * + * **Solution**: If this functionality is still needed, save the current full `.attr( "class" )` value in a data item and restore it when required. + */ + toggleClass(state?: boolean): this; + /** + * Execute all handlers and behaviors attached to the matched elements for the given event type. + * @param eventType_event _@param_ `eventType_event` + *
      + * * `eventType` — A string containing a JavaScript event type, such as `click` or `submit`.
      + * * `event` — A \`{@link https://api.jquery.com/category/events/event-object/ jQuery.Event}\` object. + * @param extraParameters Additional parameters to pass along to the event handler. + * @see \`{@link https://api.jquery.com/trigger/ }\` + * @since 1.0 + * @since 1.3 + * @example ​ ````Clicks to button #2 also trigger a click for button #1. +```html + + + + + trigger demo + + + + +​ + + +
      0 button #1 clicks.
      +
      0 button #2 clicks.
      +​ + +​ + + +``` + * @example ​ ````To submit the first form without using the submit() function, try: +```javascript +$( "form:first" ).trigger( "submit" ); +``` + * @example ​ ````To submit the first form without using the submit() function, try: +```javascript +var event = jQuery.Event( "submit" ); +$( "form:first" ).trigger( event ); +if ( event.isDefaultPrevented() ) { + // Perform an action... +} +``` + * @example ​ ````To pass arbitrary data to an event: +```javascript +$( "p" ) + .click(function( event, a, b ) { + // When a normal click fires, a and b are undefined + // for a trigger like below a refers to "foo" and b refers to "bar" + }) + .trigger( "click", [ "foo", "bar" ] ); +``` + * @example ​ ````To pass arbitrary data through an event object: +```javascript +var event = jQuery.Event( "logged" ); +event.user = "foo"; +event.pass = "bar"; +$( "body" ).trigger( event ); +``` + * @example ​ ````Alternative way to pass data through an event object: +```javascript +$( "body" ).trigger({ + type:"logged", + user:"foo", + pass:"bar" +}); +``` + */ + trigger( + eventType_event: string | JQuery.Event, + extraParameters?: any[] | JQuery.PlainObject | string | number | boolean, + ): this; + /** + * Execute all handlers attached to an element for an event. + * @param eventType_event _@param_ `eventType_event` + *
      + * * `eventType` — A string containing a JavaScript event type, such as `click` or `submit`.
      + * * `event` — A \`{@link https://api.jquery.com/category/events/event-object/ jQuery.Event}\` object. + * @param extraParameters Additional parameters to pass along to the event handler. + * @see \`{@link https://api.jquery.com/triggerHandler/ }\` + * @since 1.2 + * @since 1.3 + * @example ​ ````If you called .triggerHandler() on a focus event - the browser's default focus action would not be triggered, only the event handlers bound to the focus event. +```html + + + + + triggerHandler demo + + + +​ + +

      +​ + +​ + +​ + + +``` + */ + triggerHandler( + eventType_event: string | JQuery.Event, + extraParameters?: any[] | JQuery.PlainObject | string | number | boolean, + ): any; + /** + * Remove a previously-attached event handler from the elements. + * @param event A string containing one or more DOM event types, such as "click" or "submit," or custom event names. + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/unbind/ }\` + * @since 1.0 + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.0. Use \`{@link off }\`. + * + * **Cause**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update. + * + * **Solution**: Change the method call to use `.on()` or `.off()`, the documentation for the old methods include specific instructions. In general, the `.bind()` and `.unbind()` methods can be renamed directly to `.on()` and `.off()` respectively since the argument orders are identical. + * @example ​ ````Can bind and unbind events to the colored button. +```html + + + + + unbind demo + + + + +​ + + + +
      Click!
      +​ + +​ + + +``` + * @example ​ ````To unbind just one previously bound handler, pass the function in as the second argument: +```javascript +var foo = function() { + // Code to handle some kind of event +}; +​ +$( "p" ).bind( "click", foo ); // ... Now foo will be called when paragraphs are clicked ... +​ +$( "p" ).unbind( "click", foo ); // ... foo will no longer be called. +``` + */ + unbind( + event: TType, + handler: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Remove a previously-attached event handler from the elements. + * @param event A string containing one or more DOM event types, such as "click" or "submit," or custom event names. + * A jQuery.Event object. + * @see \`{@link https://api.jquery.com/unbind/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.0. Use \`{@link off }\`. + * + * **Cause**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update. + * + * **Solution**: Change the method call to use `.on()` or `.off()`, the documentation for the old methods include specific instructions. In general, the `.bind()` and `.unbind()` methods can be renamed directly to `.on()` and `.off()` respectively since the argument orders are identical. + * @example ​ ````To unbind all events from all paragraphs, write: +```javascript +$( "p" ).unbind(); +``` + * @example ​ ````To unbind all click events from all paragraphs, write: +```javascript +$( "p" ).unbind( "click" ); +``` + */ + unbind(event?: string | JQuery.TriggeredEvent): this; + /** + * Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements. + * @param selector A selector which will be used to filter the event results. + * @param eventType A string containing a JavaScript event type, such as "click" or "keydown" + * @param handler A function to execute each time the event is triggered. + * @see \`{@link https://api.jquery.com/undelegate/ }\` + * @since 1.4.2 + * @deprecated ​ Deprecated since 3.0. Use \`{@link off }\`. + * + * **Cause**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update. + * + * **Solution**: Change the method call to use `.on()` or `.off()`, the documentation for the old methods include specific instructions. In general, the `.bind()` and `.unbind()` methods can be renamed directly to `.on()` and `.off()` respectively since the argument orders are identical. + * @example ​ ````Can bind and unbind events to the colored button. +```html + + + + + undelegate demo + + + + +​ + + + +
      Click!
      +​ + +​ + + +``` + * @example ​ ````To undelegate just one previously bound handler, pass the function in as the third argument: +```javascript +var foo = function () { + // Code to handle some kind of event +}; +​ +// ... Now foo will be called when paragraphs are clicked ... +$( "body" ).delegate( "p", "click", foo ); +​ +// ... foo will no longer be called. +$( "body" ).undelegate( "p", "click", foo ); +``` + */ + undelegate( + selector: JQuery.Selector, + eventType: TType, + handler: + | JQuery.TypeEventHandler + | false, + ): this; + /** + * Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements. + * @param selector A selector which will be used to filter the event results. + * @param eventType_events _@param_ `eventType_events` + *
      + * * `eventType` — A string containing a JavaScript event type, such as "click" or "keydown"
      + * * `events` — An object of one or more event types and previously bound functions to unbind from them. + * @see \`{@link https://api.jquery.com/undelegate/ }\` + * @since 1.4.2 + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.0. Use \`{@link off }\`. + * + * **Cause**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update. + * + * **Solution**: Change the method call to use `.on()` or `.off()`, the documentation for the old methods include specific instructions. In general, the `.bind()` and `.unbind()` methods can be renamed directly to `.on()` and `.off()` respectively since the argument orders are identical. + */ + undelegate( + selector: JQuery.Selector, + eventType_events: + | string + | JQuery.TypeEventHandlers, + ): this; + /** + * Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements. + * @param namespace A selector which will be used to filter the event results. + * @see \`{@link https://api.jquery.com/undelegate/ }\` + * @since 1.4.2 + * @since 1.6 + * @deprecated ​ Deprecated since 3.0. Use \`{@link off }\`. + * + * **Cause**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update. + * + * **Solution**: Change the method call to use `.on()` or `.off()`, the documentation for the old methods include specific instructions. In general, the `.bind()` and `.unbind()` methods can be renamed directly to `.on()` and `.off()` respectively since the argument orders are identical. + * @example ​ ````To unbind all delegated events from all paragraphs, write: +```javascript +$( "p" ).undelegate(); +``` + * @example ​ ````To unbind all delegated click events from all paragraphs, write: +```javascript +$( "p" ).undelegate( "click" ); +``` + * @example ​ ````To unbind all delegated events by their namespace: +```javascript +var foo = function() { + // Code to handle some kind of event +}; +​ +// Delegate events under the ".whatever" namespace +$( "form" ).delegate( ":button", "click.whatever", foo ); +​ +$( "form" ).delegate( "input[type='text'] ", "keypress.whatever", foo ); +​ +// Unbind all events delegated under the ".whatever" namespace +$( "form" ).undelegate( ".whatever" ); +``` + */ + undelegate(namespace?: string): this; + /** + * Remove the parents of the set of matched elements from the DOM, leaving the matched elements in their place. + * @param selector A selector to check the parent element against. If an element's parent does not match the selector, + * the element won't be unwrapped. + * @see \`{@link https://api.jquery.com/unwrap/ }\` + * @since 1.4 + * @since 3.0 + * @example ​ ````Wrap/unwrap a div around each of the paragraphs. +```html + + + + + unwrap demo + + + + +​ +

      Hello

      +

      cruel

      +

      World

      ​ + +​ + + +``` + */ + unwrap(selector?: string): this; + /** + * Set the value of each element in the set of matched elements. + * @param value_function _@param_ `value_function` + *
      + * * `value` — A string of text, a number, or an array of strings corresponding to the value of each matched + * element to set as selected/checked.
      + * * `function` — A function returning the value to set. `this` is the current element. Receives the index position of + * the element in the set and the old value as arguments. + * @see \`{@link https://api.jquery.com/val/ }\` + * @since 1.0 + * @since 1.4 + * @example ​ ````Set the value of an input box. +```html + + + + + val demo + + + + +​ +
      + + + +
      + +​ + +​ + + +``` + * @example ​ ````Use the function argument to modify the value of an input box. +```html + + + + + val demo + + + +​ +

      Type something and then click or tab out of the input.

      + +​ + +​ + + +``` + * @example ​ ````Set a single select, a multiple select, checkboxes and a radio button . +```html + + + + + val demo + + + + +​ + +​ + +​ +
      + check1 + check2 + radio1 + radio2 +​ + +​ + + +``` + */ + val(value_function: string | number | string[] | ((this: TElement, index: number, value: string) => string)): this; + /** + * Get the current value of the first element in the set of matched elements. + * @see \`{@link https://api.jquery.com/val/ }\` + * @since 1.0 + * @example ​ ````Get the single value from a single select and an array of values from a multiple select and display their values. +```html + + + + + val demo + + + + +​ +

      +​ + +​ + +​ + +​ + + +``` + * @example ​ ````Find the value of an input box. +```html + + + + + val demo + + + + +​ + +

      +​ + +​ + + +``` + */ + val(): + | (TElement extends HTMLSelectElement & { type: "select-one" } ? string + : TElement extends HTMLSelectElement & { type: "select-multiple" } ? string[] + : TElement extends HTMLSelectElement ? string | string[] + : TElement extends { value: string | number } ? TElement["value"] + : string | number | string[]) + | undefined; + /** + * Set the CSS width of each element in the set of matched elements. + * @param value_function _@param_ `value_function` + *
      + * * `value` — An integer representing the number of pixels, or an integer along with an optional unit of measure + * appended (as a string).
      + * * `function` — A function returning the width to set. Receives the index position of the element in the set and the + * old width as arguments. Within the function, `this` refers to the current element in the set. + * @see \`{@link https://api.jquery.com/width/ }\` + * @since 1.0 + * @since 1.4.1 + * @example ​ ````Change the width of each div the first time it is clicked (and change its color). +```html + + + + + width demo + + + + +​ +
      d
      +
      d
      +
      d
      +
      d
      +
      d
      +​ + +​ + + +``` + */ + width(value_function: string | number | ((this: TElement, index: number, value: number) => string | number)): this; + /** + * Get the current computed width for the first element in the set of matched elements. + * @see \`{@link https://api.jquery.com/width/ }\` + * @since 1.0 + * @example ​ ````Show various widths. Note the values are from the iframe so might be smaller than you expected. The yellow highlight shows the iframe body. +```html + + + + + width demo + + + + +​ + + + +
       
      +

      + Sample paragraph to test width +

      +​ + +​ + + +``` + */ + width(): number | undefined; + /** + * Wrap an HTML structure around each element in the set of matched elements. + * @param wrappingElement_function _@param_ `wrappingElement_function` + *
      + * * `wrappingElement` — A selector, element, HTML string, or jQuery object specifying the structure to wrap around the + * matched elements. When you pass a jQuery collection containing more than one element, or a selector + * matching more than one element, the first element will be used.
      + * * `function` — A callback function returning the HTML content or jQuery object to wrap around the matched elements. + * Receives the index position of the element in the set as an argument. Within the function, `this` + * refers to the current element in the set. + * @see \`{@link https://api.jquery.com/wrap/ }\` + * @since 1.0 + * @since 1.4 + * @example ​ ````Wrap a new div around all of the paragraphs. +```html + + + + + wrap demo + + + + +​ +

      Hello

      +

      cruel

      +

      World

      +​ + +​ + + +``` + * @example ​ ````Wraps a newly created tree of objects around the spans. Notice anything in between the spans gets left out like the <strong> (red text) in this example. Even the white space between spans is left out. Click View Source to see the original html.> +```html + + + + + wrap demo + + + + +​ +Span Text +What about me? +Another One +​ + +​ + + +``` + * @example ​ ````Wrap a new div around all of the paragraphs. +```html + + + + + wrap demo + + + + +​ +

      Hello

      +

      cruel

      +

      World

      +​ + +​ + + +``` + * @example ​ ````Wrap a jQuery object double depth div around all of the paragraphs. Notice it doesn't move the object but just clones it to wrap around its target. +```html + + + + + wrap demo + + + + +​ +

      Hello

      +

      cruel

      +

      World

      +
      +​ + +​ + + +``` + */ + wrap( + wrappingElement_function: + | JQuery.Selector + | JQuery.htmlString + | Element + | JQuery + | ((this: TElement, index: number) => string | JQuery), + ): this; + /** + * Wrap an HTML structure around all elements in the set of matched elements. + * @param wrappingElement_function _@param_ `wrappingElement_function` + *
      + * * `wrappingElement` — A selector, element, HTML string, or jQuery object specifying the structure to wrap around the matched elements.
      + * * `function` — A callback function returning the HTML content or jQuery object to wrap around all the matched + * elements. Within the function, `this` refers to the first element in the set. **Prior to jQuery + * 3.0**, the callback was incorrectly called for every element in the set and received the index + * position of the element in the set as an argument. + * @see \`{@link https://api.jquery.com/wrapAll/ }\` + * @since 1.2 + * @since 1.4 + * @example ​ ````Wrap a new div around all of the paragraphs. +```html + + + + + wrapAll demo + + + + +​ +

      Hello

      +

      cruel

      +

      World

      +​ + +​ + + +``` + * @example ​ ````Wraps a newly created tree of objects around the spans. Notice anything in between the spans gets left out like the <strong> (red text) in this example. Even the white space between spans is left out. Click View Source to see the original html. +```html + + + + + wrapAll demo + + + + +​ +Span Text +What about me? +Another One +​ + +​ + + +``` + * @example ​ ````Wrap a new div around all of the paragraphs. +```html + + + + + wrapAll demo + + + + +​ +

      Hello

      +

      cruel

      +

      World

      +​ + +​ + + +``` + * @example ​ ````Wrap a jQuery object double depth div around all of the paragraphs. Notice it doesn't move the object but just clones it to wrap around its target. +```html + + + + + wrapAll demo + + + + +​ +

      Hello

      +

      cruel

      +

      World

      +
      +​ + +​ + + +``` + */ + wrapAll( + wrappingElement_function: + | JQuery.Selector + | JQuery.htmlString + | Element + | JQuery + | ((this: TElement) => string | JQuery), + ): this; + /** + * Wrap an HTML structure around the content of each element in the set of matched elements. + * @param wrappingElement_function _@param_ `wrappingElement_function` + *
      + * * `wrappingElement` — An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap + * around the content of the matched elements.
      + * * `function` — A callback function which generates a structure to wrap around the content of the matched elements. + * Receives the index position of the element in the set as an argument. Within the function, `this` + * refers to the current element in the set. + * @see \`{@link https://api.jquery.com/wrapInner/ }\` + * @since 1.2 + * @since 1.4 + * @example ​ ````Selects all paragraphs and wraps a bold tag around each of its contents. +```html + + + + + wrapInner demo + + + + +​ +

      Hello

      +

      cruel

      +

      World

      +​ + +​ + + +``` + * @example ​ ````Wraps a newly created tree of objects around the inside of the body. +```html + + + + + wrapInner demo + + + + +​ +Plain old text, or is it? +​ + +​ + + +``` + * @example ​ ````Selects all paragraphs and wraps a bold tag around each of its contents. +```html + + + + + wrapInner demo + + + + +​ +

      Hello

      +

      cruel

      +

      World

      +​ + +​ + + +``` + * @example ​ ````Selects all paragraphs and wraps a jQuery object around each of its contents. +```html + + + + + wrapInner demo + + + + +​ +

      Hello

      +

      cruel

      +

      World

      +​ + +​ + + +``` + */ + wrapInner( + wrappingElement_function: + | JQuery.Selector + | JQuery.htmlString + | Element + | JQuery + | ((this: TElement, index: number) => string | JQuery | Element), + ): this; + + [n: number]: TElement; +} diff --git a/node_modules/@types/jquery/JQueryStatic.d.ts b/node_modules/@types/jquery/JQueryStatic.d.ts new file mode 100644 index 0000000..31d3957 --- /dev/null +++ b/node_modules/@types/jquery/JQueryStatic.d.ts @@ -0,0 +1,13941 @@ +// tslint:disable:jsdoc-format +// tslint:disable:no-irregular-whitespace + +interface JQueryStatic { + /** + * @see \`{@link https://api.jquery.com/jquery.ajax/#jQuery-ajax1 }\` + * @deprecated ​ Deprecated. Use \`{@link ajaxSetup }\`. + */ + ajaxSettings: JQuery.AjaxSettings; + Animation: JQuery.AnimationStatic; + Callbacks: JQuery.CallbacksStatic; + /** + * Hook directly into jQuery to override how particular CSS properties are retrieved or set, normalize CSS property naming, or create custom properties. + * @see \`{@link https://api.jquery.com/jQuery.cssHooks/ }\` + * @since 1.4.3 + */ + cssHooks: JQuery.CSSHooks; + /** + * An object containing all CSS properties that may be used without a unit. The .css() method uses this object to see if it may append px to unitless values. + * @see \`{@link https://api.jquery.com/jQuery.cssNumber/ }\` + * @since 1.4.3 + */ + cssNumber: JQuery.PlainObject; + Deferred: JQuery.DeferredStatic; + easing: JQuery.Easings; + Event: JQuery.EventStatic; + /** + * @see \`{@link https://learn.jquery.com/events/event-extensions/ }\` + */ + event: JQuery.EventExtensions; + expr: JQuery.Selectors; + // Set to HTMLElement to minimize breaks but should probably be Element. + readonly fn: JQuery; + fx: JQuery.Effects; + /** + * A Promise-like object (or "thenable") that resolves when the document is ready. + * @see \`{@link https://api.jquery.com/jQuery.ready/ }\` + * @since 1.8 + * @example ​ ````Listen for document ready using jQuery.when. +```javascript +$.when( $.ready ).then(function() { + // Document is ready. +}); +``` + * @example ​ ````Typical usage involving another promise, using jQuery.when. +```javascript +$.when( + $.getJSON( "ajax/test.json" ), + $.ready +).done(function( data ) { + // Document is ready. + // Value of test.json is passed as `data`. +}); +``` + */ + ready: JQuery.Thenable; + /** + * A collection of properties that represent the presence of different browser features or bugs. Intended for jQuery's internal use; specific properties may be removed when they are no longer needed internally to improve page startup performance. For your own project's feature-detection needs, we strongly recommend the use of an external library such as Modernizr instead of dependency on properties in jQuery.support. + * @see \`{@link https://api.jquery.com/jQuery.support/ }\` + * @since 1.3 + * @deprecated ​ Deprecated since 1.9. See \`{@link https://api.jquery.com/jQuery.support/ }\`. + */ + support: JQuery.PlainObject; + timers: Array>; + Tween: JQuery.TweenStatic; + valHooks: JQuery.ValHooks; + // HACK: This is the factory function returned when importing jQuery without a DOM. Declaring it separately breaks using the type parameter on JQueryStatic. + // HACK: The discriminator parameter handles the edge case of passing a Window object to JQueryStatic. It doesn't actually exist on the factory function. + (window: Window, discriminator: boolean): JQueryStatic; + /** + * Creates DOM elements on the fly from the provided string of raw HTML. + * @param html _@param_ `html` + *
      + * * `html (ownerDocument)` — A string of HTML to create on the fly. Note that this parses HTML, not XML.
      + * * `html (attributes)` — A string defining a single, standalone, HTML element (e.g. <div/> or <div></div>). + * @param ownerDocument_attributes _@param_ `ownerDocument_attributes` + *
      + * * `ownerDocument` — A document in which the new elements will be created.
      + * * `attributes` — An object of attributes, events, and methods to call on the newly-created element. + * @see \`{@link https://api.jquery.com/jQuery/ }\` + * @since 1.0 + * @since 1.4 + * @example ​ ````Create a div element (and all of its contents) dynamically and append it to the body element. Internally, an element is created and its innerHTML property set to the given markup. +```javascript +$( "

      Hello

      " ).appendTo( "body" ) +``` + * @example ​ ````Create some DOM elements. +```javascript +$( "
      ", { + "class": "test", + text: "Click me!", + click: function() { + $( this ).toggleClass( "test" ); + } +}) + .appendTo( "body" ); +``` + */ + // eslint-disable-next-line @definitelytyped/no-unnecessary-generics + ( + html: JQuery.htmlString, + ownerDocument_attributes?: Document | JQuery.PlainObject, + ): JQuery; + /** + * Accepts a string containing a CSS selector which is then used to match a set of elements. + * @param selector A string containing a selector expression + * @param context A DOM Element, Document, Selector or jQuery to use as context + * @see \`{@link https://api.jquery.com/jQuery/ }\` + * @since 1.0 + * @example ​ ````Find all p elements that are children of a div element and apply a border to them. +```html + + + + + jQuery demo + + + +​ +

      one

      +

      two

      +

      three

      +​ + + + +``` + * @example ​ ````Find all inputs of type radio within the first form in the document. +```javascript +$( "input:radio", document.forms[ 0 ] ); +``` + * @example ​ ````Find all div elements within an XML document from an Ajax response. +```javascript +$( "div", xml.responseXML ); +``` +​ + */ + // eslint-disable-next-line @definitelytyped/no-unnecessary-generics + ( + selector: JQuery.Selector, + context?: Element | Document | JQuery | JQuery.Selector, + ): JQuery; + /** + * Return a collection of matched elements either found in the DOM based on passed argument(s) or created by passing an HTML string. + * @param element A DOM element to wrap in a jQuery object. + * @see \`{@link https://api.jquery.com/jQuery/ }\` + * @since 1.0 + * @example ​ ````Set the background color of the page to black. +```javascript +$( document.body ).css( "background", "black" ); +``` + */ + // NOTE: `HTMLSelectElement` is both an Element and an Array-Like Object but jQuery treats it as an Element. + (element: HTMLSelectElement): JQuery; + /** + * Return a collection of matched elements either found in the DOM based on passed argument(s) or created by passing an HTML string. + * @param element_elementArray _@param_ `element_elementArray` + *
      + * * `element` — A DOM element to wrap in a jQuery object.
      + * * `elementArray` — An array containing a set of DOM elements to wrap in a jQuery object. + * @see \`{@link https://api.jquery.com/jQuery/ }\` + * @since 1.0 + * @example ​ ````Set the background color of the page to black. +```javascript +$( document.body ).css( "background", "black" ); +``` + * @example ​ ````Hide all the input elements within a form. +```javascript +$( myForm.elements ).hide(); +``` + */ + (element_elementArray: T | ArrayLike): JQuery; + /** + * Return a collection of matched elements either found in the DOM based on passed argument(s) or created by passing an HTML string. + * @param selection An existing jQuery object to clone. + * @see \`{@link https://api.jquery.com/jQuery/ }\` + * @since 1.0 + */ + (selection: JQuery): JQuery; + /** + * Binds a function to be executed when the DOM has finished loading. + * @param callback The function to execute when the DOM is ready. + * @see \`{@link https://api.jquery.com/jQuery/ }\` + * @since 1.0 + * @example ​ ````Execute the function when the DOM is ready to be used. +```javascript +$(function() { + // Document is ready +}); +``` + * @example ​ ````Use both the shortcut for $(document).ready() and the argument to write failsafe jQuery code using the $ alias, without relying on the global alias. +```javascript +jQuery(function( $ ) { + // Your code using failsafe $ alias here... +}); +``` + */ + /* eslint-disable @definitelytyped/no-unnecessary-generics */ + // tslint:disable-next-line:unified-signatures + (callback: (this: Document, $: JQueryStatic) => void): JQuery; + /* eslint-enable @definitelytyped/no-unnecessary-generics */ + /** + * Return a collection of matched elements either found in the DOM based on passed argument(s) or created by passing an HTML string. + * @param object A plain object to wrap in a jQuery object. + * @see \`{@link https://api.jquery.com/jQuery/ }\` + * @since 1.0 + */ + (object: T): JQuery; + /** + * Returns an empty jQuery set. + * @see \`{@link https://api.jquery.com/jQuery/ }\` + * @since 1.4 + */ + // eslint-disable-next-line @definitelytyped/no-unnecessary-generics + (): JQuery; + /** + * Perform an asynchronous HTTP (Ajax) request. + * @param url A string containing the URL to which the request is sent. + * @param settings A set of key/value pairs that configure the Ajax request. All settings are optional. A default can + * be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings. + * @see \`{@link https://api.jquery.com/jQuery.ajax/ }\` + * @since 1.5 + */ + ajax(url: string, settings?: JQuery.AjaxSettings): JQuery.jqXHR; + /** + * Perform an asynchronous HTTP (Ajax) request. + * @param settings A set of key/value pairs that configure the Ajax request. All settings are optional. A default can + * be set for any option with $.ajaxSetup(). + * @see \`{@link https://api.jquery.com/jQuery.ajax/ }\` + * @since 1.0 + * @example ​ ````Save some data to the server and notify the user once it's complete. +```javascript +$.ajax({ + method: "POST", + url: "some.php", + data: { name: "John", location: "Boston" } +}) + .done(function( msg ) { + alert( "Data Saved: " + msg ); + }); +``` + * @example ​ ````Retrieve the latest version of an HTML page. +```javascript +$.ajax({ + url: "test.html", + cache: false +}) + .done(function( html ) { + $( "#results" ).append( html ); + }); +``` + * @example ​ ````Send an xml document as data to the server. By setting the processData + option to false, the automatic conversion of data to strings is prevented. +```javascript +var xmlDocument = [create xml document]; +var xmlRequest = $.ajax({ + url: "page.php", + processData: false, + data: xmlDocument +}); +​ +xmlRequest.done( handleResponse ); +``` + * @example ​ ````Send an id as data to the server, save some data to the server, and notify the user once it's complete. If the request fails, alert the user. +```javascript +var menuId = $( "ul.nav" ).first().attr( "id" ); +var request = $.ajax({ + url: "script.php", + method: "POST", + data: { id : menuId }, + dataType: "html" +}); +​ +request.done(function( msg ) { + $( "#log" ).html( msg ); +}); +​ +request.fail(function( jqXHR, textStatus ) { + alert( "Request failed: " + textStatus ); +}); +``` + * @example ​ ````Load and execute a JavaScript file. +```javascript +$.ajax({ + method: "GET", + url: "test.js", + dataType: "script" +}); +``` + */ + ajax(settings?: JQuery.AjaxSettings): JQuery.jqXHR; + /** + * Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax(). + * @param dataTypes An optional string containing one or more space-separated dataTypes + * @param handler A handler to set default values for future Ajax requests. + * @see \`{@link https://api.jquery.com/jQuery.ajaxPrefilter/ }\` + * @since 1.5 + */ + ajaxPrefilter( + dataTypes: string, + handler: ( + options: JQuery.AjaxSettings, + originalOptions: JQuery.AjaxSettings, + jqXHR: JQuery.jqXHR, + ) => string | void, + ): void; + /** + * Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax(). + * @param handler A handler to set default values for future Ajax requests. + * @see \`{@link https://api.jquery.com/jQuery.ajaxPrefilter/ }\` + * @since 1.5 + */ + ajaxPrefilter( + handler: ( + options: JQuery.AjaxSettings, + originalOptions: JQuery.AjaxSettings, + jqXHR: JQuery.jqXHR, + ) => string | void, + ): void; + /** + * Set default values for future Ajax requests. Its use is not recommended. + * @param options A set of key/value pairs that configure the default Ajax request. All options are optional. + * @see \`{@link https://api.jquery.com/jQuery.ajaxSetup/ }\` + * @since 1.1 + * @example ​ ````Sets the defaults for Ajax requests to the url "/xmlhttp/", disables global handlers and uses POST instead of GET. The following Ajax requests then sends some data without having to set anything else. +```javascript +$.ajaxSetup({ + url: "/xmlhttp/", + global: false, + type: "POST" +}); +$.ajax({ data: myData }); +``` + */ + ajaxSetup(options: JQuery.AjaxSettings): JQuery.AjaxSettings; + /** + * Creates an object that handles the actual transmission of Ajax data. + * @param dataType A string identifying the data type to use + * @param handler A handler to return the new transport object to use with the data type provided in the first argument. + * @see \`{@link https://api.jquery.com/jQuery.ajaxTransport/ }\` + * @since 1.5 + */ + ajaxTransport( + dataType: string, + handler: ( + options: JQuery.AjaxSettings, + originalOptions: JQuery.AjaxSettings, + jqXHR: JQuery.jqXHR, + ) => JQuery.Transport | void, + ): void; + /** + * @deprecated ​ Deprecated since 3.3. Internal. See \`{@link https://github.com/jquery/jquery/issues/3384 }\`. + */ + camelCase(value: string): string; + cleanData(elems: ArrayLike): void; + /** + * Check to see if a DOM element is a descendant of another DOM element. + * @param container The DOM element that may contain the other element. + * @param contained The DOM element that may be contained by (a descendant of) the other element. + * @see \`{@link https://api.jquery.com/jQuery.contains/ }\` + * @since 1.4 + * @example ​ ````Check if an element is a descendant of another. +```javascript +$.contains( document.documentElement, document.body ); // true +$.contains( document.body, document.documentElement ); // false +``` + */ + contains(container: Element, contained: Element): boolean; + css(elem: Element, name: string): any; + /** + * Store arbitrary data associated with the specified element. Returns the value that was set. + * @param element The DOM element to associate with the data. + * @param key A string naming the piece of data to set. + * @param value The new data value; this can be any Javascript type except `undefined`. + * @see \`{@link https://api.jquery.com/jQuery.data/ }\` + * @since 1.2.3 + * @example ​ ````Get the data named "blah" stored at for an element. +```html + + + + + jQuery.data demo + + + + +​ +
      A div
      + + + + +

      The "blah" value of this div is ?

      +​ + +​ + + +``` + */ + data( + element: Element | Document | Window | JQuery.PlainObject, + key: string, + value: T, + ): T; + /** + * Returns value at named data store for the element, as set by `jQuery.data(element, name, value)`, or the full data store for the element. + * @param element The DOM element to query for the data. + * @param key Name of the data stored. + * @param value `undefined` is not recognized as a data value. Calls such as `jQuery.data( el, "name", undefined )` + * will return the corresponding data for "name", and is therefore the same as `jQuery.data( el, "name" )` + * @see \`{@link https://api.jquery.com/jQuery.data/ }\` + * @since 1.2.3 + */ + // `unified-signatures` is disabled so that behavior when passing `undefined` to `value` can be documented. Unifying the signatures + // results in potential confusion for users from an unexpected parameter. + // tslint:disable-next-line:unified-signatures + data(element: Element | Document | Window | JQuery.PlainObject, key: string, value: undefined): any; + /** + * Returns value at named data store for the element, as set by `jQuery.data(element, name, value)`, or the full data store for the element. + * @param element The DOM element to query for the data. + * @param key Name of the data stored. + * @see \`{@link https://api.jquery.com/jQuery.data/ }\` + * @since 1.2.3 + * @since 1.4 + * @example ​ ````Store then retrieve a value from the div element. +```html + + + + + jQuery.data demo + + + + +​ +
      + The values stored were + + and + +
      +​ + +​ + + +``` + */ + data(element: Element | Document | Window | JQuery.PlainObject, key?: string): any; + /** + * Execute the next function on the queue for the matched element. + * @param element A DOM element from which to remove and execute a queued function. + * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue. + * @see \`{@link https://api.jquery.com/jQuery.dequeue/ }\` + * @since 1.3 + * @example ​ ````Use jQuery.dequeue() to end a custom queue function which allows the queue to keep going. +```html + + + + + jQuery.dequeue demo + + + + +​ + +
      +​ + +​ + + +``` + */ + dequeue(element: Element, queueName?: string): void; + /** + * A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties. + * @param array The array to iterate over. + * @param callback The function that will be executed on every object. + * @see \`{@link https://api.jquery.com/jQuery.each/ }\` + * @since 1.0 + * @example ​ ````Iterates through the array displaying each number as both a word and numeral +```html + + + + + jQuery.each demo + + + + +​ +
      +
      +
      +
      +
      +​ + +​ + + +``` + * @example ​ ````Iterates over items in an array, accessing both the current item and its index. +```javascript +$.each( [ "a", "b", "c" ], function( i, l ){ + alert( "Index #" + i + ": " + l ); +}); +``` + */ + each(array: ArrayLike, callback: (this: T, indexInArray: number, value: T) => any): ArrayLike; + /** + * A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties. + * @param obj The object to iterate over. + * @param callback The function that will be executed on every object. + * @see \`{@link https://api.jquery.com/jQuery.each/ }\` + * @since 1.0 + * @example ​ ````Iterates through the array displaying each number as both a word and numeral +```html + + + + + jQuery.each demo + + + + +​ +
      +
      +
      +
      +
      +​ + +​ + + +``` + * @example ​ ````Iterates over the properties in an object, accessing both the current item and its key. +```javascript +$.each({ name: "John", lang: "JS" }, function( k, v ) { + alert( "Key: " + k + ", Value: " + v ); +}); +``` + */ + each(obj: T, callback: (this: T[K], propertyName: K, valueOfProperty: T[K]) => any): T; + /** + * Takes a string and throws an exception containing it. + * @param message The message to send out. + * @see \`{@link https://api.jquery.com/jQuery.error/ }\` + * @since 1.4.1 + * @example ​ ````Override jQuery.error for display in Firebug. +```javascript +jQuery.error = console.error; +``` + */ + error(message: string): any; + /** + * Escapes any character that has a special meaning in a CSS selector. + * @param selector A string containing a selector expression to escape. + * @see \`{@link https://api.jquery.com/jQuery.escapeSelector/ }\` + * @since 3.0 + * @example ​ ````Escape an ID containing a hash. +```javascript +$.escapeSelector( "#target" ); // "\#target" +``` + * @example ​ ````Select all the elements having a class name of .box inside a div. +```javascript +$( "div" ).find( "." + $.escapeSelector( ".box" ) ); +``` + */ + escapeSelector(selector: JQuery.Selector): JQuery.Selector; + /** + * Merge the contents of two or more objects together into the first object. + * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported. + * @param target The object to extend. It will receive the new properties. + * @param object1 An object containing additional properties to merge in. + * @param object2 An object containing additional properties to merge in. + * @param object3 An object containing additional properties to merge in. + * @param object4 An object containing additional properties to merge in. + * @param object5 An object containing additional properties to merge in. + * @param object6 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.1.4 + * @example ​ ````Merge two objects recursively, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend( + deep: true, + target: T, + object1: U, + object2: V, + object3: W, + object4: X, + object5: Y, + object6: Z, + ): T & U & V & W & X & Y & Z; + /** + * Merge the contents of two or more objects together into the first object. + * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported. + * @param target The object to extend. It will receive the new properties. + * @param object1 An object containing additional properties to merge in. + * @param object2 An object containing additional properties to merge in. + * @param object3 An object containing additional properties to merge in. + * @param object4 An object containing additional properties to merge in. + * @param object5 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.1.4 + * @example ​ ````Merge two objects recursively, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend( + deep: true, + target: T, + object1: U, + object2: V, + object3: W, + object4: X, + object5: Y, + ): T & U & V & W & X & Y; + /** + * Merge the contents of two or more objects together into the first object. + * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported. + * @param target The object to extend. It will receive the new properties. + * @param object1 An object containing additional properties to merge in. + * @param object2 An object containing additional properties to merge in. + * @param object3 An object containing additional properties to merge in. + * @param object4 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.1.4 + * @example ​ ````Merge two objects recursively, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend(deep: true, target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X; + /** + * Merge the contents of two or more objects together into the first object. + * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported. + * @param target The object to extend. It will receive the new properties. + * @param object1 An object containing additional properties to merge in. + * @param object2 An object containing additional properties to merge in. + * @param object3 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.1.4 + * @example ​ ````Merge two objects recursively, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend(deep: true, target: T, object1: U, object2: V, object3: W): T & U & V & W; + /** + * Merge the contents of two or more objects together into the first object. + * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported. + * @param target The object to extend. It will receive the new properties. + * @param object1 An object containing additional properties to merge in. + * @param object2 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.1.4 + * @example ​ ````Merge two objects recursively, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend(deep: true, target: T, object1: U, object2: V): T & U & V; + /** + * Merge the contents of two or more objects together into the first object. + * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported. + * @param target The object to extend. It will receive the new properties. + * @param object1 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.1.4 + * @example ​ ````Merge two objects recursively, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend(deep: true, target: T, object1: U): T & U; + /** + * Merge the contents of two or more objects together into the first object. + * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported. + * @param target The object to extend. It will receive the new properties. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.1.4 + */ + extend(deep: true, target: T): this & T; + /** + * Merge the contents of two or more objects together into the first object. + * @param deep If true, the merge becomes recursive (aka. deep copy). Passing false for this argument is not supported. + * @param target The object to extend. It will receive the new properties. + * @param object1 An object containing additional properties to merge in. + * @param objectN Additional objects containing properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.1.4 + * @example ​ ````Merge two objects recursively, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend(deep: true, target: any, object1: any, ...objectN: any[]): any; + /** + * Merge the contents of two or more objects together into the first object. + * @param target An object that will receive the new properties if additional objects are passed in or that will + * extend the jQuery namespace if it is the sole argument. + * @param object1 An object containing additional properties to merge in. + * @param object2 An object containing additional properties to merge in. + * @param object3 An object containing additional properties to merge in. + * @param object4 An object containing additional properties to merge in. + * @param object5 An object containing additional properties to merge in. + * @param object6 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.0 + * @example ​ ````Merge two objects, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + * @example ​ ````Merge defaults and options, without modifying the defaults. This is a common plugin development pattern. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend( + target: T, + object1: U, + object2: V, + object3: W, + object4: X, + object5: Y, + object6: Z, + ): T & U & V & W & X & Y & Z; + /** + * Merge the contents of two or more objects together into the first object. + * @param target An object that will receive the new properties if additional objects are passed in or that will + * extend the jQuery namespace if it is the sole argument. + * @param object1 An object containing additional properties to merge in. + * @param object2 An object containing additional properties to merge in. + * @param object3 An object containing additional properties to merge in. + * @param object4 An object containing additional properties to merge in. + * @param object5 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.0 + * @example ​ ````Merge two objects, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + * @example ​ ````Merge defaults and options, without modifying the defaults. This is a common plugin development pattern. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend( + target: T, + object1: U, + object2: V, + object3: W, + object4: X, + object5: Y, + ): T & U & V & W & X & Y; + /** + * Merge the contents of two or more objects together into the first object. + * @param target An object that will receive the new properties if additional objects are passed in or that will + * extend the jQuery namespace if it is the sole argument. + * @param object1 An object containing additional properties to merge in. + * @param object2 An object containing additional properties to merge in. + * @param object3 An object containing additional properties to merge in. + * @param object4 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.0 + * @example ​ ````Merge two objects, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + * @example ​ ````Merge defaults and options, without modifying the defaults. This is a common plugin development pattern. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend(target: T, object1: U, object2: V, object3: W, object4: X): T & U & V & W & X; + /** + * Merge the contents of two or more objects together into the first object. + * @param target An object that will receive the new properties if additional objects are passed in or that will + * extend the jQuery namespace if it is the sole argument. + * @param object1 An object containing additional properties to merge in. + * @param object2 An object containing additional properties to merge in. + * @param object3 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.0 + * @example ​ ````Merge two objects, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + * @example ​ ````Merge defaults and options, without modifying the defaults. This is a common plugin development pattern. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend(target: T, object1: U, object2: V, object3: W): T & U & V & W; + /** + * Merge the contents of two or more objects together into the first object. + * @param target An object that will receive the new properties if additional objects are passed in or that will + * extend the jQuery namespace if it is the sole argument. + * @param object1 An object containing additional properties to merge in. + * @param object2 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.0 + * @example ​ ````Merge two objects, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + * @example ​ ````Merge defaults and options, without modifying the defaults. This is a common plugin development pattern. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend(target: T, object1: U, object2: V): T & U & V; + /** + * Merge the contents of two or more objects together into the first object. + * @param target An object that will receive the new properties if additional objects are passed in or that will + * extend the jQuery namespace if it is the sole argument. + * @param object1 An object containing additional properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.0 + * @example ​ ````Merge two objects, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + * @example ​ ````Merge defaults and options, without modifying the defaults. This is a common plugin development pattern. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend(target: T, object1: U): T & U; + /** + * Merge the contents of two or more objects together into the first object. + * @param target An object that will receive the new properties if additional objects are passed in or that will + * extend the jQuery namespace if it is the sole argument. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.0 + */ + extend(target: T): this & T; + /** + * Merge the contents of two or more objects together into the first object. + * @param target An object that will receive the new properties if additional objects are passed in or that will + * extend the jQuery namespace if it is the sole argument. + * @param object1 An object containing additional properties to merge in. + * @param objectN Additional objects containing properties to merge in. + * @see \`{@link https://api.jquery.com/jQuery.extend/ }\` + * @since 1.0 + * @example ​ ````Merge two objects, modifying the first. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + * @example ​ ````Merge defaults and options, without modifying the defaults. This is a common plugin development pattern. +```html + + + + + jQuery.extend demo + + + +​ +
      +​ + +​ + + +``` + */ + extend(target: any, object1: any, ...objectN: any[]): any; + /** + * Load data from the server using a HTTP GET request. + * @param url A string containing the URL to which the request is sent. + * @param data A plain object or string that is sent to the server with the request. + * @param success A callback function that is executed if the request succeeds. Required if `dataType` is provided, + * but you can use `null` or \`{@link noop jQuery.noop}\` as a placeholder. + * @param dataType The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html). + * @see \`{@link https://api.jquery.com/jQuery.get/ }\` + * @since 1.0 + */ + get( + url: string, + data: JQuery.PlainObject | string, + success: JQuery.jqXHR.DoneCallback | null, + dataType?: string, + ): JQuery.jqXHR; + /** + * Load data from the server using a HTTP GET request. + * @param url A string containing the URL to which the request is sent. + * @param success_data _@param_ `success_data` + *
      + * * `success` — A callback function that is executed if the request succeeds. Required if `dataType` is provided, + * but you can use `null` or \`{@link noop jQuery.noop}\` as a placeholder.
      + * * `data` — A plain object or string that is sent to the server with the request. + * @param dataType The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html). + * @see \`{@link https://api.jquery.com/jQuery.get/ }\` + * @since 1.0 + * @example ​ ````Get the test.php page contents, which has been returned in json format (<?php echo json_encode( array( "name"=>"John","time"=>"2pm" ) ); ?>), and add it to the page. +```javascript +$.get( "test.php", function( data ) { + $( "body" ) + .append( "Name: " + data.name ) // John + .append( "Time: " + data.time ); // 2pm +}, "json" ); +``` + */ + get( + url: string, + data_success: JQuery.PlainObject | string | JQuery.jqXHR.DoneCallback | null, + dataType: string, + ): JQuery.jqXHR; + /** + * Load data from the server using a HTTP GET request. + * @param url A string containing the URL to which the request is sent. + * @param success_data _@param_ `success_data` + *
      + * * `success` — A callback function that is executed if the request succeeds. Required if `dataType` is provided, + * but you can use `null` or \`{@link noop jQuery.noop}\` as a placeholder.
      + * * `data` — A plain object or string that is sent to the server with the request. + * @see \`{@link https://api.jquery.com/jQuery.get/ }\` + * @since 1.0 + * @example ​ ````Request the test.php page and send some additional data along (while still ignoring the return results). +```javascript +$.get( "test.php", { name: "John", time: "2pm" } ); +``` + * @example ​ ````Pass arrays of data to the server (while still ignoring the return results). +```javascript +$.get( "test.php", { "choices[]": ["Jon", "Susan"] } ); +``` + * @example ​ ````Alert the results from requesting test.php (HTML or XML, depending on what was returned). +```javascript +$.get( "test.php", function( data ) { + alert( "Data Loaded: " + data ); +}); +``` + * @example ​ ````Alert the results from requesting test.cgi with an additional payload of data (HTML or XML, depending on what was returned). +```javascript +$.get( "test.cgi", { name: "John", time: "2pm" } ) + .done(function( data ) { + alert( "Data Loaded: " + data ); + }); +``` + */ + get(url: string, success_data: JQuery.jqXHR.DoneCallback | JQuery.PlainObject | string): JQuery.jqXHR; + /** + * Load data from the server using a HTTP GET request. + * @param url_settings _@param_ `url_settings` + *
      + * * `url` — A string containing the URL to which the request is sent.
      + * * `settings` — A set of key/value pairs that configure the Ajax request. All properties except for `url` are + * optional. A default can be set for any option with \`{@link ajaxSetup $.ajaxSetup()}\`. See \`{@link https://api.jquery.com/jquery.ajax/#jQuery-ajax-settings jQuery.ajax( settings )}\` + * for a complete list of all settings. The type option will automatically be set to `GET`. + * @see \`{@link https://api.jquery.com/jQuery.get/ }\` + * @since 1.0 + * @since 1.12 + * @since 2.2 + * @example ​ ````Request the test.php page, but ignore the return results. +```javascript +$.get( "test.php" ); +``` + */ + get(url_settings?: string | JQuery.UrlAjaxSettings): JQuery.jqXHR; + /** + * Load JSON-encoded data from the server using a GET HTTP request. + * @param url A string containing the URL to which the request is sent. + * @param data A plain object or string that is sent to the server with the request. + * @param success A callback function that is executed if the request succeeds. + * @see \`{@link https://api.jquery.com/jQuery.getJSON/ }\` + * @since 1.0 + */ + getJSON(url: string, data: JQuery.PlainObject | string, success: JQuery.jqXHR.DoneCallback): JQuery.jqXHR; + /** + * Load JSON-encoded data from the server using a GET HTTP request. + * @param url A string containing the URL to which the request is sent. + * @param success_data _@param_ `url_settings` + *
      + * * `success` — A callback function that is executed if the request succeeds.
      + * * `data` — A plain object or string that is sent to the server with the request. + * @see \`{@link https://api.jquery.com/jQuery.getJSON/ }\` + * @since 1.0 + * @example ​ ````Loads the four most recent pictures of Mount Rainier from the Flickr JSONP API. +```html + + + + + jQuery.getJSON demo + + + + +​ +
      +​ + +​ + + +``` + * @example ​ ````Load the JSON data from test.js and access a name from the returned JSON data. +```javascript +$.getJSON( "test.js", function( json ) { + console.log( "JSON Data: " + json.users[ 3 ].name ); + }); + ``` + * @example ​ ````Load the JSON data from test.js, passing along additional data, and access a name from the returned JSON data. + If an error occurs, log an error message instead. +```javascript +$.getJSON( "test.js", { name: "John", time: "2pm" } ) + .done(function( json ) { + console.log( "JSON Data: " + json.users[ 3 ].name ); + }) + .fail(function( jqxhr, textStatus, error ) { + var err = textStatus + ", " + error; + console.log( "Request Failed: " + err ); +}); +``` + */ + getJSON(url: string, success_data?: JQuery.jqXHR.DoneCallback | JQuery.PlainObject | string): JQuery.jqXHR; + /** + * Load a JavaScript file from the server using a GET HTTP request, then execute it. + * @param url A string containing the URL to which the request is sent. + * @param success A callback function that is executed if the request succeeds. + * @see \`{@link https://api.jquery.com/jQuery.getScript/ }\` + * @since 1.0 + * @example ​ ````Define a $.cachedScript() method that allows fetching a cached script: +```javascript +jQuery.cachedScript = function( url, options ) { +​ + // Allow user to set any option except for dataType, cache, and url + options = $.extend( options || {}, { + dataType: "script", + cache: true, + url: url + }); +​ + // Use $.ajax() since it is more flexible than $.getScript + // Return the jqXHR object so we can chain callbacks + return jQuery.ajax( options ); +}; +​ +// Usage +$.cachedScript( "ajax/test.js" ).done(function( script, textStatus ) { + console.log( textStatus ); +}); +``` + * @example ​ ````Load the official jQuery Color Animation plugin dynamically and bind some color animations to occur once the new functionality is loaded. +```html + + + + + jQuery.getScript demo + + + + +​ + +
      +​ + +​ + + +``` + */ + getScript(url: string, success?: JQuery.jqXHR.DoneCallback): JQuery.jqXHR; + /** + * Load a JavaScript file from the server using a GET HTTP request, then execute it. + * @see \`{@link https://api.jquery.com/jQuery.getScript/ }\` + * @since 1.12 + * @since 2.2 + */ + getScript(options: JQuery.UrlAjaxSettings): JQuery.jqXHR; + /** + * Execute some JavaScript code globally. + * @param code The JavaScript code to execute. + * @see \`{@link https://api.jquery.com/jQuery.globalEval/ }\` + * @since 1.0.4 + * @example ​ ````Execute a script in the global context. +```javascript +function test() { + jQuery.globalEval( "var newVar = true;" ) +} +test(); +// newVar === true +``` + */ + globalEval(code: string): void; + /** + * Finds the elements of an array which satisfy a filter function. The original array is not affected. + * @param array The array-like object to search through. + * @param funсtion The function to process each item against. The first argument to the function is the item, and the + * second argument is the index. The function should return a Boolean value. `this` will be the global + * window object. + * @param invert If "invert" is false, or not provided, then the function returns an array consisting of all elements + * for which "callback" returns true. If "invert" is true, then the function returns an array + * consisting of all elements for which "callback" returns false. + * @see \`{@link https://api.jquery.com/jQuery.grep/ }\` + * @since 1.0 + * @example ​ ````Filters the original array of numbers leaving that are not 5 and have an index greater than 4. Then it removes all 9s. +```html + + + + + jQuery.grep demo + + + + +​ +
      +

      + +​ + +​ + + +``` + * @example ​ ````Filter an array of numbers to include only numbers bigger then zero. +```javascript +$.grep( [ 0, 1, 2 ], function( n, i ) { + return n > 0; +}); +``` + * @example ​ ````Filter an array of numbers to include numbers that are not bigger than zero. +```javascript +$.grep( [ 0, 1, 2 ], function( n, i ) { + return n > 0; +}, true ); +``` + */ + grep(array: ArrayLike, funсtion: (elementOfArray: T, indexInArray: number) => boolean, invert?: boolean): T[]; + /** + * Determine whether an element has any jQuery data associated with it. + * @param element A DOM element to be checked for data. + * @see \`{@link https://api.jquery.com/jQuery.hasData/ }\` + * @since 1.5 + * @example ​ ````Set data on an element and see the results of hasData. +```html + + + + + jQuery.hasData demo + + + +​ +

      Results:

      +​ + +​ + + +``` + */ + hasData(element: Element | Document | Window | JQuery.PlainObject): boolean; + /** + * Holds or releases the execution of jQuery's ready event. + * @param hold Indicates whether the ready hold is being requested or released + * @see \`{@link https://api.jquery.com/jQuery.holdReady/ }\` + * @since 1.6 + * @deprecated ​ Deprecated since 3.2. See \`{@link https://github.com/jquery/jquery/issues/3288 }\`. + * + * **Cause**: The `jQuery.holdReady()` method has been deprecated due to its detrimental effect on the global performance of the page. This method can prevent all the code on the page from initializing for extended lengths of time. + * + * **Solution**: Rewrite the page so that it does not require all jQuery ready handlers to be delayed. This might be accomplished, for example, by late-loading only the code that requires the delay when it is safe to run. Due to the complexity of this method, jQuery Migrate does not attempt to fill the functionality. If the underlying version of jQuery used with jQuery Migrate no longer contains `jQuery.holdReady()` the code will fail shortly after this warning appears. + * @example ​ ````Delay the ready event until a custom plugin has loaded. +```javascript +$.holdReady( true ); +$.getScript( "myplugin.js", function() { + $.holdReady( false ); +}); +``` + */ + holdReady(hold: boolean): void; + /** + * Modify and filter HTML strings passed through jQuery manipulation methods. + * @param html The HTML string on which to operate. + * @see \`{@link https://api.jquery.com/jQuery.htmlPrefilter/ }\` + * @since 1.12 + * @since 2.2 + */ + htmlPrefilter(html: JQuery.htmlString): JQuery.htmlString; + /** + * Search for a specified value within an array and return its index (or -1 if not found). + * @param value The value to search for. + * @param array An array through which to search. + * @param fromIndex The index of the array at which to begin the search. The default is 0, which will search the whole array. + * @see \`{@link https://api.jquery.com/jQuery.inArray/ }\` + * @since 1.2 + * @example ​ ````Report the index of some elements in the array. +```html + + + + + jQuery.inArray demo + + + + +​ +
      "John" found at
      +
      4 found at
      +
      "Karl" not found, so
      +
      "Pete" is in the array, but not at or after index 2, so
      +​ + +​ + + +``` + */ + inArray(value: T, array: T[], fromIndex?: number): number; + /** + * Determine whether the argument is an array. + * @param obj Object to test whether or not it is an array. + * @see \`{@link https://api.jquery.com/jQuery.isArray/ }\` + * @since 1.3 + * @deprecated ​ Deprecated since 3.2. Use \`{@link ArrayConstructor.isArray Array.isArray}\`. + * @example ​ ````Finds out if the parameter is an array. +```html + + + + + jQuery.isArray demo + + + +​ +Is [] an Array? +​ + +​ + + +``` + */ + isArray(obj: any): obj is any[]; + /** + * Check to see if an object is empty (contains no enumerable properties). + * @param obj The object that will be checked to see if it's empty. + * @see \`{@link https://api.jquery.com/jQuery.isEmptyObject/ }\` + * @since 1.4 + * @example ​ ````Check an object to see if it's empty. +```javascript +jQuery.isEmptyObject({}); // true +jQuery.isEmptyObject({ foo: "bar" }); // false +``` + */ + isEmptyObject(obj: any): boolean; + /** + * Determine if the argument passed is a JavaScript function object. + * @param obj Object to test whether or not it is a function. + * @see \`{@link https://api.jquery.com/jQuery.isFunction/ }\` + * @since 1.2 + * @deprecated ​ Deprecated since 3.3. Use `typeof x === "function"`. + * @example ​ ````Test a few parameter examples. +```html + + + + + jQuery.isFunction demo + + + + +​ +
      jQuery.isFunction( objs[ 0 ] ) =
      +
      jQuery.isFunction( objs[ 1 ] ) =
      +
      jQuery.isFunction( objs[ 2 ] ) =
      +
      jQuery.isFunction( objs[ 3 ] ) =
      +
      jQuery.isFunction( objs[ 4 ] ) =
      +​ + +​ + + +``` + * @example ​ ````Finds out if the parameter is a function. +```javascript +$.isFunction(function() {}); +``` + */ + // tslint:disable-next-line:ban-types + isFunction(obj: any): obj is Function; + /** + * Determines whether its argument represents a JavaScript number. + * @param value The value to be tested. + * @see \`{@link https://api.jquery.com/jQuery.isNumeric/ }\` + * @since 1.7 + * @deprecated ​ Deprecated since 3.3. Internal. See \`{@link https://github.com/jquery/jquery/issues/2960 }\`. + * @example ​ ````Sample return values of $.isNumeric with various inputs. +```javascript +// true (numeric) +$.isNumeric( "-10" ) +$.isNumeric( "0" ) +$.isNumeric( 0xFF ) +$.isNumeric( "0xFF" ) +$.isNumeric( "8e5" ) +$.isNumeric( "3.1415" ) +$.isNumeric( +10 ) +$.isNumeric( 0144 ) +​ +// false (non-numeric) +$.isNumeric( "-0x42" ) +$.isNumeric( "7.2acdgs" ) +$.isNumeric( "" ) +$.isNumeric( {} ) +$.isNumeric( NaN ) +$.isNumeric( null ) +$.isNumeric( true ) +$.isNumeric( Infinity ) +$.isNumeric( undefined ) +``` + */ + isNumeric(value: any): boolean; + /** + * Check to see if an object is a plain object (created using "{}" or "new Object"). + * @param obj The object that will be checked to see if it's a plain object. + * @see \`{@link https://api.jquery.com/jQuery.isPlainObject/ }\` + * @since 1.4 + * @example ​ ````Check an object to see if it's a plain object. +```javascript +jQuery.isPlainObject({}) // true +jQuery.isPlainObject( "test" ) // false +``` + */ + isPlainObject(obj: any): boolean; + /** + * Determine whether the argument is a window. + * @param obj Object to test whether or not it is a window. + * @see \`{@link https://api.jquery.com/jQuery.isWindow/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Internal. See \`{@link https://github.com/jquery/jquery/issues/3629 }\`. + * + * **Cause**: This method returns `true` if its argument is thought to be a `window` element. It was created for internal use and is not a reliable way of detecting `window` for public needs. + * + * **Solution**: Remove any use of `jQuery.isWindow()` from code. If it is truly needed it can be replaced with a check for `obj != null && obj === obj.window` which was the test used inside this method. + * @example ​ ````Finds out if the parameter is a window. +```html + + + + + jQuery.isWindow demo + + + +​ +Is 'window' a window? +​ + +​ + + +``` + */ + isWindow(obj: any): obj is Window; + /** + * Check to see if a DOM node is within an XML document (or is an XML document). + * @param node The DOM node that will be checked to see if it's in an XML document. + * @see \`{@link https://api.jquery.com/jQuery.isXMLDoc/ }\` + * @since 1.1.4 + * @example ​ ````Check an object to see if it's in an XML document. +```javascript +jQuery.isXMLDoc( document ) // false +jQuery.isXMLDoc( document.body ) // false +``` + */ + isXMLDoc(node: Node): boolean; + /** + * Convert an array-like object into a true JavaScript array. + * @param obj Any object to turn into a native Array. + * @see \`{@link https://api.jquery.com/jQuery.makeArray/ }\` + * @since 1.2 + * @example ​ ````Turn a collection of HTMLElements into an Array of them. +```html + + + + + jQuery.makeArray demo + + + + +​ +
      First
      +
      Second
      +
      Third
      +
      Fourth
      +​ + +​ + + +``` + * @example ​ ````Turn a jQuery object into an array +```javascript +var obj = $( "li" ); +var arr = $.makeArray( obj ); +``` + */ + makeArray(obj: ArrayLike): T[]; + /** + * Translate all items in an array or object to new array of items. + * @param array The Array to translate. + * @param callback The function to process each item against. The first argument to the function is the array item, the + * second argument is the index in array The function can return any value. A returned array will be + * flattened into the resulting array. Within the function, this refers to the global (window) object. + * @see \`{@link https://api.jquery.com/jQuery.map/ }\` + * @since 1.0 + * @example ​ ````Use $.map() to change the values of an array. +```html + + + + + jQuery.map demo + + + + +​ +
      +

      + +​ + +​ + + +``` + * @example ​ ````Map the original array to a new one and add 4 to each value. +```javascript +$.map( [ 0, 1, 2 ], function( n ) { + return n + 4; +}); +``` + * @example ​ ````Map the original array to a new one, adding 1 to each value if it is bigger then zero and removing it if not. +```javascript +$.map( [ 0, 1, 2 ], function( n ) { + return n > 0 ? n + 1 : null; +}); +``` + * @example ​ ````Map the original array to a new one; each element is added with its original value and the value plus one. +```javascript +$.map( [ 0, 1, 2 ], function( n ) { + return [ n, n + 1 ]; +}); +``` + * @example ​ ````Map the original array to a new one; each element is squared. +```javascript +$.map( [ 0, 1, 2, 3 ], function( a ) { + return a * a; +}); +``` + * @example ​ ````Map the original array to a new one, removing numbers less than 50 by returning null and subtracting 45 from the rest. +```javascript +$.map( [ 0, 1, 52, 97 ], function( a ) { + return (a > 50 ? a - 45 : null); +}); +``` + * @example ​ ````Augment the resulting array by returning an array inside the function. +```javascript +var array = [ 0, 1, 52, 97 ]; +array = $.map( array, function( a, index ) { + return [ a - 45, index ]; +}); +``` + */ + map( + array: T[], + callback: ( + this: Window, + elementOfArray: T, + indexInArray: number, + ) => JQuery.TypeOrArray | null | undefined, + ): TReturn[]; + /** + * Translate all items in an array or object to new array of items. + * @param obj The Object to translate. + * @param callback The function to process each item against. The first argument to the function is the value; the + * second argument is the key of the object property. The function can return any value to add to the + * array. A returned array will be flattened into the resulting array. Within the function, this refers + * to the global (window) object. + * @see \`{@link https://api.jquery.com/jQuery.map/ }\` + * @since 1.6 + * @example ​ ````Map the original object to a new array and double each value. +```javascript +var dimensions = { width: 10, height: 15, length: 20 }; +dimensions = $.map( dimensions, function( value, index ) { + return value * 2; +}); +``` + * @example ​ ````Map an object's keys to an array. +```javascript +var dimensions = { width: 10, height: 15, length: 20 }; +var keys = $.map( dimensions, function( value, key ) { + return key; +}); +``` + */ + map( + obj: T, + callback: (this: Window, propertyOfObject: T[K], key: K) => JQuery.TypeOrArray | null | undefined, + ): TReturn[]; + /** + * Merge the contents of two arrays together into the first array. + * @param first The first array-like object to merge, the elements of second added. + * @param second The second array-like object to merge into the first, unaltered. + * @see \`{@link https://api.jquery.com/jQuery.merge/ }\` + * @since 1.0 + * @example ​ ````Merges two arrays, altering the first argument. +```javascript +$.merge( [ 0, 1, 2 ], [ 2, 3, 4 ] ) +``` + * @example ​ ````Merges two arrays, altering the first argument. +```javascript +$.merge( [ 3, 2, 1 ], [ 4, 3, 2 ] ) +``` + * @example ​ ````Merges two arrays, but uses a copy, so the original isn't altered. +```javascript +var first = [ "a", "b", "c" ]; +var second = [ "d", "e", "f" ]; +$.merge( $.merge( [], first ), second ); +``` + */ + merge(first: ArrayLike, second: ArrayLike): Array; + /** + * Relinquish jQuery's control of the $ variable. + * @param removeAll A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself). + * @see \`{@link https://api.jquery.com/jQuery.noConflict/ }\` + * @since 1.0 + * @example ​ ````Map the original object that was referenced by $ back to $. +```javascript +jQuery.noConflict(); +// Do something with jQuery +jQuery( "div p" ).hide(); +// Do something with another library's $() +$( "content" ).style.display = "none"; +``` + * @example ​ ````Revert the $ alias and then create and execute a function to provide the $ as a jQuery alias inside the function's scope. Inside the function the original $ object is not available. This works well for most plugins that don't rely on any other library. +```javascript +jQuery.noConflict(); +(function( $ ) { + $(function() { + // More code using $ as alias to jQuery + }); +})(jQuery); +​ +// Other code using $ as an alias to the other library +``` + * @example ​ ````Create a different alias instead of jQuery to use in the rest of the script. +```javascript +var j = jQuery.noConflict(); +​ +// Do something with jQuery +j( "div p" ).hide(); +​ +// Do something with another library's $() +$( "content" ).style.display = "none"; +``` + * @example ​ ````Completely move jQuery to a new namespace in another object. +```javascript +var dom = {}; +dom.query = jQuery.noConflict( true ); +``` + * @example ​ ````Load two versions of jQuery (not recommended). Then, restore jQuery's globally scoped variables to the first loaded jQuery. +```html + + + + + jQuery.noConflict demo + + + +​ +
      +

      Before $.noConflict(true)

      +
      + +​ + +​ + + +``` + */ + noConflict(removeAll?: boolean): this; + /** + * @deprecated ​ Deprecated since 3.2. + * + * **Cause**: This public but never-documented method has been deprecated as of jQuery 3.2.0. + * + * **Solution**: Replace calls such as `jQuery.nodeName( elem, "div" )` with a test such as `elem.nodeName.toLowerCase() === "div"`. + */ + nodeName(elem: Node, name: string): boolean; + /** + * An empty function. + * @see \`{@link https://api.jquery.com/jQuery.noop/ }\` + * @since 1.4 + */ + noop(): undefined; + /** + * Return a number representing the current time. + * @see \`{@link https://api.jquery.com/jQuery.now/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.3. Use \`{@link DateConstructor.now Date.now}\`. + */ + now(): number; + /** + * Create a serialized representation of an array, a plain object, or a jQuery object suitable for use in a URL query string or Ajax request. In case a jQuery object is passed, it should contain input elements with name/value properties. + * @param obj An array, a plain object, or a jQuery object to serialize. + * @param traditional A Boolean indicating whether to perform a traditional "shallow" serialization. + * @see \`{@link https://api.jquery.com/jQuery.param/ }\` + * @since 1.2 + * @since 1.4 + * @example ​ ````Serialize a key/value object. +```html + + + + + jQuery.param demo + + + + +​ +
      +​ + +​ + + +``` + * @example ​ ````Serialize a few complex objects +```html + + + + + jQuery.param demo + + + + +​​ + +​ + + +``` + */ + param(obj: any[] | JQuery.PlainObject | JQuery, traditional?: boolean): string; + /** + * Parses a string into an array of DOM nodes. + * @param data HTML string to be parsed + * @param context Document element to serve as the context in which the HTML fragment will be created + * @param keepScripts A Boolean indicating whether to include scripts passed in the HTML string + * @see \`{@link https://api.jquery.com/jQuery.parseHTML/ }\` + * @since 1.8 + */ + parseHTML(data: string, context: Document | null | undefined, keepScripts: boolean): JQuery.Node[]; + /** + * Parses a string into an array of DOM nodes. + * @param data HTML string to be parsed + * @param context_keepScripts _@param_ `context_keepScripts` + *
      + * * `context` — Document element to serve as the context in which the HTML fragment will be created
      + * * `keepScripts` — A Boolean indicating whether to include scripts passed in the HTML string + * @see \`{@link https://api.jquery.com/jQuery.parseHTML/ }\` + * @since 1.8 + * @example ​ ````Create an array of DOM nodes using an HTML string and insert it into a div. +```html + + + + + jQuery.parseHTML demo + + + +​ +
      +

      Content:

      +
      +​ + +​ + + +``` + */ + parseHTML(data: string, context_keepScripts?: Document | null | boolean): JQuery.Node[]; + /** + * Takes a well-formed JSON string and returns the resulting JavaScript value. + * @param json The JSON string to parse. + * @see \`{@link https://api.jquery.com/jQuery.parseJSON/ }\` + * @since 1.4.1 + * @deprecated ​ Deprecated since 3.0. Use \`{@link JSON.parse }\`. + * + * **Cause**: The `jQuery.parseJSON` method in recent jQuery is identical to the native `JSON.parse`. As of jQuery 3.0 `jQuery.parseJSON` is deprecated. + * + * **Solution**: Replace any use of `jQuery.parseJSON` with `JSON.parse`. + * @example ​ ````Parse a JSON string. +```javascript +var obj = jQuery.parseJSON( '{ "name": "John" }' ); +alert( obj.name === "John" ); +``` + */ + parseJSON(json: string): any; + /** + * Parses a string into an XML document. + * @param data a well-formed XML string to be parsed + * @see \`{@link https://api.jquery.com/jQuery.parseXML/ }\` + * @since 1.5 + * @example ​ ````Create a jQuery object using an XML string and obtain the value of the title node. +```html + + + + + jQuery.parseXML demo + + + +​ +

      +

      +​ + +​ + + +``` + */ + parseXML(data: string): XMLDocument; + /** + * Load data from the server using a HTTP POST request. + * @param url A string containing the URL to which the request is sent. + * @param data A plain object or string that is sent to the server with the request. + * @param success A callback function that is executed if the request succeeds. Required if dataType is provided, but + * can be null in that case. + * @param dataType The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html). + * @see \`{@link https://api.jquery.com/jQuery.post/ }\` + * @since 1.0 + * @example ​ ````Post to the test.php page and get content which has been returned in json format (<?php echo json_encode(array("name"=>"John","time"=>"2pm")); ?>). +```javascript +$.post( "test.php", { func: "getNameAndTime" }, function( data ) { + console.log( data.name ); // John + console.log( data.time ); // 2pm +}, "json"); +``` + */ + post( + url: string, + data: JQuery.PlainObject | string, + success: JQuery.jqXHR.DoneCallback | null, + dataType?: string, + ): JQuery.jqXHR; + /** + * Load data from the server using a HTTP POST request. + * @param url A string containing the URL to which the request is sent. + * @param success_data _@param_ `success_data` + *
      + * * `success` — A callback function that is executed if the request succeeds. Required if `dataType` is provided, + * but can be `null` in that case.
      + * * `data` — A plain object or string that is sent to the server with the request. + * @param dataType The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html). + * @see \`{@link https://api.jquery.com/jQuery.post/ }\` + * @since 1.0 + */ + post( + url: string, + data_success: JQuery.PlainObject | string | JQuery.jqXHR.DoneCallback | null, + dataType: string, + ): JQuery.jqXHR; + /** + * Load data from the server using a HTTP POST request. + * @param url A string containing the URL to which the request is sent. + * @param success_data _@param_ `success_data` + *
      + * * `success` — A callback function that is executed if the request succeeds. Required if `dataType` is provided, + * but can be `null` in that case.
      + * * `data` — A plain object or string that is sent to the server with the request. + * @see \`{@link https://api.jquery.com/jQuery.post/ }\` + * @since 1.0 + * @example ​ ````Request the test.php page and send some additional data along (while still ignoring the return results). +```javascript +$.post( "test.php", { name: "John", time: "2pm" } ); +``` + * @example ​ ````Pass arrays of data to the server (while still ignoring the return results). +```javascript +$.post( "test.php", { 'choices[]': [ "Jon", "Susan" ] } ); +``` + * @example ​ ````Send form data using Ajax requests +```javascript +$.post( "test.php", $( "#testform" ).serialize() ); +``` + * @example ​ ````Alert the results from requesting test.php (HTML or XML, depending on what was returned). +```javascript +$.post( "test.php", function( data ) { + alert( "Data Loaded: " + data ); +}); +``` + * @example ​ ````Alert the results from requesting test.php with an additional payload of data (HTML or XML, depending on what was returned). +```javascript +$.post( "test.php", { name: "John", time: "2pm" }) + .done(function( data ) { + alert( "Data Loaded: " + data ); + }); +``` + * @example ​ ````Post a form using Ajax and put results in a div +```html + + + + + jQuery.post demo + + + +​ +
      + + +
      + +
      +​ + +​ + + +``` + */ + post(url: string, success_data: JQuery.jqXHR.DoneCallback | JQuery.PlainObject | string): JQuery.jqXHR; + /** + * Load data from the server using a HTTP POST request. + * @param url_settings _@param_ `url_settings` + *
      + * * `url` — A string containing the URL to which the request is sent.
      + * * `settings` — A set of key/value pairs that configure the Ajax request. All properties except for `url` are optional. + * A default can be set for any option with \`{@link ajaxSetup $.ajaxSetup()}\`. See \`{@link https://api.jquery.com/jquery.ajax/#jQuery-ajax-settings jQuery.ajax( settings )}\` + * for a complete list of all settings. Type will automatically be set to `POST`. + * @see \`{@link https://api.jquery.com/jQuery.post/ }\` + * @since 1.0 + * @since 1.12 + * @since 2.2 + * @example ​ ````Request the test.php page, but ignore the return results. +```javascript +$.post( "test.php" ); +``` + */ + post(url_settings?: string | JQuery.UrlAjaxSettings): JQuery.jqXHR; + + // region proxy + // #region proxy + + // region (funсtion, null | undefined) + // #region (funсtion, null | undefined) + + // region 0 to 7 additional arguments + // #region 0 to 7 additional arguments + + // region 0 parameters + // #region 0 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, g: G) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + ): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + ): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + ): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy(funсtion: (a: A, b: B) => TReturn, context: null | undefined, a: A, b: B): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy(funсtion: (a: A) => TReturn, context: null | undefined, a: A): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy(funсtion: () => TReturn, context: null | undefined): () => TReturn; + + // #endregion + + // region 1 parameters + // #region 1 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, g: G, t: T) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, t: T) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, t: T) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, t: T) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, t: T) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, t: T) => TReturn, + context: null | undefined, + a: A, + b: B, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy(funсtion: (a: A, t: T) => TReturn, context: null | undefined, a: A): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy(funсtion: (t: T) => TReturn, context: null | undefined): (t: T) => TReturn; + + // #endregion + + // region 2 parameters + // #region 2 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, g: G, t: T, u: U) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, t: T, u: U) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, t: T, u: U) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, t: T, u: U) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, t: T, u: U) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, t: T, u: U) => TReturn, + context: null | undefined, + a: A, + b: B, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, t: T, u: U) => TReturn, + context: null | undefined, + a: A, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy(funсtion: (t: T, u: U) => TReturn, context: null | undefined): (t: T, u: U) => TReturn; + + // #endregion + + // region 3 parameters + // #region 3 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, g: G, t: T, u: U, v: V) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, t: T, u: U, v: V) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, t: T, u: U, v: V) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, t: T, u: U, v: V) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, t: T, u: U, v: V) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, t: T, u: U, v: V) => TReturn, + context: null | undefined, + a: A, + b: B, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, t: T, u: U, v: V) => TReturn, + context: null | undefined, + a: A, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (t: T, u: U, v: V) => TReturn, + context: null | undefined, + ): (t: T, u: U, v: V) => TReturn; + + // #endregion + + // region 4 parameters + // #region 4 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, g: G, t: T, u: U, v: V, w: W) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, t: T, u: U, v: V, w: W) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, t: T, u: U, v: V, w: W) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, t: T, u: U, v: V, w: W) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, t: T, u: U, v: V, w: W) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, t: T, u: U, v: V, w: W) => TReturn, + context: null | undefined, + a: A, + b: B, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, t: T, u: U, v: V, w: W) => TReturn, + context: null | undefined, + a: A, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (t: T, u: U, v: V, w: W) => TReturn, + context: null | undefined, + ): (t: T, u: U, v: V, w: W) => TReturn; + + // #endregion + + // region 5 parameters + // #region 5 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, g: G, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: null | undefined, + a: A, + b: B, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: null | undefined, + a: A, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (t: T, u: U, v: V, w: W, x: X) => TReturn, + context: null | undefined, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + + // #endregion + + // region 6 parameters + // #region 6 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, g: G, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, f: F, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: null | undefined, + a: A, + b: B, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: null | undefined, + a: A, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: null | undefined, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + + // #endregion + + // region 7+ parameters + // #region 7+ parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: ( + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + t: T, + u: U, + v: V, + w: W, + x: X, + y: Y, + z: Z, + ...args: any[] + ) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: ( + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + t: T, + u: U, + v: V, + w: W, + x: X, + y: Y, + z: Z, + ...args: any[] + ) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, e: E, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, d: D, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, c: C, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn, + context: null | undefined, + a: A, + b: B, + c: C, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, b: B, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn, + context: null | undefined, + a: A, + b: B, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (a: A, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn, + context: null | undefined, + a: A, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn, + context: null | undefined, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + + // #endregion + + // #endregion + + // region 8+ additional arguments + // #region 8+ additional arguments + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param additionalArguments Any number of arguments to be passed to the function referenced in the function argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.9 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + */ + proxy( + funсtion: (...args: any[]) => TReturn, + context: null | undefined, + ...additionalArguments: any[] + ): (...args: any[]) => TReturn; + + // #endregion + + // #endregion + + // region (funсtion, context) + // #region (funсtion, context) + + // region 0 to 7 additional arguments + // #region 0 to 7 additional arguments + + // region 0 parameters + // #region 0 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, g: G) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + ): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + ): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + ): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B) => TReturn, + context: TContext, + a: A, + b: B, + ): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4` + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy(funсtion: (this: TContext, a: A) => TReturn, context: TContext, a: A): () => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy(funсtion: (this: TContext) => TReturn, context: TContext): () => TReturn; + + // #endregion + + // region 1 parameters + // #region 1 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, g: G, t: T) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, t: T) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, t: T) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, t: T) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, t: T) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, t: T) => TReturn, + context: TContext, + a: A, + b: B, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, t: T) => TReturn, + context: TContext, + a: A, + ): (t: T) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy(funсtion: (this: TContext, t: T) => TReturn, context: TContext): (t: T) => TReturn; + + // #endregion + + // region 2 parameters + // #region 2 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, g: G, t: T, u: U) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, t: T, u: U) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, t: T, u: U) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, t: T, u: U) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, t: T, u: U) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, t: T, u: U) => TReturn, + context: TContext, + a: A, + b: B, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, t: T, u: U) => TReturn, + context: TContext, + a: A, + ): (t: T, u: U) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, t: T, u: U) => TReturn, + context: TContext, + ): (t: T, u: U) => TReturn; + + // #endregion + + // region 3 parameters + // #region 3 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, g: G, t: T, u: U, v: V) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, t: T, u: U, v: V) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, t: T, u: U, v: V) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, t: T, u: U, v: V) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, t: T, u: U, v: V) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, t: T, u: U, v: V) => TReturn, + context: TContext, + a: A, + b: B, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, t: T, u: U, v: V) => TReturn, + context: TContext, + a: A, + ): (t: T, u: U, v: V) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, t: T, u: U, v: V) => TReturn, + context: TContext, + ): (t: T, u: U, v: V) => TReturn; + + // #endregion + + // region 4 parameters + // #region 4 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, g: G, t: T, u: U, v: V, w: W) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, t: T, u: U, v: V, w: W) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, t: T, u: U, v: V, w: W) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, t: T, u: U, v: V, w: W) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, t: T, u: U, v: V, w: W) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, t: T, u: U, v: V, w: W) => TReturn, + context: TContext, + a: A, + b: B, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, t: T, u: U, v: V, w: W) => TReturn, + context: TContext, + a: A, + ): (t: T, u: U, v: V, w: W) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, t: T, u: U, v: V, w: W) => TReturn, + context: TContext, + ): (t: T, u: U, v: V, w: W) => TReturn; + + // #endregion + + // region 5 parameters + // #region 5 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, g: G, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: TContext, + a: A, + b: B, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: TContext, + a: A, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, t: T, u: U, v: V, w: W, x: X) => TReturn, + context: TContext, + ): (t: T, u: U, v: V, w: W, x: X) => TReturn; + + // #endregion + + // region 6 parameters + // #region 6 parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: ( + this: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + t: T, + u: U, + v: V, + w: W, + x: X, + y: Y, + ) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, f: F, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, e: E, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, d: D, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, c: C, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: TContext, + a: A, + b: B, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: TContext, + a: A, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn, + context: TContext, + ): (t: T, u: U, v: V, w: W, x: X, y: Y) => TReturn; + + // #endregion + + // region 7+ parameters + // #region 7+ parameters + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @param g An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: ( + this: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + t: T, + u: U, + v: V, + w: W, + x: X, + y: Y, + z: Z, + ...args: any[] + ) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + g: G, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @param f An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: ( + this: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + t: T, + u: U, + v: V, + w: W, + x: X, + y: Y, + z: Z, + ...args: any[] + ) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + f: F, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @param e An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: ( + this: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + t: T, + u: U, + v: V, + w: W, + x: X, + y: Y, + z: Z, + ...args: any[] + ) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + e: E, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @param d An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: ( + this: TContext, + a: A, + b: B, + c: C, + d: D, + t: T, + u: U, + v: V, + w: W, + x: X, + y: Y, + z: Z, + ...args: any[] + ) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + d: D, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @param c An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: ( + this: TContext, + a: A, + b: B, + c: C, + t: T, + u: U, + v: V, + w: W, + x: X, + y: Y, + z: Z, + ...args: any[] + ) => TReturn, + context: TContext, + a: A, + b: B, + c: C, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @param b An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, b: B, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn, + context: TContext, + a: A, + b: B, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param a An argument to be passed to the function referenced in the `function` argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, a: A, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn, + context: TContext, + a: A, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn, + context: TContext, + ): (t: T, u: U, v: V, w: W, x: X, y: Y, z: Z, ...args: any[]) => TReturn; + + // #endregion + + // #endregion + + // region 8+ additional arguments + // #region 8+ additional arguments + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param funсtion The function whose context will be changed. + * @param context The object to which the context (`this`) of the function should be set. + * @param additionalArguments Any number of arguments to be passed to the function referenced in the function argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Change the context of functions bound to a click handler using the "function, context" signature. Unbind the first handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + * @example ​ ````Change the context of a function bound to the click handler, +```html + + + + + jQuery.proxy demo + + + +​ +

      +
      +​ + +​ + + +``` + */ + proxy( + funсtion: (this: TContext, ...args: any[]) => TReturn, + context: TContext, + ...additionalArguments: any[] + ): (...args: any[]) => TReturn; + + // #endregion + + // #endregion + + // region (context, name) + // #region (context, name) + + /** + * Takes a function and returns a new one that will always have a particular context. + * @param context The object to which the context of the function should be set. + * @param name The name of the function whose context will be changed (should be a property of the context object). + * @param additionalArguments Any number of arguments to be passed to the function named in the name argument. + * @see \`{@link https://api.jquery.com/jQuery.proxy/ }\` + * @since 1.4 + * @since 1.6 + * @deprecated ​ Deprecated since 3.3. Use \`{@link Function#bind }\`. + * @example ​ ````Enforce the context of the function using the "context, function name" signature. Unbind the handler after first click. +```html + + + + + jQuery.proxy demo + + + +​ +

      +

      +​ + +​ + + +``` + */ + proxy(context: TContext, name: keyof TContext, ...additionalArguments: any[]): (...args: any[]) => any; + + // #endregion + + // #endregion + + /** + * Manipulate the queue of functions to be executed on the matched element. + * @param element A DOM element where the array of queued functions is attached. + * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue. + * @param newQueue The new function to add to the queue. + * An array of functions to replace the current queue contents. + * @see \`{@link https://api.jquery.com/jQuery.queue/ }\` + * @since 1.3 + * @example ​ ````Show the length of the queue. +```html + + + + + jQuery.queue demo + + + + +​ + + +
      + ​ + +​ + + +``` + * @example ​ ````Queue a custom function. +```html + + + + + jQuery.queue demo + + + + +​ +Click here... +
      +​ + +​ + + +``` + * @example ​ ````Set a queue array to delete the queue. +```html + + + + + jQuery.queue demo + + + + +​ + + +
      +​ + +​ + + +``` + */ + queue( + element: T, + queueName?: string, + newQueue?: JQuery.TypeOrArray>, + ): JQuery.Queue; + /** + * Handles errors thrown synchronously in functions wrapped in jQuery(). + * @param error An error thrown in the function wrapped in jQuery(). + * @see \`{@link https://api.jquery.com/jQuery.readyException/ }\` + * @since 3.1 + * @example ​ ````Pass the received error to console.error. +```javascript +jQuery.readyException = function( error ) { + console.error( error ); +}; +``` + */ + readyException(error: Error): any; + /** + * Remove a previously-stored piece of data. + * @param element A DOM element from which to remove data. + * @param name A string naming the piece of data to remove. + * @see \`{@link https://api.jquery.com/jQuery.removeData/ }\` + * @since 1.2.3 + * @example ​ ````Set a data store for 2 names then remove one of them. +```html + + + + + jQuery.removeData demo + + + + +​ +
      value1 before creation:
      +
      value1 after creation:
      +
      value1 after removal:
      +
      value2 after removal:
      +​ + +​ + + +``` + */ + removeData(element: Element | Document | Window | JQuery.PlainObject, name?: string): void; + /** + * Creates an object containing a set of properties ready to be used in the definition of custom animations. + * @param duration A string or number determining how long the animation will run. + * @param easing A string indicating which easing function to use for the transition. + * @param complete A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/jQuery.speed/ }\` + * @since 1.1 + */ + speed( + duration: JQuery.Duration, + easing: string, + complete: (this: TElement) => void, + ): JQuery.EffectsOptions; + /** + * Creates an object containing a set of properties ready to be used in the definition of custom animations. + * @param duration A string or number determining how long the animation will run. + * @param easing_complete _@param_ `easing_complete` + *
      + * * `easing` — A string indicating which easing function to use for the transition.
      + * * `complete` — A function to call once the animation is complete, called once per matched element. + * @see \`{@link https://api.jquery.com/jQuery.speed/ }\` + * @since 1.0 + * @since 1.1 + */ + speed( + duration: JQuery.Duration, + easing_complete: string | ((this: TElement) => void), + ): JQuery.EffectsOptions; + /** + * Creates an object containing a set of properties ready to be used in the definition of custom animations. + * @param duration_complete_settings _@param_ `duration_complete_settings` + *
      + * * `duration` — A string or number determining how long the animation will run.
      + * * `complete` — A function to call once the animation is complete, called once per matched element.
      + * * `settings` — + * @see \`{@link https://api.jquery.com/jQuery.speed/ }\` + * @since 1.0 + * @since 1.1 + */ + speed( + duration_complete_settings?: JQuery.Duration | ((this: TElement) => void) | JQuery.SpeedSettings, + ): JQuery.EffectsOptions; + /** + * Remove the whitespace from the beginning and end of a string. + * @param str The string to trim. + * @see \`{@link https://api.jquery.com/jQuery.trim/ }\` + * @since 1.0 + * @deprecated ​ Deprecated since 3.5. Use \`{@link String.prototype.trim String.prototype.trim}\`. + * @example ​ ````Remove the white spaces at the start and at the end of the string. +```html + + + + + jQuery.trim demo + + + +​ +
      
      +
      
      +​
      +
      +​
      +
      +
      +```
      +     * @example ​ ````Remove the white spaces at the start and at the end of the string.
      +```javascript
      +$.trim("    hello, how are you?    ");
      +```
      +     * @example ​ ````Remove the white spaces at the start and at the end of the string.
      +```javascript
      +$.trim("    hello, how are you?    ");
      +```
      +     */
      +    trim(str: string): string;
      +    /**
      +     * Determine the internal JavaScript [[Class]] of an object.
      +     * @param obj Object to get the internal JavaScript [[Class]] of.
      +     * @see \`{@link https://api.jquery.com/jQuery.type/ }\`
      +     * @since 1.4.3
      +     * @deprecated ​ Deprecated since 3.3. See \`{@link https://github.com/jquery/jquery/issues/3605 }\`.
      +     * @example ​ ````Find out if the parameter is a RegExp.
      +```html
      +
      +
      +
      +  
      +  jQuery.type demo
      +  
      +
      +
      +​
      +Is it a RegExp? 
      +​
      +
      +​
      +
      +
      +```
      +     */
      +    type(
      +        obj: any,
      +    ):
      +        | "array"
      +        | "boolean"
      +        | "date"
      +        | "error"
      +        | "function"
      +        | "null"
      +        | "number"
      +        | "object"
      +        | "regexp"
      +        | "string"
      +        | "symbol"
      +        | "undefined";
      +    /**
      +     * Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers.
      +     * @param array The Array of DOM elements.
      +     * @see \`{@link https://api.jquery.com/jQuery.unique/ }\`
      +     * @since 1.1.3
      +     * @deprecated ​ Deprecated since 3.0. Use \`{@link uniqueSort }\`.
      +     *
      +     * **Cause**: The fact that `jQuery.unique` sorted its results in DOM order was surprising to many who did not read the documentation carefully. As of jQuery 3.0 this function is being renamed to make it clear.
      +     *
      +     * **Solution**: Replace all uses of `jQuery.unique` with `jQuery.uniqueSort` which is the same function with a better name.
      +     * @example ​ ````Removes any duplicate elements from the array of divs.
      +```html
      +
      +
      +
      +  
      +  jQuery.unique demo
      +  
      +  
      +
      +
      +​
      +
      There are 6 divs in this document.
      +
      +
      +
      +
      +
      +​ + +​ + + +``` + */ + unique(array: T[]): T[]; + /** + * Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers. + * @param array The Array of DOM elements. + * @see \`{@link https://api.jquery.com/jQuery.uniqueSort/ }\` + * @since 1.12 + * @since 2.2 + * @example ​ ````Removes any duplicate elements from the array of divs. +```html + + + + + jQuery.uniqueSort demo + + + + +​ +
      There are 6 divs in this document.
      +
      +
      +
      +
      +
      +​ + +​ + + +``` + */ + uniqueSort(array: T[]): T[]; + /** + * Provides a way to execute callback functions based on zero or more Thenable objects, usually Deferred objects that represent asynchronous events. + * @see \`{@link https://api.jquery.com/jQuery.when/ }\` + * @since 1.5 + * @example ​ ````Execute a function after two Ajax requests are successful. (See the jQuery.ajax() documentation for a complete description of success and error cases for an ajax request). +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) { + // a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively. + // Each argument is an array with the following structure: [ data, statusText, jqXHR ] + var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It" + if ( /Whip It/.test( data ) ) { + alert( "We got what we came for!" ); + } +}); +``` + * @example ​ ````Execute the function myFunc when both ajax requests are successful, or myFailure if either one has an error. +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ) + .then( myFunc, myFailure ); +``` + */ + when( + deferredT: JQuery.Promise | JQuery.Thenable | TR1, + deferredU: JQuery.Promise | JQuery.Thenable | UR1, + deferredV: JQuery.Promise | JQuery.Thenable | VR1, + ): JQuery.Promise3< + TR1, + TJ1, + never, + UR1, + UJ1, + never, + VR1, + VJ1, + never + >; + /** + * Provides a way to execute callback functions based on zero or more Thenable objects, usually Deferred objects that represent asynchronous events. + * @see \`{@link https://api.jquery.com/jQuery.when/ }\` + * @since 1.5 + * @example ​ ````Execute a function after two Ajax requests are successful. (See the jQuery.ajax() documentation for a complete description of success and error cases for an ajax request). +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) { + // a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively. + // Each argument is an array with the following structure: [ data, statusText, jqXHR ] + var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It" + if ( /Whip It/.test( data ) ) { + alert( "We got what we came for!" ); + } +}); +``` + * @example ​ ````Execute the function myFunc when both ajax requests are successful, or myFailure if either one has an error. +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ) + .then( myFunc, myFailure ); +``` + */ + when( + deferredT: JQuery.Promise | JQuery.Thenable | TR1, + deferredU: JQuery.Promise | JQuery.Thenable | UR1, + ): JQuery.Promise2< + TR1, + TJ1, + never, + UR1, + UJ1, + never + >; + /** + * Provides a way to execute callback functions based on zero or more Thenable objects, usually Deferred objects that represent asynchronous events. + * @see \`{@link https://api.jquery.com/jQuery.when/ }\` + * @since 1.5 + * @example ​ ````Execute a function after two Ajax requests are successful. (See the jQuery.ajax() documentation for a complete description of success and error cases for an ajax request). +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) { + // a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively. + // Each argument is an array with the following structure: [ data, statusText, jqXHR ] + var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It" + if ( /Whip It/.test( data ) ) { + alert( "We got what we came for!" ); + } +}); +``` + * @example ​ ````Execute the function myFunc when both ajax requests are successful, or myFailure if either one has an error. +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ) + .then( myFunc, myFailure ); +``` + */ + when( + deferredT: + | JQuery.Promise3 + | JQuery.Promise2, + ): JQuery.Promise3< + TR1, + TJ1, + never, + TR2, + TJ2, + never, + TR3, + TJ3, + never + >; + /** + * Provides a way to execute callback functions based on zero or more Thenable objects, usually Deferred objects that represent asynchronous events. + * @see \`{@link https://api.jquery.com/jQuery.when/ }\` + * @since 1.5 + * @example ​ ````Execute a function after two Ajax requests are successful. (See the jQuery.ajax() documentation for a complete description of success and error cases for an ajax request). +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) { + // a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively. + // Each argument is an array with the following structure: [ data, statusText, jqXHR ] + var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It" + if ( /Whip It/.test( data ) ) { + alert( "We got what we came for!" ); + } +}); +``` + * @example ​ ````Execute the function myFunc when both ajax requests are successful, or myFailure if either one has an error. +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ) + .then( myFunc, myFailure ); +``` + */ + when( + deferred: JQuery.Promise | JQuery.Thenable | TR1, + ): JQuery.Promise; + /** + * Provides a way to execute callback functions based on zero or more Thenable objects, usually Deferred objects that represent asynchronous events. + * @param deferreds Zero or more Thenable objects. + * @see \`{@link https://api.jquery.com/jQuery.when/ }\` + * @since 1.5 + * @example ​ ````Execute a function after two Ajax requests are successful. (See the jQuery.ajax() documentation for a complete description of success and error cases for an ajax request). +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) { + // a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively. + // Each argument is an array with the following structure: [ data, statusText, jqXHR ] + var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It" + if ( /Whip It/.test( data ) ) { + alert( "We got what we came for!" ); + } +}); +``` + * @example ​ ````Execute the function myFunc when both ajax requests are successful, or myFailure if either one has an error. +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ) + .then( myFunc, myFailure ); +``` + */ + when( + ...deferreds: Array | JQuery.Thenable | TR1> + ): JQuery.Promise; + /** + * Provides a way to execute callback functions based on zero or more Thenable objects, usually Deferred objects that represent asynchronous events. + * @param deferreds Zero or more Thenable objects. + * @see \`{@link https://api.jquery.com/jQuery.when/ }\` + * @since 1.5 + * @example ​ ````Execute a function after two Ajax requests are successful. (See the jQuery.ajax() documentation for a complete description of success and error cases for an ajax request). +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) { + // a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively. + // Each argument is an array with the following structure: [ data, statusText, jqXHR ] + var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It" + if ( /Whip It/.test( data ) ) { + alert( "We got what we came for!" ); + } +}); +``` + * @example ​ ````Execute the function myFunc when both ajax requests are successful, or myFailure if either one has an error. +```javascript +$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ) + .then( myFunc, myFailure ); +``` + */ + when(...deferreds: any[]): JQuery.Promise; +} diff --git a/node_modules/@types/jquery/LICENSE b/node_modules/@types/jquery/LICENSE new file mode 100644 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/jquery/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/jquery/README.md b/node_modules/@types/jquery/README.md new file mode 100644 index 0000000..d1d6239 --- /dev/null +++ b/node_modules/@types/jquery/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/jquery` + +# Summary +This package contains type definitions for jquery (https://jquery.com). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jquery. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 20:08:00 GMT + * Dependencies: [@types/sizzle](https://npmjs.com/package/@types/sizzle) + +# Credits +These definitions were written by [Leonard Thieu](https://github.com/leonard-thieu), [Boris Yankov](https://github.com/borisyankov), [Christian Hoffmeister](https://github.com/choffmeister), [Steve Fenton](https://github.com/Steve-Fenton), [Diullei Gomes](https://github.com/Diullei), [Tass Iliopoulos](https://github.com/tasoili), [Sean Hill](https://github.com/seanski), [Guus Goossens](https://github.com/Guuz), [Kelly Summerlin](https://github.com/ksummerlin), [Basarat Ali Syed](https://github.com/basarat), [Nicholas Wolverson](https://github.com/nwolverson), [Derek Cicerone](https://github.com/derekcicerone), [Andrew Gaspar](https://github.com/AndrewGaspar), [Seikichi Kondo](https://github.com/seikichi), [Benjamin Jackman](https://github.com/benjaminjackman), [Josh Strobl](https://github.com/JoshStrobl), [John Reilly](https://github.com/johnnyreilly), [Dick van den Brink](https://github.com/DickvdBrink), [Thomas Schulz](https://github.com/King2500), [Terry Mun](https://github.com/terrymun), [Martin Badin](https://github.com/martin-badin), and [Chris Frewin](https://github.com/princefishthrower). diff --git a/node_modules/@types/jquery/dist/jquery.slim.d.ts b/node_modules/@types/jquery/dist/jquery.slim.d.ts new file mode 100644 index 0000000..bdd21a7 --- /dev/null +++ b/node_modules/@types/jquery/dist/jquery.slim.d.ts @@ -0,0 +1,3 @@ +/// + +export = jQuery; diff --git a/node_modules/@types/jquery/index.d.ts b/node_modules/@types/jquery/index.d.ts new file mode 100644 index 0000000..2668685 --- /dev/null +++ b/node_modules/@types/jquery/index.d.ts @@ -0,0 +1,7 @@ +/// +/// +/// +/// +/// + +export = jQuery; diff --git a/node_modules/@types/jquery/legacy.d.ts b/node_modules/@types/jquery/legacy.d.ts new file mode 100644 index 0000000..2a3cf09 --- /dev/null +++ b/node_modules/@types/jquery/legacy.d.ts @@ -0,0 +1,204 @@ +// tslint:disable:no-irregular-whitespace + +// tslint:disable-next-line:no-empty-interface +interface JQueryCallback extends JQuery.Callbacks {} +interface JQueryDeferred extends JQuery.Deferred {} +// tslint:disable-next-line:no-empty-interface +interface JQueryEventConstructor extends JQuery.EventStatic {} +interface JQueryDeferred extends JQuery.Deferred {} +// tslint:disable-next-line:no-empty-interface +interface JQueryAjaxSettings extends JQuery.AjaxSettings {} +interface JQueryAnimationOptions extends JQuery.EffectsOptions {} +// tslint:disable-next-line:no-empty-interface +interface JQueryCoordinates extends JQuery.Coordinates {} +interface JQueryGenericPromise extends JQuery.Thenable {} +// tslint:disable-next-line:no-empty-interface +interface JQueryXHR extends JQuery.jqXHR {} +interface JQueryPromise extends JQuery.Promise {} +// tslint:disable-next-line:no-empty-interface +interface JQuerySerializeArrayElement extends JQuery.NameValuePair {} + +/** + * @deprecated ​ Deprecated since 1.9. See \`{@link https://api.jquery.com/jQuery.support/ }\`. + */ +// tslint:disable-next-line:no-empty-interface +interface JQuerySupport extends JQuery.PlainObject {} + +// Legacy types that are not represented in the current type definitions are marked deprecated. + +/** + * @deprecated ​ Deprecated. Use \`{@link JQuery.Deferred.Callback }\` or \`{@link JQuery.Deferred.CallbackBase }\`. + */ +interface JQueryPromiseCallback { + (value?: T, ...args: any[]): void; +} +/** + * @deprecated ​ Deprecated. Use \`{@link JQueryStatic.param JQueryStatic['param']}\`. + */ +interface JQueryParam { + /** + * Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request. + * @param obj An array or object to serialize. + * @param traditional A Boolean indicating whether to perform a traditional "shallow" serialization. + */ + (obj: any, traditional?: boolean): string; +} +/** + * @deprecated ​ Deprecated. Use \`{@link JQuery.Event }\`. + */ +interface BaseJQueryEventObject extends Event { + /** + * The current DOM element within the event bubbling phase. + * @see \`{@link https://api.jquery.com/event.currentTarget/ }\` + */ + currentTarget: Element; + /** + * An optional object of data passed to an event method when the current executing handler is bound. + * @see \`{@link https://api.jquery.com/event.data/ }\` + */ + data: any; + /** + * The element where the currently-called jQuery event handler was attached. + * @see \`{@link https://api.jquery.com/event.delegateTarget/ }\` + */ + delegateTarget: Element; + /** + * Returns whether event.preventDefault() was ever called on this event object. + * @see \`{@link https://api.jquery.com/event.isDefaultPrevented/ }\` + */ + isDefaultPrevented(): boolean; + /** + * Returns whether event.stopImmediatePropagation() was ever called on this event object. + * @see \`{@link https://api.jquery.com/event.isImmediatePropagationStopped/ }\` + */ + isImmediatePropagationStopped(): boolean; + /** + * Returns whether event.stopPropagation() was ever called on this event object. + * @see \`{@link https://api.jquery.com/event.isPropagationStopped/ }\` + */ + isPropagationStopped(): boolean; + /** + * The namespace specified when the event was triggered. + * @see \`{@link https://api.jquery.com/event.namespace/ }\` + */ + namespace: string; + /** + * The browser's original Event object. + * @see \`{@link https://api.jquery.com/category/events/event-object/ }\` + */ + originalEvent: Event; + /** + * If this method is called, the default action of the event will not be triggered. + * @see \`{@link https://api.jquery.com/event.preventDefault/ }\` + */ + preventDefault(): any; + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + */ + relatedTarget: Element; + /** + * The last value returned by an event handler that was triggered by this event, unless the value was undefined. + * @see \`{@link https://api.jquery.com/event.result/ }\` + */ + result: any; + /** + * Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree. + * @see \`{@link https://api.jquery.com/event.stopImmediatePropagation/ }\` + */ + stopImmediatePropagation(): void; + /** + * Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event. + * @see \`{@link https://api.jquery.com/event.stopPropagation/ }\` + */ + stopPropagation(): void; + /** + * The DOM element that initiated the event. + * @see \`{@link https://api.jquery.com/event.target/ }\` + */ + target: Element; + /** + * The mouse position relative to the left edge of the document. + * @see \`{@link https://api.jquery.com/event.pageX/ }\` + */ + pageX: number; + /** + * The mouse position relative to the top edge of the document. + * @see \`{@link https://api.jquery.com/event.pageY/ }\` + */ + pageY: number; + /** + * For key or mouse events, this property indicates the specific key or button that was pressed. + * @see \`{@link https://api.jquery.com/event.which/ }\` + */ + which: number; + /** + * Indicates whether the META key was pressed when the event fired. + * @see \`{@link https://api.jquery.com/event.metaKey/ }\` + */ + metaKey: boolean; +} +/** + * @deprecated ​ Deprecated. Use \`{@link JQuery.Event }\`. + */ +interface JQueryInputEventObject extends BaseJQueryEventObject { + altKey: boolean; + ctrlKey: boolean; + metaKey: boolean; + shiftKey: boolean; +} +/** + * @deprecated ​ Deprecated. Use \`{@link JQuery.Event }\`. + */ +interface JQueryMouseEventObject extends JQueryInputEventObject { + button: number; + clientX: number; + clientY: number; + offsetX: number; + offsetY: number; + pageX: number; + pageY: number; + screenX: number; + screenY: number; +} +/** + * @deprecated ​ Deprecated. Use \`{@link JQuery.Event }\`. + */ +interface JQueryKeyEventObject extends JQueryInputEventObject { + /** @deprecated */ + char: string; + /** @deprecated */ + charCode: number; + key: string; + /** @deprecated */ + keyCode: number; +} +/** + * @deprecated ​ Deprecated. Use \`{@link JQuery.Event }\`. + */ +interface JQueryEventObject + extends BaseJQueryEventObject, JQueryInputEventObject, JQueryMouseEventObject, JQueryKeyEventObject +{} +/** + * @deprecated ​ Deprecated. + */ +interface JQueryPromiseOperator { + ( + callback1: JQuery.TypeOrArray>, + ...callbacksN: Array>> + ): JQueryPromise; +} +/** + * @deprecated ​ Deprecated. Internal. See \`{@link https://github.com/jquery/api.jquery.com/issues/912 }\`. + */ +interface JQueryEasingFunction { + (percent: number): number; +} +/** + * @deprecated ​ Deprecated. Internal. See \`{@link https://github.com/jquery/api.jquery.com/issues/912 }\`. + */ +interface JQueryEasingFunctions { + [name: string]: JQueryEasingFunction; + linear: JQueryEasingFunction; + swing: JQueryEasingFunction; +} diff --git a/node_modules/@types/jquery/misc.d.ts b/node_modules/@types/jquery/misc.d.ts new file mode 100644 index 0000000..309a751 --- /dev/null +++ b/node_modules/@types/jquery/misc.d.ts @@ -0,0 +1,7357 @@ +// tslint:disable:jsdoc-format +// tslint:disable:no-irregular-whitespace + +declare namespace JQuery { + type TypeOrArray = T | T[]; + type Node = Element | Text | Comment | Document | DocumentFragment; + + /** + * A string is designated htmlString in jQuery documentation when it is used to represent one or more DOM elements, typically to be created and inserted in the document. When passed as an argument of the jQuery() function, the string is identified as HTML if it starts with ) and is parsed as such until the final > character. Prior to jQuery 1.9, a string was considered to be HTML if it contained anywhere within the string. + */ + type htmlString = string; + /** + * A selector is used in jQuery to select DOM elements from a DOM document. That document is, in most cases, the DOM document present in all browsers, but can also be an XML document received via Ajax. + */ + type Selector = string; + + /** + * The PlainObject type is a JavaScript object containing zero or more key-value pairs. The plain object is, in other words, an Object object. It is designated "plain" in jQuery documentation to distinguish it from other kinds of JavaScript objects: for example, null, user-defined arrays, and host objects such as document, all of which have a typeof value of "object." + * + * **Note**: The type declaration of PlainObject is imprecise. It includes host objects and user-defined arrays which do not match jQuery's definition. + */ + interface PlainObject { + [key: string]: T; + } + + interface Selectors extends Sizzle.Selectors { + /** + * @deprecated ​ Deprecated since 3.0. Use \`{@link Selectors#pseudos }\`. + * + * **Cause**: The standard way to add new custom selectors through jQuery is `jQuery.expr.pseudos`. These two other aliases are deprecated, although they still work as of jQuery 3.0. + * + * **Solution**: Rename any of the older usage to `jQuery.expr.pseudos`. The functionality is identical. + */ + ":": Sizzle.Selectors.PseudoFunctions; + /** + * @deprecated ​ Deprecated since 3.0. Use \`{@link Selectors#pseudos }\`. + * + * **Cause**: The standard way to add new custom selectors through jQuery is `jQuery.expr.pseudos`. These two other aliases are deprecated, although they still work as of jQuery 3.0. + * + * **Solution**: Rename any of the older usage to `jQuery.expr.pseudos`. The functionality is identical. + */ + filter: Sizzle.Selectors.FilterFunctions; + } + + // region Ajax + // #region Ajax + + interface AjaxSettings extends Ajax.AjaxSettingsBase { + /** + * A string containing the URL to which the request is sent. + */ + url?: string | undefined; + } + + interface UrlAjaxSettings extends Ajax.AjaxSettingsBase { + /** + * A string containing the URL to which the request is sent. + */ + url: string; + } + + namespace Ajax { + type SuccessTextStatus = "success" | "notmodified" | "nocontent"; + type ErrorTextStatus = "timeout" | "error" | "abort" | "parsererror"; + type TextStatus = SuccessTextStatus | ErrorTextStatus; + + type SuccessCallback = ( + this: TContext, + data: any, + textStatus: SuccessTextStatus, + jqXHR: jqXHR, + ) => void; + + type ErrorCallback = ( + this: TContext, + jqXHR: jqXHR, + textStatus: ErrorTextStatus, + errorThrown: string, + ) => void; + + type CompleteCallback = (this: TContext, jqXHR: jqXHR, textStatus: TextStatus) => void; + + /** + * @see \`{@link https://api.jquery.com/jquery.ajax/#jQuery-ajax-settings }\` + */ + interface AjaxSettingsBase { + /** + * A set of key/value pairs that map a given dataType to its MIME type, which gets sent in the Accept request header. This header tells the server what kind of response it will accept in return. + */ + accepts?: PlainObject | undefined; + /** + * By default, all requests are sent asynchronously (i.e. this is set to true by default). If you need synchronous requests, set this option to false. Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active. As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done(). + */ + async?: boolean | undefined; + /** + * A pre-request callback function that can be used to modify the jqXHR (in jQuery 1.4.x, XMLHTTPRequest) object before it is sent. Use this to set custom headers, etc. The jqXHR and settings objects are passed as arguments. This is an Ajax Event. Returning false in the beforeSend function will cancel the request. As of jQuery 1.5, the beforeSend option will be called regardless of the type of request. + */ + beforeSend?(this: TContext, jqXHR: jqXHR, settings: this): false | void; + /** + * If set to false, it will force requested pages not to be cached by the browser. Note: Setting cache to false will only work correctly with HEAD and GET requests. It works by appending "_={timestamp}" to the GET parameters. The parameter is not needed for other types of requests, except in IE8 when a POST is made to a URL that has already been requested by a GET. + */ + cache?: boolean | undefined; + /** + * A function to be called when the request finishes (after success and error callbacks are executed). The function gets passed two arguments: The jqXHR (in jQuery 1.4.x, XMLHTTPRequest) object and a string categorizing the status of the request ("success", "notmodified", "nocontent", "error", "timeout", "abort", or "parsererror"). As of jQuery 1.5, the complete setting can accept an array of functions. Each function will be called in turn. This is an Ajax Event. + */ + complete?: TypeOrArray> | undefined; + /** + * An object of string/regular-expression pairs that determine how jQuery will parse the response, given its content type. + */ + contents?: PlainObject | undefined; + /** + * When sending data to the server, use this content type. Default is "application/x-www-form-urlencoded; charset=UTF-8", which is fine for most cases. If you explicitly pass in a content-type to $.ajax(), then it is always sent to the server (even if no data is sent). As of jQuery 1.6 you can pass false to tell jQuery to not set any content type header. Note: The W3C XMLHttpRequest specification dictates that the charset is always UTF-8; specifying another charset will not force the browser to change the encoding. Note: For cross-domain requests, setting the content type to anything other than application/x-www-form-urlencoded, multipart/form-data, or text/plain will trigger the browser to send a preflight OPTIONS request to the server. + */ + contentType?: string | false | undefined; + /** + * This object will be the context of all Ajax-related callbacks. By default, the context is an object that represents the Ajax settings used in the call ($.ajaxSettings merged with the settings passed to $.ajax). + */ + context?: TContext | undefined; + /** + * An object containing dataType-to-dataType converters. Each converter's value is a function that returns the transformed value of the response. + */ + converters?: PlainObject<((value: any) => any) | true> | undefined; + /** + * If you wish to force a crossDomain request (such as JSONP) on the same domain, set the value of crossDomain to true. This allows, for example, server-side redirection to another domain. + */ + crossDomain?: boolean | undefined; + /** + * Data to be sent to the server. It is converted to a query string, if not already a string. It's appended to the url for GET-requests. See processData option to prevent this automatic processing. Object must be Key/Value pairs. If value is an Array, jQuery serializes multiple values with same key based on the value of the traditional setting (described below). + */ + data?: PlainObject | string | undefined; + /** + * A function to be used to handle the raw response data of XMLHttpRequest. This is a pre-filtering function to sanitize the response. You should return the sanitized data. The function accepts two arguments: The raw data returned from the server and the 'dataType' parameter. + */ + dataFilter?(data: string, type: string): any; + /** + * The type of data that you're expecting back from the server. If none is specified, jQuery will try to infer it based on the MIME type of the response (an XML MIME type will yield XML, in 1.4 JSON will yield a JavaScript object, in 1.4 script will execute the script, and anything else will be returned as a string). The available types (and the result passed as the first argument to your success callback) are: + * + * "xml": Returns a XML document that can be processed via jQuery. + * + * "html": Returns HTML as plain text; included script tags are evaluated when inserted in the DOM. + * + * "script": Evaluates the response as JavaScript and returns it as plain text. Disables caching by appending a query string parameter, _=[TIMESTAMP], to the URL unless the cache option is set to true. Note: This will turn POSTs into GETs for remote-domain requests. + * + * "json": Evaluates the response as JSON and returns a JavaScript object. Cross-domain "json" requests are converted to "jsonp" unless the request includes jsonp: false in its request options. The JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. As of jQuery 1.9, an empty response is also rejected; the server should return a response of null or {} instead. (See json.org for more information on proper JSON formatting.) + * + * "jsonp": Loads in a JSON block using JSONP. Adds an extra "?callback=?" to the end of your URL to specify the callback. Disables caching by appending a query string parameter, "_=[TIMESTAMP]", to the URL unless the cache option is set to true. + * + * "text": A plain text string. + * + * multiple, space-separated values: As of jQuery 1.5, jQuery can convert a dataType from what it received in the Content-Type header to what you require. For example, if you want a text response to be treated as XML, use "text xml" for the dataType. You can also make a JSONP request, have it received as text, and interpreted by jQuery as XML: "jsonp text xml". Similarly, a shorthand string such as "jsonp xml" will first attempt to convert from jsonp to xml, and, failing that, convert from jsonp to text, and then from text to xml. + */ + dataType?: "xml" | "html" | "script" | "json" | "jsonp" | "text" | string | undefined; + /** + * The MIME type of content that is used to submit the form to the server. Possible values are: + * + * "application/x-www-form-urlencoded": The initial default type. + * + * "multipart/form-data": The type that allows file element(s) to upload file data. + * + * "text/plain": A type introduced in HTML5. + */ + enctype?: "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain" | undefined; + /** + * A function to be called if the request fails. The function receives three arguments: The jqXHR (in jQuery 1.4.x, XMLHttpRequest) object, a string describing the type of error that occurred and an optional exception object, if one occurred. Possible values for the second argument (besides null) are "timeout", "error", "abort", and "parsererror". When an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, such as "Not Found" or "Internal Server Error." As of jQuery 1.5, the error setting can accept an array of functions. Each function will be called in turn. Note: This handler is not called for cross-domain script and cross-domain JSONP requests. This is an Ajax Event. + */ + error?: TypeOrArray> | undefined; + /** + * Whether to trigger global Ajax event handlers for this request. The default is true. Set to false to prevent the global handlers like ajaxStart or ajaxStop from being triggered. This can be used to control various Ajax Events. + */ + global?: boolean | undefined; + /** + * An object of additional header key/value pairs to send along with requests using the XMLHttpRequest transport. The header X-Requested-With: XMLHttpRequest is always added, but its default XMLHttpRequest value can be changed here. Values in the headers setting can also be overwritten from within the beforeSend function. + */ + headers?: PlainObject | undefined; + /** + * Allow the request to be successful only if the response has changed since the last request. This is done by checking the Last-Modified header. Default value is false, ignoring the header. In jQuery 1.4 this technique also checks the 'etag' specified by the server to catch unmodified data. + */ + ifModified?: boolean | undefined; + /** + * Allow the current environment to be recognized as "local," (e.g. the filesystem), even if jQuery does not recognize it as such by default. The following protocols are currently recognized as local: file, *-extension, and widget. If the isLocal setting needs modification, it is recommended to do so once in the $.ajaxSetup() method. + */ + isLocal?: boolean | undefined; + /** + * Override the callback function name in a JSONP request. This value will be used instead of 'callback' in the 'callback=?' part of the query string in the url. So {jsonp:'onJSONPLoad'} would result in 'onJSONPLoad=?' passed to the server. As of jQuery 1.5, setting the jsonp option to false prevents jQuery from adding the "?callback" string to the URL or attempting to use "=?" for transformation. In this case, you should also explicitly set the jsonpCallback setting. For example, { jsonp: false, jsonpCallback: "callbackName" }. If you don't trust the target of your Ajax requests, consider setting the jsonp property to false for security reasons. + */ + jsonp?: string | false | undefined; + /** + * Specify the callback function name for a JSONP request. This value will be used instead of the random name automatically generated by jQuery. It is preferable to let jQuery generate a unique name as it'll make it easier to manage the requests and provide callbacks and error handling. You may want to specify the callback when you want to enable better browser caching of GET requests. As of jQuery 1.5, you can also use a function for this setting, in which case the value of jsonpCallback is set to the return value of that function. + */ + jsonpCallback?: string | ((this: TContext) => string) | undefined; + /** + * The HTTP method to use for the request (e.g. "POST", "GET", "PUT"). + */ + method?: string | undefined; + /** + * A mime type to override the XHR mime type. + */ + mimeType?: string | undefined; + /** + * A password to be used with XMLHttpRequest in response to an HTTP access authentication request. + */ + password?: string | undefined; + /** + * By default, data passed in to the data option as an object (technically, anything other than a string) will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded". If you want to send a DOMDocument, or other non-processed data, set this option to false. + */ + processData?: boolean | undefined; + /** + * Only applies when the "script" transport is used (e.g., cross-domain requests with "jsonp" or "script" dataType and "GET" type). Sets the charset attribute on the script tag used in the request. Used when the character set on the local page is not the same as the one on the remote script. + */ + scriptCharset?: string | undefined; + /** + * An object of numeric HTTP codes and functions to be called when the response has the corresponding code. + * + * If the request is successful, the status code functions take the same parameters as the success callback; if it results in an error (including 3xx redirect), they take the same parameters as the error callback. + */ + statusCode?: StatusCodeCallbacks | undefined; + /** + * A function to be called if the request succeeds. The function gets passed three arguments: The data returned from the server, formatted according to the dataType parameter or the dataFilter callback function, if specified; a string describing the status; and the jqXHR (in jQuery 1.4.x, XMLHttpRequest) object. As of jQuery 1.5, the success setting can accept an array of functions. Each function will be called in turn. This is an Ajax Event. + */ + success?: TypeOrArray> | undefined; + /** + * Set a timeout (in milliseconds) for the request. A value of 0 means there will be no timeout. This will override any global timeout set with $.ajaxSetup(). The timeout period starts at the point the $.ajax call is made; if several other requests are in progress and the browser has no connections available, it is possible for a request to time out before it can be sent. In jQuery 1.4.x and below, the XMLHttpRequest object will be in an invalid state if the request times out; accessing any object members may throw an exception. In Firefox 3.0+ only, script and JSONP requests cannot be cancelled by a timeout; the script will run even if it arrives after the timeout period. + */ + timeout?: number | undefined; + /** + * Set this to true if you wish to use the traditional style of param serialization. + */ + traditional?: boolean | undefined; + /** + * An alias for method. You should use type if you're using versions of jQuery prior to 1.9.0. + */ + type?: string | undefined; + /** + * A username to be used with XMLHttpRequest in response to an HTTP access authentication request. + */ + username?: string | undefined; + // ActiveXObject requires "lib": ["scripthost"] which consumers would also require + /** + * Callback for creating the XMLHttpRequest object. Defaults to the ActiveXObject when available (IE), the XMLHttpRequest otherwise. Override to provide your own implementation for XMLHttpRequest or enhancements to the factory. + */ + xhr?(): XMLHttpRequest; + /** + * An object of fieldName-fieldValue pairs to set on the native XHR object. + * + * In jQuery 1.5, the withCredentials property was not propagated to the native XHR and thus CORS requests requiring it would ignore this flag. For this reason, we recommend using jQuery 1.5.1+ should you require the use of it. + */ + xhrFields?: XHRFields | undefined; + } + + // region StatusCodeCallbacks + // #region StatusCodeCallbacks + + type StatusCodeCallbacks = { + // region Success Status Codes + // #region Success Status Codes + + // jQuery treats 2xx and 304 status codes as a success + + 200?: SuccessCallback | undefined; + 201?: SuccessCallback | undefined; + 202?: SuccessCallback | undefined; + 203?: SuccessCallback | undefined; + 204?: SuccessCallback | undefined; + 205?: SuccessCallback | undefined; + 206?: SuccessCallback | undefined; + 207?: SuccessCallback | undefined; + 208?: SuccessCallback | undefined; + 209?: SuccessCallback | undefined; + 210?: SuccessCallback | undefined; + 211?: SuccessCallback | undefined; + 212?: SuccessCallback | undefined; + 213?: SuccessCallback | undefined; + 214?: SuccessCallback | undefined; + 215?: SuccessCallback | undefined; + 216?: SuccessCallback | undefined; + 217?: SuccessCallback | undefined; + 218?: SuccessCallback | undefined; + 219?: SuccessCallback | undefined; + 220?: SuccessCallback | undefined; + 221?: SuccessCallback | undefined; + 222?: SuccessCallback | undefined; + 223?: SuccessCallback | undefined; + 224?: SuccessCallback | undefined; + 225?: SuccessCallback | undefined; + 226?: SuccessCallback | undefined; + 227?: SuccessCallback | undefined; + 228?: SuccessCallback | undefined; + 229?: SuccessCallback | undefined; + 230?: SuccessCallback | undefined; + 231?: SuccessCallback | undefined; + 232?: SuccessCallback | undefined; + 233?: SuccessCallback | undefined; + 234?: SuccessCallback | undefined; + 235?: SuccessCallback | undefined; + 236?: SuccessCallback | undefined; + 237?: SuccessCallback | undefined; + 238?: SuccessCallback | undefined; + 239?: SuccessCallback | undefined; + 240?: SuccessCallback | undefined; + 241?: SuccessCallback | undefined; + 242?: SuccessCallback | undefined; + 243?: SuccessCallback | undefined; + 244?: SuccessCallback | undefined; + 245?: SuccessCallback | undefined; + 246?: SuccessCallback | undefined; + 247?: SuccessCallback | undefined; + 248?: SuccessCallback | undefined; + 249?: SuccessCallback | undefined; + 250?: SuccessCallback | undefined; + 251?: SuccessCallback | undefined; + 252?: SuccessCallback | undefined; + 253?: SuccessCallback | undefined; + 254?: SuccessCallback | undefined; + 255?: SuccessCallback | undefined; + 256?: SuccessCallback | undefined; + 257?: SuccessCallback | undefined; + 258?: SuccessCallback | undefined; + 259?: SuccessCallback | undefined; + 260?: SuccessCallback | undefined; + 261?: SuccessCallback | undefined; + 262?: SuccessCallback | undefined; + 263?: SuccessCallback | undefined; + 264?: SuccessCallback | undefined; + 265?: SuccessCallback | undefined; + 266?: SuccessCallback | undefined; + 267?: SuccessCallback | undefined; + 268?: SuccessCallback | undefined; + 269?: SuccessCallback | undefined; + 270?: SuccessCallback | undefined; + 271?: SuccessCallback | undefined; + 272?: SuccessCallback | undefined; + 273?: SuccessCallback | undefined; + 274?: SuccessCallback | undefined; + 275?: SuccessCallback | undefined; + 276?: SuccessCallback | undefined; + 277?: SuccessCallback | undefined; + 278?: SuccessCallback | undefined; + 279?: SuccessCallback | undefined; + 280?: SuccessCallback | undefined; + 281?: SuccessCallback | undefined; + 282?: SuccessCallback | undefined; + 283?: SuccessCallback | undefined; + 284?: SuccessCallback | undefined; + 285?: SuccessCallback | undefined; + 286?: SuccessCallback | undefined; + 287?: SuccessCallback | undefined; + 288?: SuccessCallback | undefined; + 289?: SuccessCallback | undefined; + 290?: SuccessCallback | undefined; + 291?: SuccessCallback | undefined; + 292?: SuccessCallback | undefined; + 293?: SuccessCallback | undefined; + 294?: SuccessCallback | undefined; + 295?: SuccessCallback | undefined; + 296?: SuccessCallback | undefined; + 297?: SuccessCallback | undefined; + 298?: SuccessCallback | undefined; + 299?: SuccessCallback | undefined; + 304?: SuccessCallback | undefined; + + // #endregion + + // region Error Status Codes + // #region Error Status Codes + + 300?: ErrorCallback | undefined; + 301?: ErrorCallback | undefined; + 302?: ErrorCallback | undefined; + 303?: ErrorCallback | undefined; + 305?: ErrorCallback | undefined; + 306?: ErrorCallback | undefined; + 307?: ErrorCallback | undefined; + 308?: ErrorCallback | undefined; + 309?: ErrorCallback | undefined; + 310?: ErrorCallback | undefined; + 311?: ErrorCallback | undefined; + 312?: ErrorCallback | undefined; + 313?: ErrorCallback | undefined; + 314?: ErrorCallback | undefined; + 315?: ErrorCallback | undefined; + 316?: ErrorCallback | undefined; + 317?: ErrorCallback | undefined; + 318?: ErrorCallback | undefined; + 319?: ErrorCallback | undefined; + 320?: ErrorCallback | undefined; + 321?: ErrorCallback | undefined; + 322?: ErrorCallback | undefined; + 323?: ErrorCallback | undefined; + 324?: ErrorCallback | undefined; + 325?: ErrorCallback | undefined; + 326?: ErrorCallback | undefined; + 327?: ErrorCallback | undefined; + 328?: ErrorCallback | undefined; + 329?: ErrorCallback | undefined; + 330?: ErrorCallback | undefined; + 331?: ErrorCallback | undefined; + 332?: ErrorCallback | undefined; + 333?: ErrorCallback | undefined; + 334?: ErrorCallback | undefined; + 335?: ErrorCallback | undefined; + 336?: ErrorCallback | undefined; + 337?: ErrorCallback | undefined; + 338?: ErrorCallback | undefined; + 339?: ErrorCallback | undefined; + 340?: ErrorCallback | undefined; + 341?: ErrorCallback | undefined; + 342?: ErrorCallback | undefined; + 343?: ErrorCallback | undefined; + 344?: ErrorCallback | undefined; + 345?: ErrorCallback | undefined; + 346?: ErrorCallback | undefined; + 347?: ErrorCallback | undefined; + 348?: ErrorCallback | undefined; + 349?: ErrorCallback | undefined; + 350?: ErrorCallback | undefined; + 351?: ErrorCallback | undefined; + 352?: ErrorCallback | undefined; + 353?: ErrorCallback | undefined; + 354?: ErrorCallback | undefined; + 355?: ErrorCallback | undefined; + 356?: ErrorCallback | undefined; + 357?: ErrorCallback | undefined; + 358?: ErrorCallback | undefined; + 359?: ErrorCallback | undefined; + 360?: ErrorCallback | undefined; + 361?: ErrorCallback | undefined; + 362?: ErrorCallback | undefined; + 363?: ErrorCallback | undefined; + 364?: ErrorCallback | undefined; + 365?: ErrorCallback | undefined; + 366?: ErrorCallback | undefined; + 367?: ErrorCallback | undefined; + 368?: ErrorCallback | undefined; + 369?: ErrorCallback | undefined; + 370?: ErrorCallback | undefined; + 371?: ErrorCallback | undefined; + 372?: ErrorCallback | undefined; + 373?: ErrorCallback | undefined; + 374?: ErrorCallback | undefined; + 375?: ErrorCallback | undefined; + 376?: ErrorCallback | undefined; + 377?: ErrorCallback | undefined; + 378?: ErrorCallback | undefined; + 379?: ErrorCallback | undefined; + 380?: ErrorCallback | undefined; + 381?: ErrorCallback | undefined; + 382?: ErrorCallback | undefined; + 383?: ErrorCallback | undefined; + 384?: ErrorCallback | undefined; + 385?: ErrorCallback | undefined; + 386?: ErrorCallback | undefined; + 387?: ErrorCallback | undefined; + 388?: ErrorCallback | undefined; + 389?: ErrorCallback | undefined; + 390?: ErrorCallback | undefined; + 391?: ErrorCallback | undefined; + 392?: ErrorCallback | undefined; + 393?: ErrorCallback | undefined; + 394?: ErrorCallback | undefined; + 395?: ErrorCallback | undefined; + 396?: ErrorCallback | undefined; + 397?: ErrorCallback | undefined; + 398?: ErrorCallback | undefined; + 399?: ErrorCallback | undefined; + 400?: ErrorCallback | undefined; + 401?: ErrorCallback | undefined; + 402?: ErrorCallback | undefined; + 403?: ErrorCallback | undefined; + 404?: ErrorCallback | undefined; + 405?: ErrorCallback | undefined; + 406?: ErrorCallback | undefined; + 407?: ErrorCallback | undefined; + 408?: ErrorCallback | undefined; + 409?: ErrorCallback | undefined; + 410?: ErrorCallback | undefined; + 411?: ErrorCallback | undefined; + 412?: ErrorCallback | undefined; + 413?: ErrorCallback | undefined; + 414?: ErrorCallback | undefined; + 415?: ErrorCallback | undefined; + 416?: ErrorCallback | undefined; + 417?: ErrorCallback | undefined; + 418?: ErrorCallback | undefined; + 419?: ErrorCallback | undefined; + 420?: ErrorCallback | undefined; + 421?: ErrorCallback | undefined; + 422?: ErrorCallback | undefined; + 423?: ErrorCallback | undefined; + 424?: ErrorCallback | undefined; + 425?: ErrorCallback | undefined; + 426?: ErrorCallback | undefined; + 427?: ErrorCallback | undefined; + 428?: ErrorCallback | undefined; + 429?: ErrorCallback | undefined; + 430?: ErrorCallback | undefined; + 431?: ErrorCallback | undefined; + 432?: ErrorCallback | undefined; + 433?: ErrorCallback | undefined; + 434?: ErrorCallback | undefined; + 435?: ErrorCallback | undefined; + 436?: ErrorCallback | undefined; + 437?: ErrorCallback | undefined; + 438?: ErrorCallback | undefined; + 439?: ErrorCallback | undefined; + 440?: ErrorCallback | undefined; + 441?: ErrorCallback | undefined; + 442?: ErrorCallback | undefined; + 443?: ErrorCallback | undefined; + 444?: ErrorCallback | undefined; + 445?: ErrorCallback | undefined; + 446?: ErrorCallback | undefined; + 447?: ErrorCallback | undefined; + 448?: ErrorCallback | undefined; + 449?: ErrorCallback | undefined; + 450?: ErrorCallback | undefined; + 451?: ErrorCallback | undefined; + 452?: ErrorCallback | undefined; + 453?: ErrorCallback | undefined; + 454?: ErrorCallback | undefined; + 455?: ErrorCallback | undefined; + 456?: ErrorCallback | undefined; + 457?: ErrorCallback | undefined; + 458?: ErrorCallback | undefined; + 459?: ErrorCallback | undefined; + 460?: ErrorCallback | undefined; + 461?: ErrorCallback | undefined; + 462?: ErrorCallback | undefined; + 463?: ErrorCallback | undefined; + 464?: ErrorCallback | undefined; + 465?: ErrorCallback | undefined; + 466?: ErrorCallback | undefined; + 467?: ErrorCallback | undefined; + 468?: ErrorCallback | undefined; + 469?: ErrorCallback | undefined; + 470?: ErrorCallback | undefined; + 471?: ErrorCallback | undefined; + 472?: ErrorCallback | undefined; + 473?: ErrorCallback | undefined; + 474?: ErrorCallback | undefined; + 475?: ErrorCallback | undefined; + 476?: ErrorCallback | undefined; + 477?: ErrorCallback | undefined; + 478?: ErrorCallback | undefined; + 479?: ErrorCallback | undefined; + 480?: ErrorCallback | undefined; + 481?: ErrorCallback | undefined; + 482?: ErrorCallback | undefined; + 483?: ErrorCallback | undefined; + 484?: ErrorCallback | undefined; + 485?: ErrorCallback | undefined; + 486?: ErrorCallback | undefined; + 487?: ErrorCallback | undefined; + 488?: ErrorCallback | undefined; + 489?: ErrorCallback | undefined; + 490?: ErrorCallback | undefined; + 491?: ErrorCallback | undefined; + 492?: ErrorCallback | undefined; + 493?: ErrorCallback | undefined; + 494?: ErrorCallback | undefined; + 495?: ErrorCallback | undefined; + 496?: ErrorCallback | undefined; + 497?: ErrorCallback | undefined; + 498?: ErrorCallback | undefined; + 499?: ErrorCallback | undefined; + 500?: ErrorCallback | undefined; + 501?: ErrorCallback | undefined; + 502?: ErrorCallback | undefined; + 503?: ErrorCallback | undefined; + 504?: ErrorCallback | undefined; + 505?: ErrorCallback | undefined; + 506?: ErrorCallback | undefined; + 507?: ErrorCallback | undefined; + 508?: ErrorCallback | undefined; + 509?: ErrorCallback | undefined; + 510?: ErrorCallback | undefined; + 511?: ErrorCallback | undefined; + 512?: ErrorCallback | undefined; + 513?: ErrorCallback | undefined; + 514?: ErrorCallback | undefined; + 515?: ErrorCallback | undefined; + 516?: ErrorCallback | undefined; + 517?: ErrorCallback | undefined; + 518?: ErrorCallback | undefined; + 519?: ErrorCallback | undefined; + 520?: ErrorCallback | undefined; + 521?: ErrorCallback | undefined; + 522?: ErrorCallback | undefined; + 523?: ErrorCallback | undefined; + 524?: ErrorCallback | undefined; + 525?: ErrorCallback | undefined; + 526?: ErrorCallback | undefined; + 527?: ErrorCallback | undefined; + 528?: ErrorCallback | undefined; + 529?: ErrorCallback | undefined; + 530?: ErrorCallback | undefined; + 531?: ErrorCallback | undefined; + 532?: ErrorCallback | undefined; + 533?: ErrorCallback | undefined; + 534?: ErrorCallback | undefined; + 535?: ErrorCallback | undefined; + 536?: ErrorCallback | undefined; + 537?: ErrorCallback | undefined; + 538?: ErrorCallback | undefined; + 539?: ErrorCallback | undefined; + 540?: ErrorCallback | undefined; + 541?: ErrorCallback | undefined; + 542?: ErrorCallback | undefined; + 543?: ErrorCallback | undefined; + 544?: ErrorCallback | undefined; + 545?: ErrorCallback | undefined; + 546?: ErrorCallback | undefined; + 547?: ErrorCallback | undefined; + 548?: ErrorCallback | undefined; + 549?: ErrorCallback | undefined; + 550?: ErrorCallback | undefined; + 551?: ErrorCallback | undefined; + 552?: ErrorCallback | undefined; + 553?: ErrorCallback | undefined; + 554?: ErrorCallback | undefined; + 555?: ErrorCallback | undefined; + 556?: ErrorCallback | undefined; + 557?: ErrorCallback | undefined; + 558?: ErrorCallback | undefined; + 559?: ErrorCallback | undefined; + 560?: ErrorCallback | undefined; + 561?: ErrorCallback | undefined; + 562?: ErrorCallback | undefined; + 563?: ErrorCallback | undefined; + 564?: ErrorCallback | undefined; + 565?: ErrorCallback | undefined; + 566?: ErrorCallback | undefined; + 567?: ErrorCallback | undefined; + 568?: ErrorCallback | undefined; + 569?: ErrorCallback | undefined; + 570?: ErrorCallback | undefined; + 571?: ErrorCallback | undefined; + 572?: ErrorCallback | undefined; + 573?: ErrorCallback | undefined; + 574?: ErrorCallback | undefined; + 575?: ErrorCallback | undefined; + 576?: ErrorCallback | undefined; + 577?: ErrorCallback | undefined; + 578?: ErrorCallback | undefined; + 579?: ErrorCallback | undefined; + 580?: ErrorCallback | undefined; + 581?: ErrorCallback | undefined; + 582?: ErrorCallback | undefined; + 583?: ErrorCallback | undefined; + 584?: ErrorCallback | undefined; + 585?: ErrorCallback | undefined; + 586?: ErrorCallback | undefined; + 587?: ErrorCallback | undefined; + 588?: ErrorCallback | undefined; + 589?: ErrorCallback | undefined; + 590?: ErrorCallback | undefined; + 591?: ErrorCallback | undefined; + 592?: ErrorCallback | undefined; + 593?: ErrorCallback | undefined; + 594?: ErrorCallback | undefined; + 595?: ErrorCallback | undefined; + 596?: ErrorCallback | undefined; + 597?: ErrorCallback | undefined; + 598?: ErrorCallback | undefined; + 599?: ErrorCallback | undefined; + // #endregion + } & { + // Status codes not listed require type annotations when defining the callback + [index: number]: SuccessCallback | ErrorCallback; + }; + + // #endregion + + // Writable properties on XMLHttpRequest + interface XHRFields + extends Partial> + { + msCaching?: string | undefined; + } + } + + interface Transport { + send(headers: PlainObject, completeCallback: Transport.SuccessCallback): void; + abort(): void; + } + + namespace Transport { + type SuccessCallback = ( + status: number, + statusText: Ajax.TextStatus, + responses?: PlainObject, + headers?: string, + ) => void; + } + + /** + * @see \`{@link https://api.jquery.com/jquery.ajax/#jqXHR }\` + */ + interface jqXHR extends + Promise3< + TResolve, + jqXHR, + never, + Ajax.SuccessTextStatus, + Ajax.ErrorTextStatus, + never, + jqXHR, + string, + never + >, + Pick< + XMLHttpRequest, + | "abort" + | "getAllResponseHeaders" + | "getResponseHeader" + | "overrideMimeType" + | "readyState" + | "responseText" + | "setRequestHeader" + | "status" + | "statusText" + >, + Partial> + { + responseJSON?: any; + abort(statusText?: string): void; + + /** + * Determine the current state of a Deferred object. + * @see \`{@link https://api.jquery.com/deferred.state/ }\` + * @since 1.7 + */ + state(): "pending" | "resolved" | "rejected"; + statusCode(map: Ajax.StatusCodeCallbacks): void; + } + + namespace jqXHR { + interface DoneCallback> + extends Deferred.Callback3 + {} + + interface FailCallback extends Deferred.Callback3 {} + + interface AlwaysCallback> + extends Deferred.Callback3 + {} + } + + // #endregion + + // region Callbacks + // #region Callbacks + + interface CallbacksStatic { + /** + * A multi-purpose callbacks list object that provides a powerful way to manage callback lists. + * @param flags An optional list of space-separated flags that change how the callback list behaves. + * @see \`{@link https://api.jquery.com/jQuery.Callbacks/ }\` + * @since 1.7 + */ + /* eslint-disable @definitelytyped/no-unnecessary-generics */ + // tslint:disable-next-line:ban-types + (flags?: string): Callbacks; + /* eslint-enable @definitelytyped/no-unnecessary-generics */ + } + + // tslint:disable-next-line:ban-types + interface Callbacks { + /** + * Add a callback or a collection of callbacks to a callback list. + * @param callback A function, or array of functions, that are to be added to the callback list. + * @param callbacks A function, or array of functions, that are to be added to the callback list. + * @see \`{@link https://api.jquery.com/callbacks.add/ }\` + * @since 1.7 + * @example ​ ````Use callbacks.add() to add new callbacks to a callback list: +```javascript +// A sample logging function to be added to a callbacks list +var foo = function( value ) { + console.log( "foo: " + value ); +}; +​ +// Another function to also be added to the list +var bar = function( value ) { + console.log( "bar: " + value ); +}; +​ +var callbacks = $.Callbacks(); +​ +// Add the function "foo" to the list +callbacks.add( foo ); +​ +// Fire the items on the list +callbacks.fire( "hello" ); +// Outputs: "foo: hello" +​ +// Add the function "bar" to the list +callbacks.add( bar ); +​ +// Fire the items on the list again +callbacks.fire( "world" ); +​ +// Outputs: +// "foo: world" +// "bar: world" +``` + */ + add(callback: TypeOrArray, ...callbacks: Array>): this; + /** + * Disable a callback list from doing anything more. + * @see \`{@link https://api.jquery.com/callbacks.disable/ }\` + * @since 1.7 + * @example ​ ````Use callbacks.disable() to disable further calls to a callback list: +```javascript +// A sample logging function to be added to a callbacks list +var foo = function( value ) { + console.log( value ); +}; +​ +var callbacks = $.Callbacks(); +​ +// Add the above function to the list +callbacks.add( foo ); +​ +// Fire the items on the list +callbacks.fire( "foo" ); +// Outputs: foo +​ +// Disable further calls being possible +callbacks.disable(); +​ +// Attempt to fire with "foobar" as an argument +callbacks.fire( "foobar" ); +// foobar isn't output +``` + */ + disable(): this; + /** + * Determine if the callbacks list has been disabled. + * @see \`{@link https://api.jquery.com/callbacks.disabled/ }\` + * @since 1.7 + * @example ​ ````Use callbacks.disabled() to determine if the callbacks list has been disabled: +```javascript +// A sample logging function to be added to a callbacks list +var foo = function( value ) { + console.log( "foo:" + value ); +}; +​ +var callbacks = $.Callbacks(); +​ +// Add the logging function to the callback list +callbacks.add( foo ); +​ +// Fire the items on the list, passing an argument +callbacks.fire( "hello" ); +// Outputs "foo: hello" +​ +// Disable the callbacks list +callbacks.disable(); +​ +// Test the disabled state of the list +console.log ( callbacks.disabled() ); +// Outputs: true +``` + */ + disabled(): boolean; + /** + * Remove all of the callbacks from a list. + * @see \`{@link https://api.jquery.com/callbacks.empty/ }\` + * @since 1.7 + * @example ​ ````Use callbacks.empty() to empty a list of callbacks: +```javascript +// A sample logging function to be added to a callbacks list +var foo = function( value1, value2 ) { + console.log( "foo: " + value1 + "," + value2 ); +}; +​ +// Another function to also be added to the list +var bar = function( value1, value2 ) { + console.log( "bar: " + value1 + "," + value2 ); +}; +​ +var callbacks = $.Callbacks(); +​ +// Add the two functions +callbacks.add( foo ); +callbacks.add( bar ); +​ +// Empty the callbacks list +callbacks.empty(); +​ +// Check to ensure all callbacks have been removed +console.log( callbacks.has( foo ) ); +// false +console.log( callbacks.has( bar ) ); +// false +``` + */ + empty(): this; + /** + * Call all of the callbacks with the given arguments. + * @param args The argument or list of arguments to pass back to the callback list. + * @see \`{@link https://api.jquery.com/callbacks.fire/ }\` + * @since 1.7 + * @example ​ ````Use callbacks.fire() to invoke the callbacks in a list with any arguments that have been passed: +```javascript +// A sample logging function to be added to a callbacks list +var foo = function( value ) { + console.log( "foo:" + value ); +}; +​ +var callbacks = $.Callbacks(); +​ +// Add the function "foo" to the list +callbacks.add( foo ); +​ +// Fire the items on the list +callbacks.fire( "hello" ); // Outputs: "foo: hello" +callbacks.fire( "world" ); // Outputs: "foo: world" +​ +// Add another function to the list +var bar = function( value ){ + console.log( "bar:" + value ); +}; +​ +// Add this function to the list +callbacks.add( bar ); +​ +// Fire the items on the list again +callbacks.fire( "hello again" ); +// Outputs: +// "foo: hello again" +// "bar: hello again" +``` + */ + fire(...args: any[]): this; + /** + * Determine if the callbacks have already been called at least once. + * @see \`{@link https://api.jquery.com/callbacks.fired/ }\` + * @since 1.7 + * @example ​ ````Use callbacks.fired() to determine if the callbacks in a list have been called at least once: +```javascript +// A sample logging function to be added to a callbacks list +var foo = function( value ) { + console.log( "foo:" + value ); +}; +​ +var callbacks = $.Callbacks(); +​ +// Add the function "foo" to the list +callbacks.add( foo ); +​ +// Fire the items on the list +callbacks.fire( "hello" ); // Outputs: "foo: hello" +callbacks.fire( "world" ); // Outputs: "foo: world" +​ +// Test to establish if the callbacks have been called +console.log( callbacks.fired() ); +``` + */ + fired(): boolean; + /** + * Call all callbacks in a list with the given context and arguments. + * @param context A reference to the context in which the callbacks in the list should be fired. + * @param args An argument, or array of arguments, to pass to the callbacks in the list. + * @see \`{@link https://api.jquery.com/callbacks.fireWith/ }\` + * @since 1.7 + * @example ​ ````Use callbacks.fireWith() to fire a list of callbacks with a specific context and an array of arguments: +```javascript +// A sample logging function to be added to a callbacks list +var log = function( value1, value2 ) { + console.log( "Received: " + value1 + "," + value2 ); +}; +​ +var callbacks = $.Callbacks(); +​ +// Add the log method to the callbacks list +callbacks.add( log ); +​ +// Fire the callbacks on the list using the context "window" +// and an arguments array +​ +callbacks.fireWith( window, [ "foo","bar" ] ); +// Outputs: "Received: foo, bar" +``` + */ + fireWith(context: object, args?: ArrayLike): this; + /** + * Determine whether or not the list has any callbacks attached. If a callback is provided as an argument, determine whether it is in a list. + * @param callback The callback to search for. + * @see \`{@link https://api.jquery.com/callbacks.has/ }\` + * @since 1.7 + * @example ​ ````Use callbacks.has() to check if a callback list contains a specific callback: +```javascript +// A sample logging function to be added to a callbacks list +var foo = function( value1, value2 ) { + console.log( "Received: " + value1 + "," + value2 ); +}; +​ +// A second function which will not be added to the list +var bar = function( value1, value2 ) { + console.log( "foobar" ); +}; +​ +var callbacks = $.Callbacks(); +​ +// Add the log method to the callbacks list +callbacks.add( foo ); +​ +// Determine which callbacks are in the list +console.log( callbacks.has( foo ) ); +// true +console.log( callbacks.has( bar ) ); +// false +``` + */ + has(callback?: T): boolean; + /** + * Lock a callback list in its current state. + * @see \`{@link https://api.jquery.com/callbacks.lock/ }\` + * @since 1.7 + * @example ​ ````Use callbacks.lock() to lock a callback list to avoid further changes being made to the list state: +```javascript +// A sample logging function to be added to a callbacks list +var foo = function( value ) { + console.log( "foo:" + value ); +}; +​ +var callbacks = $.Callbacks(); +​ +// Add the logging function to the callback list +callbacks.add( foo ); +​ +// Fire the items on the list, passing an argument +callbacks.fire( "hello" ); +// Outputs "foo: hello" +​ +// Lock the callbacks list +callbacks.lock(); +​ +// Try firing the items again +callbacks.fire( "world" ); +​ +// As the list was locked, no items were called, +// so "world" isn't logged +``` + * @example ​ ````Use callbacks.lock() to lock a callback list with "memory," and then resume using the list: +```html + + + + + callbacks.lock demo + + + +​ +
      +​ + +​ + + +``` + */ + lock(): this; + /** + * Determine if the callbacks list has been locked. + * @see \`{@link https://api.jquery.com/callbacks.locked/ }\` + * @since 1.7 + * @example ​ ````Use callbacks.locked() to determine the lock-state of a callback list: +```javascript +// A sample logging function to be added to a callbacks list +var foo = function( value ) { + console.log( "foo: " + value ); +}; +​ +var callbacks = $.Callbacks(); +​ +// Add the logging function to the callback list +callbacks.add( foo ); +​ +// Fire the items on the list, passing an argument +callbacks.fire( "hello" ); +// Outputs "foo: hello" +​ +// Lock the callbacks list +callbacks.lock(); +​ +// Test the lock-state of the list +console.log ( callbacks.locked() ); +// true +``` + */ + locked(): boolean; + /** + * Remove a callback or a collection of callbacks from a callback list. + * @param callbacks A function, or array of functions, that are to be removed from the callback list. + * @see \`{@link https://api.jquery.com/callbacks.remove/ }\` + * @since 1.7 + * @example ​ ````Use callbacks.remove() to remove callbacks from a callback list: +```javascript +// A sample logging function to be added to a callbacks list +var foo = function( value ) { + console.log( "foo: " + value ); +}; +​ +var callbacks = $.Callbacks(); +​ +// Add the function "foo" to the list +callbacks.add( foo ); +​ +// Fire the items on the list +callbacks.fire( "hello" ); +// Outputs: "foo: hello" +​ +// Remove "foo" from the callback list +callbacks.remove( foo ); +​ +// Fire the items on the list again +callbacks.fire( "world" ); +​ +// Nothing output as "foo" is no longer in the list +``` + */ + remove(...callbacks: T[]): this; + } + + // #endregion + + // region CSS hooks + // #region CSS hooks + + // Workaround for TypeScript 2.3 which does not have support for weak types handling. + type CSSHook = + & Partial<_CSSHook> + & ( + | Pick<_CSSHook, "get"> + | Pick<_CSSHook, "set"> + ); + + interface _CSSHook { + get(elem: TElement, computed: any, extra: any): any; + set(elem: TElement, value: any): void; + } + + interface CSSHooks { + // Set to HTMLElement to minimize breaks but should probably be Element. + [propertyName: string]: CSSHook; + } + + // #endregion + + // region Deferred + // #region Deferred + + /** + * Any object that has a then method. + */ + interface Thenable extends PromiseLike {} + + // Type parameter guide + // -------------------- + // Each type parameter represents a parameter in one of the three possible callbacks. + // + // The first letter indicates which position the parameter is in. + // + // T = A = 1st position + // U = B = 2nd position + // V = C = 3rd position + // S = R = rest position + // + // The second letter indicates which whether it is a [R]esolve, Re[J]ect, or [N]otify value. + // + // The third letter indicates whether the value is returned in the [D]one filter, [F]ail filter, or [P]rogress filter. + + /** + * This object provides a subset of the methods of the Deferred object (then, done, fail, always, pipe, progress, state and promise) to prevent users from changing the state of the Deferred. + * @see \`{@link https://api.jquery.com/Types/#Promise }\` + */ + interface PromiseBase { + /** + * Add handlers to be called when the Deferred object is either resolved or rejected. + * @param alwaysCallback A function, or array of functions, that is called when the Deferred is resolved or rejected. + * @param alwaysCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is resolved or rejected. + * @see \`{@link https://api.jquery.com/deferred.always/ }\` + * @since 1.6 + * @example ​ ````Since the jQuery.get() method returns a jqXHR object, which is derived from a Deferred object, we can attach a callback for both success and error using the deferred.always() method. +```javascript +$.get( "test.php" ).always(function() { + alert( "$.get completed with success or error callback arguments" ); +}); +``` + */ + always( + alwaysCallback: TypeOrArray>, + ...alwaysCallbacks: Array>> + ): this; + /** + * Add handlers to be called when the Deferred object is resolved. + * @param doneCallback A function, or array of functions, that are called when the Deferred is resolved. + * @param doneCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is resolved. + * @see \`{@link https://api.jquery.com/deferred.done/ }\` + * @since 1.5 + * @example ​ ````Since the jQuery.get method returns a jqXHR object, which is derived from a Deferred object, we can attach a success callback using the .done() method. +```javascript +$.get( "test.php" ).done(function() { + alert( "$.get succeeded" ); +}); +``` + * @example ​ ````Resolve a Deferred object when the user clicks a button, triggering a number of callback functions: +```html + + + + + deferred.done demo + + + +​ + +

      Ready...

      +​ + +​ + + +``` + */ + done( + doneCallback: TypeOrArray>, + ...doneCallbacks: Array>> + ): this; + /** + * Add handlers to be called when the Deferred object is rejected. + * @param failCallback A function, or array of functions, that are called when the Deferred is rejected. + * @param failCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is rejected. + * @see \`{@link https://api.jquery.com/deferred.fail/ }\` + * @since 1.5 + * @example ​ ````Since the jQuery.get method returns a jqXHR object, which is derived from a Deferred, you can attach a success and failure callback using the deferred.done() and deferred.fail() methods. +```javascript +$.get( "test.php" ) + .done(function() { + alert( "$.get succeeded" ); + }) + .fail(function() { + alert( "$.get failed!" ); + }); +``` + */ + fail( + failCallback: TypeOrArray>, + ...failCallbacks: Array>> + ): this; + /** + * Add handlers to be called when the Deferred object generates progress notifications. + * @param progressCallback A function, or array of functions, to be called when the Deferred generates progress notifications. + * @param progressCallbacks Optional additional functions, or arrays of functions, to be called when the Deferred generates + * progress notifications. + * @see \`{@link https://api.jquery.com/deferred.progress/ }\` + * @since 1.7 + */ + progress( + progressCallback: TypeOrArray>, + ...progressCallbacks: Array>> + ): this; + /** + * Return a Deferred's Promise object. + * @param target Object onto which the promise methods have to be attached + * @see \`{@link https://api.jquery.com/deferred.promise/ }\` + * @since 1.5 + * @example ​ ````Create a Deferred and set two timer-based functions to either resolve or reject the Deferred after a random interval. Whichever one fires first "wins" and will call one of the callbacks. The second timeout has no effect since the Deferred is already complete (in a resolved or rejected state) from the first timeout action. Also set a timer-based progress notification function, and call a progress handler that adds "working..." to the document body. +```javascript +function asyncEvent() { + var dfd = jQuery.Deferred(); +​ + // Resolve after a random interval + setTimeout(function() { + dfd.resolve( "hurray" ); + }, Math.floor( 400 + Math.random() * 2000 ) ); +​ + // Reject after a random interval + setTimeout(function() { + dfd.reject( "sorry" ); + }, Math.floor( 400 + Math.random() * 2000 ) ); +​ + // Show a "working..." message every half-second + setTimeout(function working() { + if ( dfd.state() === "pending" ) { + dfd.notify( "working... " ); + setTimeout( working, 500 ); + } + }, 1 ); +​ + // Return the Promise so caller can't change the Deferred + return dfd.promise(); +} +​ +// Attach a done, fail, and progress handler for the asyncEvent +$.when( asyncEvent() ).then( + function( status ) { + alert( status + ", things are going well" ); + }, + function( status ) { + alert( status + ", you fail this time" ); + }, + function( status ) { + $( "body" ).append( status ); + } +); +``` + */ + promise(target: TTarget): this & TTarget; + /** + * Return a Deferred's Promise object. + * @see \`{@link https://api.jquery.com/deferred.promise/ }\` + * @since 1.5 + * @example ​ ````Use the target argument to promote an existing object to a Promise: +```javascript +// Existing object +var obj = { + hello: function( name ) { + alert( "Hello " + name ); + } + }, + // Create a Deferred + defer = $.Deferred(); +​ +// Set object as a promise +defer.promise( obj ); +​ +// Resolve the deferred +defer.resolve( "John" ); +​ +// Use the object as a Promise +obj.done(function( name ) { + obj.hello( name ); // Will alert "Hello John" +}).hello( "Karl" ); // Will alert "Hello Karl" +``` + */ + promise(): this; + /** + * Determine the current state of a Deferred object. + * @see \`{@link https://api.jquery.com/deferred.state/ }\` + * @since 1.7 + */ + state(): "pending" | "resolved" | "rejected"; + + // region pipe + // #region pipe + + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter resolve value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe(function( value ) { + return value * 2; + }); +​ +defer.resolve( 5 ); +filtered.done(function( value ) { + alert( "Value is ( 2*5 = ) 10: " + value ); +}); +``` + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: ( + t: TR, + u: UR, + v: VR, + ...s: SR[] + ) => PromiseBase | Thenable | ARD, + failFilter: ( + t: TJ, + u: UJ, + v: VJ, + ...s: SJ[] + ) => PromiseBase | Thenable | AJF, + progressFilter: ( + t: TN, + u: UN, + v: VN, + ...s: SN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARD | ARF | ARP, + AJD | AJF | AJP, + AND | ANF | ANP, + BRD | BRF | BRP, + BJD | BJF | BJP, + BND | BNF | BNP, + CRD | CRF | CRP, + CJD | CJF | CJP, + CND | CNF | CNP, + RRD | RRF | RRP, + RJD | RJF | RJP, + RND | RNF | RNP + >; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: null, + failFilter: ( + t: TJ, + u: UJ, + v: VJ, + ...s: SJ[] + ) => PromiseBase | Thenable | AJF, + progressFilter: ( + t: TN, + u: UN, + v: VN, + ...s: SN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARF | ARP, + AJF | AJP, + ANF | ANP, + BRF | BRP, + BJF | BJP, + BNF | BNP, + CRF | CRP, + CJF | CJP, + CNF | CNP, + RRF | RRP, + RJF | RJP, + RNF | RNP + >; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter resolve value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe(function( value ) { + return value * 2; + }); +​ +defer.resolve( 5 ); +filtered.done(function( value ) { + alert( "Value is ( 2*5 = ) 10: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: ( + t: TR, + u: UR, + v: VR, + ...s: SR[] + ) => PromiseBase | Thenable | ARD, + failFilter: null, + progressFilter: ( + t: TN, + u: UN, + v: VN, + ...s: SN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARD | ARP, + AJD | AJP, + AND | ANP, + BRD | BRP, + BJD | BJP, + BND | BNP, + CRD | CRP, + CJD | CJP, + CND | CNP, + RRD | RRP, + RJD | RJP, + RND | RNP + >; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: null, + failFilter: null, + progressFilter?: ( + t: TN, + u: UN, + v: VN, + ...s: SN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter resolve value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe(function( value ) { + return value * 2; + }); +​ +defer.resolve( 5 ); +filtered.done(function( value ) { + alert( "Value is ( 2*5 = ) 10: " + value ); +}); +``` + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + >( + doneFilter: ( + t: TR, + u: UR, + v: VR, + ...s: SR[] + ) => PromiseBase | Thenable | ARD, + failFilter: ( + t: TJ, + u: UJ, + v: VJ, + ...s: SJ[] + ) => PromiseBase | Thenable | AJF, + progressFilter?: null, + ): PromiseBase< + ARD | ARF, + AJD | AJF, + AND | ANF, + BRD | BRF, + BJD | BJF, + BND | BNF, + CRD | CRF, + CJD | CJF, + CND | CNF, + RRD | RRF, + RJD | RJF, + RND | RNF + >; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + >( + doneFilter: null, + failFilter: ( + t: TJ, + u: UJ, + v: VJ, + ...s: SJ[] + ) => PromiseBase | Thenable | AJF, + progressFilter?: null, + ): PromiseBase; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter resolve value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe(function( value ) { + return value * 2; + }); +​ +defer.resolve( 5 ); +filtered.done(function( value ) { + alert( "Value is ( 2*5 = ) 10: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + >( + doneFilter: ( + t: TR, + u: UR, + v: VR, + ...s: SR[] + ) => PromiseBase | Thenable | ARD, + failFilter?: null, + progressFilter?: null, + ): PromiseBase; + + // #endregion + + // region then + // #region then + + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Since the jQuery.get method returns a jqXHR object, which is derived from a Deferred object, we can attach handlers using the .then method. +```javascript +$.get( "test.php" ).then( + function() { + alert( "$.get succeeded" ); + }, function() { + alert( "$.get failed!" ); + } +); +``` + * @example ​ ````Filter the resolve value: +```html + + + + + deferred.then demo + + + +​ + +

      +​ + +​ + + +``` + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.then( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: ( + t: TR, + u: UR, + v: VR, + ...s: SR[] + ) => PromiseBase | Thenable | ARD, + failFilter: ( + t: TJ, + u: UJ, + v: VJ, + ...s: SJ[] + ) => PromiseBase | Thenable | ARF, + progressFilter: ( + t: TN, + u: UN, + v: VN, + ...s: SN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARD | ARF | ARP, + AJD | AJF | AJP, + AND | ANF | ANP, + BRD | BRF | BRP, + BJD | BJF | BJP, + BND | BNF | BNP, + CRD | CRF | CRP, + CJD | CJF | CJP, + CND | CNF | CNP, + RRD | RRF | RRP, + RJD | RJF | RJP, + RND | RNF | RNP + >; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.then( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: null, + failFilter: ( + t: TJ, + u: UJ, + v: VJ, + ...s: SJ[] + ) => PromiseBase | Thenable | ARF, + progressFilter: ( + t: TN, + u: UN, + v: VN, + ...s: SN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARF | ARP, + AJF | AJP, + ANF | ANP, + BRF | BRP, + BJF | BJP, + BNF | BNP, + CRF | CRP, + CJF | CJP, + CNF | CNP, + RRF | RRP, + RJF | RJP, + RNF | RNP + >; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Filter the resolve value: +```html + + + + + deferred.then demo + + + +​ + +

      +​ + +​ + + +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: ( + t: TR, + u: UR, + v: VR, + ...s: SR[] + ) => PromiseBase | Thenable | ARD, + failFilter: null, + progressFilter: ( + t: TN, + u: UN, + v: VN, + ...s: SN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARD | ARP, + AJD | AJP, + AND | ANP, + BRD | BRP, + BJD | BJP, + BND | BNP, + CRD | CRP, + CJD | CJP, + CND | CNP, + RRD | RRP, + RJD | RJP, + RND | RNP + >; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: null, + failFilter: null, + progressFilter?: ( + t: TN, + u: UN, + v: VN, + ...s: SN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Since the jQuery.get method returns a jqXHR object, which is derived from a Deferred object, we can attach handlers using the .then method. +```javascript +$.get( "test.php" ).then( + function() { + alert( "$.get succeeded" ); + }, function() { + alert( "$.get failed!" ); + } +); +``` + * @example ​ ````Filter the resolve value: +```html + + + + + deferred.then demo + + + +​ + +

      +​ + +​ + + +``` + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.then( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + >( + doneFilter: ( + t: TR, + u: UR, + v: VR, + ...s: SR[] + ) => PromiseBase | Thenable | ARD, + failFilter: ( + t: TJ, + u: UJ, + v: VJ, + ...s: SJ[] + ) => PromiseBase | Thenable | ARF, + progressFilter?: null, + ): PromiseBase< + ARD | ARF, + AJD | AJF, + AND | ANF, + BRD | BRF, + BJD | BJF, + BND | BNF, + CRD | CRF, + CJD | CJF, + CND | CNF, + RRD | RRF, + RJD | RJF, + RND | RNF + >; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.then( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + >( + doneFilter: null, + failFilter: ( + t: TJ, + u: UJ, + v: VJ, + ...s: SJ[] + ) => PromiseBase | Thenable | ARF, + progressFilter?: null, + ): PromiseBase; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Filter the resolve value: +```html + + + + + deferred.then demo + + + +​ + +

      +​ + +​ + + +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + >( + doneFilter: ( + t: TR, + u: UR, + v: VR, + ...s: SR[] + ) => PromiseBase | Thenable | ARD, + failFilter?: null, + progressFilter?: null, + ): PromiseBase; + + // #endregion + + /** + * Add handlers to be called when the Deferred object is rejected. + * @param failFilter A function that is called when the Deferred is rejected. + * @see \`{@link https://api.jquery.com/deferred.catch/ }\` + * @since 3.0 + * @example ​ ````Since the jQuery.get method returns a jqXHR object, which is derived from a Deferred object, we can rejection handlers using the .catch method. +```javascript +$.get( "test.php" ) + .then( function() { + alert( "$.get succeeded" ); + } ) + .catch( function() { + alert( "$.get failed!" ); + } ); +``` + */ + catch< + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + >( + failFilter?: + | (( + t: TJ, + u: UJ, + v: VJ, + ...s: SJ[] + ) => PromiseBase | Thenable | ARF) + | null, + ): PromiseBase; + } + + /** + * This object provides a subset of the methods of the Deferred object (then, done, fail, always, pipe, progress, state and promise) to prevent users from changing the state of the Deferred. + * @see \`{@link https://api.jquery.com/Types/#Promise }\` + */ + interface Promise3 + extends PromiseBase + {} + + /** + * This object provides a subset of the methods of the Deferred object (then, done, fail, always, pipe, progress, state and promise) to prevent users from changing the state of the Deferred. + * @see \`{@link https://api.jquery.com/Types/#Promise }\` + */ + interface Promise2 + extends PromiseBase + {} + + /** + * This object provides a subset of the methods of the Deferred object (then, done, fail, always, pipe, progress, state and promise) to prevent users from changing the state of the Deferred. + * @see \`{@link https://api.jquery.com/Types/#Promise }\` + */ + interface Promise extends PromiseBase {} + + interface DeferredStatic { + // https://jquery.com/upgrade-guide/3.0/#callback-exit + exceptionHook: any; + /** + * A factory function that returns a chainable utility object with methods to register multiple callbacks into callback queues, invoke callback queues, and relay the success or failure state of any synchronous or asynchronous function. + * @param beforeStart A function that is called just before the constructor returns. + * @see \`{@link https://api.jquery.com/jQuery.Deferred/ }\` + * @since 1.5 + */ + ( + beforeStart?: (this: Deferred, deferred: Deferred) => void, + ): Deferred; + } + + interface Deferred { + /** + * Call the progressCallbacks on a Deferred object with the given args. + * @param args Optional arguments that are passed to the progressCallbacks. + * @see \`{@link https://api.jquery.com/deferred.notify/ }\` + * @since 1.7 + */ + notify(...args: TN[]): this; + /** + * Call the progressCallbacks on a Deferred object with the given context and args. + * @param context Context passed to the progressCallbacks as the this object. + * @param args An optional array of arguments that are passed to the progressCallbacks. + * @see \`{@link https://api.jquery.com/deferred.notifyWith/ }\` + * @since 1.7 + */ + notifyWith(context: object, args?: ArrayLike): this; + /** + * Reject a Deferred object and call any failCallbacks with the given args. + * @param args Optional arguments that are passed to the failCallbacks. + * @see \`{@link https://api.jquery.com/deferred.reject/ }\` + * @since 1.5 + */ + reject(...args: TJ[]): this; + /** + * Reject a Deferred object and call any failCallbacks with the given context and args. + * @param context Context passed to the failCallbacks as the this object. + * @param args An optional array of arguments that are passed to the failCallbacks. + * @see \`{@link https://api.jquery.com/deferred.rejectWith/ }\` + * @since 1.5 + */ + rejectWith(context: object, args?: ArrayLike): this; + /** + * Resolve a Deferred object and call any doneCallbacks with the given args. + * @param args Optional arguments that are passed to the doneCallbacks. + * @see \`{@link https://api.jquery.com/deferred.resolve/ }\` + * @since 1.5 + */ + resolve(...args: TR[]): this; + /** + * Resolve a Deferred object and call any doneCallbacks with the given context and args. + * @param context Context passed to the doneCallbacks as the this object. + * @param args An optional array of arguments that are passed to the doneCallbacks. + * @see \`{@link https://api.jquery.com/deferred.resolveWith/ }\` + * @since 1.5 + */ + resolveWith(context: object, args?: ArrayLike): this; + + /** + * Add handlers to be called when the Deferred object is either resolved or rejected. + * @param alwaysCallback A function, or array of functions, that is called when the Deferred is resolved or rejected. + * @param alwaysCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is resolved or rejected. + * @see \`{@link https://api.jquery.com/deferred.always/ }\` + * @since 1.6 + * @example ​ ````Since the jQuery.get() method returns a jqXHR object, which is derived from a Deferred object, we can attach a callback for both success and error using the deferred.always() method. +```javascript +$.get( "test.php" ).always(function() { + alert( "$.get completed with success or error callback arguments" ); +}); +``` + */ + always( + alwaysCallback: TypeOrArray>, + ...alwaysCallbacks: Array>> + ): this; + /** + * Add handlers to be called when the Deferred object is resolved. + * @param doneCallback A function, or array of functions, that are called when the Deferred is resolved. + * @param doneCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is resolved. + * @see \`{@link https://api.jquery.com/deferred.done/ }\` + * @since 1.5 + * @example ​ ````Since the jQuery.get method returns a jqXHR object, which is derived from a Deferred object, we can attach a success callback using the .done() method. +```javascript +$.get( "test.php" ).done(function() { + alert( "$.get succeeded" ); +}); +``` + * @example ​ ````Resolve a Deferred object when the user clicks a button, triggering a number of callback functions: +```html + + + + + deferred.done demo + + + +​ + +

      Ready...

      +​ + +​ + + +``` + */ + done( + doneCallback: TypeOrArray>, + ...doneCallbacks: Array>> + ): this; + /** + * Add handlers to be called when the Deferred object is rejected. + * @param failCallback A function, or array of functions, that are called when the Deferred is rejected. + * @param failCallbacks Optional additional functions, or arrays of functions, that are called when the Deferred is rejected. + * @see \`{@link https://api.jquery.com/deferred.fail/ }\` + * @since 1.5 + * @example ​ ````Since the jQuery.get method returns a jqXHR object, which is derived from a Deferred, you can attach a success and failure callback using the deferred.done() and deferred.fail() methods. +```javascript +$.get( "test.php" ) + .done(function() { + alert( "$.get succeeded" ); + }) + .fail(function() { + alert( "$.get failed!" ); + }); +``` + */ + fail( + failCallback: TypeOrArray>, + ...failCallbacks: Array>> + ): this; + /** + * Add handlers to be called when the Deferred object generates progress notifications. + * @param progressCallback A function, or array of functions, to be called when the Deferred generates progress notifications. + * @param progressCallbacks Optional additional functions, or arrays of functions, to be called when the Deferred generates + * progress notifications. + * @see \`{@link https://api.jquery.com/deferred.progress/ }\` + * @since 1.7 + */ + progress( + progressCallback: TypeOrArray>, + ...progressCallbacks: Array>> + ): this; + /** + * Return a Deferred's Promise object. + * @param target Object onto which the promise methods have to be attached + * @see \`{@link https://api.jquery.com/deferred.promise/ }\` + * @since 1.5 + * @example ​ ````Use the target argument to promote an existing object to a Promise: +```javascript +// Existing object +var obj = { + hello: function( name ) { + alert( "Hello " + name ); + } + }, + // Create a Deferred + defer = $.Deferred(); +​ +// Set object as a promise +defer.promise( obj ); +​ +// Resolve the deferred +defer.resolve( "John" ); +​ +// Use the object as a Promise +obj.done(function( name ) { + obj.hello( name ); // Will alert "Hello John" +}).hello( "Karl" ); // Will alert "Hello Karl" +``` + */ + promise(target: TTarget): Promise & TTarget; + /** + * Return a Deferred's Promise object. + * @see \`{@link https://api.jquery.com/deferred.promise/ }\` + * @since 1.5 + * @example ​ ````Create a Deferred and set two timer-based functions to either resolve or reject the Deferred after a random interval. Whichever one fires first "wins" and will call one of the callbacks. The second timeout has no effect since the Deferred is already complete (in a resolved or rejected state) from the first timeout action. Also set a timer-based progress notification function, and call a progress handler that adds "working..." to the document body. +```javascript +function asyncEvent() { + var dfd = jQuery.Deferred(); +​ + // Resolve after a random interval + setTimeout(function() { + dfd.resolve( "hurray" ); + }, Math.floor( 400 + Math.random() * 2000 ) ); +​ + // Reject after a random interval + setTimeout(function() { + dfd.reject( "sorry" ); + }, Math.floor( 400 + Math.random() * 2000 ) ); +​ + // Show a "working..." message every half-second + setTimeout(function working() { + if ( dfd.state() === "pending" ) { + dfd.notify( "working... " ); + setTimeout( working, 500 ); + } + }, 1 ); +​ + // Return the Promise so caller can't change the Deferred + return dfd.promise(); +} +​ +// Attach a done, fail, and progress handler for the asyncEvent +$.when( asyncEvent() ).then( + function( status ) { + alert( status + ", things are going well" ); + }, + function( status ) { + alert( status + ", you fail this time" ); + }, + function( status ) { + $( "body" ).append( status ); + } +); +``` + */ + promise(): Promise; + /** + * Determine the current state of a Deferred object. + * @see \`{@link https://api.jquery.com/deferred.state/ }\` + * @since 1.7 + */ + state(): "pending" | "resolved" | "rejected"; + + // region pipe + // #region pipe + + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter resolve value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe(function( value ) { + return value * 2; + }); +​ +defer.resolve( 5 ); +filtered.done(function( value ) { + alert( "Value is ( 2*5 = ) 10: " + value ); +}); +``` + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: ( + ...t: TR[] + ) => PromiseBase | Thenable | ARD, + failFilter: ( + ...t: TJ[] + ) => PromiseBase | Thenable | AJF, + progressFilter: ( + ...t: TN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARD | ARF | ARP, + AJD | AJF | AJP, + AND | ANF | ANP, + BRD | BRF | BRP, + BJD | BJF | BJP, + BND | BNF | BNP, + CRD | CRF | CRP, + CJD | CJF | CJP, + CND | CNF | CNP, + RRD | RRF | RRP, + RJD | RJF | RJP, + RND | RNF | RNP + >; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: null, + failFilter: ( + ...t: TJ[] + ) => PromiseBase | Thenable | AJF, + progressFilter: ( + ...t: TN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARF | ARP, + AJF | AJP, + ANF | ANP, + BRF | BRP, + BJF | BJP, + BNF | BNP, + CRF | CRP, + CJF | CJP, + CNF | CNP, + RRF | RRP, + RJF | RJP, + RNF | RNP + >; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter resolve value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe(function( value ) { + return value * 2; + }); +​ +defer.resolve( 5 ); +filtered.done(function( value ) { + alert( "Value is ( 2*5 = ) 10: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: ( + ...t: TR[] + ) => PromiseBase | Thenable | ARD, + failFilter: null, + progressFilter: ( + ...t: TN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARD | ARP, + AJD | AJP, + AND | ANP, + BRD | BRP, + BJD | BJP, + BND | BNP, + CRD | CRP, + CJD | CJP, + CND | CNP, + RRD | RRP, + RJD | RJP, + RND | RNP + >; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: null, + failFilter: null, + progressFilter?: ( + ...t: TN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter resolve value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe(function( value ) { + return value * 2; + }); +​ +defer.resolve( 5 ); +filtered.done(function( value ) { + alert( "Value is ( 2*5 = ) 10: " + value ); +}); +``` + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + >( + doneFilter: ( + ...t: TR[] + ) => PromiseBase | Thenable | ARD, + failFilter: ( + ...t: TJ[] + ) => PromiseBase | Thenable | AJF, + progressFilter?: null, + ): PromiseBase< + ARD | ARF, + AJD | AJF, + AND | ANF, + BRD | BRF, + BJD | BJF, + BND | BNF, + CRD | CRF, + CJD | CJF, + CND | CNF, + RRD | RRF, + RJD | RJF, + RND | RNF + >; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + >( + doneFilter: null, + failFilter: ( + ...t: TJ[] + ) => PromiseBase | Thenable | AJF, + progressFilter?: null, + ): PromiseBase; + /** + * Utility method to filter and/or chain Deferreds. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.pipe/ }\` + * @since 1.6 + * @since 1.7 + * @deprecated ​ Deprecated since 1.8. Use \`{@link then }\`. + * + * **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function. + * + * **Solution**: In most cases it is sufficient to change all occurrences of `.pipe()` to `.then()`. Ensure that you aren't relying on context/state propagation (e.g., using `this`) or synchronous callback invocation, which were dropped from `.then()` for Promises/A+ interoperability as of jQuery 3.0. + * @example ​ ````Filter resolve value: +```javascript +var defer = $.Deferred(), + filtered = defer.pipe(function( value ) { + return value * 2; + }); +​ +defer.resolve( 5 ); +filtered.done(function( value ) { + alert( "Value is ( 2*5 = ) 10: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.pipe(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + pipe< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + >( + doneFilter: ( + ...t: TR[] + ) => PromiseBase | Thenable | ARD, + failFilter?: null, + progressFilter?: null, + ): PromiseBase; + + // #endregion + + // region then + // #region then + + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter A function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Since the jQuery.get method returns a jqXHR object, which is derived from a Deferred object, we can attach handlers using the .then method. +```javascript +$.get( "test.php" ).then( + function() { + alert( "$.get succeeded" ); + }, function() { + alert( "$.get failed!" ); + } +); +``` + * @example ​ ````Filter the resolve value: +```html + + + + + deferred.then demo + + + +​ + +

      +​ + +​ + + +``` + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.then( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: ( + ...t: TR[] + ) => PromiseBase | Thenable | ARD, + failFilter: ( + ...t: TJ[] + ) => PromiseBase | Thenable | ARF, + progressFilter: ( + ...t: TN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARD | ARF | ARP, + AJD | AJF | AJP, + AND | ANF | ANP, + BRD | BRF | BRP, + BJD | BJF | BJP, + BND | BNF | BNP, + CRD | CRF | CRP, + CJD | CJF | CJP, + CND | CNF | CNP, + RRD | RRF | RRP, + RJD | RJF | RJP, + RND | RNF | RNP + >; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter A function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.then( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: null, + failFilter: ( + ...t: TJ[] + ) => PromiseBase | Thenable | ARF, + progressFilter: ( + ...t: TN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARF | ARP, + AJF | AJP, + ANF | ANP, + BRF | BRP, + BJF | BJP, + BNF | BNP, + CRF | CRP, + CJF | CJP, + CNF | CNP, + RRF | RRP, + RJF | RJP, + RNF | RNP + >; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter A function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Filter the resolve value: +```html + + + + + deferred.then demo + + + +​ + +

      +​ + +​ + + +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: ( + ...t: TR[] + ) => PromiseBase | Thenable | ARD, + failFilter: null, + progressFilter: ( + ...t: TN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase< + ARD | ARP, + AJD | AJP, + AND | ANP, + BRD | BRP, + BJD | BJP, + BND | BNP, + CRD | CRP, + CJD | CJP, + CND | CNP, + RRD | RRP, + RJD | RJP, + RND | RNP + >; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter A function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARP = never, + AJP = never, + ANP = never, + BRP = never, + BJP = never, + BNP = never, + CRP = never, + CJP = never, + CNP = never, + RRP = never, + RJP = never, + RNP = never, + >( + doneFilter: null, + failFilter: null, + progressFilter?: ( + ...t: TN[] + ) => PromiseBase | Thenable | ANP, + ): PromiseBase; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Since the jQuery.get method returns a jqXHR object, which is derived from a Deferred object, we can attach handlers using the .then method. +```javascript +$.get( "test.php" ).then( + function() { + alert( "$.get succeeded" ); + }, function() { + alert( "$.get failed!" ); + } +); +``` + * @example ​ ````Filter the resolve value: +```html + + + + + deferred.then demo + + + +​ + +

      +​ + +​ + + +``` + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.then( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + >( + doneFilter: ( + ...t: TR[] + ) => PromiseBase | Thenable | ARD, + failFilter: ( + ...t: TJ[] + ) => PromiseBase | Thenable | ARF, + progressFilter?: null, + ): PromiseBase< + ARD | ARF, + AJD | AJF, + AND | ANF, + BRD | BRF, + BJD | BJF, + BND | BNF, + CRD | CRF, + CJD | CJF, + CND | CNF, + RRD | RRF, + RJD | RJF, + RND | RNF + >; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Filter reject value: +```javascript +var defer = $.Deferred(), + filtered = defer.then( null, function( value ) { + return value * 3; + }); +​ +defer.reject( 6 ); +filtered.fail(function( value ) { + alert( "Value is ( 3*6 = ) 18: " + value ); +}); +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + >( + doneFilter: null, + failFilter: ( + ...t: TJ[] + ) => PromiseBase | Thenable | ARF, + progressFilter?: null, + ): PromiseBase; + /** + * Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + * @param doneFilter An optional function that is called when the Deferred is resolved. + * @param failFilter An optional function that is called when the Deferred is rejected. + * @param progressFilter An optional function that is called when progress notifications are sent to the Deferred. + * @see \`{@link https://api.jquery.com/deferred.then/ }\` + * @since 1.8 + * @example ​ ````Filter the resolve value: +```html + + + + + deferred.then demo + + + +​ + +

      +​ + +​ + + +``` + * @example ​ ````Chain tasks: +```javascript +var request = $.ajax( url, { dataType: "json" } ), + chained = request.then(function( data ) { + return $.ajax( url2, { data: { user: data.userId } } ); + }); +​ +chained.done(function( data ) { + // data retrieved from url2 as provided by the first request +}); +``` + */ + then< + ARD = never, + AJD = never, + AND = never, + BRD = never, + BJD = never, + BND = never, + CRD = never, + CJD = never, + CND = never, + RRD = never, + RJD = never, + RND = never, + >( + doneFilter: ( + ...t: TR[] + ) => PromiseBase | Thenable | ARD, + failFilter?: null, + progressFilter?: null, + ): PromiseBase; + + // #endregion + + /** + * Add handlers to be called when the Deferred object is rejected. + * @param failFilter A function that is called when the Deferred is rejected. + * @see \`{@link https://api.jquery.com/deferred.catch/ }\` + * @since 3.0 + * @example ​ ````Since the jQuery.get method returns a jqXHR object, which is derived from a Deferred object, we can rejection handlers using the .catch method. +```javascript +$.get( "test.php" ) + .then( function() { + alert( "$.get succeeded" ); + } ) + .catch( function() { + alert( "$.get failed!" ); + } ); +``` + */ + catch< + ARF = never, + AJF = never, + ANF = never, + BRF = never, + BJF = never, + BNF = never, + CRF = never, + CJF = never, + CNF = never, + RRF = never, + RJF = never, + RNF = never, + >( + failFilter?: + | (( + ...t: TJ[] + ) => PromiseBase | Thenable | ARF) + | null, + ): PromiseBase; + } + + namespace Deferred { + type CallbackBase = (t: T, u: U, v: V, ...r: R[]) => void; + + interface Callback3 extends CallbackBase {} + + type Callback = (...args: T[]) => void; + + /** + * @deprecated ​ Deprecated. Use \`{@link Callback }\`. + */ + interface DoneCallback extends Callback {} + + /** + * @deprecated ​ Deprecated. Use \`{@link Callback }\`. + */ + interface FailCallback extends Callback {} + + /** + * @deprecated ​ Deprecated. Use \`{@link Callback }\`. + */ + interface AlwaysCallback extends Callback {} + + /** + * @deprecated ​ Deprecated. Use \`{@link Callback }\`. + */ + interface ProgressCallback extends Callback {} + } + + // #endregion + + // region Effects + // #region Effects + + type Duration = number | "fast" | "slow"; + + /** + * @see \`{@link https://api.jquery.com/animate/#animate-properties-options }\` + */ + interface EffectsOptions extends PlainObject { + /** + * A function to be called when the animation on an element completes or stops without completing (its Promise object is either resolved or rejected). + */ + always?(this: TElement, animation: Animation, jumpedToEnd: boolean): void; + /** + * A function that is called once the animation on an element is complete. + */ + complete?(this: TElement): void; + /** + * A function to be called when the animation on an element completes (its Promise object is resolved). + */ + done?(this: TElement, animation: Animation, jumpedToEnd: boolean): void; + /** + * A string or number determining how long the animation will run. + */ + duration?: Duration | undefined; + /** + * A string indicating which easing function to use for the transition. + */ + easing?: string | undefined; + /** + * A function to be called when the animation on an element fails to complete (its Promise object is rejected). + */ + fail?(this: TElement, animation: Animation, jumpedToEnd: boolean): void; + /** + * A function to be called after each step of the animation, only once per animated element regardless of the number of animated properties. + */ + progress?(this: TElement, animation: Animation, progress: number, remainingMs: number): void; + /** + * A Boolean indicating whether to place the animation in the effects queue. If false, the animation will begin immediately. As of jQuery 1.7, the queue option can also accept a string, in which case the animation is added to the queue represented by that string. When a custom queue name is used the animation does not automatically start; you must call .dequeue("queuename") to start it. + */ + queue?: boolean | string | undefined; + /** + * An object containing one or more of the CSS properties defined by the properties argument and their corresponding easing functions. + */ + specialEasing?: PlainObject | undefined; + /** + * A function to call when the animation on an element begins. + */ + start?(this: TElement, animation: Animation): void; + /** + * A function to be called for each animated property of each animated element. This function provides an opportunity to modify the Tween object to change the value of the property before it is set. + */ + step?(this: TElement, now: number, tween: Tween): void; + } + + // region Animation + // #region Animation + + /** + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + interface AnimationStatic { + /** + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + (element: TElement, props: PlainObject, opts: EffectsOptions): Animation; + /** + * During the initial setup, `jQuery.Animation` will call any callbacks that have been registered through `jQuery.Animation.prefilter( function( element, props, opts ) )`. + * @param callback The prefilter will have `this` set to an animation object, and you can modify any of the `props` or + * `opts` however you need. The prefilter _may_ return its own promise which also implements `stop()`, + * in which case, processing of prefilters stops. If the prefilter is not trying to override the animation + * entirely, it should return `undefined` or some other falsy value. + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#prefilters }\` + * @since 1.8 + */ + prefilter( + callback: ( + this: Animation, + element: TElement, + props: PlainObject, + opts: EffectsOptions, + ) => Animation | _Falsy | void, + prepend?: boolean, + ): void; + /** + * A "Tweener" is a function responsible for creating a tween object, and you might want to override these if you want to implement complex values ( like a clip/transform array matrix ) in a single property. + * + * You can override the default process for creating a tween in order to provide your own tween object by using `jQuery.Animation.tweener( props, callback( prop, value ) )`. + * @param props A space separated list of properties to be passed to your tweener, or `"*"` if it should be called + * for all properties. + * @param callback The callback will be called with `this` being an `Animation` object. The tweener function will + * generally start with `var tween = this.createTween( prop, value );`, but doesn't nessecarily need to + * use the `jQuery.Tween()` factory. + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweeners }\` + * @since 1.8 + */ + tweener(props: string, callback: Tweener): void; + } + + /** + * The promise will be resolved when the animation reaches its end, and rejected when terminated early. The context of callbacks attached to the promise will be the element, and the arguments will be the `Animation` object and a boolean `jumpedToEnd` which when true means the animation was stopped with `gotoEnd`, when `undefined` the animation completed naturally. + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + interface Animation extends + Promise3< + Animation, + Animation, + Animation, + true | undefined, + false, + number, + never, + never, + number + > + { + /** + * The duration specified in ms + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + duration: number; + /** + * The element being animatied + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + elem: TElement; + /** + * The final value of each property animating + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + props: PlainObject; + /** + * The animation options + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + opts: EffectsOptions; + /** + * The original properties before being filtered + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + originalProps: PlainObject; + /** + * The original options before being filtered + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + originalOpts: EffectsOptions; + /** + * The numeric value of `new Date()` when the animation began + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + startTime: number; + /** + * The animations tweens. + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + tweens: Array>; + /** + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + createTween(propName: string, finalValue: number): Tween; + /** + * Stops the animation early, optionally going to the end. + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#animation-factory }\` + * @since 1.8 + */ + stop(gotoEnd: boolean): this; + } + + /** + * A "Tweener" is a function responsible for creating a tween object, and you might want to override these if you want to implement complex values ( like a clip/transform array matrix ) in a single property. + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweeners }\` + * @since 1.8 + */ + type Tweener = (this: Animation, propName: string, finalValue: number) => Tween; + + /** + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + interface TweenStatic { + /** + * `jQuery.Tween.propHooks[ prop ]` is a hook point that replaces `jQuery.fx.step[ prop ]` (which is being deprecated.) These hooks are used by the tween to get and set values on elements. + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tween-hooks }\` + * @since 1.8 + * @example +```javascript +jQuery.Tween.propHooks[ property ] = { + get: function( tween ) { + // get tween.prop from tween.elem and return it + }, + set: function( tween ) { + // set tween.prop on tween.elem to tween.now + tween.unit + } +} +``` + */ + propHooks: PropHooks; + /** + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + ( + elem: TElement, + options: EffectsOptions, + prop: string, + end: number, + easing?: string, + unit?: string, + ): Tween; + } + + /** + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + // This should be a class but doesn't work correctly under the JQuery namespace. Tween should be an inner class of jQuery. + interface Tween { + /** + * The easing used + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + easing: string; + /** + * The element being animated + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + elem: TElement; + /** + * The ending value of the tween + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + end: number; + /** + * The current value of the tween + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + now: number; + /** + * A reference to the animation options + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + options: EffectsOptions; + // Undocumented. Is this intended to be public? + pos?: number | undefined; + /** + * The property being animated + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + prop: string; + /** + * The starting value of the tween + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + start: number; + /** + * The CSS unit for the tween + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + unit: string; + /** + * Reads the current value for property from the element + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + cur(): any; + /** + * Updates the value for the property on the animated elemd. + * @param progress A number from 0 to 1. + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\` + * @since 1.8 + */ + run(progress: number): this; + } + + /** + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tween-hooks }\` + * @since 1.8 + */ + // Workaround for TypeScript 2.3 which does not have support for weak types handling. + type PropHook = { + /** + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tween-hooks }\` + * @since 1.8 + */ + get(tween: Tween): any; + } | { + /** + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tween-hooks }\` + * @since 1.8 + */ + set(tween: Tween): void; + } | { + [key: string]: never; + }; + + /** + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tween-hooks }\` + * @since 1.8 + */ + interface PropHooks { + [property: string]: PropHook; + } + + // #endregion + + // region Easing + // #region Easing + + type EasingMethod = (percent: number) => number; + + interface Easings { + [name: string]: EasingMethod; + } + + // #endregion + + // region Effects (fx) + // #region Effects (fx) + + interface Effects { + /** + * The rate (in milliseconds) at which animations fire. + * @see \`{@link https://api.jquery.com/jQuery.fx.interval/ }\` + * @since 1.4.3 + * @deprecated ​ Deprecated since 3.0. See \`{@link https://api.jquery.com/jQuery.fx.interval/ }\`. + * + * **Cause**: As of jQuery 3.0 the `jQuery.fx.interval` property can be used to change the animation interval only on browsers that do not support the `window.requestAnimationFrame()` method. That is currently only Internet Explorer 9 and the Android Browser. Once support is dropped for these browsers, the property will serve no purpose and it will be removed. + * + * **Solution**: Find and remove code that changes or uses `jQuery.fx.interval`. If the value is being used by code in your page or a plugin, the code may be making assumptions that are no longer valid. The default value of `jQuery.fx.interval` is `13` (milliseconds), which could be used instead of accessing this property. + * @example ​ ````Cause all animations to run with less frames. +```html + + + + + jQuery.fx.interval demo + + + + +​ +

      +
      +​ + + + +``` + */ + interval: number; + /** + * Globally disable all animations. + * @see \`{@link https://api.jquery.com/jQuery.fx.off/ }\` + * @since 1.3 + * @example ​ ````Toggle animation on and off +```html + + + + + jQuery.fx.off demo + + + + +​ + + +
      +​ + + + +``` + */ + off: boolean; + /** + * @deprecated ​ Deprecated since 1.8. Use \`{@link Tween.propHooks jQuery.Tween.propHooks}\`. + * + * `jQuery.fx.step` functions are being replaced by `jQuery.Tween.propHooks` and may eventually be removed, but are still supported via the default tween propHook. + */ + step: PlainObject>; + /** + * _overridable_ Clears up the `setInterval` + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#plugging-in-a-different-timer-loop }\` + * @since 1.8 + */ + stop(): void; + /** + * Calls `.run()` on each object in the `jQuery.timers` array, removing it from the array if `.run()` returns a falsy value. Calls `jQuery.fx.stop()` whenever there are no timers remaining. + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#plugging-in-a-different-timer-loop }\` + * @since 1.8 + */ + tick(): void; + /** + * _overridable_ Creates a `setInterval` if one doesn't already exist, and pushes `tickFunction` to the `jQuery.timers` array. `tickFunction` should also have `anim`, `elem`, and `queue` properties that reference the animation object, animated element, and queue option to facilitate `jQuery.fn.stop()` + * + * By overriding `fx.timer` and `fx.stop` you should be able to implement any animation tick behaviour you desire. (like using `requestAnimationFrame` instead of `setTimeout`.) + * + * There is an example of overriding the timer loop in \`{@link https://github.com/gnarf37/jquery-requestAnimationFrame jquery.requestAnimationFrame}\` + * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#plugging-in-a-different-timer-loop }\` + * @since 1.8 + */ + timer(tickFunction: TickFunction): void; + } + + /** + * @deprecated ​ Deprecated since 1.8. Use \`{@link Tween.propHooks jQuery.Tween.propHooks}\`. + * + * `jQuery.fx.step` functions are being replaced by `jQuery.Tween.propHooks` and may eventually be removed, but are still supported via the default tween propHook. + */ + type AnimationHook = (fx: Tween) => void; + + interface TickFunction { + anim: Animation; + elem: TElement; + queue: boolean | string; + (): any; + } + + // #endregion + + // region Queue + // #region Queue + + // TODO: Is the first element always a string or is that specific to the 'fx' queue? + type Queue = { 0: string } & Array>; + + type QueueFunction = (this: TElement, next: () => void) => void; + + // #endregion + + // region Speed + // #region Speed + + // Workaround for TypeScript 2.3 which does not have support for weak types handling. + type SpeedSettings = { + /** + * A string or number determining how long the animation will run. + */ + duration: Duration; + } | { + /** + * A string indicating which easing function to use for the transition. + */ + easing: string; + } | { + /** + * A function to call once the animation is complete. + */ + complete(this: TElement): void; + } | { + [key: string]: never; + }; + + // #endregion + + // #endregion + + // region Events + // #region Events + + // region Event + // #region Event + + // This should be a class but doesn't work correctly under the JQuery namespace. Event should be an inner class of jQuery. + + /** + * jQuery's event system normalizes the event object according to W3C standards. The event object is guaranteed to be passed to the event handler (no checks for window.event required). It normalizes the target, relatedTarget, which, metaKey and pageX/Y properties and provides both stopPropagation() and preventDefault() methods. + * + * Those properties are all documented, and accompanied by examples, on the \`{@link http://api.jquery.com/category/events/event-object/ Event object}\` page. + * + * The standard events in the Document Object Model are: `blur`, `focus`, `load`, `resize`, `scroll`, `unload`, `beforeunload`, `click`, `dblclick`, `mousedown`, `mouseup`, `mousemove`, `mouseover`, `mouseout`, `mouseenter`, `mouseleave`, `change`, `select`, `submit`, `keydown`, `keypress`, and `keyup`. Since the DOM event names have predefined meanings for some elements, using them for other purposes is not recommended. jQuery's event model can trigger an event by any name on an element, and it is propagated up the DOM tree to which that element belongs, if any. + * @see \`{@link https://api.jquery.com/category/events/event-object/ }\` + */ + interface EventStatic { + /** + * The jQuery.Event constructor is exposed and can be used when calling trigger. The new operator is optional. + * + * Check \`{@link https://api.jquery.com/trigger/ trigger}\`'s documentation to see how to combine it with your own event object. + * @see \`{@link https://api.jquery.com/category/events/event-object/ }\` + * @since 1.6 + * @example +```javascript +//Create a new jQuery.Event object without the "new" operator. +var e = jQuery.Event( "click" ); +​ +// trigger an artificial click event +jQuery( "body" ).trigger( e ); +``` + * @example +```javascript +// Create a new jQuery.Event object with specified event properties. +var e = jQuery.Event( "keydown", { keyCode: 64 } ); +​ +// trigger an artificial keydown event with keyCode 64 +jQuery( "body" ).trigger( e ); +``` + */ + (event: string, properties?: T): Event & T; + /** + * The jQuery.Event constructor is exposed and can be used when calling trigger. The new operator is optional. + * + * Check \`{@link https://api.jquery.com/trigger/ trigger}\`'s documentation to see how to combine it with your own event object. + * @see \`{@link https://api.jquery.com/category/events/event-object/ }\` + * @since 1.6 + * @example +```javascript +//Create a new jQuery.Event object without the "new" operator. +var e = jQuery.Event( "click" ); +​ +// trigger an artificial click event +jQuery( "body" ).trigger( e ); +``` + * @example +```javascript +// Create a new jQuery.Event object with specified event properties. +var e = jQuery.Event( "keydown", { keyCode: 64 } ); +​ +// trigger an artificial keydown event with keyCode 64 +jQuery( "body" ).trigger( e ); +``` + */ + new(event: string, properties?: T): Event & T; + } + + /** + * jQuery's event system normalizes the event object according to W3C standards. The event object is guaranteed to be passed to the event handler (no checks for window.event required). It normalizes the target, relatedTarget, which, metaKey and pageX/Y properties and provides both stopPropagation() and preventDefault() methods. + * + * Those properties are all documented, and accompanied by examples, on the \`{@link http://api.jquery.com/category/events/event-object/ Event object}\` page. + * + * The standard events in the Document Object Model are: `blur`, `focus`, `load`, `resize`, `scroll`, `unload`, `beforeunload`, `click`, `dblclick`, `mousedown`, `mouseup`, `mousemove`, `mouseover`, `mouseout`, `mouseenter`, `mouseleave`, `change`, `select`, `submit`, `keydown`, `keypress`, and `keyup`. Since the DOM event names have predefined meanings for some elements, using them for other purposes is not recommended. jQuery's event model can trigger an event by any name on an element, and it is propagated up the DOM tree to which that element belongs, if any. + * @see \`{@link https://api.jquery.com/category/events/event-object/ }\` + * @see \`{@link TriggeredEvent }\` + */ + interface Event { + // region Copied properties + // #region Copied properties + + // Event + + bubbles: boolean | undefined; + cancelable: boolean | undefined; + eventPhase: number | undefined; + + // UIEvent + + detail: number | undefined; + view: Window | undefined; + + // MouseEvent + + button: number | undefined; + buttons: number | undefined; + clientX: number | undefined; + clientY: number | undefined; + offsetX: number | undefined; + offsetY: number | undefined; + /** + * The mouse position relative to the left edge of the document. + * @see \`{@link https://api.jquery.com/event.pageX/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageX demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageX: number | undefined; + /** + * The mouse position relative to the top edge of the document. + * @see \`{@link https://api.jquery.com/event.pageY/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageY demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageY: number | undefined; + screenX: number | undefined; + screenY: number | undefined; + /** @deprecated */ + toElement: Element | undefined; + + // PointerEvent + + pointerId: number | undefined; + pointerType: string | undefined; + + // KeyboardEvent + + /** @deprecated */ + char: string | undefined; + /** @deprecated */ + charCode: number | undefined; + key: string | undefined; + /** @deprecated */ + keyCode: number | undefined; + + // TouchEvent + + changedTouches: TouchList | undefined; + targetTouches: TouchList | undefined; + touches: TouchList | undefined; + + // MouseEvent, KeyboardEvent + + /** + * For key or mouse events, this property indicates the specific key or button that was pressed. + * @see \`{@link https://api.jquery.com/event.which/ }\` + * @since 1.1.3 + * @example ​ ````Log which key was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + * @example ​ ````Log which mouse button was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + */ + which: number | undefined; + + // MouseEvent, KeyboardEvent, TouchEvent + + altKey: boolean | undefined; + ctrlKey: boolean | undefined; + /** + * Indicates whether the META key was pressed when the event fired. + * @see \`{@link https://api.jquery.com/event.metaKey/ }\` + * @since 1.0.4 + * @example ​ ````Determine whether the META key was pressed when the event fired. +```html + + + + + event.metaKey demo + + + + +​ + +
      +​ + +​ + + +``` + */ + metaKey: boolean | undefined; + shiftKey: boolean | undefined; + + // #endregion + + /** + * The difference in milliseconds between the time the browser created the event and January 1, 1970. + * @see \`{@link https://api.jquery.com/event.timeStamp/ }\` + * @since 1.2.6 + * @example ​ ````Display the time since the click handler last executed. +```html + + + + + event.timeStamp demo + + + + +​ +
      Click.
      +​ + +​ + + +``` + */ + timeStamp: number; + /** + * Describes the nature of the event. + * @see \`{@link https://api.jquery.com/event.type/ }\` + * @since 1.0 + * @example ​ ````On all anchor clicks, alert the event type. +```javascript +$( "a" ).click(function( event ) { + alert( event.type ); // "click" +}); +``` + */ + type: string; + /** + * Returns whether event.preventDefault() was ever called on this event object. + * @see \`{@link https://api.jquery.com/event.isDefaultPrevented/ }\` + * @since 1.3 + * @example ​ ````Checks whether event.preventDefault() was called. +```javascript +$( "a" ).click(function( event ) { + alert( event.isDefaultPrevented() ); // false + event.preventDefault(); + alert( event.isDefaultPrevented() ); // true +}); +``` + */ + isDefaultPrevented(): boolean; + /** + * Returns whether event.stopImmediatePropagation() was ever called on this event object. + * @see \`{@link https://api.jquery.com/event.isImmediatePropagationStopped/ }\` + * @since 1.3 + * @example ​ ````Checks whether event.stopImmediatePropagation() was called. +```html + + + + + event.isImmediatePropagationStopped demo + + + +​ + +
      + ​ + +​ + + +``` + */ + isImmediatePropagationStopped(): boolean; + /** + * Returns whether event.stopPropagation() was ever called on this event object. + * @see \`{@link https://api.jquery.com/event.isPropagationStopped/ }\` + * @since 1.3 + * @example ​ ````Checks whether event.stopPropagation() was called +```html + + + + + event.isPropagationStopped demo + + + +​ + +
      + ​ + +​ + + +``` + */ + isPropagationStopped(): boolean; + /** + * If this method is called, the default action of the event will not be triggered. + * @see \`{@link https://api.jquery.com/event.preventDefault/ }\` + * @since 1.0 + * @example ​ ````Cancel the default action (navigation) of the click. +```html + + + + + event.preventDefault demo + + + +​ +default click action is prevented +
      +​ + +​ + + +``` + */ + preventDefault(): void; + /** + * Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree. + * @see \`{@link https://api.jquery.com/event.stopImmediatePropagation/ }\` + * @since 1.3 + * @example ​ ````Prevents other event handlers from being called. +```html + + + + + event.stopImmediatePropagation demo + + + + +​ +

      paragraph

      +
      division
      +​ + +​ + + +``` + */ + stopImmediatePropagation(): void; + /** + * Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event. + * @see \`{@link https://api.jquery.com/event.stopPropagation/ }\` + * @since 1.0 + * @example ​ ````Kill the bubbling on the click event. +```javascript +$( "p" ).click(function( event ) { + event.stopPropagation(); + // Do something +}); +``` + */ + stopPropagation(): void; + } + + // #endregion + + /** + * Base type for jQuery events that have been triggered (including events triggered on plain objects). + */ + interface TriggeredEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends Event { + /** + * The current DOM element within the event bubbling phase. + * @see \`{@link https://api.jquery.com/event.currentTarget/ }\` + * @since 1.3 + * @example ​ ````Alert that currentTarget matches the `this` keyword. +```javascript +$( "p" ).click(function( event ) { + alert( event.currentTarget === this ); // true +}); +``` + */ + currentTarget: TCurrentTarget; + /** + * The element where the currently-called jQuery event handler was attached. + * @see \`{@link https://api.jquery.com/event.delegateTarget/ }\` + * @since 1.7 + * @example ​ ````When a button in any box class is clicked, change the box's background color to red. +```javascript +$( ".box" ).on( "click", "button", function( event ) { + $( event.delegateTarget ).css( "background-color", "red" ); +}); +``` + */ + delegateTarget: TDelegateTarget; + /** + * The DOM element that initiated the event. + * @see \`{@link https://api.jquery.com/event.target/ }\` + * @since 1.0 + * @example ​ ````Display the tag's name on click +```html + + + + + event.target demo + + + + +​ +
      +
      +

      + click +

      +
      +​ + +​ + + +``` + * @example ​ ````Implements a simple event delegation: The click handler is added to an unordered list, and the children of its li children are hidden. Clicking one of the li children toggles (see toggle()) their children. +```html + + + + + event.target demo + + + +​ +
        +
      • item 1 +
          +
        • sub item 1-a
        • +
        • sub item 1-b
        • +
        +
      • +
      • item 2 +
          +
        • sub item 2-a
        • +
        • sub item 2-b
        • +
        +
      • +
      +​ + +​ + + +``` + */ + target: TTarget; + + /** + * An optional object of data passed to an event method when the current executing handler is bound. + * @see \`{@link https://api.jquery.com/event.data/ }\` + * @since 1.1 + * @example ​ ````Within a for loop, pass the value of i to the .on() method so that the current iteration's value is preserved. +```html + + + + + event.data demo + + + +​ + + + + + +​ +
      +​ + +​ + + +``` + */ + data: TData; + + /** + * The namespace specified when the event was triggered. + * @see \`{@link https://api.jquery.com/event.namespace/ }\` + * @since 1.4.3 + * @example ​ ````Determine the event namespace used. +```html + + + + + event.namespace demo + + + +​ + +

      +​ + +​ + + +``` + */ + namespace?: string | undefined; + originalEvent?: _Event | undefined; + /** + * The last value returned by an event handler that was triggered by this event, unless the value was undefined. + * @see \`{@link https://api.jquery.com/event.result/ }\` + * @since 1.3 + * @example ​ ````Display previous handler's return value +```html + + + + + event.result demo + + + +​ + +

      +​ + +​ + + +``` + */ + result?: any; + } + + // region Event + // #region Event + + interface EventBase< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends TriggeredEvent { + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + * @since 1.1.4 + * @example ​ ````On mouseout of anchors, alert the element type being entered. +```javascript +$( "a" ).mouseout(function( event ) { + alert( event.relatedTarget.nodeName ); // "DIV" +}); +``` + */ + relatedTarget?: undefined; + + // Event + + bubbles: boolean; + cancelable: boolean; + eventPhase: number; + + // UIEvent + + detail: undefined; + view: undefined; + + // MouseEvent + + button: undefined; + buttons: undefined; + clientX: undefined; + clientY: undefined; + offsetX: undefined; + offsetY: undefined; + /** + * The mouse position relative to the left edge of the document. + * @see \`{@link https://api.jquery.com/event.pageX/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageX demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageX: undefined; + /** + * The mouse position relative to the top edge of the document. + * @see \`{@link https://api.jquery.com/event.pageY/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageY demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageY: undefined; + screenX: undefined; + screenY: undefined; + /** @deprecated */ + toElement: undefined; + + // PointerEvent + + pointerId: undefined; + pointerType: undefined; + + // KeyboardEvent + + /** @deprecated */ + char: undefined; + /** @deprecated */ + charCode: undefined; + key: undefined; + /** @deprecated */ + keyCode: undefined; + + // TouchEvent + + changedTouches: undefined; + targetTouches: undefined; + touches: undefined; + + // MouseEvent, KeyboardEvent + + /** + * For key or mouse events, this property indicates the specific key or button that was pressed. + * @see \`{@link https://api.jquery.com/event.which/ }\` + * @since 1.1.3 + * @example ​ ````Log which key was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + * @example ​ ````Log which mouse button was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + */ + which: undefined; + + // MouseEvent, KeyboardEvent, TouchEvent + + altKey: undefined; + ctrlKey: undefined; + /** + * Indicates whether the META key was pressed when the event fired. + * @see \`{@link https://api.jquery.com/event.metaKey/ }\` + * @since 1.0.4 + * @example ​ ````Determine whether the META key was pressed when the event fired. +```html + + + + + event.metaKey demo + + + + +​ + +
      +​ + +​ + + +``` + */ + metaKey: undefined; + shiftKey: undefined; + + originalEvent?: _Event | undefined; + } + + interface ChangeEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends EventBase { + type: "change"; + } + + interface ResizeEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends EventBase { + type: "resize"; + } + + interface ScrollEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends EventBase { + type: "scroll"; + } + + interface SelectEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends EventBase { + type: "select"; + } + + interface SubmitEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends EventBase { + type: "submit"; + } + + // #endregion + + // region UIEvent + // #region UIEvent + + interface UIEventBase< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends TriggeredEvent { + // Event + + bubbles: boolean; + cancelable: boolean; + eventPhase: number; + + // UIEvent + + detail: number; + view: Window; + + originalEvent?: _UIEvent | undefined; + } + + // region MouseEvent + // #region MouseEvent + + interface MouseEventBase< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends UIEventBase { + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + * @since 1.1.4 + * @example ​ ````On mouseout of anchors, alert the element type being entered. +```javascript +$( "a" ).mouseout(function( event ) { + alert( event.relatedTarget.nodeName ); // "DIV" +}); +``` + */ + relatedTarget?: EventTarget | null | undefined; + + // MouseEvent + + button: number; + buttons: number; + clientX: number; + clientY: number; + offsetX: number; + offsetY: number; + /** + * The mouse position relative to the left edge of the document. + * @see \`{@link https://api.jquery.com/event.pageX/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageX demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageX: number; + /** + * The mouse position relative to the top edge of the document. + * @see \`{@link https://api.jquery.com/event.pageY/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageY demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageY: number; + screenX: number; + screenY: number; + /** @deprecated */ + toElement: Element; + + // PointerEvent + + pointerId: undefined; + pointerType: undefined; + + // KeyboardEvent + + /** @deprecated */ + char: undefined; + /** @deprecated */ + charCode: undefined; + key: undefined; + /** @deprecated */ + keyCode: undefined; + + // TouchEvent + + changedTouches: undefined; + targetTouches: undefined; + touches: undefined; + + // MouseEvent, KeyboardEvent + + /** + * For key or mouse events, this property indicates the specific key or button that was pressed. + * @see \`{@link https://api.jquery.com/event.which/ }\` + * @since 1.1.3 + * @example ​ ````Log which key was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + * @example ​ ````Log which mouse button was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + */ + which: number; + + // MouseEvent, KeyboardEvent, TouchEvent + + altKey: boolean; + ctrlKey: boolean; + /** + * Indicates whether the META key was pressed when the event fired. + * @see \`{@link https://api.jquery.com/event.metaKey/ }\` + * @since 1.0.4 + * @example ​ ````Determine whether the META key was pressed when the event fired. +```html + + + + + event.metaKey demo + + + + +​ + +
      +​ + +​ + + +``` + */ + metaKey: boolean; + shiftKey: boolean; + + originalEvent?: _MouseEvent | undefined; + } + + interface ClickEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends MouseEventBase { + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + * @since 1.1.4 + * @example ​ ````On mouseout of anchors, alert the element type being entered. + ```javascript + $( "a" ).mouseout(function( event ) { + alert( event.relatedTarget.nodeName ); // "DIV" + }); + ``` + */ + relatedTarget?: null | undefined; + + type: "click"; + } + + interface ContextMenuEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends MouseEventBase { + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + * @since 1.1.4 + * @example ​ ````On mouseout of anchors, alert the element type being entered. + ```javascript + $( "a" ).mouseout(function( event ) { + alert( event.relatedTarget.nodeName ); // "DIV" + }); + ``` + */ + relatedTarget?: null | undefined; + + type: "contextmenu"; + } + + interface DoubleClickEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends MouseEventBase { + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + * @since 1.1.4 + * @example ​ ````On mouseout of anchors, alert the element type being entered. + ```javascript + $( "a" ).mouseout(function( event ) { + alert( event.relatedTarget.nodeName ); // "DIV" + }); + ``` + */ + relatedTarget?: null | undefined; + + type: "dblclick"; + } + + interface MouseDownEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends MouseEventBase { + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + * @since 1.1.4 + * @example ​ ````On mouseout of anchors, alert the element type being entered. + ```javascript + $( "a" ).mouseout(function( event ) { + alert( event.relatedTarget.nodeName ); // "DIV" + }); + ``` + */ + relatedTarget?: null | undefined; + + type: "mousedown"; + } + + interface MouseEnterEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends MouseEventBase { + // Special handling by jQuery. + type: "mouseover"; + } + + interface MouseLeaveEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends MouseEventBase { + // Special handling by jQuery. + type: "mouseout"; + } + + interface MouseMoveEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends MouseEventBase { + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + * @since 1.1.4 + * @example ​ ````On mouseout of anchors, alert the element type being entered. + ```javascript + $( "a" ).mouseout(function( event ) { + alert( event.relatedTarget.nodeName ); // "DIV" + }); + ``` + */ + relatedTarget?: null | undefined; + + type: "mousemove"; + } + + interface MouseOutEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends MouseEventBase { + type: "mouseout"; + } + + interface MouseOverEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends MouseEventBase { + type: "mouseover"; + } + + interface MouseUpEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends MouseEventBase { + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + * @since 1.1.4 + * @example ​ ````On mouseout of anchors, alert the element type being entered. + ```javascript + $( "a" ).mouseout(function( event ) { + alert( event.relatedTarget.nodeName ); // "DIV" + }); + ``` + */ + relatedTarget?: null | undefined; + + type: "mouseup"; + } + + // region DragEvent + // #region DragEvent + + interface DragEventBase< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends UIEventBase { + originalEvent?: _DragEvent | undefined; + } + + interface DragEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends DragEventBase { + type: "drag"; + } + + interface DragEndEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends DragEventBase { + type: "dragend"; + } + + interface DragEnterEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends DragEventBase { + type: "dragenter"; + } + + interface DragExitEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends DragEventBase { + type: "dragexit"; + } + + interface DragLeaveEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends DragEventBase { + type: "dragleave"; + } + + interface DragOverEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends DragEventBase { + type: "dragover"; + } + + interface DragStartEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends DragEventBase { + type: "dragstart"; + } + + interface DropEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends DragEventBase { + type: "drop"; + } + + // #endregion + + // #endregion + + // region KeyboardEvent + // #region KeyboardEvent + + interface KeyboardEventBase< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends UIEventBase { + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + * @since 1.1.4 + * @example ​ ````On mouseout of anchors, alert the element type being entered. +```javascript +$( "a" ).mouseout(function( event ) { + alert( event.relatedTarget.nodeName ); // "DIV" +}); +``` + */ + relatedTarget?: undefined; + + // MouseEvent + + button: undefined; + buttons: undefined; + clientX: undefined; + clientY: undefined; + offsetX: undefined; + offsetY: undefined; + /** + * The mouse position relative to the left edge of the document. + * @see \`{@link https://api.jquery.com/event.pageX/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageX demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageX: undefined; + /** + * The mouse position relative to the top edge of the document. + * @see \`{@link https://api.jquery.com/event.pageY/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageY demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageY: undefined; + screenX: undefined; + screenY: undefined; + /** @deprecated */ + toElement: undefined; + + // PointerEvent + + pointerId: undefined; + pointerType: undefined; + + // KeyboardEvent + + /** @deprecated */ + char: string | undefined; + /** @deprecated */ + charCode: number; + code: string; + key: string; + /** @deprecated */ + keyCode: number; + + // TouchEvent + + changedTouches: undefined; + targetTouches: undefined; + touches: undefined; + + // MouseEvent, KeyboardEvent + + /** + * For key or mouse events, this property indicates the specific key or button that was pressed. + * @see \`{@link https://api.jquery.com/event.which/ }\` + * @since 1.1.3 + * @example ​ ````Log which key was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + * @example ​ ````Log which mouse button was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + */ + which: number; + + // MouseEvent, KeyboardEvent, TouchEvent + + altKey: boolean; + ctrlKey: boolean; + /** + * Indicates whether the META key was pressed when the event fired. + * @see \`{@link https://api.jquery.com/event.metaKey/ }\` + * @since 1.0.4 + * @example ​ ````Determine whether the META key was pressed when the event fired. +```html + + + + + event.metaKey demo + + + + +​ + +
      +​ + +​ + + +``` + */ + metaKey: boolean; + shiftKey: boolean; + + originalEvent?: _KeyboardEvent | undefined; + } + + interface KeyDownEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends KeyboardEventBase { + type: "keydown"; + } + + interface KeyPressEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends KeyboardEventBase { + type: "keypress"; + } + + interface KeyUpEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends KeyboardEventBase { + type: "keyup"; + } + + // #endregion + + // region TouchEvent + // #region TouchEvent + + interface TouchEventBase< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends UIEventBase { + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + * @since 1.1.4 + * @example ​ ````On mouseout of anchors, alert the element type being entered. +```javascript +$( "a" ).mouseout(function( event ) { + alert( event.relatedTarget.nodeName ); // "DIV" +}); +``` + */ + relatedTarget?: undefined; + + // MouseEvent + + button: undefined; + buttons: undefined; + clientX: undefined; + clientY: undefined; + offsetX: undefined; + offsetY: undefined; + /** + * The mouse position relative to the left edge of the document. + * @see \`{@link https://api.jquery.com/event.pageX/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageX demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageX: undefined; + /** + * The mouse position relative to the top edge of the document. + * @see \`{@link https://api.jquery.com/event.pageY/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageY demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageY: undefined; + screenX: undefined; + screenY: undefined; + /** @deprecated */ + toElement: undefined; + + // PointerEvent + + pointerId: undefined; + pointerType: undefined; + + // KeyboardEvent + + /** @deprecated */ + char: undefined; + /** @deprecated */ + charCode: undefined; + key: undefined; + /** @deprecated */ + keyCode: undefined; + + // TouchEvent + + changedTouches: TouchList; + targetTouches: TouchList; + touches: TouchList; + + // MouseEvent, KeyboardEvent + + /** + * For key or mouse events, this property indicates the specific key or button that was pressed. + * @see \`{@link https://api.jquery.com/event.which/ }\` + * @since 1.1.3 + * @example ​ ````Log which key was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + * @example ​ ````Log which mouse button was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + */ + which: undefined; + + // MouseEvent, KeyboardEvent, TouchEvent + + altKey: boolean; + ctrlKey: boolean; + /** + * Indicates whether the META key was pressed when the event fired. + * @see \`{@link https://api.jquery.com/event.metaKey/ }\` + * @since 1.0.4 + * @example ​ ````Determine whether the META key was pressed when the event fired. +```html + + + + + event.metaKey demo + + + + +​ + +
      +​ + +​ + + +``` + */ + metaKey: boolean; + shiftKey: boolean; + + originalEvent?: _TouchEvent | undefined; + } + + interface TouchCancelEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends TouchEventBase { + type: "touchcancel"; + } + + interface TouchEndEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends TouchEventBase { + type: "touchend"; + } + + interface TouchMoveEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends TouchEventBase { + type: "touchmove"; + } + + interface TouchStartEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends TouchEventBase { + type: "touchstart"; + } + + // #endregion + + // region FocusEvent + // #region FocusEvent + + interface FocusEventBase< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends UIEventBase { + /** + * The other DOM element involved in the event, if any. + * @see \`{@link https://api.jquery.com/event.relatedTarget/ }\` + * @since 1.1.4 + * @example ​ ````On mouseout of anchors, alert the element type being entered. +```javascript +$( "a" ).mouseout(function( event ) { + alert( event.relatedTarget.nodeName ); // "DIV" +}); +``` + */ + relatedTarget?: EventTarget | null | undefined; + + // MouseEvent + + button: undefined; + buttons: undefined; + clientX: undefined; + clientY: undefined; + offsetX: undefined; + offsetY: undefined; + /** + * The mouse position relative to the left edge of the document. + * @see \`{@link https://api.jquery.com/event.pageX/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageX demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageX: undefined; + /** + * The mouse position relative to the top edge of the document. + * @see \`{@link https://api.jquery.com/event.pageY/ }\` + * @since 1.0.4 + * @example ​ ````Show the mouse position relative to the left and top edges of the document (within this iframe). +```html + + + + + event.pageY demo + + + + +​ +
      +​ + +​ + + +``` + */ + pageY: undefined; + screenX: undefined; + screenY: undefined; + /** @deprecated */ + toElement: undefined; + + // PointerEvent + + pointerId: undefined; + pointerType: undefined; + + // KeyboardEvent + + /** @deprecated */ + char: undefined; + /** @deprecated */ + charCode: undefined; + key: undefined; + /** @deprecated */ + keyCode: undefined; + + // TouchEvent + + changedTouches: undefined; + targetTouches: undefined; + touches: undefined; + + // MouseEvent, KeyboardEvent + + /** + * For key or mouse events, this property indicates the specific key or button that was pressed. + * @see \`{@link https://api.jquery.com/event.which/ }\` + * @since 1.1.3 + * @example ​ ````Log which key was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + * @example ​ ````Log which mouse button was depressed. +```html + + + + + event.which demo + + + +​ + +
      +​ + +​ + + +``` + */ + which: undefined; + + // MouseEvent, KeyboardEvent, TouchEvent + + altKey: undefined; + ctrlKey: undefined; + /** + * Indicates whether the META key was pressed when the event fired. + * @see \`{@link https://api.jquery.com/event.metaKey/ }\` + * @since 1.0.4 + * @example ​ ````Determine whether the META key was pressed when the event fired. +```html + + + + + event.metaKey demo + + + + +​ + +
      +​ + +​ + + +``` + */ + metaKey: undefined; + shiftKey: undefined; + + originalEvent?: _FocusEvent | undefined; + } + + interface BlurEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends FocusEventBase { + type: "blur"; + } + + interface FocusEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends FocusEventBase { + type: "focus"; + } + + interface FocusInEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends FocusEventBase { + type: "focusin"; + } + + interface FocusOutEvent< + TDelegateTarget = any, + TData = any, + TCurrentTarget = any, + TTarget = any, + > extends FocusEventBase { + type: "focusout"; + } + + // #endregion + + // #endregion + + interface TypeToTriggeredEventMap< + TDelegateTarget, + TData, + TCurrentTarget, + TTarget, + > { + // Event + + change: ChangeEvent; + resize: ResizeEvent; + scroll: ScrollEvent; + select: SelectEvent; + submit: SubmitEvent; + + // UIEvent + + // MouseEvent + + click: ClickEvent; + contextmenu: ContextMenuEvent; + dblclick: DoubleClickEvent; + mousedown: MouseDownEvent; + mouseenter: MouseEnterEvent; + mouseleave: MouseLeaveEvent; + mousemove: MouseMoveEvent; + mouseout: MouseOutEvent; + mouseover: MouseOverEvent; + mouseup: MouseUpEvent; + + // DragEvent + + drag: DragEvent; + dragend: DragEndEvent; + dragenter: DragEnterEvent; + dragexit: DragExitEvent; + dragleave: DragLeaveEvent; + dragover: DragOverEvent; + dragstart: DragStartEvent; + drop: DropEvent; + + // KeyboardEvent + + keydown: KeyDownEvent; + keypress: KeyPressEvent; + keyup: KeyUpEvent; + + // TouchEvent + + touchcancel: TouchCancelEvent; + touchend: TouchEndEvent; + touchmove: TouchMoveEvent; + touchstart: TouchStartEvent; + + // FocusEvent + + blur: BlurEvent; + focus: FocusEvent; + focusin: FocusInEvent; + focusout: FocusOutEvent; + + [type: string]: TriggeredEvent; + } + + // Extra parameters can be passed from trigger() + type EventHandlerBase = (this: TContext, t: T, ...args: any[]) => any; + + type EventHandler< + TCurrentTarget, + TData = undefined, + > = EventHandlerBase>; + + type TypeEventHandler< + TDelegateTarget, + TData, + TCurrentTarget, + TTarget, + TType extends keyof TypeToTriggeredEventMap, + > = EventHandlerBase< + TCurrentTarget, + TypeToTriggeredEventMap[TType] + >; + + interface TypeEventHandlers< + TDelegateTarget, + TData, + TCurrentTarget, + TTarget, + > extends _TypeEventHandlers { + // No idea why it's necessary to include `object` in the union but otherwise TypeScript complains that + // derived types of Event are not assignable to Event. + [type: string]: + | TypeEventHandler + | false + | undefined + | object; + } + + type _TypeEventHandlers< + TDelegateTarget, + TData, + TCurrentTarget, + TTarget, + > = { + [TType in keyof TypeToTriggeredEventMap]?: + | TypeEventHandler + | false + | object; + }; + + // region Event extensions + // #region Event extensions + + interface EventExtensions { + /** + * The jQuery special event hooks are a set of per-event-name functions and properties that allow code to control the behavior of event processing within jQuery. The mechanism is similar to `fixHooks` in that the special event information is stored in `jQuery.event.special.NAME`, where `NAME` is the name of the special event. Event names are case sensitive. + * + * As with `fixHooks`, the special event hooks design assumes it will be very rare that two unrelated pieces of code want to process the same event name. Special event authors who need to modify events with existing hooks will need to take precautions to avoid introducing unwanted side-effects by clobbering those hooks. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#special-event-hooks }\` + */ + special: SpecialEventHooks; + } + + // region Special event hooks + // #region Special event hooks + + /** + * The jQuery special event hooks are a set of per-event-name functions and properties that allow code to control the behavior of event processing within jQuery. The mechanism is similar to `fixHooks` in that the special event information is stored in `jQuery.event.special.NAME`, where `NAME` is the name of the special event. Event names are case sensitive. + * + * As with `fixHooks`, the special event hooks design assumes it will be very rare that two unrelated pieces of code want to process the same event name. Special event authors who need to modify events with existing hooks will need to take precautions to avoid introducing unwanted side-effects by clobbering those hooks. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#special-event-hooks }\` + */ + // Workaround for TypeScript 2.3 which does not have support for weak types handling. + type SpecialEventHook = { + /** + * Indicates whether this event type should be bubbled when the `.trigger()` method is called; by default it is `false`, meaning that a triggered event will bubble to the element's parents up to the document (if attached to a document) and then to the window. Note that defining `noBubble` on an event will effectively prevent that event from being used for delegated events with `.trigger()`. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#nobubble-boolean }\` + */ + noBubble: boolean; + } | { + /** + * When defined, these string properties specify that a special event should be handled like another event type until the event is delivered. The `bindType` is used if the event is attached directly, and the `delegateType` is used for delegated events. These types are generally DOM event types, and _should not_ be a special event themselves. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#bindtype-string-delegatetype-string }\` + */ + bindType: string; + } | { + /** + * When defined, these string properties specify that a special event should be handled like another event type until the event is delivered. The `bindType` is used if the event is attached directly, and the `delegateType` is used for delegated events. These types are generally DOM event types, and _should not_ be a special event themselves. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#bindtype-string-delegatetype-string }\` + */ + delegateType: string; + } | { + /** + * The setup hook is called the first time an event of a particular type is attached to an element; this provides the hook an opportunity to do processing that will apply to all events of this type on this element. The `this` keyword will be a reference to the element where the event is being attached and `eventHandle` is jQuery's event handler function. In most cases the `namespaces` argument should not be used, since it only represents the namespaces of the _first_ event being attached; subsequent events may not have this same namespaces. + * + * This hook can perform whatever processing it desires, including attaching its own event handlers to the element or to other elements and recording setup information on the element using the `jQuery.data()` method. If the setup hook wants jQuery to add a browser event (via `addEventListener` or `attachEvent`, depending on browser) it should return `false`. In all other cases, jQuery will not add the browser event, but will continue all its other bookkeeping for the event. This would be appropriate, for example, if the event was never fired by the browser but invoked by `.trigger()`. To attach the jQuery event handler in the setup hook, use the `eventHandle` argument. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#setup-function-data-object-namespaces-eventhandle-function }\` + */ + setup(this: TTarget, data: TData, namespaces: string, eventHandle: EventHandler): void | false; + } | { + /** + * The teardown hook is called when the final event of a particular type is removed from an element. The `this` keyword will be a reference to the element where the event is being cleaned up. This hook should return `false` if it wants jQuery to remove the event from the browser's event system (via `removeEventListener` or `detachEvent`). In most cases, the setup and teardown hooks should return the same value. + * + * If the setup hook attached event handlers or added data to an element through a mechanism such as `jQuery.data()`, the teardown hook should reverse the process and remove them. jQuery will generally remove the data and events when an element is totally removed from the document, but failing to remove data or events on teardown will cause a memory leak if the element stays in the document. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#teardown-function }\` + */ + teardown(this: TTarget): void | false; + } | { + /** + * Each time an event handler is added to an element through an API such as `.on()`, jQuery calls this hook. The `this` keyword will be the element to which the event handler is being added, and the `handleObj` argument is as described in the section above. The return value of this hook is ignored. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#add-function-handleobj }\` + */ + add(this: TTarget, handleObj: HandleObject): void; + } | { + /** + * When an event handler is removed from an element using an API such as `.off()`, this hook is called. The `this` keyword will be the element where the handler is being removed, and the `handleObj` argument is as described in the section above. The return value of this hook is ignored. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#remove-function-handleobj }\` + */ + remove(this: TTarget, handleObj: HandleObject): void; + } | { + /** + * Called when the `.trigger()` or `.triggerHandler()` methods are used to trigger an event for the special type from code, as opposed to events that originate from within the browser. The `this` keyword will be the element being triggered, and the event argument will be a `jQuery.Event` object constructed from the caller's input. At minimum, the event type, data, namespace, and target properties are set on the event. The data argument represents additional data passed by `.trigger()` if present. + * + * The trigger hook is called early in the process of triggering an event, just after the `jQuery.Event` object is constructed and before any handlers have been called. It can process the triggered event in any way, for example by calling `event.stopPropagation()` or `event.preventDefault()` before returning. If the hook returns `false`, jQuery does not perform any further event triggering actions and returns immediately. Otherwise, it performs the normal trigger processing, calling any event handlers for the element and bubbling the event (unless propagation is stopped in advance or `noBubble` was specified for the special event) to call event handlers attached to parent elements. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#trigger-function-event-jquery-event-data-object }\` + */ + trigger(this: TTarget, event: Event, data: TData): void | false; + } | { + /** + * When the `.trigger()` method finishes running all the event handlers for an event, it also looks for and runs any method on the target object by the same name unless of the handlers called `event.preventDefault()`. So, `.trigger( "submit" )` will execute the `submit()` method on the element if one exists. When a `_default` hook is specified, the hook is called just prior to checking for and executing the element's default method. If this hook returns the value `false` the element's default method will be called; otherwise it is not. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#_default-function-event-jquery-event-data-object }\` + */ + _default(event: TriggeredEvent, data: TData): void | false; + } | { + /** + * jQuery calls a handle hook when the event has occurred and jQuery would normally call the user's event handler specified by `.on()` or another event binding method. If the hook exists, jQuery calls it _instead_ of that event handler, passing it the event and any data passed from `.trigger()` if it was not a native event. The `this` keyword is the DOM element being handled, and `event.handleObj` property has the detailed event information. + * + * Based in the information it has, the handle hook should decide whether to call the original handler function which is in `event.handleObj.handler`. It can modify information in the event object before calling the original handler, but _must restore_ that data before returning or subsequent unrelated event handlers may act unpredictably. In most cases, the handle hook should return the result of the original handler, but that is at the discretion of the hook. The handle hook is unique in that it is the only special event function hook that is called under its original special event name when the type is mapped using `bindType` and `delegateType`. For that reason, it is almost always an error to have anything other than a handle hook present if the special event defines a `bindType` and `delegateType`, since those other hooks will never be called. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#handle-function-event-jquery-event-data-object }\` + */ + handle( + this: TTarget, + event: TriggeredEvent & { handleObj: HandleObject }, + ...data: TData[] + ): void; + } | { + preDispatch(this: TTarget, event: Event): false | void; + } | { + postDispatch(this: TTarget, event: Event): void; + } | { + [key: string]: any; + }; + + interface SpecialEventHooks { + [event: string]: SpecialEventHook; + } + + /** + * Many of the special event hook functions below are passed a `handleObj` object that provides more information about the event, how it was attached, and its current state. This object and its contents should be treated as read-only data, and only the properties below are documented for use by special event handlers. + * @see \`{@link https://learn.jquery.com/events/event-extensions/#the-handleobj-object }\` + */ + interface HandleObject { + /** + * The type of event, such as `"click"`. When special event mapping is used via `bindType` or `delegateType`, this will be the mapped type. + */ + readonly type: string; + /** + * The original type name regardless of whether it was mapped via `bindType` or `delegateType`. So when a "pushy" event is mapped to "click" its `origType` would be "pushy". + */ + readonly origType: string; + /** + * Namespace(s), if any, provided when the event was attached, such as `"myPlugin"`. When multiple namespaces are given, they are separated by periods and sorted in ascending alphabetical order. If no namespaces are provided, this property is an empty string. + */ + readonly namespace: string; + /** + * For delegated events, this is the selector used to filter descendant elements and determine if the handler should be called. For directly bound events, this property is `null`. + */ + readonly selector: string | undefined | null; + /** + * The data, if any, passed to jQuery during event binding, e.g. `{ myData: 42 }`. If the data argument was omitted or `undefined`, this property is `undefined` as well. + */ + readonly data: TData; + /** + * Event handler function passed to jQuery during event binding. If `false` was passed during event binding, the handler refers to a single shared function that simply returns `false`. + */ + readonly handler: EventHandler; + } + + // #endregion + + // #endregion + + // #endregion + + interface NameValuePair { + name: string; + value: string; + } + + // region Coordinates + // #region Coordinates + + interface Coordinates { + left: number; + top: number; + } + + // Workaround for TypeScript 2.3 which does not have support for weak types handling. + type CoordinatesPartial = + | Pick + | Pick + | { [key: string]: never }; + + // #endregion + + // region Val hooks + // #region Val hooks + + // Workaround for TypeScript 2.3 which does not have support for weak types handling. + type ValHook = { + get(elem: TElement): any; + } | { + set(elem: TElement, value: any): any; + } | { + [key: string]: never; + }; + + interface ValHooks { + // Set to HTMLElement to minimize breaks but should probably be Element. + [nodeName: string]: ValHook; + } + + // #endregion + + type _Falsy = false | null | undefined | 0 | "" | typeof document.all; +} + +declare const jQuery: JQueryStatic; +declare const $: JQueryStatic; + +type _Event = Event; +type _UIEvent = UIEvent; +type _MouseEvent = MouseEvent; +type _DragEvent = DragEvent; +type _KeyboardEvent = KeyboardEvent; +type _TouchEvent = TouchEvent; +type _FocusEvent = FocusEvent; + +// region ES5 compatibility +// #region ES5 compatibility + +// Forward declaration of `Iterable`. +// tslint:disable-next-line:no-empty-interface +interface Iterable {} + +interface SymbolConstructor { + /** + * A String value that is used in the creation of the default string description of an object. + * Called by the built-in method Object.prototype.toString. + */ + readonly toStringTag: symbol; +} + +declare var Symbol: SymbolConstructor; + +// #endregion diff --git a/node_modules/@types/jquery/package.json b/node_modules/@types/jquery/package.json new file mode 100644 index 0000000..fd0f8d8 --- /dev/null +++ b/node_modules/@types/jquery/package.json @@ -0,0 +1,132 @@ +{ + "name": "@types/jquery", + "version": "3.5.27", + "description": "TypeScript definitions for jquery", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jquery", + "license": "MIT", + "contributors": [ + { + "name": "Leonard Thieu", + "githubUsername": "leonard-thieu", + "url": "https://github.com/leonard-thieu" + }, + { + "name": "Boris Yankov", + "githubUsername": "borisyankov", + "url": "https://github.com/borisyankov" + }, + { + "name": "Christian Hoffmeister", + "githubUsername": "choffmeister", + "url": "https://github.com/choffmeister" + }, + { + "name": "Steve Fenton", + "githubUsername": "Steve-Fenton", + "url": "https://github.com/Steve-Fenton" + }, + { + "name": "Diullei Gomes", + "githubUsername": "Diullei", + "url": "https://github.com/Diullei" + }, + { + "name": "Tass Iliopoulos", + "githubUsername": "tasoili", + "url": "https://github.com/tasoili" + }, + { + "name": "Sean Hill", + "githubUsername": "seanski", + "url": "https://github.com/seanski" + }, + { + "name": "Guus Goossens", + "githubUsername": "Guuz", + "url": "https://github.com/Guuz" + }, + { + "name": "Kelly Summerlin", + "githubUsername": "ksummerlin", + "url": "https://github.com/ksummerlin" + }, + { + "name": "Basarat Ali Syed", + "githubUsername": "basarat", + "url": "https://github.com/basarat" + }, + { + "name": "Nicholas Wolverson", + "githubUsername": "nwolverson", + "url": "https://github.com/nwolverson" + }, + { + "name": "Derek Cicerone", + "githubUsername": "derekcicerone", + "url": "https://github.com/derekcicerone" + }, + { + "name": "Andrew Gaspar", + "githubUsername": "AndrewGaspar", + "url": "https://github.com/AndrewGaspar" + }, + { + "name": "Seikichi Kondo", + "githubUsername": "seikichi", + "url": "https://github.com/seikichi" + }, + { + "name": "Benjamin Jackman", + "githubUsername": "benjaminjackman", + "url": "https://github.com/benjaminjackman" + }, + { + "name": "Josh Strobl", + "githubUsername": "JoshStrobl", + "url": "https://github.com/JoshStrobl" + }, + { + "name": "John Reilly", + "githubUsername": "johnnyreilly", + "url": "https://github.com/johnnyreilly" + }, + { + "name": "Dick van den Brink", + "githubUsername": "DickvdBrink", + "url": "https://github.com/DickvdBrink" + }, + { + "name": "Thomas Schulz", + "githubUsername": "King2500", + "url": "https://github.com/King2500" + }, + { + "name": "Terry Mun", + "githubUsername": "terrymun", + "url": "https://github.com/terrymun" + }, + { + "name": "Martin Badin", + "githubUsername": "martin-badin", + "url": "https://github.com/martin-badin" + }, + { + "name": "Chris Frewin", + "githubUsername": "princefishthrower", + "url": "https://github.com/princefishthrower" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/jquery" + }, + "scripts": {}, + "dependencies": { + "@types/sizzle": "*" + }, + "typesPublisherContentHash": "82e6fada6b702484e9d791252e0d9d10ab1d7f879235997d31ba85e988b245bc", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/sizzle/LICENSE b/node_modules/@types/sizzle/LICENSE new file mode 100644 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/sizzle/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/sizzle/README.md b/node_modules/@types/sizzle/README.md new file mode 100644 index 0000000..89ee519 --- /dev/null +++ b/node_modules/@types/sizzle/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/sizzle` + +# Summary +This package contains type definitions for sizzle (https://sizzlejs.com). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/sizzle. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 15:11:36 GMT + * Dependencies: none + +# Credits +These definitions were written by [Leonard Thieu](https://github.com/leonard-thieu). diff --git a/node_modules/@types/sizzle/index.d.ts b/node_modules/@types/sizzle/index.d.ts new file mode 100644 index 0000000..4e0bb05 --- /dev/null +++ b/node_modules/@types/sizzle/index.d.ts @@ -0,0 +1,90 @@ +export as namespace Sizzle; + +declare const Sizzle: SizzleStatic; +export = Sizzle; + +interface SizzleStatic { + selectors: Sizzle.Selectors; + >( + selector: string, + context: Element | Document | DocumentFragment, + results: TArrayLike, + ): TArrayLike; + (selector: string, context?: Element | Document | DocumentFragment): Element[]; + // tslint:disable-next-line:ban-types + compile(selector: string): Function; + matchesSelector(element: Element, selector: string): boolean; + matches(selector: string, elements: Element[]): Element[]; +} + +declare namespace Sizzle { + interface Selectors { + cacheLength: number; + match: Selectors.Matches; + find: Selectors.FindFunctions; + preFilter: Selectors.PreFilterFunctions; + filter: Selectors.FilterFunctions; + attrHandle: Selectors.AttrHandleFunctions; + pseudos: Selectors.PseudoFunctions; + setFilters: Selectors.SetFilterFunctions; + createPseudo(fn: Selectors.CreatePseudoFunction): Selectors.PseudoFunction; + } + + namespace Selectors { + interface Matches { + [name: string]: RegExp; + } + + interface FindFunction { + (match: RegExpMatchArray, context: Element | Document, isXML: boolean): Element[] | void; + } + + interface FindFunctions { + [name: string]: FindFunction; + } + + interface PreFilterFunction { + (match: RegExpMatchArray): string[]; + } + + interface PreFilterFunctions { + [name: string]: PreFilterFunction; + } + + interface FilterFunction { + (element: string, ...matches: string[]): boolean; + } + + interface FilterFunctions { + [name: string]: FilterFunction; + } + + interface AttrHandleFunction { + (elem: any, casePreservedName: string, isXML: boolean): string; + } + + interface AttrHandleFunctions { + [name: string]: AttrHandleFunction; + } + + interface PseudoFunction { + (elem: Element): boolean; + } + + interface PseudoFunctions { + [name: string]: PseudoFunction; + } + + interface SetFilterFunction { + (elements: Element[], argument: number, not: boolean): Element[]; + } + + interface SetFilterFunctions { + [name: string]: SetFilterFunction; + } + + interface CreatePseudoFunction { + (...args: any[]): PseudoFunction; + } + } +} diff --git a/node_modules/@types/sizzle/package.json b/node_modules/@types/sizzle/package.json new file mode 100644 index 0000000..8e48d88 --- /dev/null +++ b/node_modules/@types/sizzle/package.json @@ -0,0 +1,25 @@ +{ + "name": "@types/sizzle", + "version": "2.3.6", + "description": "TypeScript definitions for sizzle", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/sizzle", + "license": "MIT", + "contributors": [ + { + "name": "Leonard Thieu", + "githubUsername": "leonard-thieu", + "url": "https://github.com/leonard-thieu" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/sizzle" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "ec2c03b458b97b28f22d61cbaa74de251f5e33494e71b8a7920fb6f78fffd2b3", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/@types/toastr/LICENSE b/node_modules/@types/toastr/LICENSE new file mode 100644 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/toastr/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/toastr/README.md b/node_modules/@types/toastr/README.md new file mode 100644 index 0000000..d746214 --- /dev/null +++ b/node_modules/@types/toastr/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/toastr` + +# Summary +This package contains type definitions for toastr (https://github.com/CodeSeven/toastr). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/toastr. + +### Additional Details + * Last updated: Tue, 07 Nov 2023 15:11:36 GMT + * Dependencies: [@types/jquery](https://npmjs.com/package/@types/jquery) + +# Credits +These definitions were written by [Boris Yankov](https://github.com/borisyankov). diff --git a/node_modules/@types/toastr/index.d.ts b/node_modules/@types/toastr/index.d.ts new file mode 100644 index 0000000..f3e069b --- /dev/null +++ b/node_modules/@types/toastr/index.d.ts @@ -0,0 +1,361 @@ +/// + +interface ToastrOptions { + /** + * Optionally override the animation easing to show or hide the toasts. + * swing and linear are built into jQuery. + * @default swing + */ + showEasing?: string | undefined; + /** + * Optionally override the animation easing to show or hide the toasts. + * swing and linear are built into jQuery. + * @default swing + */ + hideEasing?: string | undefined; + /** + * Use the jQuery show method of your choice. + * The methods fadeIn/fadeOut, slideDown/slideUp, and show/hide are built into jQuery. + * @default fadeIn + */ + showMethod?: string | undefined; + /** + * Use the jQuery hide method of your choice. + * The methods fadeIn/fadeOut, slideDown/slideUp, and show/hide are built into jQuery. + * @default fadeOut + */ + hideMethod?: string | undefined; + /** + * Should a close button be shown? + * @default undefined + */ + closeButton?: boolean | undefined; + /** + * CSS class the close button will be given. + * @default toast-close-button + */ + closeClass?: string | undefined; + /** + * Time in milliseconds the toast should take to hide, when the close button is clicked. + * Falls back to hide configuration. + * @default false + */ + closeDuration?: number | undefined; + /** + * The animation easing while hiding the toast, when the close button is clicked. + * Falls back to hide configuration. + * swing and linear are built into jQuery. + * @default false + */ + closeEasing?: string | undefined; + /** + * Use the jQuery show/hide method of your choice, when the close button is clicked. + * Falls back to hide configuration. + * The methods fadeIn/fadeOut, slideDown/slideUp, and show/hide are built into jQuery. + * @default false + */ + closeMethod?: string | undefined; + /** + * Set to false so that the toast hides event if hovered. + * @default true + */ + closeOnHover?: boolean | undefined; + /** + * Html for the close button. + */ + closeHtml?: string | undefined; + /** + * onCloseClick function callback, fired when the close button is clicked. + * Closing cannot be prevented by ev.stopPropagation() etc. + * @default undefined + */ + onCloseClick?: ((ev: JQuery.ClickEvent) => void) | undefined; + /** + * Should clicking on toast dismiss it? + * @default true + */ + tapToDismiss?: boolean | undefined; + /** + * CSS class the toast element will be given. + * @default toast + */ + toastClass?: string | undefined; + /** + * Id toast container will be given. + * @default toast-container + */ + containerId?: string | undefined; + /** + * Should debug details be outputted to the console? + * @default false + */ + debug?: boolean | undefined; + /** + * Time in milliseconds the toast should take to show. + * @default 300 + */ + showDuration?: number | undefined; + /** + * onShown function callback. + * @default undefined + */ + onShown?: (() => void) | undefined; + /** + * Time in milliseconds the toast should take to hide. + * @default 1000 + */ + hideDuration?: number | undefined; + /** + * onHidden function callback. + * @default undefined + */ + onHidden?: (() => void) | undefined; + /** + * Time in milliseconds the toast should be displayed after leaving mouse over. + * Set timeOut and extendedTimeOut to 0 to make it sticky. + * @default 1000 + */ + extendedTimeOut?: number | undefined; + /** + * If specified, you must provide all classes. + */ + iconClasses?: { + /** + * Icon to use on error toasts. + * @default toast-error + */ + error: string; + /** + * Icon to use on info toasts. + * @default toast-info + */ + info: string; + /** + * Icon to use on success toasts. + * @default toast-success + */ + success: string; + /** + * Icon to use on warning toasts. + * @default toast-warning + */ + warning: string; + } | undefined; + /** + * Icon to use for toast. + * @default toast-info + */ + iconClass?: string | undefined; + /** + * Where toast should be displayed. + * The default stylesheet covers: + * toast-top-left, toast-top-center, toast-top-right, toast-top-full-width, + * toast-bottom-left, toast-bottom-center, toast-bottom-right, toast-bottom-full-width + * @default toast-top-right + */ + positionClass?: string | undefined; + /** + * Time in milliseconds that the toast should be displayed. + * Set timeOut and extendedTimeOut to 0 to make it sticky. + * @default 5000 + */ + timeOut?: number | undefined; + /** + * CSS class the title element will be given. + * @default toast-title + */ + titleClass?: string | undefined; + /** + * CSS class the message element will be given. + * @default toast-message + */ + messageClass?: string | undefined; + /** + * Set newest toast to appear on top. + * @default true + */ + newestOnTop?: boolean | undefined; + /** + * The element to put the toastr container + * @default body + */ + target?: string | undefined; + /** + * Rather than having identical toasts stack, set the preventDuplicates property to true. + * Duplicates are matched to the previous toast based on their message content. + * @default false + */ + preventDuplicates?: boolean | undefined; + /** + * Visually indicates how long before a toast expires. + * @default false + */ + progressBar?: boolean | undefined; + /** + * CSS class the progressbar element will be given. + * @default toast-progress + */ + progressClass?: string | undefined; + /** + * Function to execute on toast click. Closing cannot be prevented by ev.stopPropagation() etc. + * @default undefined + */ + onclick?: ((ev: JQuery.ClickEvent) => void) | undefined; + /** + * Should the title and message text be escaped? + * @default false + */ + escapeHtml?: boolean | undefined; + /** + * Flip the toastr to be displayed properly for right-to-left languages. + * @default false + */ + rtl?: boolean | undefined; +} + +interface ToastrDisplayMethod { + /** + * Create a toast + * + * @param message Message to display in toast, or HTML content + * @param title Title to display on toast + * @param overrides Option values for toast + */ + (message: string | JQuery, title?: string, overrides?: ToastrOptions): JQuery; +} + +type ToastrType = "error" | "info" | "success" | "warning"; + +interface ToastMap { + /** + * The toast type. + */ + type: ToastrType; + /** + * The toast message. + */ + message: string; + /** + * The toast icon class. + */ + iconClass: string; + /** + * The toast title. + */ + title?: string | undefined; + /** + * Any override options specified when the toast was created. + */ + optionsOverride?: ToastrOptions | undefined; +} + +interface ToastrResponse { + /** + * The internal toast id. + */ + toastId: number; + /** + * The current state of the toast. + */ + state: "visible" | "hidden"; + /** + * The datetime the toast was opened. + */ + startTime: Date; + /** + * The datetime the toast was closed, if the state is hidden. + */ + endTime?: Date | undefined; + /** + * The toastr options. + */ + options: ToastrOptions; + /** + * The event's toast details. + */ + map: ToastMap; +} + +interface Toastr { + /** + * Clear toasts + */ + clear: { + /** + * Clear specific toast + * + * @param toast Toast to clear + * @param clearOptions force clearing a toast, ignoring focus + */ + (toast?: JQuery, clearOptions?: { force: boolean }): void; + }; + /** + * Removes toasts (without animation) + */ + remove: { + /** + * Removes all toasts (without animation) + */ + (): void; + /** + * Removes specific toast (without animation) + * + * @param toast Toast to remove + */ + (toast: JQuery): void; + }; + /** + * Create an error toast + */ + error: ToastrDisplayMethod; + /** + * Create an info toast + */ + info: ToastrDisplayMethod; + /** + * The toatsr options object + */ + options: ToastrOptions; + /** + * Create a success toast + */ + success: ToastrDisplayMethod; + /** + * Create a warning toast + */ + warning: ToastrDisplayMethod; + /** + * Get toastr version + */ + version: string; + /** + * Get or create a container. + */ + getContainer: { + /** + * Get the container by options.containerId. + * + * @param options Option values for the container + */ + (options?: ToastrOptions): JQuery; + /** + * Get the container by options.containerId. + * If it doesn't exist, it will be created according to options. + * + * @param options Option values for the container + * @param create Use true to create a container, if it doesn't exist + */ + (options: ToastrOptions, create: boolean): JQuery; + }; + /** + * Register a callback to be called when a toast gets created or hidden. + * + * @param callback The function which will be passed the event details. + */ + subscribe: (callback: (response: ToastrResponse) => void) => void; +} + +declare var toastr: Toastr; +declare module "toastr" { + export = toastr; +} diff --git a/node_modules/@types/toastr/package.json b/node_modules/@types/toastr/package.json new file mode 100644 index 0000000..0632703 --- /dev/null +++ b/node_modules/@types/toastr/package.json @@ -0,0 +1,27 @@ +{ + "name": "@types/toastr", + "version": "2.1.43", + "description": "TypeScript definitions for toastr", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/toastr", + "license": "MIT", + "contributors": [ + { + "name": "Boris Yankov", + "githubUsername": "borisyankov", + "url": "https://github.com/borisyankov" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/toastr" + }, + "scripts": {}, + "dependencies": { + "@types/jquery": "*" + }, + "typesPublisherContentHash": "446f80ac864d626257c688c4b1566813ac5ab4644d22a73db5f8722a44e7ddaf", + "typeScriptVersion": "4.5" +} \ No newline at end of file diff --git a/node_modules/jquery/AUTHORS.txt b/node_modules/jquery/AUTHORS.txt new file mode 100644 index 0000000..648a3f0 --- /dev/null +++ b/node_modules/jquery/AUTHORS.txt @@ -0,0 +1,371 @@ +John Resig +Gilles van den Hoven +Michael Geary +Stefan Petre +Yehuda Katz +Corey Jewett +Klaus Hartl +Franck Marcia +Jörn Zaefferer +Paul Bakaus +Brandon Aaron +Mike Alsup +Dave Methvin +Ed Engelhardt +Sean Catchpole +Paul Mclanahan +David Serduke +Richard D. Worth +Scott González +Ariel Flesler +Cheah Chu Yeow +Andrew Chalkley +Fabio Buffoni +Stefan Bauckmeier  +Jon Evans +TJ Holowaychuk +Riccardo De Agostini +Michael Bensoussan +Louis-Rémi Babé +Robert Katić +Damian Janowski +Anton Kovalyov +Dušan B. Jovanovic +Earle Castledine +Rich Dougherty +Kim Dalsgaard +Andrea Giammarchi +Fabian Jakobs +Mark Gibson +Karl Swedberg +Justin Meyer +Ben Alman +James Padolsey +David Petersen +Batiste Bieler +Jake Archibald +Alexander Farkas +Filipe Fortes +Rick Waldron +Neeraj Singh +Paul Irish +Iraê Carvalho +Matt Curry +Michael Monteleone +Noah Sloan +Tom Viner +J. Ryan Stinnett +Douglas Neiner +Adam J. Sontag +Heungsub Lee +Dave Reed +Carl Fürstenberg +Jacob Wright +Ralph Whitbeck +unknown +temp01 +Colin Snover +Jared Grippe +Ryan W Tenney +Alex Sexton +Pinhook +Ron Otten +Jephte Clain +Anton Matzneller +Dan Heberden +Henri Wiechers +Russell Holbrook +Julian Aubourg +Gianni Alessandro Chiappetta +Scott Jehl +James Burke +Jonas Pfenniger +Xavi Ramirez +Sylvester Keil +Brandon Sterne +Mathias Bynens +Lee Carpenter +Timmy Willison <4timmywil@gmail.com> +Corey Frang +Digitalxero +David Murdoch +Josh Varner +Charles McNulty +Jordan Boesch +Jess Thrysoee +Michael Murray +Alexis Abril +Rob Morgan +John Firebaugh +Sam Bisbee +Gilmore Davidson +Brian Brennan +Xavier Montillet +Daniel Pihlstrom +Sahab Yazdani +avaly +Scott Hughes +Mike Sherov +Greg Hazel +Schalk Neethling +Denis Knauf +Timo Tijhof +Steen Nielsen +Anton Ryzhov +Shi Chuan +Matt Mueller +Berker Peksag +Toby Brain +Justin +Daniel Herman +Oleg Gaidarenko +Rock Hymas +Richard Gibson +Rafaël Blais Masson +cmc3cn <59194618@qq.com> +Joe Presbrey +Sindre Sorhus +Arne de Bree +Vladislav Zarakovsky +Andrew E Monat +Oskari +Joao Henrique de Andrade Bruni +tsinha +Dominik D. Geyer +Matt Farmer +Trey Hunner +Jason Moon +Jeffery To +Kris Borchers +Vladimir Zhuravlev +Jacob Thornton +Chad Killingsworth +Vitya Muhachev +Nowres Rafid +David Benjamin +Alan Plum +Uri Gilad +Chris Faulkner +Marcel Greter +Elijah Manor +Daniel Chatfield +Daniel Gálvez +Nikita Govorov +Wesley Walser +Mike Pennisi +Matthias Jäggli +Devin Cooper +Markus Staab +Dave Riddle +Callum Macrae +Jonathan Sampson +Benjamin Truyman +Jay Merrifield +James Huston +Sai Lung Wong +Erick Ruiz de Chávez +David Bonner +Allen J Schmidt Jr +Akintayo Akinwunmi +MORGAN +Ismail Khair +Carl Danley +Mike Petrovich +Greg Lavallee +Tom H Fuertes +Roland Eckl +Yiming He +David Fox +Bennett Sorbo +Paul Ramos +Rod Vagg +Sebastian Burkhard +Zachary Adam Kaplan +Adam Coulombe +nanto_vi +nanto +Danil Somsikov +Ryunosuke SATO +Diego Tres +Jean Boussier +Andrew Plummer +Mark Raddatz +Pascal Borreli +Isaac Z. Schlueter +Karl Sieburg +Nguyen Phuc Lam +Dmitry Gusev +Steven Benner +Li Xudong +Michał Gołębiowski-Owczarek +Renato Oliveira dos Santos +Frederic Junod +Tom H Fuertes +Mitch Foley +ros3cin +Kyle Robinson Young +John Paul +Jason Bedard +Chris Talkington +Eddie Monge +Terry Jones +Jason Merino +Dan Burzo +Jeremy Dunck +Chris Price +Guy Bedford +njhamann +Goare Mao +Amey Sakhadeo +Mike Sidorov +Anthony Ryan +Lihan Li +George Kats +Dongseok Paeng +Ronny Springer +Ilya Kantor +Marian Sollmann +Chris Antaki +David Hong +Jakob Stoeck +Christopher Jones +Forbes Lindesay +S. Andrew Sheppard +Leonardo Balter +Rodrigo Rosenfeld Rosas +Daniel Husar +Philip Jägenstedt +John Hoven +Roman Reiß +Benjy Cui +Christian Kosmowski +David Corbacho +Liang Peng +TJ VanToll +Aurelio De Rosa +Senya Pugach +Dan Hart +Nazar Mokrynskyi +Benjamin Tan +Amit Merchant +Jason Bedard +Veaceslav Grimalschi +Richard McDaniel +Arthur Verschaeve +Shivaji Varma +Ben Toews +Bin Xin +Neftaly Hernandez +T.J. Crowder +Nicolas HENRY +Frederic Hemberger +Victor Homyakov +Aditya Raghavan +Anne-Gaelle Colom +Leonardo Braga +George Mauer +Stephen Edgar +Thomas Tortorini +Jörn Wagner +Jon Hester +Colin Frick +Winston Howes +Alexander O'Mara +Chris Rebert +Bastian Buchholz +Mu Haibao +Calvin Metcalf +Arthur Stolyar +Gabriel Schulhof +Gilad Peleg +Julian Alexander Murillo +Kevin Kirsche +Martin Naumann +Yongwoo Jeon +John-David Dalton +Marek Lewandowski +Bruno Pérel +Daniel Nill +Reed Loden +Sean Henderson +Gary Ye +Richard Kraaijenhagen +Connor Atherton +Christian Grete +Tom von Clef +Liza Ramo +Joelle Fleurantin +Steve Mao +Jon Dufresne +Jae Sung Park +Josh Soref +Saptak Sengupta +Henry Wong +Jun Sun +Martijn W. van der Lee +Devin Wilson +Damian Senn +Zack Hall +Vitaliy Terziev +Todor Prikumov +Bernhard M. Wiedemann +Jha Naman +Alexander Lisianoi +William Robinet +Joe Trumbull +Alexander K +Ralin Chimev +Felipe Sateler +Christophe Tafani-Dereeper +Manoj Kumar +David Broder-Rodgers +Alex Louden +Alex Padilla +karan-96 +南漂一卒 +Erik Lax +Boom Lee +Andreas Solleder +Pierre Spring +Shashanka Nataraj +CDAGaming +Matan Kotler-Berkowitz <205matan@gmail.com> +Jordan Beland +Henry Zhu +Nilton Cesar +basil.belokon +Andrey Meshkov +tmybr11 +Luis Emilio Velasco Sanchez +Ed S +Bert Zhang +Sébastien Règne +wartmanm <3869625+wartmanm@users.noreply.github.com> +Siddharth Dungarwal +abnud1 +Andrei Fangli +Marja Hölttä +buddh4 +Hoang +Wonseop Kim +Pat O'Callaghan +JuanMa Ruiz +Ahmed.S.ElAfifi +Christian Oliff +Christian Wenz +Sean Robinson +Jonathan +Pierre Grimaud +Beatriz Rezener +Natalia Sroka <37873210+natipo@users.noreply.github.com> +Wonhyoung Park +Dallas Fraser +fecore1 <89127124+fecore1@users.noreply.github.com> +ygj6 <7699524+ygj6@users.noreply.github.com> +Simon Legner +Vladimir Sitnikov +Anders Kaseorg +Alex +Timo Tijhof +Gabriela Gutierrez +Dimitri Papadopoulos Orfanos <3234522+DimitriPapadopoulos@users.noreply.github.com> diff --git a/node_modules/jquery/LICENSE.txt b/node_modules/jquery/LICENSE.txt new file mode 100644 index 0000000..f642c3f --- /dev/null +++ b/node_modules/jquery/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/jquery/README.md b/node_modules/jquery/README.md new file mode 100644 index 0000000..fcc11f3 --- /dev/null +++ b/node_modules/jquery/README.md @@ -0,0 +1,60 @@ +# jQuery + +> jQuery is a fast, small, and feature-rich JavaScript library. + +For information on how to get started and how to use jQuery, please see [jQuery's documentation](https://api.jquery.com/). +For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery). + +If upgrading, please see the [blog post for 3.7.1](https://blog.jquery.com/2023/08/28/jquery-3-7-1-released-reliable-table-row-dimensions/). This includes notable differences from the previous version and a more readable changelog. + +## Including jQuery + +Below are some of the most common ways to include jQuery. + +### Browser + +#### Script tag + +```html + +``` + +#### Webpack / Browserify / Babel + +There are several ways to use [Webpack](https://webpack.js.org/), [Browserify](http://browserify.org/) or [Babel](https://babeljs.io/). For more information on using these tools, please refer to the corresponding project's documentation. In the script, including jQuery will usually look like this: + +```js +import $ from "jquery"; +``` + +If you need to use jQuery in a file that's not an ECMAScript module, you can use the CommonJS syntax: + +```js +var $ = require( "jquery" ); +``` + +#### AMD (Asynchronous Module Definition) + +AMD is a module format built for the browser. For more information, we recommend [require.js' documentation](https://requirejs.org/docs/whyamd.html). + +```js +define( [ "jquery" ], function( $ ) { + +} ); +``` + +### Node + +To include jQuery in [Node](https://nodejs.org/), first install with npm. + +```sh +npm install jquery +``` + +For jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/jsdom/jsdom). This can be useful for testing purposes. + +```js +const { JSDOM } = require( "jsdom" ); +const { window } = new JSDOM( "" ); +const $ = require( "jquery" )( window ); +``` diff --git a/node_modules/jquery/bower.json b/node_modules/jquery/bower.json new file mode 100644 index 0000000..95798d5 --- /dev/null +++ b/node_modules/jquery/bower.json @@ -0,0 +1,14 @@ +{ + "name": "jquery", + "main": "dist/jquery.js", + "license": "MIT", + "ignore": [ + "package.json" + ], + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ] +} \ No newline at end of file diff --git a/node_modules/jquery/dist/jquery.js b/node_modules/jquery/dist/jquery.js new file mode 100644 index 0000000..1a86433 --- /dev/null +++ b/node_modules/jquery/dist/jquery.js @@ -0,0 +1,10716 @@ +/*! + * jQuery JavaScript Library v3.7.1 + * https://jquery.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2023-08-28T13:37Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket trac-14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var version = "3.7.1", + + rhtmlSuffix = /HTML$/i, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + + // Retrieve the text value of an array of DOM nodes + text: function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += jQuery.text( node ); + } + } + if ( nodeType === 1 || nodeType === 11 ) { + return elem.textContent; + } + if ( nodeType === 9 ) { + return elem.documentElement.textContent; + } + if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + isXMLDoc: function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Assume HTML when documentElement doesn't yet exist, such as inside + // document fragments. + return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// 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 isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +} +var pop = arr.pop; + + +var sort = arr.sort; + + +var splice = arr.splice; + + +var whitespace = "[\\x20\\t\\r\\n\\f]"; + + +var rtrimCSS = new RegExp( + "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", + "g" +); + + + + +// Note: an element does not contain itself +jQuery.contains = function( a, b ) { + var bup = b && b.parentNode; + + return a === bup || !!( bup && bup.nodeType === 1 && ( + + // Support: IE 9 - 11+ + // IE doesn't have `contains` on SVG. + a.contains ? + a.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); +}; + + + + +// CSS string/identifier serialization +// https://drafts.csswg.org/cssom/#common-serializing-idioms +var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + +function fcssescape( 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; +} + +jQuery.escapeSelector = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + + + + +var preferredDoc = document, + pushNative = push; + +( function() { + +var i, + Expr, + outermostContext, + sortInput, + hasDuplicate, + push = pushNative, + + // Local document vars + document, + documentElement, + documentIsHTML, + rbuggyQSA, + matches, + + // Instance-specific data + expando = jQuery.expando, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" + + "loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + + whitespace + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + ID: new RegExp( "^#(" + identifier + ")" ), + CLASS: new RegExp( "^\\.(" + identifier + ")" ), + TAG: new RegExp( "^(" + identifier + "|[*])" ), + ATTR: new RegExp( "^" + attributes ), + PSEUDO: new RegExp( "^" + pseudos ), + CHILD: new RegExp( + "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + bool: new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + needsContext: new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + if ( nonHex ) { + + // Strip the backslash prefix from a non-hex escape sequence + return nonHex; + } + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + return high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes; see `setDocument`. + // Support: IE 9 - 11+, Edge 12 - 18+ + // Removing the function wrapper causes a "Permission Denied" + // error in IE/Edge. + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && nodeName( elem, "fieldset" ); + }, + { dir: "parentNode", next: "legend" } + ); + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android <=4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { + apply: function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + }, + call: function( target ) { + pushNative.apply( target, slice.call( arguments, 1 ) ); + } + }; +} + +function find( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE 9 only + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + push.call( results, elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE 9 only + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + find.contains( context, elem ) && + elem.id === m ) { + + push.call( results, elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when + // strict-comparing two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( newContext != context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = jQuery.escapeSelector( nid ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrimCSS, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties + // (see https://github.com/jquery/sizzle/issues/157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by jQuery selector module + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + return nodeName( elem, "input" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) && + elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11+ + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a jQuery selector context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [node] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +function setDocument( node ) { + var subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + documentElement = document.documentElement; + documentIsHTML = !jQuery.isXMLDoc( document ); + + // Support: iOS 7 only, IE 9 - 11+ + // Older browsers didn't support unprefixed `matches`. + matches = documentElement.matches || + documentElement.webkitMatchesSelector || + documentElement.msMatchesSelector; + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors + // (see trac-13936). + // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`, + // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well. + if ( documentElement.msMatchesSelector && + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 9 - 11+, Edge 12 - 18+ + subWindow.addEventListener( "unload", unloadHandler ); + } + + // Support: IE <10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + documentElement.appendChild( el ).id = jQuery.expando; + return !document.getElementsByName || + !document.getElementsByName( jQuery.expando ).length; + } ); + + // Support: IE 9 only + // Check to see if it's possible to do matchesSelector + // on a disconnected node. + support.disconnectedMatch = assert( function( el ) { + return matches.call( el, "*" ); + } ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // IE/Edge don't support the :scope pseudo-class. + support.scope = assert( function() { + return document.querySelectorAll( ":scope" ); + } ); + + // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only + // Make sure the `:has()` argument is parsed unforgivingly. + // We include `*` in the test to detect buggy implementations that are + // _selectively_ forgiving (specifically when the list includes at least + // one valid selector). + // Note that we treat complete lack of support for `:has()` as if it were + // spec-compliant support, which is fine because use of `:has()` in such + // environments will fail in the qSA path and fall back to jQuery traversal + // anyway. + support.cssHas = assert( function() { + try { + document.querySelector( ":has(*,:jqfake)" ); + return false; + } catch ( e ) { + return true; + } + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter.ID = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find.ID = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter.ID = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find.ID = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find.TAG = function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else { + return context.querySelectorAll( tag ); + } + }; + + // Class + Expr.find.CLASS = function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + rbuggyQSA = []; + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + documentElement.appendChild( el ).innerHTML = + "" + + ""; + + // Support: iOS <=7 - 8 only + // Boolean attributes and "value" are not treated correctly in some XML documents + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: iOS <=7 - 8 only + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: iOS 8 only + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ + // In some of the document kinds, these selectors wouldn't work natively. + // This is probably OK but for backwards compatibility we want to maintain + // handling them through jQuery traversal in jQuery 3.x. + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE 9 - 11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ + // In some of the document kinds, these selectors wouldn't work natively. + // This is probably OK but for backwards compatibility we want to maintain + // handling them through jQuery traversal in jQuery 3.x. + documentElement.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + } ); + + if ( !support.cssHas ) { + + // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+ + // Our regular `try-catch` mechanism fails to detect natively-unsupported + // pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`) + // in browsers that parse the `:has()` argument as a forgiving selector list. + // https://drafts.csswg.org/selectors/#relational now requires the argument + // to be parsed unforgivingly, but browsers have not yet fully adjusted. + rbuggyQSA.push( ":has" ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a === document || a.ownerDocument == preferredDoc && + find.contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b === document || b.ownerDocument == preferredDoc && + find.contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + }; + + return document; +} + +find.matches = function( expr, elements ) { + return find( expr, null, null, elements ); +}; + +find.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return find( expr, document, null, [ elem ] ).length > 0; +}; + +find.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return jQuery.contains( context, elem ); +}; + + +find.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (see trac-13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + if ( val !== undefined ) { + return val; + } + + return elem.getAttribute( name ); +}; + +find.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +jQuery.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + // + // Support: Android <=4.0+ + // Testing for detecting duplicates is unpredictable so instead assume we can't + // depend on duplicate detection in all browsers without a stable sort. + hasDuplicate = !support.sortStable; + sortInput = !support.sortStable && slice.call( results, 0 ); + sort.call( results, sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + splice.call( results, duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +jQuery.fn.uniqueSort = function() { + return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) ); +}; + +Expr = jQuery.expr = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + ATTR: function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" ) + .replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + CHILD: function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + find.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) + ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + find.error( match[ 0 ] ); + } + + return match; + }, + + PSEUDO: function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr.CHILD.test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + TAG: function( nodeNameSelector ) { + var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return nodeName( elem, expectedNodeName ); + }; + }, + + CLASS: function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + ")" + className + + "(" + whitespace + "|$)" ) ) && + classCache( className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + ATTR: function( name, operator, check ) { + return function( elem ) { + var result = find.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + if ( operator === "=" ) { + return result === check; + } + if ( operator === "!=" ) { + return result !== check; + } + if ( operator === "^=" ) { + return check && result.indexOf( check ) === 0; + } + if ( operator === "*=" ) { + return check && result.indexOf( check ) > -1; + } + if ( operator === "$=" ) { + return check && result.slice( -check.length ) === check; + } + if ( operator === "~=" ) { + return ( " " + result.replace( rwhitespace, " " ) + " " ) + .indexOf( check ) > -1; + } + if ( operator === "|=" ) { + return result === check || result.slice( 0, check.length + 1 ) === check + "-"; + } + + return false; + }; + }, + + CHILD: function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + nodeName( node, name ) : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || ( parent[ expando ] = {} ); + cache = outerCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + cache = outerCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + nodeName( node, name ) : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + outerCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + PSEUDO: function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // https://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + find.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as jQuery does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + not: markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrimCSS, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element + // (see https://github.com/jquery/sizzle/issues/299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + has: markFunction( function( selector ) { + return function( elem ) { + return find( selector, elem ).length > 0; + }; + } ), + + contains: markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // https://www.w3.org/TR/selectors/#lang-pseudo + lang: markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + find.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + target: function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + root: function( elem ) { + return elem === documentElement; + }, + + focus: function( elem ) { + return elem === safeActiveElement() && + document.hasFocus() && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + enabled: createDisabledPseudo( false ), + disabled: createDisabledPseudo( true ), + + checked: function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + return ( nodeName( elem, "input" ) && !!elem.checked ) || + ( nodeName( elem, "option" ) && !!elem.selected ); + }, + + selected: function( elem ) { + + // Support: IE <=11+ + // Accessing the selectedIndex property + // forces the browser to treat the default option as + // selected when in an optgroup. + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + empty: function( elem ) { + + // https://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + parent: function( elem ) { + return !Expr.pseudos.empty( elem ); + }, + + // Element/input types + header: function( elem ) { + return rheader.test( elem.nodeName ); + }, + + input: function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + button: function( elem ) { + return nodeName( elem, "input" ) && elem.type === "button" || + nodeName( elem, "button" ); + }, + + text: function( elem ) { + var attr; + return nodeName( elem, "input" ) && elem.type === "text" && + + // Support: IE <10 only + // New HTML5 attribute values (e.g., "search") appear + // with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + first: createPositionalPseudo( function() { + return [ 0 ]; + } ), + + last: createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + eq: createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + even: createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + odd: createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + lt: createPositionalPseudo( function( matchIndexes, length, argument ) { + var i; + + if ( argument < 0 ) { + i = argument + length; + } else if ( argument > length ) { + i = length; + } else { + i = argument; + } + + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + gt: createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos.nth = Expr.pseudos.eq; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rleadingCombinator.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrimCSS, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + if ( parseOnly ) { + return soFar.length; + } + + return soFar ? + find.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + if ( skip && nodeName( elem, skip ) ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = outerCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + outerCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + find( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, matcherOut, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || + multipleContexts( selector || "*", + context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems; + + if ( matcher ) { + + // If we have a postFinder, or filtered seed, or non-seed postFilter + // or preexisting results, + matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results; + + // Find primary matches + matcher( matcherIn, matcherOut, context, xml ); + } else { + matcherOut = matcherIn; + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element + // (see https://github.com/jquery/sizzle/issues/299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrimCSS, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find.TAG( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: iOS <=7 - 9 only + // Tolerate NodeList properties (IE: "length"; Safari: ) matching + // elements by id. (see trac-14142) + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + push.call( results, elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + jQuery.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +function compile( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +} + +/** + * A low-level selection function that works with jQuery's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with jQuery selector compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find.ID( + token.matches[ 0 ].replace( runescape, funescape ), + context + ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && + testContext( context.parentNode ) || context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +} + +// One-time assignments + +// Support: Android <=4.0 - 4.1+ +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Initialize against the default document +setDocument(); + +// Support: Android <=4.0 - 4.1+ +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +jQuery.find = find; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.unique = jQuery.uniqueSort; + +// These have always been private, but they used to be documented as part of +// Sizzle so let's maintain them for now for backwards compatibility purposes. +find.compile = compile; +find.select = select; +find.setDocument = setDocument; +find.tokenize = tokenize; + +find.escape = jQuery.escapeSelector; +find.getText = jQuery.text; +find.isXML = jQuery.isXMLDoc; +find.selectors = jQuery.expr; +find.support = jQuery.support; +find.uniqueSort = jQuery.uniqueSort; + + /* eslint-enable */ + +} )(); + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (trac-9521) + // Strict HTML recognition (trac-11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to jQuery#find + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.error ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the error, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getErrorHook ) { + process.error = jQuery.Deferred.getErrorHook(); + + // The deprecated alias of the above. While the name suggests + // returning the stack, not an error instance, jQuery just passes + // it directly to `console.warn` so both will work; an instance + // just better cooperates with source maps. + } else if ( jQuery.Deferred.getStackHook ) { + process.error = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the primary Deferred + primary = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + primary.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( primary.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return primary.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); + } + + return primary.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error +// captured before the async barrier to get the original error cause +// which may otherwise be hidden. +jQuery.Deferred.exceptionHook = function( error, asyncError ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, + error.stack, asyncError ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See trac-6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (trac-9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see trac-8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (trac-14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (trac-11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (trac-14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (trac-13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
      " ], + col: [ 2, "", "
      " ], + tr: [ 2, "", "
      " ], + td: [ 3, "", "
      " ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (trac-15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (trac-12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (trac-13208) + // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (trac-13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", true ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, isSetup ) { + + // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add + if ( !isSetup ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + if ( !saved ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + this[ type ](); + result = dataPriv.get( this, type ); + dataPriv.set( this, type, false ); + + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + + return result; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering + // the native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved ) { + + // ...and capture the result + dataPriv.set( this, type, jQuery.event.trigger( + saved[ 0 ], + saved.slice( 1 ), + this + ) ); + + // Abort handling of the native event by all jQuery handlers while allowing + // native handlers on the same element to run. On target, this is achieved + // by stopping immediate propagation just on the jQuery event. However, + // the native event is re-wrapped by a jQuery one on each level of the + // propagation so the only way to stop it for jQuery is to stop it for + // everyone via native `stopPropagation()`. This is not a problem for + // focus/blur which don't bubble, but it does also stop click on checkboxes + // and radios. We accept this limitation. + event.stopPropagation(); + event.isImmediatePropagationStopped = returnTrue; + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (trac-504, trac-13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + which: true +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + + function focusMappedHandler( nativeEvent ) { + if ( document.documentMode ) { + + // Support: IE 11+ + // Attach a single focusin/focusout handler on the document while someone wants + // focus/blur. This is because the former are synchronous in IE while the latter + // are async. In other browsers, all those handlers are invoked synchronously. + + // `handle` from private data would already wrap the event, but we need + // to change the `type` here. + var handle = dataPriv.get( this, "handle" ), + event = jQuery.event.fix( nativeEvent ); + event.type = nativeEvent.type === "focusin" ? "focus" : "blur"; + event.isSimulated = true; + + // First, handle focusin/focusout + handle( nativeEvent ); + + // ...then, handle focus/blur + // + // focus/blur don't bubble while focusin/focusout do; simulate the former by only + // invoking the handler at the lower level. + if ( event.target === event.currentTarget ) { + + // The setup part calls `leverageNative`, which, in turn, calls + // `jQuery.event.add`, so event handle will already have been set + // by this point. + handle( event ); + } + } else { + + // For non-IE browsers, attach a single capturing handler on the document + // while someone wants focusin/focusout. + jQuery.event.simulate( delegateType, nativeEvent.target, + jQuery.event.fix( nativeEvent ) ); + } + } + + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + var attaches; + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, true ); + + if ( document.documentMode ) { + + // Support: IE 9 - 11+ + // We use the same native handler for focusin & focus (and focusout & blur) + // so we need to coordinate setup & teardown parts between those events. + // Use `delegateType` as the key as `type` is already used by `leverageNative`. + attaches = dataPriv.get( this, delegateType ); + if ( !attaches ) { + this.addEventListener( delegateType, focusMappedHandler ); + } + dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 ); + } else { + + // Return false to allow normal processing in the caller + return false; + } + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + teardown: function() { + var attaches; + + if ( document.documentMode ) { + attaches = dataPriv.get( this, delegateType ) - 1; + if ( !attaches ) { + this.removeEventListener( delegateType, focusMappedHandler ); + dataPriv.remove( this, delegateType ); + } else { + dataPriv.set( this, delegateType, attaches ); + } + } else { + + // Return false to indicate standard teardown should be applied + return false; + } + }, + + // Suppress native focus or blur if we're currently inside + // a leveraged native-event stack + _default: function( event ) { + return dataPriv.get( event.target, type ); + }, + + delegateType: delegateType + }; + + // Support: Firefox <=44 + // Firefox doesn't have focus(in | out) events + // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 + // + // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 + // focus(in | out) events fire after focus & blur events, + // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order + // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 + // + // Support: IE 9 - 11+ + // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch, + // attach a single handler for both events in IE. + jQuery.event.special[ delegateType ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + dataHolder = document.documentMode ? this : doc, + attaches = dataPriv.get( dataHolder, delegateType ); + + // Support: IE 9 - 11+ + // We use the same native handler for focusin & focus (and focusout & blur) + // so we need to coordinate setup & teardown parts between those events. + // Use `delegateType` as the key as `type` is already used by `leverageNative`. + if ( !attaches ) { + if ( document.documentMode ) { + this.addEventListener( delegateType, focusMappedHandler ); + } else { + doc.addEventListener( type, focusMappedHandler, true ); + } + } + dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + dataHolder = document.documentMode ? this : doc, + attaches = dataPriv.get( dataHolder, delegateType ) - 1; + + if ( !attaches ) { + if ( document.documentMode ) { + this.removeEventListener( delegateType, focusMappedHandler ); + } else { + doc.removeEventListener( type, focusMappedHandler, true ); + } + dataPriv.remove( dataHolder, delegateType ); + } else { + dataPriv.set( dataHolder, delegateType, attaches ); + } + } + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (trac-8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Re-enable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + + // Unwrap a CDATA section containing script contents. This shouldn't be + // needed as in XML documents they're already not visible when + // inspecting element contents and in HTML documents they have no + // meaning but we're preserving that logic for backwards compatibility. + // This will be removed completely in 4.0. See gh-4904. + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew jQuery#find here for performance reasons: + // https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var rcustomProp = /^--/; + + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (trac-8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "box-sizing:content-box;border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is `display: block` + // gets around this issue. + trChild.style.display = "block"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + isCustomProp = rcustomProp.test( name ), + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, trac-12537) + // .css('--customProperty) (gh-3144) + if ( computed ) { + + // Support: IE <=9 - 11+ + // IE only supports `"float"` in `getPropertyValue`; in computed styles + // it's only available as `"cssFloat"`. We no longer modify properties + // sent to `.css()` apart from camelCasing, so we need to check both. + // Normally, this would create difference in behavior: if + // `getPropertyValue` returns an empty string, the value returned + // by `.css()` would be `undefined`. This is usually the case for + // disconnected elements. However, in IE even disconnected elements + // with no styles return `"none"` for `getPropertyValue( "float" )` + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( isCustomProp && ret ) { + + // Support: Firefox 105+, Chrome <=105+ + // Spec requires trimming whitespace for custom properties (gh-4926). + // Firefox only trims leading whitespace. Chrome just collapses + // both leading & trailing whitespace to a single space. + // + // Fall back to `undefined` if empty string returned. + // This collapses a missing definition with property defined + // and set to an empty string but there's no standard API + // allowing us to differentiate them without a performance penalty + // and returning `undefined` aligns with older jQuery. + // + // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED + // as whitespace while CSS does not, but this is not a problem + // because CSS preprocessing replaces them with U+000A LINE FEED + // (which *is* CSS whitespace) + // https://www.w3.org/TR/css-syntax-3/#input-preprocessing + ret = ret.replace( rtrimCSS, "$1" ) || undefined; + } + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0, + marginDelta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + // Count margin delta separately to only add it after scroll gutter adjustment. + // This is needed to make negative margins work with `outerHeight( true )` (gh-3982). + if ( box === "margin" ) { + marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta + marginDelta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + animationIterationCount: true, + aspectRatio: true, + borderImageSlice: true, + columnCount: true, + flexGrow: true, + flexShrink: true, + fontWeight: true, + gridArea: true, + gridColumn: true, + gridColumnEnd: true, + gridColumnStart: true, + gridRow: true, + gridRowEnd: true, + gridRowStart: true, + lineHeight: true, + opacity: true, + order: true, + orphans: true, + scale: true, + widows: true, + zIndex: true, + zoom: true, + + // SVG-related + fillOpacity: true, + floodOpacity: true, + stopOpacity: true, + strokeMiterlimit: true, + strokeOpacity: true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (trac-7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug trac-9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (trac-7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // Use proper attribute retrieval (trac-12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classNames, cur, curValue, className, i, finalValue; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classNames = classesToArray( value ); + + if ( classNames.length ) { + return this.each( function() { + curValue = getClass( this ); + cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + for ( i = 0; i < classNames.length; i++ ) { + className = classNames[ i ]; + if ( cur.indexOf( " " + className + " " ) < 0 ) { + cur += className + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + this.setAttribute( "class", finalValue ); + } + } + } ); + } + + return this; + }, + + removeClass: function( value ) { + var classNames, cur, curValue, className, i, finalValue; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classNames = classesToArray( value ); + + if ( classNames.length ) { + return this.each( function() { + curValue = getClass( this ); + + // This expression is here for better compressibility (see addClass) + cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + for ( i = 0; i < classNames.length; i++ ) { + className = classNames[ i ]; + + // Remove *all* instances + while ( cur.indexOf( " " + className + " " ) > -1 ) { + cur = cur.replace( " " + className + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + this.setAttribute( "class", finalValue ); + } + } + } ); + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var classNames, className, i, self, + type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + classNames = classesToArray( value ); + + return this.each( function() { + if ( isValidValue ) { + + // Toggle individual class names + self = jQuery( this ); + + for ( i = 0; i < classNames.length; i++ ) { + className = classNames[ i ]; + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (trac-14686, trac-14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (trac-2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml, parserErrorElem; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) {} + + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); + } + return xml; +}; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (trac-9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (trac-6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ).filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ).map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // trac-7653, trac-8125, trac-8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + +originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes trac-9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (trac-10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket trac-12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // trac-9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (trac-11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // trac-1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see trac-8605, trac-14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // trac-14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( "` + +3. use toastr to display a toast for info, success, warning or error + ```js + // Display an info toast with no title + toastr.info('Are you the 6 fingered man?') + ``` + +### Other Options +```js +// Display a warning toast, with no title +toastr.warning('My name is Inigo Montoya. You killed my father, prepare to die!') + +// Display a success toast, with a title +toastr.success('Have fun storming the castle!', 'Miracle Max Says') + +// Display an error toast, with a title +toastr.error('I do not think that word means what you think it means.', 'Inconceivable!') + +// Immediately remove current toasts without using animation +toastr.remove() + +// Remove current toasts using animation +toastr.clear() + +// Override global options +toastr.success('We do have the Kapua suite available.', 'Turtle Bay Resort', {timeOut: 5000}) +``` + +### Escape HTML characters +In case you want to escape HTML characters in title and message + + toastr.options.escapeHtml = true; + +### Close Button +Optionally enable a close button +```js +toastr.options.closeButton = true; +```` + +Optionally override the close button's HTML. + +```js +toastr.options.closeHtml = ''; +``` + +You can also override the CSS/LESS for `#toast-container .toast-close-button` + +Optionally override the hide animation when the close button is clicked (falls back to hide configuration). +```js +toastr.options.closeMethod = 'fadeOut'; +toastr.options.closeDuration = 300; +toastr.options.closeEasing = 'swing'; +``` + +### Display Sequence +Show newest toast at bottom (top is default) +```js +toastr.options.newestOnTop = false; +``` + +### Callbacks +```js +// Define a callback for when the toast is shown/hidden/clicked +toastr.options.onShown = function() { console.log('hello'); } +toastr.options.onHidden = function() { console.log('goodbye'); } +toastr.options.onclick = function() { console.log('clicked'); } +toastr.options.onCloseClick = function() { console.log('close button clicked'); } +``` + +### Animation Options +Toastr will supply default animations, so you do not have to provide any of these settings. However you have the option to override the animations if you like. + +#### Easings +Optionally override the animation easing to show or hide the toasts. Default is swing. swing and linear are built into jQuery. +```js +toastr.options.showEasing = 'swing'; +toastr.options.hideEasing = 'linear'; +toastr.options.closeEasing = 'linear'; +``` + +Using the jQuery Easing plugin (http://www.gsgd.co.uk/sandbox/jquery/easing/) +```js +toastr.options.showEasing = 'easeOutBounce'; +toastr.options.hideEasing = 'easeInBack'; +toastr.options.closeEasing = 'easeInBack'; +``` + +#### Animation Method +Use the jQuery show/hide method of your choice. These default to fadeIn/fadeOut. The methods fadeIn/fadeOut, slideDown/slideUp, and show/hide are built into jQuery. +```js +toastr.options.showMethod = 'slideDown'; +toastr.options.hideMethod = 'slideUp'; +toastr.options.closeMethod = 'slideUp'; +``` + +### Prevent Duplicates +Rather than having identical toasts stack, set the preventDuplicates property to true. Duplicates are matched to the previous toast based on their message content. +```js +toastr.options.preventDuplicates = true; +``` + +### Timeouts +Control how toastr interacts with users by setting timeouts appropriately. Timeouts can be disabled by setting them to 0. +```js +toastr.options.timeOut = 30; // How long the toast will display without user interaction +toastr.options.extendedTimeOut = 60; // How long the toast will display after a user hovers over it +``` + + +### Progress Bar +Visually indicate how long before a toast expires. +```js +toastr.options.progressBar = true; +``` + +### rtl +Flip the toastr to be displayed properly for right-to-left languages. +```js +toastr.options.rtl = true; +``` + +## Building Toastr + +To build the minified and css versions of Toastr you will need [node](http://nodejs.org) installed. (Use Homebrew or Chocolatey.) + +``` +npm install -g gulp karma-cli +npm install +``` + +At this point the dependencies have been installed and you can build Toastr + +- Run the analytics `gulp analyze` +- Run the test `gulp test` +- Run the build `gulp` + +## Contributing + +For a pull request to be considered it must resolve a bug, or add a feature which is beneficial to a large audience. + +Pull requests must pass existing unit tests, CI processes, and add additional tests to indicate successful operation of a new feature, or the resolution of an identified bug. + +Requests must be made against the `develop` branch. Pull requests submitted against the `master` branch will not be considered. + +All pull requests are subject to approval by the repository owners, who have sole discretion over acceptance or denial. + +## Authors +**John Papa** + ++ [http://twitter.com/John_Papa](http://twitter.com/John_Papa) + +**Tim Ferrell** + ++ [http://twitter.com/ferrell_tim](http://twitter.com/ferrell_tim) + +**Hans Fjällemark** + ++ [http://twitter.com/hfjallemark](http://twitter.com/hfjallemark) + +## Credits +Inspired by https://github.com/Srirangan/notifer.js/. + +## Copyright +Copyright © 2012-2015 + +## License +toastr is under MIT license - http://www.opensource.org/licenses/mit-license.php diff --git a/node_modules/toastr/build/toastr.css b/node_modules/toastr/build/toastr.css new file mode 100644 index 0000000..76f7f57 --- /dev/null +++ b/node_modules/toastr/build/toastr.css @@ -0,0 +1,228 @@ +.toast-title { + font-weight: bold; +} +.toast-message { + -ms-word-wrap: break-word; + word-wrap: break-word; +} +.toast-message a, +.toast-message label { + color: #FFFFFF; +} +.toast-message a:hover { + color: #CCCCCC; + text-decoration: none; +} +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: #FFFFFF; + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); + line-height: 1; +} +.toast-close-button:hover, +.toast-close-button:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} +.rtl .toast-close-button { + left: -0.3em; + float: left; + right: 0.3em; +} +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.toast-top-center { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-center { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-left { + top: 12px; + left: 12px; +} +.toast-top-right { + top: 12px; + right: 12px; +} +.toast-bottom-right { + right: 12px; + bottom: 12px; +} +.toast-bottom-left { + bottom: 12px; + left: 12px; +} +#toast-container { + position: fixed; + z-index: 999999; + pointer-events: none; + /*overrides*/ +} +#toast-container * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#toast-container > div { + position: relative; + pointer-events: auto; + overflow: hidden; + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: 0 0 12px #999999; + -webkit-box-shadow: 0 0 12px #999999; + box-shadow: 0 0 12px #999999; + color: #FFFFFF; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +#toast-container > div.rtl { + direction: rtl; + padding: 15px 50px 15px 15px; + background-position: right 15px center; +} +#toast-container > div:hover { + -moz-box-shadow: 0 0 12px #000000; + -webkit-box-shadow: 0 0 12px #000000; + box-shadow: 0 0 12px #000000; + opacity: 1; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + filter: alpha(opacity=100); + cursor: pointer; +} +#toast-container > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; +} +#toast-container > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; +} +#toast-container.toast-top-center > div, +#toast-container.toast-bottom-center > div { + width: 300px; + margin-left: auto; + margin-right: auto; +} +#toast-container.toast-top-full-width > div, +#toast-container.toast-bottom-full-width > div { + width: 96%; + margin-left: auto; + margin-right: auto; +} +.toast { + background-color: #030303; +} +.toast-success { + background-color: #51A351; +} +.toast-error { + background-color: #BD362F; +} +.toast-info { + background-color: #2F96B4; +} +.toast-warning { + background-color: #F89406; +} +.toast-progress { + position: absolute; + left: 0; + bottom: 0; + height: 4px; + background-color: #000000; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} +/*Responsive Design*/ +@media all and (max-width: 240px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + #toast-container > div.rtl { + padding: 8px 50px 8px 8px; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } + #toast-container .rtl .toast-close-button { + left: -0.2em; + right: 0.2em; + } +} +@media all and (min-width: 241px) and (max-width: 480px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + #toast-container > div.rtl { + padding: 8px 50px 8px 8px; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } + #toast-container .rtl .toast-close-button { + left: -0.2em; + right: 0.2em; + } +} +@media all and (min-width: 481px) and (max-width: 768px) { + #toast-container > div { + padding: 15px 15px 15px 50px; + width: 25em; + } + #toast-container > div.rtl { + padding: 15px 50px 15px 15px; + } +} diff --git a/node_modules/toastr/build/toastr.js.map b/node_modules/toastr/build/toastr.js.map new file mode 100644 index 0000000..47a9639 --- /dev/null +++ b/node_modules/toastr/build/toastr.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["toastr.js"],"names":["define","$","error","message","title","optionsOverride","notify","type","toastType","iconClass","getOptions","iconClasses","getContainer","options","create","$container","containerId","length","createContainer","info","subscribe","callback","listener","success","warning","clear","$toastElement","clearOptions","clearToast","clearContainer","remove","removeToast","children","toastsToClear","i","force","hideMethod","duration","hideDuration","easing","hideEasing","complete","attr","addClass","positionClass","appendTo","target","getDefaults","tapToDismiss","toastClass","debug","showMethod","showDuration","showEasing","onShown","undefined","onHidden","closeMethod","closeDuration","closeEasing","closeOnHover","extendedTimeOut","timeOut","titleClass","messageClass","escapeHtml","closeHtml","closeClass","newestOnTop","preventDuplicates","progressBar","progressClass","rtl","publish","args","map","source","replace","personalizeToast","setIcon","setTitle","setMessage","setCloseButton","setProgressBar","setRTL","setSequence","setAria","ariaValue","handleEvents","hover","stickAround","delayedHideToast","onclick","click","hideToast","closeButton","$closeElement","event","stopPropagation","cancelBubble","onCloseClick","displayToast","hide","intervalId","setTimeout","maxHideTime","parseFloat","hideEta","Date","getTime","setInterval","updateProgress","prepend","append","suffix","$titleElement","$messageElement","$progressElement","shouldExit","previousToast","override","method","clearTimeout","response","state","endTime","stop","percentage","width","extend","toastId","startTime","console","log","toastr","is","version","amd","deps","factory","module","exports","require","window","jQuery"],"mappings":"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","file":"toastr.js","sourcesContent":["/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n define(['jquery'], function ($) {\n return (function () {\n var $container;\n var listener;\n var toastId = 0;\n var toastType = {\n error: 'error',\n info: 'info',\n success: 'success',\n warning: 'warning'\n };\n\n var toastr = {\n clear: clear,\n remove: remove,\n error: error,\n getContainer: getContainer,\n info: info,\n options: {},\n subscribe: subscribe,\n success: success,\n version: '2.1.4',\n warning: warning\n };\n\n var previousToast;\n\n return toastr;\n\n ////////////////\n\n function error(message, title, optionsOverride) {\n return notify({\n type: toastType.error,\n iconClass: getOptions().iconClasses.error,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function getContainer(options, create) {\n if (!options) { options = getOptions(); }\n $container = $('#' + options.containerId);\n if ($container.length) {\n return $container;\n }\n if (create) {\n $container = createContainer(options);\n }\n return $container;\n }\n\n function info(message, title, optionsOverride) {\n return notify({\n type: toastType.info,\n iconClass: getOptions().iconClasses.info,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function subscribe(callback) {\n listener = callback;\n }\n\n function success(message, title, optionsOverride) {\n return notify({\n type: toastType.success,\n iconClass: getOptions().iconClasses.success,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function warning(message, title, optionsOverride) {\n return notify({\n type: toastType.warning,\n iconClass: getOptions().iconClasses.warning,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function clear($toastElement, clearOptions) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if (!clearToast($toastElement, options, clearOptions)) {\n clearContainer(options);\n }\n }\n\n function remove($toastElement) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if ($toastElement && $(':focus', $toastElement).length === 0) {\n removeToast($toastElement);\n return;\n }\n if ($container.children().length) {\n $container.remove();\n }\n }\n\n // internal functions\n\n function clearContainer (options) {\n var toastsToClear = $container.children();\n for (var i = toastsToClear.length - 1; i >= 0; i--) {\n clearToast($(toastsToClear[i]), options);\n }\n }\n\n function clearToast ($toastElement, options, clearOptions) {\n var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n $toastElement[options.hideMethod]({\n duration: options.hideDuration,\n easing: options.hideEasing,\n complete: function () { removeToast($toastElement); }\n });\n return true;\n }\n return false;\n }\n\n function createContainer(options) {\n $container = $('
      ')\n .attr('id', options.containerId)\n .addClass(options.positionClass);\n\n $container.appendTo($(options.target));\n return $container;\n }\n\n function getDefaults() {\n return {\n tapToDismiss: true,\n toastClass: 'toast',\n containerId: 'toast-container',\n debug: false,\n\n showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n showDuration: 300,\n showEasing: 'swing', //swing and linear are built into jQuery\n onShown: undefined,\n hideMethod: 'fadeOut',\n hideDuration: 1000,\n hideEasing: 'swing',\n onHidden: undefined,\n closeMethod: false,\n closeDuration: false,\n closeEasing: false,\n closeOnHover: true,\n\n extendedTimeOut: 1000,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n },\n iconClass: 'toast-info',\n positionClass: 'toast-top-right',\n timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n escapeHtml: false,\n target: 'body',\n closeHtml: '',\n closeClass: 'toast-close-button',\n newestOnTop: true,\n preventDuplicates: false,\n progressBar: false,\n progressClass: 'toast-progress',\n rtl: false\n };\n }\n\n function publish(args) {\n if (!listener) { return; }\n listener(args);\n }\n\n function notify(map) {\n var options = getOptions();\n var iconClass = map.iconClass || options.iconClass;\n\n if (typeof (map.optionsOverride) !== 'undefined') {\n options = $.extend(options, map.optionsOverride);\n iconClass = map.optionsOverride.iconClass || iconClass;\n }\n\n if (shouldExit(options, map)) { return; }\n\n toastId++;\n\n $container = getContainer(options, true);\n\n var intervalId = null;\n var $toastElement = $('
      ');\n var $titleElement = $('
      ');\n var $messageElement = $('
      ');\n var $progressElement = $('
      ');\n var $closeElement = $(options.closeHtml);\n var progressBar = {\n intervalId: null,\n hideEta: null,\n maxHideTime: null\n };\n var response = {\n toastId: toastId,\n state: 'visible',\n startTime: new Date(),\n options: options,\n map: map\n };\n\n personalizeToast();\n\n displayToast();\n\n handleEvents();\n\n publish(response);\n\n if (options.debug && console) {\n console.log(response);\n }\n\n return $toastElement;\n\n function escapeHtml(source) {\n if (source == null) {\n source = '';\n }\n\n return source\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(//g, '>');\n }\n\n function personalizeToast() {\n setIcon();\n setTitle();\n setMessage();\n setCloseButton();\n setProgressBar();\n setRTL();\n setSequence();\n setAria();\n }\n\n function setAria() {\n var ariaValue = '';\n switch (map.iconClass) {\n case 'toast-success':\n case 'toast-info':\n ariaValue = 'polite';\n break;\n default:\n ariaValue = 'assertive';\n }\n $toastElement.attr('aria-live', ariaValue);\n }\n\n function handleEvents() {\n if (options.closeOnHover) {\n $toastElement.hover(stickAround, delayedHideToast);\n }\n\n if (!options.onclick && options.tapToDismiss) {\n $toastElement.click(hideToast);\n }\n\n if (options.closeButton && $closeElement) {\n $closeElement.click(function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n event.cancelBubble = true;\n }\n\n if (options.onCloseClick) {\n options.onCloseClick(event);\n }\n\n hideToast(true);\n });\n }\n\n if (options.onclick) {\n $toastElement.click(function (event) {\n options.onclick(event);\n hideToast();\n });\n }\n }\n\n function displayToast() {\n $toastElement.hide();\n\n $toastElement[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n );\n\n if (options.timeOut > 0) {\n intervalId = setTimeout(hideToast, options.timeOut);\n progressBar.maxHideTime = parseFloat(options.timeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n if (options.progressBar) {\n progressBar.intervalId = setInterval(updateProgress, 10);\n }\n }\n }\n\n function setIcon() {\n if (map.iconClass) {\n $toastElement.addClass(options.toastClass).addClass(iconClass);\n }\n }\n\n function setSequence() {\n if (options.newestOnTop) {\n $container.prepend($toastElement);\n } else {\n $container.append($toastElement);\n }\n }\n\n function setTitle() {\n if (map.title) {\n var suffix = map.title;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.title);\n }\n $titleElement.append(suffix).addClass(options.titleClass);\n $toastElement.append($titleElement);\n }\n }\n\n function setMessage() {\n if (map.message) {\n var suffix = map.message;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.message);\n }\n $messageElement.append(suffix).addClass(options.messageClass);\n $toastElement.append($messageElement);\n }\n }\n\n function setCloseButton() {\n if (options.closeButton) {\n $closeElement.addClass(options.closeClass).attr('role', 'button');\n $toastElement.prepend($closeElement);\n }\n }\n\n function setProgressBar() {\n if (options.progressBar) {\n $progressElement.addClass(options.progressClass);\n $toastElement.prepend($progressElement);\n }\n }\n\n function setRTL() {\n if (options.rtl) {\n $toastElement.addClass('rtl');\n }\n }\n\n function shouldExit(options, map) {\n if (options.preventDuplicates) {\n if (map.message === previousToast) {\n return true;\n } else {\n previousToast = map.message;\n }\n }\n return false;\n }\n\n function hideToast(override) {\n var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n var duration = override && options.closeDuration !== false ?\n options.closeDuration : options.hideDuration;\n var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n if ($(':focus', $toastElement).length && !override) {\n return;\n }\n clearTimeout(progressBar.intervalId);\n return $toastElement[method]({\n duration: duration,\n easing: easing,\n complete: function () {\n removeToast($toastElement);\n clearTimeout(intervalId);\n if (options.onHidden && response.state !== 'hidden') {\n options.onHidden();\n }\n response.state = 'hidden';\n response.endTime = new Date();\n publish(response);\n }\n });\n }\n\n function delayedHideToast() {\n if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n intervalId = setTimeout(hideToast, options.extendedTimeOut);\n progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n }\n }\n\n function stickAround() {\n clearTimeout(intervalId);\n progressBar.hideEta = 0;\n $toastElement.stop(true, true)[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing}\n );\n }\n\n function updateProgress() {\n var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n $progressElement.width(percentage + '%');\n }\n }\n\n function getOptions() {\n return $.extend({}, getDefaults(), toastr.options);\n }\n\n function removeToast($toastElement) {\n if (!$container) { $container = getContainer(); }\n if ($toastElement.is(':visible')) {\n return;\n }\n $toastElement.remove();\n $toastElement = null;\n if ($container.children().length === 0) {\n $container.remove();\n previousToast = undefined;\n }\n }\n\n })();\n });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n if (typeof module !== 'undefined' && module.exports) { //Node\n module.exports = factory(require('jquery'));\n } else {\n window.toastr = factory(window.jQuery);\n }\n}));\n"]} \ No newline at end of file diff --git a/node_modules/toastr/build/toastr.min.css b/node_modules/toastr/build/toastr.min.css new file mode 100644 index 0000000..064afd0 --- /dev/null +++ b/node_modules/toastr/build/toastr.min.css @@ -0,0 +1 @@ +.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#FFF}.toast-message a:hover{color:#CCC;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#FFF;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80);line-height:1}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}.rtl .toast-close-button{left:-.3em;float:left;right:.3em}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999;pointer-events:none}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#FFF;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>div.rtl{direction:rtl;padding:15px 50px 15px 15px;background-position:right 15px center}#toast-container>div:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}#toast-container>.toast-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}#toast-container>.toast-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}#toast-container>.toast-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51A351}.toast-error{background-color:#BD362F}.toast-info{background-color:#2F96B4}.toast-warning{background-color:#F89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}#toast-container>div.rtl{padding:15px 50px 15px 15px}} \ No newline at end of file diff --git a/node_modules/toastr/build/toastr.min.js b/node_modules/toastr/build/toastr.min.js new file mode 100644 index 0000000..06e4814 --- /dev/null +++ b/node_modules/toastr/build/toastr.min.js @@ -0,0 +1,2 @@ +!function(e){e(["jquery"],function(e){return function(){function t(e,t,n){return g({type:O.error,iconClass:m().iconClasses.error,message:e,optionsOverride:n,title:t})}function n(t,n){return t||(t=m()),v=e("#"+t.containerId),v.length?v:(n&&(v=d(t)),v)}function o(e,t,n){return g({type:O.info,iconClass:m().iconClasses.info,message:e,optionsOverride:n,title:t})}function s(e){C=e}function i(e,t,n){return g({type:O.success,iconClass:m().iconClasses.success,message:e,optionsOverride:n,title:t})}function a(e,t,n){return g({type:O.warning,iconClass:m().iconClasses.warning,message:e,optionsOverride:n,title:t})}function r(e,t){var o=m();v||n(o),u(e,o,t)||l(o)}function c(t){var o=m();return v||n(o),t&&0===e(":focus",t).length?void h(t):void(v.children().length&&v.remove())}function l(t){for(var n=v.children(),o=n.length-1;o>=0;o--)u(e(n[o]),t)}function u(t,n,o){var s=!(!o||!o.force)&&o.force;return!(!t||!s&&0!==e(":focus",t).length)&&(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){h(t)}}),!0)}function d(t){return v=e("
      ").attr("id",t.containerId).addClass(t.positionClass),v.appendTo(e(t.target)),v}function p(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,closeMethod:!1,closeDuration:!1,closeEasing:!1,closeOnHover:!0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",escapeHtml:!1,target:"body",closeHtml:'',closeClass:"toast-close-button",newestOnTop:!0,preventDuplicates:!1,progressBar:!1,progressClass:"toast-progress",rtl:!1}}function f(e){C&&C(e)}function g(t){function o(e){return null==e&&(e=""),e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function s(){c(),u(),d(),p(),g(),C(),l(),i()}function i(){var e="";switch(t.iconClass){case"toast-success":case"toast-info":e="polite";break;default:e="assertive"}I.attr("aria-live",e)}function a(){E.closeOnHover&&I.hover(H,D),!E.onclick&&E.tapToDismiss&&I.click(b),E.closeButton&&j&&j.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&e.cancelBubble!==!0&&(e.cancelBubble=!0),E.onCloseClick&&E.onCloseClick(e),b(!0)}),E.onclick&&I.click(function(e){E.onclick(e),b()})}function r(){I.hide(),I[E.showMethod]({duration:E.showDuration,easing:E.showEasing,complete:E.onShown}),E.timeOut>0&&(k=setTimeout(b,E.timeOut),F.maxHideTime=parseFloat(E.timeOut),F.hideEta=(new Date).getTime()+F.maxHideTime,E.progressBar&&(F.intervalId=setInterval(x,10)))}function c(){t.iconClass&&I.addClass(E.toastClass).addClass(y)}function l(){E.newestOnTop?v.prepend(I):v.append(I)}function u(){if(t.title){var e=t.title;E.escapeHtml&&(e=o(t.title)),M.append(e).addClass(E.titleClass),I.append(M)}}function d(){if(t.message){var e=t.message;E.escapeHtml&&(e=o(t.message)),B.append(e).addClass(E.messageClass),I.append(B)}}function p(){E.closeButton&&(j.addClass(E.closeClass).attr("role","button"),I.prepend(j))}function g(){E.progressBar&&(q.addClass(E.progressClass),I.prepend(q))}function C(){E.rtl&&I.addClass("rtl")}function O(e,t){if(e.preventDuplicates){if(t.message===w)return!0;w=t.message}return!1}function b(t){var n=t&&E.closeMethod!==!1?E.closeMethod:E.hideMethod,o=t&&E.closeDuration!==!1?E.closeDuration:E.hideDuration,s=t&&E.closeEasing!==!1?E.closeEasing:E.hideEasing;if(!e(":focus",I).length||t)return clearTimeout(F.intervalId),I[n]({duration:o,easing:s,complete:function(){h(I),clearTimeout(k),E.onHidden&&"hidden"!==P.state&&E.onHidden(),P.state="hidden",P.endTime=new Date,f(P)}})}function D(){(E.timeOut>0||E.extendedTimeOut>0)&&(k=setTimeout(b,E.extendedTimeOut),F.maxHideTime=parseFloat(E.extendedTimeOut),F.hideEta=(new Date).getTime()+F.maxHideTime)}function H(){clearTimeout(k),F.hideEta=0,I.stop(!0,!0)[E.showMethod]({duration:E.showDuration,easing:E.showEasing})}function x(){var e=(F.hideEta-(new Date).getTime())/F.maxHideTime*100;q.width(e+"%")}var E=m(),y=t.iconClass||E.iconClass;if("undefined"!=typeof t.optionsOverride&&(E=e.extend(E,t.optionsOverride),y=t.optionsOverride.iconClass||y),!O(E,t)){T++,v=n(E,!0);var k=null,I=e("
      "),M=e("
      "),B=e("
      "),q=e("
      "),j=e(E.closeHtml),F={intervalId:null,hideEta:null,maxHideTime:null},P={toastId:T,state:"visible",startTime:new Date,options:E,map:t};return s(),r(),a(),f(P),E.debug&&console&&console.log(P),I}}function m(){return e.extend({},p(),b.options)}function h(e){v||(v=n()),e.is(":visible")||(e.remove(),e=null,0===v.children().length&&(v.remove(),w=void 0))}var v,C,w,T=0,O={error:"error",info:"info",success:"success",warning:"warning"},b={clear:r,remove:c,error:t,getContainer:n,info:o,options:{},subscribe:s,success:i,version:"2.1.4",warning:a};return b}()})}("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)}); +//# sourceMappingURL=toastr.js.map diff --git a/node_modules/toastr/demo.html b/node_modules/toastr/demo.html new file mode 100644 index 0000000..7e124d6 --- /dev/null +++ b/node_modules/toastr/demo.html @@ -0,0 +1,351 @@ + + + + + toastr examples + + + + + + + +
      +

      toastr

      + +
      +
      +
      +
      +
      + + + + +
      +
      +
      +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
      +
      + +
      +
      +
      + + + + + +
      +
      +
      +
      + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + + + + +
      +
      +
      + +
      +
      +
      + + + + + + + + + + + +
      +
      +
      +
      + +
      + + + +
      + +
      +
      
      +        
      +
      +
      + + + + + + + + + diff --git a/node_modules/toastr/gulpfile.js b/node_modules/toastr/gulpfile.js new file mode 100644 index 0000000..f78f8ce --- /dev/null +++ b/node_modules/toastr/gulpfile.js @@ -0,0 +1,172 @@ +/* jshint node:true, camelcase:false */ +var gulp = require('gulp'); +var karma = require('karma').server; +var merge = require('merge-stream'); +var plug = require('gulp-load-plugins')(); + +var paths = { + js: './toastr.js', + less: './toastr.less', + report: './report', + build: './build' +}; + +var log = plug.util.log; + +/** + * List the available gulp tasks + */ +gulp.task('help', plug.taskListing); + +/** + * Lint the code, create coverage report, and a visualizer + * @return {Stream} + */ +gulp.task('analyze', function () { + log('Analyzing source with JSHint and JSCS'); + + var jshint = analyzejshint([paths.js]); + var jscs = analyzejscs([paths.js]); + + return merge(jshint, jscs); +}); + +/** + * Minify and bundle the app's JavaScript + * @return {Stream} + */ +gulp.task('js', function () { + log('Bundling, minifying, and copying the app\'s JavaScript'); + + return gulp + .src(paths.js) + .pipe(plug.sourcemaps.init()) + .pipe(plug.bytediff.start()) + .pipe(plug.uglify({})) + .pipe(plug.bytediff.stop(bytediffFormatter)) + .pipe(plug.sourcemaps.write('.')) + .pipe(plug.rename(function (path) { + if (path.extname === '.js') { + path.basename += '.min'; + } + })) + .pipe(gulp.dest(paths.build)); +}); + +/** + * Minify and bundle the CSS + * @return {Stream} + */ +gulp.task('css', function () { + log('Bundling, minifying, and copying the app\'s CSS'); + + return gulp.src(paths.less) + .pipe(plug.less()) + .pipe(gulp.dest(paths.build)) + .pipe(plug.bytediff.start()) + .pipe(plug.minifyCss({})) + .pipe(plug.bytediff.stop(bytediffFormatter)) + .pipe(plug.rename('toastr.min.css')) + .pipe(gulp.dest(paths.build)); +}); + +/** + * Build js and css + */ +gulp.task('default', ['js', 'css'], function () { + log('Analyze, Build CSS and JS'); +}); + +/** + * Remove all files from the build folder + * One way to run clean before all tasks is to run + * from the cmd line: gulp clean && gulp build + * @return {Stream} + */ +gulp.task('clean', function (cb) { + log('Cleaning: ' + plug.util.colors.blue(paths.report)); + log('Cleaning: ' + plug.util.colors.blue(paths.build)); + + var delPaths = [paths.build, paths.report]; + del(delPaths, cb); +}); + +/** + * Run specs once and exit + * To start servers and run midway specs as well: + * gulp test --startServers + * @return {Stream} + */ +gulp.task('test', function (done) { + startTests(true /*singleRun*/, done); +}); + +//////////////// + +/** + * Execute JSHint on given source files + * @param {Array} sources + * @param {String} overrideRcFile + * @return {Stream} + */ +function analyzejshint(sources, overrideRcFile) { + var jshintrcFile = overrideRcFile || './.jshintrc'; + log('Running JSHint'); + return gulp + .src(sources) + .pipe(plug.jshint(jshintrcFile)) + .pipe(plug.jshint.reporter('jshint-stylish')); +} + +/** + * Execute JSCS on given source files + * @param {Array} sources + * @return {Stream} + */ +function analyzejscs(sources) { + log('Running JSCS'); + return gulp + .src(sources) + .pipe(plug.jscs('./.jscsrc')); +} + +/** + * Start the tests using karma. + * @param {boolean} singleRun - True means run once and end (CI), or keep running (dev) + * @param {Function} done - Callback to fire when karma is done + * @return {undefined} + */ +function startTests(singleRun, done) { + karma.start({ + configFile: __dirname + '/karma.conf.js', + singleRun: !!singleRun + }, karmaCompleted); + + //////////////// + + function karmaCompleted() { + done(); + } +} + +/** + * Formatter for bytediff to display the size changes after processing + * @param {Object} data - byte data + * @return {String} Difference in bytes, formatted + */ +function bytediffFormatter(data) { + var difference = (data.savings > 0) ? ' smaller.' : ' larger.'; + return data.fileName + ' went from ' + + (data.startSize / 1000).toFixed(2) + ' kB to ' + (data.endSize / 1000).toFixed(2) + ' kB' + + ' and is ' + formatPercent(1 - data.percent, 2) + '%' + difference; +} + +/** + * Format a number as a percentage + * @param {Number} num Number to format as a percent + * @param {Number} precision Precision of the decimal + * @return {Number} Formatted perentage + */ +function formatPercent(num, precision) { + return (num * 100).toFixed(precision); +} diff --git a/node_modules/toastr/karma.conf.js b/node_modules/toastr/karma.conf.js new file mode 100644 index 0000000..a1e60ab --- /dev/null +++ b/node_modules/toastr/karma.conf.js @@ -0,0 +1,73 @@ +// Karma configuration +// Generated on Thu Sep 04 2014 07:41:43 GMT-0400 (EDT) + +module.exports = function (config) { + config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '', + + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['qunit'], + + // list of files / patterns to load in the browser + files: [ + 'node_modules/jquery/dist/jquery.min.js', + 'build/toastr.css', + 'toastr.js', + 'node_modules/qunitjs/qunit/qunit.js', + 'tests/unit/qunit-helper.js', + 'tests/unit/toastr-tests.js' + ], + + + // list of files to exclude + exclude: [], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + 'toastr.js': 'coverage' + }, + + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress', 'coverage'], + + coverageReporter: { + type: 'lcov', + dir: 'tests/coverage' + }, + + // web server port + port: 9876, + + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['PhantomJS'], + + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: true + }); +}; diff --git a/node_modules/toastr/nuget/content/content/toastr.css b/node_modules/toastr/nuget/content/content/toastr.css new file mode 100644 index 0000000..d86235a --- /dev/null +++ b/node_modules/toastr/nuget/content/content/toastr.css @@ -0,0 +1,180 @@ +/* + * Toastr + * Copyright 2012-2014 John Papa and Hans Fjällemark. + * All Rights Reserved. + * Use, reproduction, distribution, and modification of this code is subject to the terms and + * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php + * + * Author: John Papa and Hans Fjällemark + * Project: https://github.com/CodeSeven/toastr + */ +.toast-title { + font-weight: bold; +} +.toast-message { + -ms-word-wrap: break-word; + word-wrap: break-word; +} +.toast-message a, +.toast-message label { + color: #ffffff; +} +.toast-message a:hover { + color: #cccccc; + text-decoration: none; +} +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: #ffffff; + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +.toast-close-button:hover, +.toast-close-button:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-left { + top: 12px; + left: 12px; +} +.toast-top-right { + top: 12px; + right: 12px; +} +.toast-bottom-right { + right: 12px; + bottom: 12px; +} +.toast-bottom-left { + bottom: 12px; + left: 12px; +} +#toast-container { + position: fixed; + z-index: 999999; + /*overrides*/ + +} +#toast-container * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#toast-container > div { + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: 0 0 12px #999999; + -webkit-box-shadow: 0 0 12px #999999; + box-shadow: 0 0 12px #999999; + color: #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +#toast-container > :hover { + -moz-box-shadow: 0 0 12px #000000; + -webkit-box-shadow: 0 0 12px #000000; + box-shadow: 0 0 12px #000000; + opacity: 1; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + filter: alpha(opacity=100); + cursor: pointer; +} +#toast-container > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; +} +#toast-container > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; +} +#toast-container.toast-top-full-width > div, +#toast-container.toast-bottom-full-width > div { + width: 96%; + margin: auto; +} +.toast { + background-color: #030303; +} +.toast-success { + background-color: #51a351; +} +.toast-error { + background-color: #bd362f; +} +.toast-info { + background-color: #2f96b4; +} +.toast-warning { + background-color: #f89406; +} +/*Responsive Design*/ +@media all and (max-width: 240px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 241px) and (max-width: 480px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 481px) and (max-width: 768px) { + #toast-container > div { + padding: 15px 15px 15px 50px; + width: 25em; + } +} diff --git a/node_modules/toastr/nuget/content/content/toastr.less b/node_modules/toastr/nuget/content/content/toastr.less new file mode 100644 index 0000000..146fabe --- /dev/null +++ b/node_modules/toastr/nuget/content/content/toastr.less @@ -0,0 +1,232 @@ +// Mix-ins +.borderRadius(@radius) { + -moz-border-radius: @radius; + -webkit-border-radius: @radius; + border-radius: @radius; +} + +.boxShadow(@boxShadow) { + -moz-box-shadow: @boxShadow; + -webkit-box-shadow: @boxShadow; + box-shadow: @boxShadow; +} + +.opacity(@opacity) { + @opacityPercent: @opacity * 100; + opacity: @opacity; + -ms-filter: ~"progid:DXImageTransform.Microsoft.Alpha(Opacity=@{opacityPercent})"; + filter: ~"alpha(opacity=@{opacityPercent})"; +} + +.wordWrap(@wordWrap: break-word) { + -ms-word-wrap: @wordWrap; + word-wrap: @wordWrap; +} + +// Variables +@black: #000000; +@grey: #999999; +@light-grey: #CCCCCC; +@white: #FFFFFF; +@near-black: #030303; +@green: #51A351; +@red: #BD362F; +@blue: #2F96B4; +@orange: #F89406; + +// Styles +.toast-title { + font-weight: bold; +} + +.toast-message { + .wordWrap(); + + a, + label { + color: @white; + } + + a:hover { + color: @light-grey; + text-decoration: none; + } +} + +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: @white; + -webkit-text-shadow: 0 1px 0 rgba(255,255,255,1); + text-shadow: 0 1px 0 rgba(255,255,255,1); + .opacity(0.8); + + &:hover, + &:focus { + color: @black; + text-decoration: none; + cursor: pointer; + .opacity(0.4); + } +} + +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +//#endregion + +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} + +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} + +.toast-top-left { + top: 12px; + left: 12px; +} + +.toast-top-right { + top: 12px; + right: 12px; +} + +.toast-bottom-right { + right: 12px; + bottom: 12px; +} + +.toast-bottom-left { + bottom: 12px; + left: 12px; +} + +#toast-container { + position: fixed; + z-index: 999999; + + * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + } + + > div { + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + .borderRadius(3px 3px 3px 3px); + background-position: 15px center; + background-repeat: no-repeat; + .boxShadow(0 0 12px @grey); + color: @white; + .opacity(0.8); + } + + > :hover { + .boxShadow(0 0 12px @black); + .opacity(1); + cursor: pointer; + } + + > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; + } + + > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; + } + + > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; + } + + > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; + } + + /*overrides*/ + &.toast-top-full-width > div, + &.toast-bottom-full-width > div { + width: 96%; + margin: auto; + } +} + +.toast { + background-color: @near-black; +} + +.toast-success { + background-color: @green; +} + +.toast-error { + background-color: @red; +} + +.toast-info { + background-color: @blue; +} + +.toast-warning { + background-color: @orange; +} + +/*Responsive Design*/ + +@media all and (max-width: 240px) { + #toast-container { + + > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + + & .toast-close-button { + right: -0.2em; + top: -0.2em; + } + } +} + +@media all and (min-width: 241px) and (max-width: 480px) { + #toast-container { + > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + + & .toast-close-button { + right: -0.2em; + top: -0.2em; + } + } +} + +@media all and (min-width: 481px) and (max-width: 768px) { + #toast-container { + > div { + padding: 15px 15px 15px 50px; + width: 25em; + } + } +} \ No newline at end of file diff --git a/node_modules/toastr/nuget/content/content/toastr.min.css b/node_modules/toastr/nuget/content/content/toastr.min.css new file mode 100644 index 0000000..40975cb --- /dev/null +++ b/node_modules/toastr/nuget/content/content/toastr.min.css @@ -0,0 +1 @@ +.toast-title{font-weight:bold}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-0.3em;top:-0.3em;float:right;font-size:20px;font-weight:bold;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:alpha(opacity=80);filter:alpha(opacity=80)}.toast-close-button:hover,.toast-close-button:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:alpha(opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px 3px 3px 3px;-webkit-border-radius:3px 3px 3px 3px;border-radius:3px 3px 3px 3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;opacity:.8;-ms-filter:alpha(opacity=80);filter:alpha(opacity=80)}#toast-container>:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:alpha(opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=")!important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=")!important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==")!important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=")!important}#toast-container.toast-top-full-width>div,#toast-container.toast-bottom-full-width>div{width:96%;margin:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}} \ No newline at end of file diff --git a/node_modules/toastr/nuget/content/content/toastr.scss b/node_modules/toastr/nuget/content/content/toastr.scss new file mode 100644 index 0000000..71f017b --- /dev/null +++ b/node_modules/toastr/nuget/content/content/toastr.scss @@ -0,0 +1,183 @@ +/* + * Toastr + * Version 2.0.1 + * Copyright 2012 John Papa and Hans Fjällemark. + * All Rights Reserved. + * Use, reproduction, distribution, and modification of this code is subject to the terms and + * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php + * + * Author: John Papa and Hans Fjällemark + * Project: https://github.com/CodeSeven/toastr + */ +.toast-title { + font-weight: bold; +} +.toast-message { + -ms-word-wrap: break-word; + word-wrap: break-word; +} +.toast-message a, +.toast-message label { + color: #ffffff; +} +.toast-message a:hover { + color: #cccccc; + text-decoration: none; +} + +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: #ffffff; + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +.toast-close-button:hover, +.toast-close-button:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} + +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-left { + top: 12px; + left: 12px; +} +.toast-top-right { + top: 12px; + right: 12px; +} +.toast-bottom-right { + right: 12px; + bottom: 12px; +} +.toast-bottom-left { + bottom: 12px; + left: 12px; +} +#toast-container { + position: fixed; + z-index: 999999; + /*overrides*/ + +} +#toast-container * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#toast-container > div { + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: 0 0 12px #999999; + -webkit-box-shadow: 0 0 12px #999999; + box-shadow: 0 0 12px #999999; + color: #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +#toast-container > :hover { + -moz-box-shadow: 0 0 12px #000000; + -webkit-box-shadow: 0 0 12px #000000; + box-shadow: 0 0 12px #000000; + opacity: 1; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + filter: alpha(opacity=100); + cursor: pointer; +} +#toast-container > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; +} +#toast-container > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; +} +#toast-container.toast-top-full-width > div, +#toast-container.toast-bottom-full-width > div { + width: 96%; + margin: auto; +} +.toast { + background-color: #030303; +} +.toast-success { + background-color: #51a351; +} +.toast-error { + background-color: #bd362f; +} +.toast-info { + background-color: #2f96b4; +} +.toast-warning { + background-color: #f89406; +} +/*Responsive Design*/ +@media all and (max-width: 239px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 240px) and (max-width: 479px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 480px) and (max-width: 767px) { + #toast-container > div { + padding: 15px 15px 15px 50px; + width: 25em; + } +} \ No newline at end of file diff --git a/node_modules/toastr/nuget/content/scripts/toastr.js b/node_modules/toastr/nuget/content/scripts/toastr.js new file mode 100644 index 0000000..87ae449 --- /dev/null +++ b/node_modules/toastr/nuget/content/scripts/toastr.js @@ -0,0 +1,338 @@ +/* + * Toastr + * Copyright 2012-2014 John Papa and Hans Fjällemark. + * All Rights Reserved. + * Use, reproduction, distribution, and modification of this code is subject to the terms and + * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php + * + * Author: John Papa and Hans Fjällemark + * ARIA Support: Greta Krafsig + * Project: https://github.com/CodeSeven/toastr + */ +; (function (define) { + define(['jquery'], function ($) { + return (function () { + var $container; + var listener; + var toastId = 0; + var toastType = { + error: 'error', + info: 'info', + success: 'success', + warning: 'warning' + }; + + var toastr = { + clear: clear, + remove: remove, + error: error, + getContainer: getContainer, + info: info, + options: {}, + subscribe: subscribe, + success: success, + version: '2.0.3', + warning: warning + }; + + return toastr; + + //#region Accessible Methods + function error(message, title, optionsOverride) { + return notify({ + type: toastType.error, + iconClass: getOptions().iconClasses.error, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function getContainer(options, create) { + if (!options) { options = getOptions(); } + $container = $('#' + options.containerId); + if ($container.length) { + return $container; + } + if(create) { + $container = createContainer(options); + } + return $container; + } + + function info(message, title, optionsOverride) { + return notify({ + type: toastType.info, + iconClass: getOptions().iconClasses.info, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function subscribe(callback) { + listener = callback; + } + + function success(message, title, optionsOverride) { + return notify({ + type: toastType.success, + iconClass: getOptions().iconClasses.success, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function warning(message, title, optionsOverride) { + return notify({ + type: toastType.warning, + iconClass: getOptions().iconClasses.warning, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function clear($toastElement) { + var options = getOptions(); + if (!$container) { getContainer(options); } + if (!clearToast($toastElement, options)) { + clearContainer(options); + } + } + + function remove($toastElement) { + var options = getOptions(); + if (!$container) { getContainer(options); } + if ($toastElement && $(':focus', $toastElement).length === 0) { + removeToast($toastElement); + return; + } + if ($container.children().length) { + $container.remove(); + } + } + //#endregion + + //#region Internal Methods + + function clearContainer(options){ + var toastsToClear = $container.children(); + for (var i = toastsToClear.length - 1; i >= 0; i--) { + clearToast($(toastsToClear[i]), options); + }; + } + + function clearToast($toastElement, options){ + if ($toastElement && $(':focus', $toastElement).length === 0) { + $toastElement[options.hideMethod]({ + duration: options.hideDuration, + easing: options.hideEasing, + complete: function () { removeToast($toastElement); } + }); + return true; + } + return false; + } + + function createContainer(options) { + $container = $('
      ') + .attr('id', options.containerId) + .addClass(options.positionClass) + .attr('aria-live', 'polite') + .attr('role', 'alert'); + + $container.appendTo($(options.target)); + return $container; + } + + function getDefaults() { + return { + tapToDismiss: true, + toastClass: 'toast', + containerId: 'toast-container', + debug: false, + + showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery + showDuration: 300, + showEasing: 'swing', //swing and linear are built into jQuery + onShown: undefined, + hideMethod: 'fadeOut', + hideDuration: 1000, + hideEasing: 'swing', + onHidden: undefined, + + extendedTimeOut: 1000, + iconClasses: { + error: 'toast-error', + info: 'toast-info', + success: 'toast-success', + warning: 'toast-warning' + }, + iconClass: 'toast-info', + positionClass: 'toast-top-right', + timeOut: 5000, // Set timeOut and extendedTimeout to 0 to make it sticky + titleClass: 'toast-title', + messageClass: 'toast-message', + target: 'body', + closeHtml: '', + newestOnTop: true + }; + } + + function publish(args) { + if (!listener) { return; } + listener(args); + } + + function notify(map) { + var options = getOptions(), + iconClass = map.iconClass || options.iconClass; + + if (typeof (map.optionsOverride) !== 'undefined') { + options = $.extend(options, map.optionsOverride); + iconClass = map.optionsOverride.iconClass || iconClass; + } + + toastId++; + + $container = getContainer(options, true); + var intervalId = null, + $toastElement = $('
      '), + $titleElement = $('
      '), + $messageElement = $('
      '), + $closeElement = $(options.closeHtml), + response = { + toastId: toastId, + state: 'visible', + startTime: new Date(), + options: options, + map: map + }; + + if (map.iconClass) { + $toastElement.addClass(options.toastClass).addClass(iconClass); + } + + if (map.title) { + $titleElement.append(map.title).addClass(options.titleClass); + $toastElement.append($titleElement); + } + + if (map.message) { + $messageElement.append(map.message).addClass(options.messageClass); + $toastElement.append($messageElement); + } + + if (options.closeButton) { + $closeElement.addClass('toast-close-button').attr("role", "button"); + $toastElement.prepend($closeElement); + } + + $toastElement.hide(); + if (options.newestOnTop) { + $container.prepend($toastElement); + } else { + $container.append($toastElement); + } + + + $toastElement[options.showMethod]( + { duration: options.showDuration, easing: options.showEasing, complete: options.onShown } + ); + + if (options.timeOut > 0) { + intervalId = setTimeout(hideToast, options.timeOut); + } + + $toastElement.hover(stickAround, delayedHideToast); + if (!options.onclick && options.tapToDismiss) { + $toastElement.click(hideToast); + } + + if (options.closeButton && $closeElement) { + $closeElement.click(function (event) { + if( event.stopPropagation ) { + event.stopPropagation(); + } else if( event.cancelBubble !== undefined && event.cancelBubble !== true ) { + event.cancelBubble = true; + } + hideToast(true); + }); + } + + if (options.onclick) { + $toastElement.click(function () { + options.onclick(); + hideToast(); + }); + } + + publish(response); + + if (options.debug && console) { + console.log(response); + } + + return $toastElement; + + function hideToast(override) { + if ($(':focus', $toastElement).length && !override) { + return; + } + return $toastElement[options.hideMethod]({ + duration: options.hideDuration, + easing: options.hideEasing, + complete: function () { + removeToast($toastElement); + if (options.onHidden && response.state !== 'hidden') { + options.onHidden(); + } + response.state = 'hidden'; + response.endTime = new Date(); + publish(response); + } + }); + } + + function delayedHideToast() { + if (options.timeOut > 0 || options.extendedTimeOut > 0) { + intervalId = setTimeout(hideToast, options.extendedTimeOut); + } + } + + function stickAround() { + clearTimeout(intervalId); + $toastElement.stop(true, true)[options.showMethod]( + { duration: options.showDuration, easing: options.showEasing } + ); + } + } + + function getOptions() { + return $.extend({}, getDefaults(), toastr.options); + } + + function removeToast($toastElement) { + if (!$container) { $container = getContainer(); } + if ($toastElement.is(':visible')) { + return; + } + $toastElement.remove(); + $toastElement = null; + if ($container.children().length === 0) { + $container.remove(); + } + } + //#endregion + + })(); + }); +}(typeof define === 'function' && define.amd ? define : function (deps, factory) { + if (typeof module !== 'undefined' && module.exports) { //Node + module.exports = factory(require('jquery')); + } else { + window['toastr'] = factory(window['jQuery']); + } +})); \ No newline at end of file diff --git a/node_modules/toastr/nuget/content/scripts/toastr.min.js b/node_modules/toastr/nuget/content/scripts/toastr.min.js new file mode 100644 index 0000000..3450888 --- /dev/null +++ b/node_modules/toastr/nuget/content/scripts/toastr.min.js @@ -0,0 +1 @@ +!function(a){a(["jquery"],function(a){return function(){function b(a,b,c){return o({type:u.error,iconClass:p().iconClasses.error,message:a,optionsOverride:c,title:b})}function c(b,c){return b||(b=p()),r=a("#"+b.containerId),r.length?r:(c&&(r=l(b)),r)}function d(a,b,c){return o({type:u.info,iconClass:p().iconClasses.info,message:a,optionsOverride:c,title:b})}function e(a){s=a}function f(a,b,c){return o({type:u.success,iconClass:p().iconClasses.success,message:a,optionsOverride:c,title:b})}function g(a,b,c){return o({type:u.warning,iconClass:p().iconClasses.warning,message:a,optionsOverride:c,title:b})}function h(a){var b=p();r||c(b),k(a,b)||j(b)}function i(b){var d=p();return r||c(d),b&&0===a(":focus",b).length?void q(b):void(r.children().length&&r.remove())}function j(b){for(var c=r.children(),d=c.length-1;d>=0;d--)k(a(c[d]),b)}function k(b,c){return b&&0===a(":focus",b).length?(b[c.hideMethod]({duration:c.hideDuration,easing:c.hideEasing,complete:function(){q(b)}}),!0):!1}function l(b){return r=a("
      ").attr("id",b.containerId).addClass(b.positionClass).attr("aria-live","polite").attr("role","alert"),r.appendTo(a(b.target)),r}function m(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",target:"body",closeHtml:"",newestOnTop:!0}}function n(a){s&&s(a)}function o(b){function d(b){return!a(":focus",j).length||b?j[g.hideMethod]({duration:g.hideDuration,easing:g.hideEasing,complete:function(){q(j),g.onHidden&&"hidden"!==o.state&&g.onHidden(),o.state="hidden",o.endTime=new Date,n(o)}}):void 0}function e(){(g.timeOut>0||g.extendedTimeOut>0)&&(i=setTimeout(d,g.extendedTimeOut))}function f(){clearTimeout(i),j.stop(!0,!0)[g.showMethod]({duration:g.showDuration,easing:g.showEasing})}var g=p(),h=b.iconClass||g.iconClass;"undefined"!=typeof b.optionsOverride&&(g=a.extend(g,b.optionsOverride),h=b.optionsOverride.iconClass||h),t++,r=c(g,!0);var i=null,j=a("
      "),k=a("
      "),l=a("
      "),m=a(g.closeHtml),o={toastId:t,state:"visible",startTime:new Date,options:g,map:b};return b.iconClass&&j.addClass(g.toastClass).addClass(h),b.title&&(k.append(b.title).addClass(g.titleClass),j.append(k)),b.message&&(l.append(b.message).addClass(g.messageClass),j.append(l)),g.closeButton&&(m.addClass("toast-close-button").attr("role","button"),j.prepend(m)),j.hide(),g.newestOnTop?r.prepend(j):r.append(j),j[g.showMethod]({duration:g.showDuration,easing:g.showEasing,complete:g.onShown}),g.timeOut>0&&(i=setTimeout(d,g.timeOut)),j.hover(f,e),!g.onclick&&g.tapToDismiss&&j.click(d),g.closeButton&&m&&m.click(function(a){a.stopPropagation?a.stopPropagation():void 0!==a.cancelBubble&&a.cancelBubble!==!0&&(a.cancelBubble=!0),d(!0)}),g.onclick&&j.click(function(){g.onclick(),d()}),n(o),g.debug&&console&&console.log(o),j}function p(){return a.extend({},m(),v.options)}function q(a){r||(r=c()),a.is(":visible")||(a.remove(),a=null,0===r.children().length&&r.remove())}var r,s,t=0,u={error:"error",info:"info",success:"success",warning:"warning"},v={clear:h,remove:i,error:b,getContainer:c,info:d,options:{},subscribe:e,success:f,version:"2.0.3",warning:g};return v}()})}("function"==typeof define&&define.amd?define:function(a,b){"undefined"!=typeof module&&module.exports?module.exports=b(require("jquery")):window.toastr=b(window.jQuery)}); \ No newline at end of file diff --git a/node_modules/toastr/nuget/content/scripts/toastr.min.js.map b/node_modules/toastr/nuget/content/scripts/toastr.min.js.map new file mode 100644 index 0000000..2f6c09a --- /dev/null +++ b/node_modules/toastr/nuget/content/scripts/toastr.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"toastr.min.js", +"lineCount":1, +"mappings":"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", +"sources":["toastr.js"], +"names":["define","$","error","message","title","optionsOverride","notify","toastType","getOptions","iconClasses","info","subscribe","callback","listener","success","warning","clear","$toastElement","options","$container","getContainer","length","hideMethod","hideDuration","hideEasing","complete","removeToast","children","remove","getDefaults","undefined","publish","args","map","hideToast","override","onHidden","response","state","endTime","Date","delayedhideToast","timeOut","extendedTimeOut","intervalId","setTimeout","stickAround","clearTimeout","stop","showMethod","showDuration","showEasing","iconClass","extend","toastId","$titleElement","$messageElement","$closeElement","closeHtml","addClass","toastClass","append","titleClass","messageClass","closeButton","prepend","hide","newestOnTop","onShown","hover","onclick","tapToDismiss","click","event","stopPropagation","debug","console","log","containerId","attr","positionClass","appendTo","target","toastr","is","amd","deps","factory","module","exports","require","window","jQuery"] +} diff --git a/node_modules/toastr/nuget/toastr.1.0.0.nupkg b/node_modules/toastr/nuget/toastr.1.0.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..0be0d704bd51fea2af6b9a044449c971ff83ef91 GIT binary patch literal 7341 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 + + + 1.0.0 + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + + + + toastr + toastr + false + 3 Easy Steps: + +1) Link to toastr.css and toastr-responsive.css +2) Link to toastr.js +3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.0.1.nupkg b/node_modules/toastr/nuget/toastr.1.0.1.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..afb7a2269e6428d962220254794e2d6acdccc732 GIT binary patch literal 7745 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 B(vAQC literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.0.1.nuspec b/node_modules/toastr/nuget/toastr.1.0.1.nuspec new file mode 100644 index 0000000000000000000000000000000000000000..d73cd002ac3799639ba341567b4ba79bcd110941 GIT binary patch literal 3764 zcmb`K-HsbY5QXd767SIBf&j|e>>>dI<0t|WhyVqJz2nAfPi$}2GiGKSXL%#ui{}8& zSM6qI>~R(nH1hm(SJ%&}Q`POi{v6u_du408v0yJPv(hSCSz)<-Y46&(4ecX6gJyD@ zX?(8P+!j8&wc4KBnWR3E%mbU)J2tSfZEPyp7rHOBF6{N^(u~ffR@IXE+(x=8NiHR| zmUJa+Yw4fKi$Y(8wAUKL?pm^Kz0r%2UC6(4T_Zg|(>=GXR&Jzmrj@VsK9|ktS&%PW zV`^1!J(e4>>_;1YAp-3GLrS! zZqN05Fcku|FfBZn6MLe!rEm%MR8fH8efw5-@)7KjUE3eBg*9?eDsOmtsHNXlVLR!G zta(#QT^;>)Zk!cxu#&Y)d3hsjx=h;1mz{E6c=nMjghVMGWIkGojU%mtUrAG?5g1pC z#od{qv@G=li|$Oa-tXx~77Jkt|LP-8t3B%%ZgVOBu3G&5N-O7D`Ak2UlFRlX_xkns z`%+5Bud=a{Pnmt+iTt7b1BZ<)zy;nXs<)}41!Lm=@9X>hASUX(ln2<0{bgbwi+|t9 zVr92_d!`xu0i%JgbNfJ}c%6%r!I6k}R#1y{hDsOJM-215RGL5Y2_j9So3_7t4|5^XO-Lr?XN3^$EvvrO1 z>Y#p4G|@vm%N%?9N3MO~o{%DgANoa)iE$V10rEkbpW1hN&a{T^6JrP4h;Fn4bJki7 z8&9#QpL5{4-gmUygFXsIu!j6R(fy@^$I~*^jb-rb_wxL6%@DT-nO^xKlIN)Dh@%7C|ESd=%9!(`TF|nuZ+)_l6eI&^Sw?U_3ZOlYh2b{p8h!SU*$a(hUcmg=n+jCt_ zETG9LtBWNT$X(_dISZw}+>cs6%4B>aPJzcl9@oN`y{0=B?00z(&r=tAd;J+9*n7$v ztolN-$7hV_X`khOAL*Ioa;qn&#)*E^(53c;xCbB3_v>LdTR4N7oRr>In{T=--0G`D z=IGk?lY8~r}OD>^}}2=>;MzF>8qd~dzMV6 z^-sl-3qP@sPS{Jm^llH4eEmsz?41lQo{FxKpe8wu;VHbxg(Dc%_RGg>~9)bI*Gh(3~fDc=WTlztdy5_9)_xe%9(W+-v3U^p{KAd OA)464So>ceec^8;D{$ig literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.0.2.nupkg b/node_modules/toastr/nuget/toastr.1.0.2.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..3ebbc75571a73186612e9a1e796a8dffd84e2ff4 GIT binary patch literal 7794 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 literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.0.2.nuspec b/node_modules/toastr/nuget/toastr.1.0.2.nuspec new file mode 100644 index 0000000000000000000000000000000000000000..79dd9a25b2c75b861555c0fe94cc6a6894c122b3 GIT binary patch literal 3914 zcmb`K+m0JW5Qgj867SIBf&j|e*+l{b#!>W2=+p)b_&nz?JILjOHUOWfz zf7Nd0;BgibWZ52f*YU5vs@s44Ikt!P$~Jaw!Cu1N6nc_RuYozZ_^_kgLnm4jIljbWu&*d{l78DDw zv8*j*d8)msf4BE*xwRxFlE^)}N^yU#M`x^A){$aE(l$EGI&Nj-`8`g`ov0*2`fA46^b`b zxUkou$6!|B*f2SReRbfEE=LdR%^0x?%U4>>_Iqi@3|hGi|IvTn?%5;xBimc)Y~3QW zI%wXLO^lGp7LGmhBhxu>Pe@V05B?hi7XO4mqtf4+n^!ZZnCO?DXS*tS(truR&RJq5F9;Zj}3Ov?6^NZ87 zk|gI&L^#t#xzu{D3}5V#iaYQh?8rRz0w-V4)c9FZgAeS9F}8bf?sCsmNBk^h9rThc zoCHyHu#F5k!u*Z%k`+$VSk-Qp@B_VA6}WWiHfD;7j^h+w+izN<(^AJRbjsq3{$pq8 z)#~EkUnSz;}3>ULl8WEufMqjdruL;_0J`H zc=L(e?DO0oBa>AbF)Quws5e>3}GJay{M2ll|7 zZqH?j-&cON$7w+MwR_?@Vl;6Ar8RzV|NRX zpdQ>g>C*q-`f(iL4!OT+X6b(PwmCHIyj`@-v$<4Vnspee4@zg&U3mXHE8R$8TS7Fk LiM8f`QRc$m#6XIZ literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.0.3.nupkg b/node_modules/toastr/nuget/toastr.1.0.3.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..71335bed42e32a3e7906e76e774da1d2b54c31bd GIT binary patch literal 7761 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 IVmmndKYT(dNB{r; literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.0.3.nuspec b/node_modules/toastr/nuget/toastr.1.0.3.nuspec new file mode 100644 index 0000000..94071f6 --- /dev/null +++ b/node_modules/toastr/nuget/toastr.1.0.3.nuspec @@ -0,0 +1,38 @@ + + + + toastr + 1.0.2 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + false + 3 Easy Steps: + +1) Link to toastr.css and toastr-responsive.css +2) Link to toastr.js +3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Minor updates for long unbroken string going outside toast and new feature to keep the toast around after hover-off for an extended timeout. + +Set extendedTimeOut and timeOut to 0 to avoid toastr from fading away. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.1.0.nupkg b/node_modules/toastr/nuget/toastr.1.1.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..555e321ad11fd7da94e5ead21ccf202c8924503c GIT binary patch literal 7789 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 literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.1.0.nuspec b/node_modules/toastr/nuget/toastr.1.1.0.nuspec new file mode 100644 index 0000000..a65e371 --- /dev/null +++ b/node_modules/toastr/nuget/toastr.1.1.0.nuspec @@ -0,0 +1,35 @@ + + + + toastr + 1.1.0 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.1.1.nupkg b/node_modules/toastr/nuget/toastr.1.1.1.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..b5cf330adea0a44af48eade28deca9f20b0e4c56 GIT binary patch literal 7789 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 l(7z7 + + + toastr + 1.1.1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.1.2.nupkg b/node_modules/toastr/nuget/toastr.1.1.2.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..ecca818d8e60035716df4de73d8fdde3828b8141 GIT binary patch literal 7850 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 literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.1.2.nuspec b/node_modules/toastr/nuget/toastr.1.1.2.nuspec new file mode 100644 index 0000000..96caba5 --- /dev/null +++ b/node_modules/toastr/nuget/toastr.1.1.2.nuspec @@ -0,0 +1,35 @@ + + + + toastr + 1.1.2 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.1.3.nupkg b/node_modules/toastr/nuget/toastr.1.1.3.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..068a54114d40797f14f66f2bb67c9b558953b222 GIT binary patch literal 11781 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 PU2K3cDg;8gzJL2KJ1&oG literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.1.4.1.nuspec b/node_modules/toastr/nuget/toastr.1.1.4.1.nuspec new file mode 100644 index 0000000..c3fe237 --- /dev/null +++ b/node_modules/toastr/nuget/toastr.1.1.4.1.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.1.4.1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + +Fix to the toastr.min.js file + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.1.4.2.nupkg b/node_modules/toastr/nuget/toastr.1.1.4.2.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..e92fdd46e409b4a8742af5a05686d5ea49b15969 GIT binary patch literal 11772 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 P#X>ShG=VUV@4x;Fyv>uu literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.1.4.2.nuspec b/node_modules/toastr/nuget/toastr.1.1.4.2.nuspec new file mode 100644 index 0000000..e9c1ff4 --- /dev/null +++ b/node_modules/toastr/nuget/toastr.1.1.4.2.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.1.4.2 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + +Fix to the toastr.min.js file + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.1.4.nupkg b/node_modules/toastr/nuget/toastr.1.1.4.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..badab22354ec099b9bbd27e78cb42552a32a2d0d GIT binary patch literal 11802 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 AK>z>% literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.1.4.nuspec b/node_modules/toastr/nuget/toastr.1.1.4.nuspec new file mode 100644 index 0000000..5578b3f --- /dev/null +++ b/node_modules/toastr/nuget/toastr.1.1.4.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.1.4 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + +Fix to the toastr.min.js file + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.1.5.nupkg b/node_modules/toastr/nuget/toastr.1.1.5.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..9dc04428750b03b31c15c87516a50bb5417d1a29 GIT binary patch literal 11634 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 M6{ + + + toastr + 1.1.5 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Now using SemVer for JavaScript files. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.2.0.nupkg b/node_modules/toastr/nuget/toastr.1.2.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..a63ec724b7b5dcc1851dbc027152d1b9678116c2 GIT binary patch literal 11716 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 Sp`qwoTr@LO6ENWVcJ*Ju;C-L~ literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.2.0.nuspec b/node_modules/toastr/nuget/toastr.1.2.0.nuspec new file mode 100644 index 0000000..d667d56 --- /dev/null +++ b/node_modules/toastr/nuget/toastr.1.2.0.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.2.0 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added getContainer(). +Fixed clear() bug. +Removed semver from file name. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.2.1.nupkg b/node_modules/toastr/nuget/toastr.1.2.1.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..34bc06054b03e4a9b9fe5be6720a1d0996b82129 GIT binary patch literal 11728 zcmb`N1zc3yyY~r^l16D5LK=qd?ru;(Vqk`b8JM9#kWxC7kOmQ?5kcwhPU%t*B&1Ws zJH|Oj&;OqD-uHg)eAt`Wd#&fUp0)OhXV(7esH0!QLHYJM)-;uawKP54LPbIOcHp8= zqgc2>oZvw2Z)ZR*ISOkw>G!OEKke2xOGtY;I{`c(Zg6|3izEXtHxB~<;$jU2+q>9G zGPombxI`GFr6lwqP9Ov_2i(pc1_vNbT;P%nb_fJa37TJ7I@OsIjG%e)Zb zeXDEp%9+akyhRSmepn+~MkN+aCGABbi1y<$Aq7 zXDS8lcLRP)m%|oWQe?@oX1E08JtDsGzz%zSyXxYoQs9A9*@xkS{)2}ldumI?ln(~E z%vLp{u2|Sqg{RqwGe%qEO%-#@SWaIL0EV^5aJ?@yW-}!m_Eijrz%3S|AcMpR2ftl# zKKnC$QhEAwVcjUyBwSbKTcPQh;few;JIgn|aOf6G332P3&kEjJWGlBRe{#FV`0II& zvuG&HqNkVnL2Y#BZno0nYZH{wNqgK?Yj^VpZ5Y#SbGCw&R^+&p851(X5BKT)-s3)P zA@f_$xO*qCZm$zIGw zF#6shDpNygEgPc*=*C%-FzV8FaMKv2zk!i;tsWPMzPV6agq?{dDpp>7cqKHKYhG!U z`qj3b>kVjBCld^J2_u;jp)y z=*6DBja6mxaeI6rztG>TFB6DXBR1R9eIt!qK9fnID0TE7}>rBg)0z_J*4w z@y^XT+35XLWgQCh!e`d;3n|J;4zJ&{aDFxcH@ha%-c_02zZqxN@Dr$72fY7>{h@o7cX*xp1FmBLWvw<)=(Dzz9e(`(IpVD0|2jbr z-u)O;taR&&?qgFh%czQ~N;i2$w78l;XOkED4f3m(wbL(AUwJ)YNuxVdIm8L}tzYo3 zhq@3esu_2k6z-;9Y)*Lg>3sb>91u`~TTleue4!OQ+AQrSNI9F+vy~?F$nx$|%sj(! zz{TEVIb9R-j4py()b~JpFRi4`K60$tUVU9e9cI4$sy2M^OvIwSVV;?laPK{FTSi(G$Wg#TKOb? zCDXxCFCa1j^wO-bK3(?S@#SmqXrNk?9LB_f)<_M!3q4goI%I34TNd5Dv+<@d0KWSP zkKH5p@_hnbBzv7julxi?>}JEfLMIyoTZ35&NqP)(>mOlkgL+{{&(E1TxZ5w)rCFhB-LXTHffNl{jakp;S~PPn`e~Y| zH@vVpBjKNx{00^mBpLwa!3WNE6x8SiO}7Txr?hR~E*RvzC)@GgEGrhi_+XDJl`%!u z+Dv%jG+TAm&RBwThkNbxD}Z*3V?8`ut0 zy{;Rs(PTl%(lW2bfEYi?a?K_83v(?`&%M;~>%x40i$B6^ZCnf@McQFIFXASf{mQfW zEP1q_=8|7cZg*B*OS(LlYy=o65e_~ezZ&kbo-WEd+J7xn_6Rf3le^e4H%9SD$9MPk z=3zgnS?xm15aeQKs!3n`jc3?C??dTYt(yan=oo@$UvRM>R-nk6I{Nf%!p@Y;fGxQX z1pRnMnwL8!QBE8+6%}=iLWK3pt_$8d!p1;Z=yaAhiMTJQMoTqoF79Piyt1B-nz@vI zR*b&nP^U)WR8!(?o6{=TS=ONV+%seIW?hMyfc}kBWtW>_Nxh-?7~%IF6`32~h&%Ka zP3ld;j8v!P)%))|sbx=sDR1%ZWPAym)+mJ-56|GvKa7uw#qQ{AU~-JUI~L=XJ77Xc zRDtK&g8?<{vj*DHIT~i~s%h^KBeEY8S4NGU`~9^0=!iKwo*!Q$9jNU&v}DB$|0!j&(L%g#%5 zm!FDq&1iMz{6=zJr)t^6J1di&k~u7?Vg~P+-rnmu_Y{Ql1*$Wj9%&S^Z4@cFvSkp~ z7z>d&GzJ|fWpX+U?Vh|=bjA-)a~mB>cRwFQOco;csscBG`xjYPq#s>(#PE zhF;L~1kmPfq69|l;!SF8z1uQ{LijSlr7G}3o$4t@N`CQ@V$K3soL)ciCx`ZQuarvW zd+qmvG8i5B4cbx;tFpEku)8QHVPSZl#_C&-2%O5MJtX>#z>By?K@R9q(7T1L1C2Ym zn%k%IG1>Lk2)e?()P(&&oO2#j0?O*s^sIIAa<3NnG0{{kpJi#pVlSL%C8WAI8F;Ii z=AIo+Ek$1uLArBGG8(RS>b#-am*Tf#D!e(<$2_`DL#-|3CZ5=fP1?;6mE!dSPg53Of#COc)Tf=4Y?oL#AjF1oM3w8$GURX;fJSF@VwP z!NAQT-kWDG$*#6gspmY$*-YJ9%c__%m@s@3^cAoxCWIS5XrmqPaoi(?kwaS2%^}i# z4-F=^a=AnmVfb+hkZ`)h=kQUwI5!g!Dyjp{)Z=?%>b4kn2gN{#N$U+@xyswFZRkBd z@2!HtD`Uwyvk$LQBdKGR`VsQ=E3-9(Z9)AHFer*fT@|Bn#1m_t8{FyCp&X#E#BC(2 zCowBlX2jSc>Dvq;h;cP;U#?uE4k*&R#T-RKK-0En8$)P?KCn@%=a4&BK&m&5`Uxwp zNbBPTlPQ{P*JtyDJGRS8jr8#cojH3l$0LmQ$V=r`iSC@di;_@G!@_i#znG-QbPuXS zG?=QniT116p!RMEyzL?t#a{7#rIu*sawPHKbxY*o4Wpyf$rQe!Aa7rh2~#Wasn;Ep z1-Iv*+?{pn+9|@f1_sUF6?X+b!s)_(o!h8 zjC8;Iv96FmaQ;jtMKPkd0;G;5Y2j?FoqzH~g+vA~IA$5UDB_jS2#XrD@A&2Hb(7cE06vN4zl#TSN=l@g?isCSsugMzLbK$b1haKbZA&^Q!YkMLev zesC>wV7I79XXlobw!Xs*%ry^FBhIJh;?aHD)z3}r7#4{0bbsG~TNm&7Ab&PErC7B} zCD|~0kpB9ZK1WIfGp+(XP~Fwr;5^Q7dFN z2xO1M(=4ng;%wVxt4UU}dKzwi2H(zN;UL{l<`&Bke&xEE*>#ug*;Ap#!Y!|rr;Y$9 zmo9OqD5?0Yem+ULX!wn`$nDH)v)Se09NIZ{@CREc?0j|2z|(F`hHtETHr~-5xC7sepI0?6e{?Y$JPD~9 zwnjJZD|QVl_mN(zJyyE){(_HRE>(;uI%%bLJ^4lw^9$7DMw_0Ott!4Bi90_i7+$Jn z!4GQ*g^DB%y}ANx3jCI1DA9oX8QFIFNQCT00erR#JDNfNbc2FqmU*fe zz#QWmi|+}dq0tseKUq!wurGbM&}8i`$pYK40YJ1NvVoF_6JcJNEVurq@M9-? zK~e|#SPq`#yt$Q>vENLL*p)e6k#+nXU6QDj>6Mhh@!F-3g9Q)n0g)-r1 zvum!~nnBmjr-<%ZHa`T&HmSm-7{8LYF8K=`Z#^bdo>JcDI|z0_Brb2sE=k>Nv_5FB z-_RbGw9pCgZt$*_pl!x8u9YgaC_jCE5b%2tI$Rtdn2U{qLPUasLi^7_sI$Eb_y02x zwU2$KGIqt$C~0D^q)}b#WS#tBGR@M(A`rD*cxbij`oN0O*VE3jqK{(+hNliE{gxDu ziL@2KHWKm7hwA!b?uR2Cnz#J$`g6TEg2Q2bU9ge;G+k{5oPd zWdG6V!Q;ib*j?IcWfZlm$z@U3t#Vl;S{`yvEsdGO>#6COy>nz z6L2-=jI6{mA4okoA~dhu&WZfOd?6;3ykYH5hkN0b%*9LkkFjaezU+J9Ro-554c5?u+Mxe--k%?7rWpHt`YPi94Hj9t3!!`B)#M*O0Sp z8@%23_i3vkxa{7Nzjr3vd@pK>YVYg0>t{hvc5*WHBa#byp*ksK6iEgP*VO(}u=|Eh zY%}vihzxX?z}uVV^PO|qV;#}^euc>$k9?2)sb^O6T@Ohnw5wv0+lm@UuiCR1>pgpL zBbZ;9Zxt_-iVUhmt`{V8pAfjOo6+M+DRN-E)8M^up}$?yt7;%jJ}3_8RB7xbLFpMtM2L$6NG_h+VS z9s71uZTbBC1t->NvpaSU<&rMmd0QVh1gBZy^LCoUWDOH1#aX9VY|gSm$;m+H_*evF z{Kro?7-=4h+x=I8<(O~lq?Ce2B%#BaoNM3~IS_`0PWFfd9Y!{lW-cDfO1v_JC*9Sig ziDt<|Vf3bPM555N-NN*cT(D{Cf>)%;uJ0s=yK%ikJ~@r{JaYu+<49`Cg!aV<%@1~` zN2!Ke)kQ=l36-Gkp8Hm6+2i2rNqq0kE|capOWh|2W;i62UTSHmbaXZf>_#b!X}J{* zh!H-nh{W$n+%TB6F5if=bI+z@*QRMRc@cY#gHg+|of1l}AC^Lv%-HzwDNHZltbiiT zyO9eY86~O|nx1Qn5ddyIvO@7%6v6yR+{NL$$v-4YLgh*WGHtbQ+o{r;%d?oimN%qeOJm_iA^&lS&J%2vaZ?FhrIr^&-=h z=M?8U=xWe=kJyMb^!C$t&c^O~E=bvFC&6TNjsg{IJnw}v#kFWjr!BI()r;R2T$nCA zc=A$VKX$nJ3&)T)WKu-&5R}+p9CP&m!mw@Lmsgq5tN(O*3QG_Y)+?aoq2SnEMu@U1 zqx)9kcFL5^;3H8p;}`}!YP*yXW>u6(9-+gw zJ^t)PahJjJXZazshVv&~lRB!}jV=24f%wbRRj6$<@8lrdF(2u27ucT@hJ!z#vrY!H z5if*j@SBISKi&DTS$G#vv2f!9cJ0wU1$s2Ji5o62+ zKjCNo@fR$N=yUvin|TCUs*^3tb?e9w5rj*^T=+2NQv|LuPB^N~z`a6&Q5rrS(nS*M@)%+GH33XeUI)w-F=7tpJ(axH3&W?5y$Hk$jUt5AqCV?1` zm6lw22zq-jSZ@Y9)jnV{WAP^2xN8<8PCkGTjq3M$x}hnrw0VZ4?SkDRTk5T1oH;FEB6(l#{>D zU^?|c=%Gl@P=+OYDremDhO&-h)ip*VkeDA$aotATjDPR*+lE<{hU~IfU(a?`4u*W^ zq~n+xj^z>xORFFH6vL=a?G71Uz4YQpX2^a-Oh}2#mGhz*&*}x zz$Sqttrdvx^6GJCUhPoSqnu%I@tVTQ`6SM;-bCPqF8^xBT~+0elq}5o?DtEDYtQdt zz37ip>o4`M(W~D=EN47bz*4Yz)`$^X6~!T+`IK44;8jJgnAtej;s;LRQL22`)_YP~ zU;3yg+OH*VzKV`?RsnL33Er8*TUTRG=EwEWa#&N@I=sD=@I*Gg(D&d*)XTyhW|ba& zzU=qDD##yC_gP@Q>4A?0tZICpCC=+}+T^#IA*o!^|MWt4=9P^#S7}PSWz1_|G zZ9_%HPzSDE&-c6BlRb66O_$xF2>DRitSlC&R^N$Hi8 zSgn>EZtP<+JoAW{k87PMb)~Apo~IqVc7Wk%2mJ1?t6@<65c6BXRRY<{5T+?attS^o zbz<+esMjbjyxh3aiz*GHojllI&qPfYueDUyu)a?b$j&mdChMgrfOGqU{ImONbVpHG54n|B#)@l0>M!HbLO6Pb^Wt;k$a1R=w1? zj6s)7b|6?|WTwlr1KjVQeVAyo8yjS#fvLu&3@}tv`asY#^Z|ukM@jb8HsHI${sdwoA(mMBER|Ed7rLIG@W5Zd zuzD@#`TM+{)*B2^qpsm&8-vB@Re~yim-bX6A|vsB3N;!Hv~;G3j%*5nH?MRLD_8uS zsL2;d^L&pSa%h(&l4Td;@a;^p#>-&4Pm5sDleS+!hNGd$w6H>>6(Ox;PxEn<*>H2~EPX2ttC>}1=7lLP z?LJNpRs<&t_D^96>4*f=at5QbroOBRp)BVBljbp{MRqQhj@x|0b&y6C zEpj`B%8ZH%UwRsc^~!%zN6-2Bs4GiX;Dh#1l}Uoy06~lA(^G~ghNXF*A9^6ahQ6K+ zrYWgc9oKa>jc}O4%daIvd%u#anaD46eW4OhYxN7}j40{&ryD*?!+^n2*9jB8YP6Et zN8Pxo%<15!2VHn-@@D~nF{^^s+Cz6|TZeUXCVBk;AjK7Pj-1q3^Yz!pllE@}x#wi5 z+?CKH-KiGGQj66uwB^6-*Resh58~KymI>*1IlXSB<5fS|lJY-R_Uz>LFl?LH+iAdS z?@k|h-VI!{&sZUCWVUKe$Zf8~k6w|KT2Ax`<#(W@{j$nOingOf$Q05|dy(I?SJgy{ zhmrWiCz(rc#o#gi+FWBqD(y(cBNW_L|5)ZluMtWr!)Du&b0@wKS?gvO(tG?b2vXbh z?#Ghjjk;69xS37@tEobFHVVz8S8?c`HE5wT zFY)odbS4@D#c4}N0oNupP{@|g=zd=T%?75&JCU!r7m)iOH2=H;e%t%__f;^%sMTd& z(NPqfxEb8;XUGlKhvS9T_m`SHM9=jYtJcwv4|$vjvjSGNvltX|&!a;f1pVSq8X+Dvgy4B^AbmUx3KAEH0-_?mvTGBXr7R+hiD`r*P8sB_h}p^;d+bq zSNH2_VzR`C%U6BHn)H%R9i;mWh&b43q*WcGGpGs36cWn@m~dIbE6Zw-G zaWtl_?nhkQ?wTDg%6Z(Eb~09Eh8KIxJ4g_hf2S$lu^k|bAjs)-DUIOU;|Y9#K1QqI zt&ms1ZIK`7GdoCLaaNUwJ#DE9n%0S6Bb^dJTRlW2Eqc;Gb@;yNA>nbFTu4HLP>>nJ z85o8KFfsH(hX;B=BJh3mG;8W-i23j&BeMft!&y=ZA9URONU}{Qd+WO6cGuv^$KFbQ zrU!?d?e3rQ2#C?k@ceBQi3_+yxG34S!4@Rs5||6!ftQ0x6-4d4o#K*1y)B9(3e6MT zdHfb-UtT8W*X?bW1g25D$Ejfi>oN4)+_0teQO`1tr5_5hS5YpL7dsaDz(A0$TKr_p z?q!`|@f^Lh;yShEZ4B}vMUC(b5Gb~FRqFbeZ+3XPP^ElI=y z7dnmoel`C>1Dnd~^wf1Cb;9X=)K)|C7mk*A)6QlaDT9?EQciWRn`In%$-5kgvijhtl8XhQDwr99OM!3*_AJ?a)Qe4gcq0 z&c7iv|8wZ-8%d<|CrI>zx)K9h|A|S#+})hMV^&~mAjApcjN}X8KwfTMAj6+|5fC@$ zzeufL4Zf%RnbQky|EH{{rzf{3|94>|x5W#*tEr*?9r5C_cYz~7F4mBr`hQydPYJMp zWTd1dz}8~cZV(Ux>L#TIwQ~XJfM6g_6_5)Ypybe==Y*^s$jwm#_)E5LCSb^qA2diZ zO^P3&2!eY9^brskTnqMLpbDT z-fvc5dpOJqs!>_4qN?GbhW7o;!t2qy^6PmjLIv9idzK>*%RcL2f;0uTb&AO#_A5HJ8qw@I_G z;oz{dvjdcnB|wqsZU9*wRe&|f$q89H9D;NgX#<8hL%%o8ug&qTdF;W+E@5wD4{?+F zQQ-GnzucAh3I0j(a`SQXN&x@3{ATO~a7cN8n@0Newl5m80dqUm7@SnPz zKPt(Itl+outiN-9oX8dgIYDhX0S>P25I1iL;Gb6C^uIU6uYUcw@hu7NZsh>6Mo4M7 zD?<>-uJ9cq1SopJoRA~J?Yk>~WRdvJ+x<04zJqRmjr7xx_`?@SDDvAuf*k3l@;~?+ zi*LLk+>HAh{P=$YNPgG*UxJZ8nIJC2H=mGTqyoeS?D#T{OSA; zRuTk*IsI&Dpoa_iZ}=tG&pGWI1Ns+r$$_lzcRKLDDdG=g@*fLabZ%K*PWNn|%dMdL#Gt0VnR*!~@){e`#vVfas| z<*$Z3XecN@=Ybz>|98{h8M0qZ6EINzg(&;G&hM`Qf7Kx){70RiF9rXu_4~%suUbTu ze`)>4Hq+l_evi(7l_5dySp6IjNV531-Krn4`VXnUp3Luy`L9yI+bI9{OZ(r8|9yt} gwRj3Pl>ctN(NV`hZp@(|Nn9)x6J!^#h($ literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.2.1.nuspec b/node_modules/toastr/nuget/toastr.1.2.1.nuspec new file mode 100644 index 0000000..bbd307f --- /dev/null +++ b/node_modules/toastr/nuget/toastr.1.2.1.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.2.1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added getContainer(). +Fixed clear() bug. +Removed semver from file name. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.2.2.nupkg b/node_modules/toastr/nuget/toastr.1.2.2.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..75ee4ae591e6f5584760da953566a91b1f00eabd GIT binary patch literal 11719 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 Xse+Eo#{rN4?hSwuati3Pe*5%aW{yfS literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.1.2.2.nuspec b/node_modules/toastr/nuget/toastr.1.2.2.nuspec new file mode 100644 index 0000000..cca8187 --- /dev/null +++ b/node_modules/toastr/nuget/toastr.1.2.2.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.2.2 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added getContainer(). +Fixed clear() bug. +Removed semver from file name. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.3.0.nupkg b/node_modules/toastr/nuget/toastr.1.3.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..b4dfe38ff44c553f391df402ed4901dfe046b099 GIT binary patch literal 15020 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 + + + toastr + 1.3.0 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added onFadeIn and onFadeOut callbacks. + toastr.options.onFadeIn = function() { console.log('hello'); } +Added option <code>newestOnTop</code> to show toasts in oldest or newest first order. + toastr.options.newestOnTop = false; +Fixed margins on full width toasts +Added LESS file. +Added min file for JS and CSS +Added missing vendor prefixes in CSS. +Various minor bug fixes. +Added unit tests for new features. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.1.3.1.nupkg b/node_modules/toastr/nuget/toastr.1.3.1.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..a1eb1ca399aea4dc5ed838b95d5fce764d98f2b5 GIT binary patch literal 15568 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 + + + toastr + 1.3.1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + v.1.3.1 +Added new API for toastr.subscribe so you can be alerted when toasts appear and disappear. + +toastr.subscribe(function (args) { + // args contains the toast options and data +} + +Added support for glimpse.toastr.js plugin. https://github.com/johnpapa/glimpse.toastr + +Added toastId, state (visible/hidden), startTime and endTime to the toastr info response (available in the coneol, glimpse.toastr plugin, or via the subscribe callback). + +Fixed bug with stacking toasts when clear all toasts occurs first. + +v1.2.2 + +Added onFadeIn and onFadeOut callbacks. + toastr.options.onFadeIn = function() { console.log('hello'); } +Added option <code>newestOnTop</code> to show toasts in oldest or newest first order. + toastr.options.newestOnTop = false; +Fixed margins on full width toasts +Added LESS file. +Added min file for JS and CSS +Added missing vendor prefixes in CSS. +Various minor bug fixes. +Added unit tests for new features. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.2.0.0-rc1.nupkg b/node_modules/toastr/nuget/toastr.2.0.0-rc1.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..fe2dabd4a1048e60aed89d3fc0b8c6ba2d0b2827 GIT binary patch literal 19421 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 J{=A`I{{Z_g^m_mR literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.2.0.0-rc1.nuspec b/node_modules/toastr/nuget/toastr.2.0.0-rc1.nuspec new file mode 100644 index 0000000..d13d8e1 --- /dev/null +++ b/node_modules/toastr/nuget/toastr.2.0.0-rc1.nuspec @@ -0,0 +1,49 @@ + + + + toastr + 2.0.0-rc1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + http://toastrjs.com/ + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + Toastr is a JavaScript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + The following animations options have been deprecated and should be replaced: + +Replace options.fadeIn with options.showDuration +Replace options.onFadeIn with options.onShown +Replace options.fadeOut with options.hideDuration +Replace options.onFadeOut with options.onHidden + +Optional 'close' button, bug fixes, and improved responsive design. + +For other changes, see http://toastrjs.com + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.2.0.1.nupkg b/node_modules/toastr/nuget/toastr.2.0.1.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..a3a98b2a2f8d9efcc07d5e09f3871fcd52a3e50a GIT binary patch literal 19400 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 literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.2.0.1.nuspec b/node_modules/toastr/nuget/toastr.2.0.1.nuspec new file mode 100644 index 0000000..09b937d --- /dev/null +++ b/node_modules/toastr/nuget/toastr.2.0.1.nuspec @@ -0,0 +1,49 @@ + + + + toastr + 2.0.1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + http://toastrjs.com/ + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + Toastr is a JavaScript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + The following animations options have been deprecated and should be replaced: + +Replace options.fadeIn with options.showDuration +Replace options.onFadeIn with options.onShown +Replace options.fadeOut with options.hideDuration +Replace options.onFadeOut with options.onHidden + +Optional 'close' button, bug fixes, and improved responsive design. + +For other changes, see http://toastrjs.com + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.2.0.2.nupkg b/node_modules/toastr/nuget/toastr.2.0.2.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..2efdb7adc46c99fce36e2bb3e6655f5cc6233aec GIT binary patch literal 23037 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

      )sL(3MV$8au8;Dr)1|4L@N$j3XY&nQ~ee0 z2*j4sEY8&L9cm|LL!fGJFpiY?f?vG)jw`*uB6067nc(CY!=vK8a-EF6&11nd<3~C{ zTHzjSr9x#X{};JLVGbuh#Y6PV$c-KATD9Jz7yS&o0XVXk625Wm+yan#&HX7c{?5(=p zo%KdVWYeP}w(FFw{Ct-; zZKO-mM(`lDG3$}L33BZuo;>pVu63p+g9*lJyA%+-eUvGa+GaQB6Mo?)XX~C2k@ZwO zLz+~MfzAQk93ya@DD#dOTo%QA1Tdrs(9E_Cv`6B(@Aeudb$bYiLQ{PCk#9@QGH`%|0`{nq%s zHYRvcnkA$3)n_Co0v(}12<7j}lVB!q65~nLAjF9yFU|PYa2B&7IrO)Ud-7Q z@DH-A&F?{f9Niv+<8W?F-RI1(-TlbH?QVjk&=f+wx7$)54m096ccDdWuh*Y+8D=4P z^)KUwGK-1VjL3IxD21?Mnu)mf#<8EY+W54FXNfc^q~_|U6mZko+tz&%PWSB`d1i)>oO%J0g5hv&cB^7ZeufMW^$tWJxb)Rdaq-d@;|Dv&FQ>cK z5VYcwID-fdYu@MnDT$0DV|&ui#{5Y!UlJPU-6pwLc79IVYYIm&qj1COUOP_VFv{w4 zvEJ9Fr&oQ_5?Ez3UmPH5v4BopnU-biO7C}@+(U-=;-Im0WVU`2>!$g$9`GexBa_6k zcbawW(&%T4a%OV7xkYU?14yhs-LB4KV6W8;QS^uI)^8~KFIHE{6HO`@*7w-eQ6uBR zk@@Bs$Jyywj{BQ*{js&(h*bKnmDzzO9qrJH@OL0I=t>(>oh%AI_E;rMpaXu->JL;q z7`S8j^GJx;?q`r66@@qfv(1yq*?r)2`Jc8`i$f;ga~>8JxW9q5$wk-vR;nz*_A+Gy zVr*xKsKZrtez2ROB&s4nf`F;#nUSO)vSoo;RjhB}+=UMHnLMMT$WY#cu|;=-%${ z_q(tAdd>VX&pDsZS>}7rb6)2;&l`0nB#GFobi41qBfHqFo79YS(azXalSelUxeRm_ zaPs}m7>_6xS4UzMiP&!}45i=sjPzC;((jgGXH#|#{6nuq<- zf+11lsQpevuWmK6MD+3DRJVN{R~JcqAGP`i;argZC_&$`)@IHL4r#)Er5f=j)yuG1 z^QaYw>d0~doia`N8NO2mMB-H-D$c{z8YE{#8Gek^6=7o9_O34>4x^5 zQS=|VUlW*q%{Yxl z`$0{)%Sc2SV!B!(<*|FrYOyjCg- zbe5Y=T;K%ru1;U>6yg!@JQ?9rIr}^sg_&3*)K1sNG9`_OXf&xh)K5-VX$!IUrX!u$ zK}2>9gI2xp(xD-8kIWusw^wS6}VB zhl6<*#u_<_e-LdKbMorNZzPVg&ItB%QgKU!Og~U?=1P=z;yFUbh-#$#^3Yj#gWNf8 zzxykp#;Am{abKxJVqFe{Mw0n!r)8Mo#9_>*j%&pX@pc2>A{b)dkF{&q+EiPCx~5G0 zgV7i1zRh>f7?$rZa1{7pLeIapZ~L^*;}JUbm9h(PL;wKT|KFy4DL0tM-$6AVTAzjX z8LQYW*8JDd?i@)Lan63{SX3|zu{q>{?#C)Dg^#|%(;P3{DNrLC#7l7d#CQ3f zTZC2bxhmAcooFM`qc9Q4TQ#|}iT+X^BMaziurMqfy8tTua@KpvD^EssrKI$Qs&G@2 zli(NnIdZbI4Gw*P*O0EtCxkyV>(%=!Pv=j9p)@A?*}3sV{PF?w4;7UY%t*Tg{)0pP z9p_(mlKh%J7Ppcz8v5rhp1wDlM!W~Qtqy_bTxmPz!lZPL`Qax)lyB8S*c-jh<2H|9 zHoY$I1)bk9%4^N%r|PEg{EBmPQ(+An9<1cm_>5E`Ko7O|YzR%BM~YaHG{&F2jUa`) zyU({h_lqa!u@c}!($Rs+{>ik9)_(82nXlj5~N_$MsgvHMRRwyp|!lw1dBwNLXP$ zfP!;m=d`ae$9xQ3WD264O)>2ej(&_Cra5dDx2Otj>Tq#+3cbUBs{*bt5fT|n%(T&F zn3wiI@05^vmn-X(;T;t)HE~PS*`f7DOLMO|%Ze?|#?+|tD{Tn*$z^AZs#0^SIV2_r zF`T@}eA=O+FCV&kgjd%G52xLgC&%iq^u{uPQGhRS%3 z)i(?yj<*(9lH-${E=;C~11#?(FGF^rhqMX-!BN90#gXaUWd3PEfZQ{je7=K~LHta&iT3LsKJ`VjsPvq-1EKB&c3btU#Z!D66NCTD{PiBOFlsXBf99_CUG6N5uOF@Z>i4UPmXqz zpDaxIEid*)PpJae1kfMz`Ml|FEw7g`xjZi;VhM?g>K>%nE2jNyp)8`TxKlTI2COG) z!+4K2)RzXvM!)hrZo7+YUFP+Ib>5oA|0ra*&K+z@^k;Q$s##1RGCq_0dfwB7_~B4G zGMwfjvgL%~wU}xF(GJTBv~yq*w^T^{t3#)*<0_cO`>yyN@%|ibfBHxdpmwKdLSN`x z#sy`aWi@UZ?mKMcTN7jEx>4k8Q^^*qyJ|v=>KK!dHqN)wTJg8l9~ucQGLMG0R%$dz z@#No`4go)35skbac(y0_0;i?63=NB7kJ(V@VPhDi<%}md@V5d3zB=WMjxe+IbfUn! zm02%xlaX{L z`)bcCq_nK8u=mtTA`DvIL;pxQXubjvt-Ui&yI6!U?HAxgOJ`nnpe8KCM6GcJG`kYQ z=DmAHx%^;65p=wOjo*99Ad7gc)uzZ(j-Mo>d|w=-O-xl95Wjf2=vc}4Gu1;M_P8Z- zBpnzKkzu|b+{%*KqD9u&DaKgb0OboCewx=kTw|}2y##E`Tb*vR_3zK*V%AkZ~q)G%cI76mHN*C_FOp` zkrk|Qljd0lJx5dDf9~qnFf$0Dp@$^jhTRMYCh1=-AyC z%FY2ujfMJeIhA(TU8#3Kx;>4~_IGQJK9pNHZK2LvZec~PF93`RhG|@9IJn3xK4W=F z^C9y3?fV~3j?mh%<30qt!*QnFX=O&-rK;Yd_JrO`=Uv;3%Gr8~_)1nkbH2mL*@J9d zQGL)FTl<##XH48479z$Z&lH(3k{T4_P&KF^MRbNRe0da5vkn6`96 z-k}K8JaC=g^BVbdhu1KE97x)WGHke~wTqE4NlpCpWKFFfJ9^rheqv4v+$AsvtonN6 zQ_;7kOp+BuOee;2qyxw`uFXQ$6whk$e~=~M zZA2x(X0E~h>Rx3X?9-h0G^p|!n{e6W4#N{Xou4O<^v!`5f{Y(p3!Z-l=s49Gsa<++ zT=RyB#Gzx~7<%7$aK$Kx`;KQ04&hOm^GnOSoXT`CVA=EDE29&$(U|gHH zm^>PHzx#>nNnZ;!x5siHj6%g9&_B^qcyR%^TKbiZX-|m+u>DkOaeIQ*#h3T60dk{u z{`QOXUrcmmSm`)@c30(V&YZOiNaff|+jhH@mRP&yX6^%R8$r#y*I3X{x9l3okckg< z$<`-p$2Iz;J!YAcmU>a0P=hG~@*KMxuM#>~ogWV=)Z?o>5D^qNhM$|IH4d5|%>@h# z73n`XwI|L;%6$@M(RlQ^Am$5Hu@q%@NZv|~D@n8|rI1Tm!YUN~D z7Lq!N9B;{4{7duRfo@zzB zV#dDz4WeqCZ9pypB6-XTRdm#bB~lK!c+ZEkHX@hU^`%PBNP!e*xiyRlda~&KMsZ!9 zl}xYIMJ*c@TSt#VyIQ_pORVg)sUoGdYL20jHF(?WYRUY}QNOol@g2m4XTDJqaDgC# zEjuTW09KGe&MvwiQCf;-P;(_Yy` ziRt~O2(!JEDpbtg(_Q8kck|t;rW7SXZjlNHfvi|s29}}fHsfb6@Pdk>5`j{4?C{da z3krrz5AqINofG+TfA5idHmkp{5Y~LxJ`Pfsl|MLs&g$fc=O|n@>h~mNS^2LM}R-1`bfg5&oUu=Yhw#uJivK;nE0Kgc}8eg_V|-l9d+vo)?F}xcxu~ zZWXMje9!5PMSiy>5C~EP`E_FoP*7Id>bMDXojoXtL}PI!;2_w}yX+8xyHK{`@G0_lWAVAMAXT+g-TDrA#L zsV*laBP9os{^KWA>0e5*v+_pfr$L9()}@ zDM9H$n5(<91Q_LsM__y)(%)57|Mia8TCa@@)Fdq40fm6$)KB2`5jaXHtkW&Qy51hH zlo5ehugV`;AnPE=AERWQ!1!aNKe^7)d6yOdpnf?hBmJ!Q1}5$t6@-bkm7-EP{}poQ zy5GjI`@e_9Cb~`%N39cu*r|hXg5h0plm=7Cb{oJ@Dq>U!yjl4Th$qa$!*#Q#rM=LO zKXE}NH|I1eob(3{RGiY@b!_Ed6!8bk^OuECR!9g61C#>w{0lW@Z2e9B{#Ht*X8cnv z^}z8z)uR5flCsh8PYeBnDEiA@{+qv&dOz5LJpKM>O0NeWCGu%#B>_KTe><)AXDIC! zcI}4nSJ=|6LK(_1+MK#J!sTb_b~@u$X$WQaelyVjg4Ou5&vxL-R-Z3yzx1I7($7ZQ z-=ExSgcbay(dOHfKYMLI1i#g5S@f4))Cm3AX#3%otwt`2KaBo#)a6e$+a8K+wei*X zrOn18lAo=%Z?tW-^3?q=R@7~`4Z9zqw|#-N)$W-o;NM?v{apO^S$}Ks_o0Blx(ApU UQxUyXsPis>DrHf4$CCQ%KPTrvVgLXD literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.2.0.2.nuspec b/node_modules/toastr/nuget/toastr.2.0.2.nuspec new file mode 100644 index 0000000..1f76718 --- /dev/null +++ b/node_modules/toastr/nuget/toastr.2.0.2.nuspec @@ -0,0 +1,41 @@ + + + + toastr + 2.0.2 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + http://toastrjs.com/ + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo +

      Toastr is a JavaScript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Change log: https://github.com/CodeSeven/toastr/blob/master/CHANGELOG.md + Copyright © 2012-2014 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/nuget/toastr.2.0.3.nupkg b/node_modules/toastr/nuget/toastr.2.0.3.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..6389cdf62c6c9c590316a5ea2adc1cbc8e95eb5d GIT binary patch literal 23027 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 literal 0 HcmV?d00001 diff --git a/node_modules/toastr/nuget/toastr.2.0.3.nuspec b/node_modules/toastr/nuget/toastr.2.0.3.nuspec new file mode 100644 index 0000000..1e6133a --- /dev/null +++ b/node_modules/toastr/nuget/toastr.2.0.3.nuspec @@ -0,0 +1,41 @@ + + + + toastr + 2.0.3 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + http://toastrjs.com/ + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + Toastr is a JavaScript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Change log: https://github.com/CodeSeven/toastr/blob/master/CHANGELOG.md + Copyright © 2012-2014 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + + + \ No newline at end of file diff --git a/node_modules/toastr/package-lock.json b/node_modules/toastr/package-lock.json new file mode 100644 index 0000000..ef90bd8 --- /dev/null +++ b/node_modules/toastr/package-lock.json @@ -0,0 +1,7707 @@ +{ + "name": "toastr", + "version": "2.1.4", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "dev": true, + "requires": { + "normalize-path": "2.1.1", + "through2": "2.0.3" + } + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "accepts": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=", + "dev": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.5.3" + } + }, + "accord": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/accord/-/accord-0.27.3.tgz", + "integrity": "sha1-f7kSlwkoXK6oTrNyxOiCAxtxOOg=", + "dev": true, + "requires": { + "convert-source-map": "1.5.1", + "glob": "7.1.2", + "indx": "0.2.3", + "lodash.clone": "4.5.0", + "lodash.defaults": "4.2.0", + "lodash.flatten": "4.4.0", + "lodash.merge": "4.6.0", + "lodash.partialright": "4.2.1", + "lodash.pick": "4.4.0", + "lodash.uniq": "4.5.0", + "resolve": "1.5.0", + "semver": "5.4.1", + "uglify-js": "2.8.29", + "when": "3.7.8" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } + } + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "active-x-obfuscator": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/active-x-obfuscator/-/active-x-obfuscator-0.0.1.tgz", + "integrity": "sha1-CJuJs3FF/x2ex0r2UwvlUmyuHxo=", + "dev": true, + "requires": { + "zeparser": "0.0.5" + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "atob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", + "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true, + "optional": true + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-url": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz", + "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg=", + "dev": true + }, + "base64id": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", + "integrity": "sha1-As4P3u4M709ACA4ec+g08LG/zj8=", + "dev": true + }, + "basic-auth": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz", + "integrity": "sha1-Awk1sB3nyblKgksp8/zLdQ06UpA=", + "dev": true + }, + "basic-auth-connect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", + "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI=", + "dev": true + }, + "batch": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", + "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", + "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=", + "dev": true, + "requires": { + "readable-stream": "2.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + } + } + }, + "body-parser": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", + "integrity": "sha1-wIzzMMM1jhUQFqBXRvE/ApyX+pc=", + "dev": true, + "requires": { + "bytes": "2.1.0", + "content-type": "1.0.4", + "debug": "2.2.0", + "depd": "1.0.1", + "http-errors": "1.3.1", + "iconv-lite": "0.4.11", + "on-finished": "2.3.0", + "qs": "4.0.0", + "raw-body": "2.1.7", + "type-is": "1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "qs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", + "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=", + "dev": true + } + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "bufferstreams": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-0.0.2.tgz", + "integrity": "sha1-fOjf+Wi7rAC56QFYosQUVvdAq90=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", + "integrity": "sha1-rJPEEOL/ycx89LRks4KJBn9eR7Q=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "clean-css": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.0.10.tgz", + "integrity": "sha1-1HezgbqkH3Wagp1R+cs4DbkNYm4=", + "dev": true, + "requires": { + "commander": "2.5.1", + "source-map": "0.1.43" + }, + "dependencies": { + "commander": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz", + "integrity": "sha1-I8Yfbke+FDzALnrUuxxH9c1aKIM=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "7.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "dev": true, + "requires": { + "colors": "1.0.3" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "coffee-script": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", + "integrity": "sha1-nJ8dK0pSoADe0Vtll5FwNkgmPB0=", + "dev": true, + "requires": { + "mkdirp": "0.3.5" + }, + "dependencies": { + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "dev": true + } + } + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", + "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", + "dev": true + }, + "compressible": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", + "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "compression": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz", + "integrity": "sha1-sDuNhub4rSloPLqN+R3cb/x3s5U=", + "dev": true, + "requires": { + "accepts": "1.2.13", + "bytes": "2.1.0", + "compressible": "2.0.12", + "debug": "2.2.0", + "on-headers": "1.0.1", + "vary": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", + "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + } + } + }, + "connect": { + "version": "2.30.2", + "resolved": "https://registry.npmjs.org/connect/-/connect-2.30.2.tgz", + "integrity": "sha1-jam8vooFTT0xjXTf7JA7XDmhtgk=", + "dev": true, + "requires": { + "basic-auth-connect": "1.0.0", + "body-parser": "1.13.3", + "bytes": "2.1.0", + "compression": "1.5.2", + "connect-timeout": "1.6.2", + "content-type": "1.0.4", + "cookie": "0.1.3", + "cookie-parser": "1.3.5", + "cookie-signature": "1.0.6", + "csurf": "1.8.3", + "debug": "2.2.0", + "depd": "1.0.1", + "errorhandler": "1.4.3", + "express-session": "1.11.3", + "finalhandler": "0.4.0", + "fresh": "0.3.0", + "http-errors": "1.3.1", + "method-override": "2.3.10", + "morgan": "1.6.1", + "multiparty": "3.3.2", + "on-headers": "1.0.1", + "parseurl": "1.3.2", + "pause": "0.1.0", + "qs": "4.0.0", + "response-time": "2.3.2", + "serve-favicon": "2.3.2", + "serve-index": "1.7.3", + "serve-static": "1.10.3", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vhost": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "qs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", + "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=", + "dev": true + } + } + }, + "connect-timeout": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.6.2.tgz", + "integrity": "sha1-3ppexh4zoStu2qt7XwYumMWZuI4=", + "dev": true, + "requires": { + "debug": "2.2.0", + "http-errors": "1.3.1", + "ms": "0.7.1", + "on-headers": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU=", + "dev": true + }, + "cookie-parser": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "integrity": "sha1-nXVVcPtdF4kHcSJ6AjFNm+fPg1Y=", + "dev": true, + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6" + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "crc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.3.0.tgz", + "integrity": "sha1-+mIuG8OIvyVzCQgta2UgDOZwkLo=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "csrf": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.6.tgz", + "integrity": "sha1-thEg3c7q/JHnbtUxO7XAsmZ7cQo=", + "dev": true, + "requires": { + "rndm": "1.2.0", + "tsscmp": "1.0.5", + "uid-safe": "2.1.4" + } + }, + "css": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", + "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "source-map": "0.1.43", + "source-map-resolve": "0.3.1", + "urix": "0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "csurf": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.8.3.tgz", + "integrity": "sha1-I/KhO/HY/OHQyZZYg5RELLqGpWo=", + "dev": true, + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "csrf": "3.0.6", + "http-errors": "1.3.1" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.37" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "deap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/deap/-/deap-1.0.0.tgz", + "integrity": "sha1-sUi/gkMKJ2mbdIOgPra2dYW/yIg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-fabulous": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-0.0.4.tgz", + "integrity": "sha1-+gccXYdIRoVCSAdCHKSxawsaB2M=", + "dev": true, + "requires": { + "debug": "2.6.9", + "lazy-debug-legacy": "0.0.1", + "object-assign": "4.1.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "dev": true + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "1.0.3" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=", + "dev": true + }, + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "dev": true, + "requires": { + "fs-exists-sync": "0.1.0" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "dev": true, + "requires": { + "once": "1.3.3" + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", + "dev": true + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "optional": true, + "requires": { + "prr": "0.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "errorhandler": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.3.tgz", + "integrity": "sha1-t7cO2PNZ6duICS8tIMD4MUIK2D8=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "escape-html": "1.0.3" + }, + "dependencies": { + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "dev": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + } + } + }, + "es5-ext": { + "version": "0.10.37", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz", + "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.7.1.tgz", + "integrity": "sha1-MOz89mypjcZ80v0WKr626vqM5vw=", + "dev": true, + "requires": { + "esprima": "1.2.5", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.5.0", + "source-map": "0.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "escomplex-plugin-metrics-module": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/escomplex-plugin-metrics-module/-/escomplex-plugin-metrics-module-0.0.10.tgz", + "integrity": "sha1-6pZ8sSwSOCDSTnrATkJ4oZvPzoM=", + "dev": true, + "requires": { + "typhonjs-escomplex-commons": "0.0.14" + } + }, + "escomplex-plugin-metrics-project": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/escomplex-plugin-metrics-project/-/escomplex-plugin-metrics-project-0.0.10.tgz", + "integrity": "sha1-Z6Y1wctV4vO+y3dO/mpANOYjiqg=", + "dev": true, + "requires": { + "typhonjs-escomplex-commons": "0.0.14" + } + }, + "escomplex-plugin-syntax-babylon": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/escomplex-plugin-syntax-babylon/-/escomplex-plugin-syntax-babylon-0.0.10.tgz", + "integrity": "sha1-sUcBSYHP57yKK0NJfmsyiRqD5yA=", + "dev": true, + "requires": { + "escomplex-plugin-syntax-estree": "0.0.10", + "typhonjs-escomplex-commons": "0.0.14" + } + }, + "escomplex-plugin-syntax-estree": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/escomplex-plugin-syntax-estree/-/escomplex-plugin-syntax-estree-0.0.10.tgz", + "integrity": "sha1-b1MfnZM/vB68lDjpwQGxtGNs/Gg=", + "dev": true, + "requires": { + "typhonjs-escomplex-commons": "0.0.14" + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "eslint": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.0.1.tgz", + "integrity": "sha1-/xLq/cBOpx0XOgmdRlihNucVeTQ=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "concat-stream": "1.5.0", + "debug": "2.6.9", + "doctrine": "1.5.0", + "es6-map": "0.1.5", + "escope": "3.6.0", + "espree": "3.5.2", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "1.3.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.16.1", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "1.2.1", + "progress": "1.1.8", + "require-uncached": "1.0.3", + "shelljs": "0.6.1", + "strip-bom": "3.0.0", + "strip-json-comments": "1.0.4", + "table": "3.8.3", + "text-table": "0.2.0", + "user-home": "2.0.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "shelljs": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", + "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + } + } + }, + "esprima": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha1-CZNQL+r2aBODJXVvMPmlH+7sEek=", + "dev": true + }, + "esprima-harmony-jscs": { + "version": "1.1.0-bin", + "resolved": "https://registry.npmjs.org/esprima-harmony-jscs/-/esprima-harmony-jscs-1.1.0-bin.tgz", + "integrity": "sha1-B8sFcdlD7tS8e/6ecmN8Zj/hUe0=", + "dev": true + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "express-session": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz", + "integrity": "sha1-XMmPP1/4Ttg1+Ry/CqvQxxB0AK8=", + "dev": true, + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "crc": "3.3.0", + "debug": "2.2.0", + "depd": "1.0.1", + "on-headers": "1.0.1", + "parseurl": "1.3.2", + "uid-safe": "2.0.0", + "utils-merge": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "uid-safe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz", + "integrity": "sha1-p/PGymSh9qXQTsDvPkw9U2cxcTc=", + "dev": true, + "requires": { + "base64-url": "1.2.1" + } + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-zip": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", + "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=", + "dev": true, + "requires": { + "concat-stream": "1.5.0", + "debug": "0.7.4", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", + "dev": true + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", + "dev": true + }, + "fancy-log": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "time-stamp": "1.1.0" + } + }, + "fast-levenshtein": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz", + "integrity": "sha1-AXjc3uAjuSkFGTrwlZ6KdjnP3Lk=", + "dev": true + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "file-entry-cache": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", + "integrity": "sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.1.8.tgz", + "integrity": "sha1-UGuRqTluqn4y+0KoQHfHoMc2t0E=", + "dev": true, + "requires": { + "glob": "3.2.11", + "minimatch": "0.4.0" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + }, + "dependencies": { + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "minimatch": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.4.0.tgz", + "integrity": "sha1-vSx9Bg0sjI/Xzefx8u0tWycP2xs=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "filesize": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.1.6.tgz", + "integrity": "sha1-WISSTvyBpkTjcJqsQDIWGDw9eYo=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "integrity": "sha1-llpS2ejQXSuFdUhUH7ibU6JJfZs=", + "dev": true, + "requires": { + "debug": "2.2.0", + "escape-html": "1.0.2", + "on-finished": "2.3.0", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "escape-html": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", + "integrity": "sha1-130y+pjjjC9BroXpJ44ODmuhAiw=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "findup-sync": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", + "dev": true, + "requires": { + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" + } + }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "is-plain-object": "2.0.4", + "object.defaults": "1.1.0", + "object.pick": "1.3.0", + "parse-filepath": "1.0.1" + }, + "dependencies": { + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + } + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flagged-respawn": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", + "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", + "dev": true + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fresh": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=", + "dev": true + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true + }, + "fs-extra": { + "version": "0.26.7", + "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", + "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.2" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "dev": true, + "requires": { + "globule": "0.1.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "2.0.10", + "once": "1.3.3" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "dev": true, + "requires": { + "glob": "4.5.3", + "glob2base": "0.0.12", + "minimatch": "2.0.10", + "ordered-read-streams": "0.1.0", + "through2": "0.6.5", + "unique-stream": "1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "dev": true, + "requires": { + "gaze": "0.5.2" + } + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "requires": { + "find-index": "0.1.1" + } + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "dev": true, + "requires": { + "global-prefix": "0.1.5", + "is-windows": "0.2.0" + } + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "0.2.0", + "which": "1.3.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dev": true, + "requires": { + "glob": "3.1.21", + "lodash": "1.0.2", + "minimatch": "0.2.14" + }, + "dependencies": { + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true, + "requires": { + "graceful-fs": "1.2.3", + "inherits": "1.0.2", + "minimatch": "0.2.14" + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "glogg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "dev": true, + "requires": { + "natives": "1.1.1" + } + }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "dev": true, + "requires": { + "archy": "1.0.0", + "chalk": "1.1.3", + "deprecated": "0.0.1", + "gulp-util": "3.0.8", + "interpret": "1.1.0", + "liftoff": "2.3.0", + "minimist": "1.2.0", + "orchestrator": "0.3.8", + "pretty-hrtime": "1.0.3", + "semver": "4.3.6", + "tildify": "1.2.0", + "v8flags": "2.1.1", + "vinyl-fs": "0.3.14" + } + }, + "gulp-bytediff": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/gulp-bytediff/-/gulp-bytediff-0.2.1.tgz", + "integrity": "sha1-Al1bETWZhEWuZTAE9/oPUcHa7Ow=", + "dev": true, + "requires": { + "filesize": "3.1.6", + "gulp-util": "3.0.8", + "map-stream": "0.0.7" + } + }, + "gulp-jscs": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-jscs/-/gulp-jscs-1.6.0.tgz", + "integrity": "sha1-sV7lJgH391pyXTQdHaFhsBJ9Z6A=", + "dev": true, + "requires": { + "gulp-util": "3.0.8", + "jscs": "1.13.1", + "object-assign": "2.1.1", + "through2": "0.6.5", + "tildify": "1.2.0" + }, + "dependencies": { + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "gulp-jshint": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/gulp-jshint/-/gulp-jshint-1.12.0.tgz", + "integrity": "sha1-I/vRuv3W+/5h6mRmenSAmpYdA94=", + "dev": true, + "requires": { + "gulp-util": "3.0.8", + "jshint": "2.9.5", + "lodash": "3.10.1", + "minimatch": "2.0.10", + "rcloader": "0.1.2", + "through2": "0.6.5" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "gulp-less": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-3.3.2.tgz", + "integrity": "sha1-9mNq3MZhUKiQJxn6WZY/x/hipJo=", + "dev": true, + "requires": { + "accord": "0.27.3", + "gulp-util": "3.0.8", + "less": "2.7.3", + "object-assign": "4.1.1", + "through2": "2.0.3", + "vinyl-sourcemaps-apply": "0.2.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "gulp-load-plugins": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/gulp-load-plugins/-/gulp-load-plugins-0.7.1.tgz", + "integrity": "sha1-Qq7x749MHMuoZP4olIvnre9uZh4=", + "dev": true, + "requires": { + "findup-sync": "0.1.3", + "multimatch": "1.0.0" + }, + "dependencies": { + "findup-sync": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", + "dev": true, + "requires": { + "glob": "3.2.11", + "lodash": "2.4.2" + } + }, + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + } + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "gulp-load-utils": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/gulp-load-utils/-/gulp-load-utils-0.0.4.tgz", + "integrity": "sha1-oFkTHUfyw19LByrTOl75sU2oBV0=", + "dev": true + }, + "gulp-minify-css": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/gulp-minify-css/-/gulp-minify-css-0.3.13.tgz", + "integrity": "sha1-uoE8ZlQihoMFODzNGF8jnB41IJs=", + "dev": true, + "requires": { + "bufferstreams": "0.0.2", + "clean-css": "3.0.10", + "gulp-util": "3.0.8", + "memory-cache": "0.0.5", + "through2": "0.6.5", + "vinyl-sourcemaps-apply": "0.1.4" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.1.4.tgz", + "integrity": "sha1-xfy9Q+LyOEI8LcmL3db3m3K8NFs=", + "dev": true, + "requires": { + "source-map": "0.1.43" + } + } + } + }, + "gulp-rename": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", + "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", + "dev": true + }, + "gulp-sourcemaps": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.12.0.tgz", + "integrity": "sha1-eG+XyUoPloSSRl1wVY4EJCxnlZg=", + "dev": true, + "requires": { + "@gulp-sourcemaps/map-sources": "1.0.0", + "acorn": "4.0.13", + "convert-source-map": "1.5.1", + "css": "2.2.1", + "debug-fabulous": "0.0.4", + "detect-newline": "2.1.0", + "graceful-fs": "4.1.11", + "source-map": "0.5.7", + "strip-bom": "2.0.0", + "through2": "2.0.3", + "vinyl": "1.2.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "1.0.3", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-task-listing": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/gulp-task-listing/-/gulp-task-listing-0.3.0.tgz", + "integrity": "sha1-JGXrAtGw2dl0nVnaVX4JcSbwCIc=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "gulp-uglify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-1.5.4.tgz", + "integrity": "sha1-UkeI2HZm0J+dDCH7IXf5ADmmWMk=", + "dev": true, + "requires": { + "deap": "1.0.0", + "fancy-log": "1.3.0", + "gulp-util": "3.0.8", + "isobject": "2.1.0", + "through2": "2.0.3", + "uglify-js": "2.6.4", + "uglify-save-license": "0.4.1", + "vinyl-sourcemaps-apply": "0.2.1" + }, + "dependencies": { + "uglify-js": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz", + "integrity": "sha1-ZeovswWck5RpLxX+2HwrNsFrmt8=", + "dev": true, + "requires": { + "async": "0.2.10", + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.2.0", + "fancy-log": "1.3.0", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.3", + "vinyl": "0.5.3" + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "1.0.0" + } + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "hasha": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", + "dev": true, + "requires": { + "is-stream": "1.1.0", + "pinkie-promise": "2.0.1" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "1.1.14" + } + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "statuses": "1.4.0" + } + }, + "http-proxy": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-0.10.4.tgz", + "integrity": "sha1-FLoM6qIZf4n6MN6p57CeGc2Twi8=", + "dev": true, + "requires": { + "colors": "0.6.2", + "optimist": "0.6.1", + "pkginfo": "0.3.1", + "utile": "0.2.1" + }, + "dependencies": { + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=", + "dev": true + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "i": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz", + "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=", + "dev": true + }, + "ibrik": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ibrik/-/ibrik-2.0.0.tgz", + "integrity": "sha1-iaJDTypcgrkhZsPZfeO1Y27qLpw=", + "dev": true, + "requires": { + "coffee-script": "1.8.0", + "esprima": "1.2.5", + "estraverse": "1.8.0", + "fileset": "0.1.8", + "istanbul": "0.3.22", + "lodash": "2.4.2", + "mkdirp": "0.5.1", + "optimist": "0.6.1", + "which": "1.0.9" + }, + "dependencies": { + "estraverse": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.8.0.tgz", + "integrity": "sha1-PxJk+2LIUA265eT3NwXNV21q9Cg=", + "dev": true + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "which": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", + "dev": true + } + } + }, + "iconv-lite": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", + "integrity": "sha1-LstC/SlHRJIiCaLnxATayHk9it4=", + "dev": true + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indx": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/indx/-/indx-0.2.3.tgz", + "integrity": "sha1-Fdz1bunPZcAjTFE8J/vVgOcPvFA=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.3.3", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.2.0", + "figures": "1.7.0", + "lodash": "4.17.4", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + }, + "dependencies": { + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + } + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "is-absolute": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "dev": true, + "requires": { + "is-relative": "0.2.1", + "is-windows": "0.2.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-my-json-valid": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", + "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-relative": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "dev": true, + "requires": { + "is-unc-path": "0.1.2" + } + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true, + "requires": { + "tryit": "1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "dev": true, + "requires": { + "unc-path-regex": "0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.3.22.tgz", + "integrity": "sha1-PhZNhQIf4ZyYXR8OfvDD4i0BLrY=", + "dev": true, + "requires": { + "abbrev": "1.0.9", + "async": "1.5.2", + "escodegen": "1.7.1", + "esprima": "2.5.0", + "fileset": "0.2.1", + "handlebars": "4.0.11", + "js-yaml": "3.10.0", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "once": "1.3.3", + "resolve": "1.1.7", + "supports-color": "3.2.3", + "which": "1.3.0", + "wordwrap": "1.0.0" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "esprima": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.5.0.tgz", + "integrity": "sha1-84ekb9NEwbGjm6+MIL+0O20AWMw=", + "dev": true + }, + "fileset": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.2.1.tgz", + "integrity": "sha1-WI74lzxmI7KnbfRlEFaWuWqsgGc=", + "dev": true, + "requires": { + "glob": "5.0.15", + "minimatch": "2.0.10" + } + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "2.0.10", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "jquery": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", + "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=" + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jscs": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/jscs/-/jscs-1.13.1.tgz", + "integrity": "sha1-fdRuGG8PzgcSzQMerMCkXvfc/rA=", + "dev": true, + "requires": { + "chalk": "1.0.0", + "cli-table": "0.3.1", + "commander": "2.6.0", + "esprima": "1.2.5", + "esprima-harmony-jscs": "1.1.0-bin", + "estraverse": "1.9.3", + "exit": "0.1.2", + "glob": "5.0.15", + "lodash.assign": "3.0.0", + "minimatch": "2.0.10", + "pathval": "0.1.1", + "prompt": "0.2.14", + "strip-json-comments": "1.0.4", + "vow": "0.4.17", + "vow-fs": "0.3.6", + "xmlbuilder": "2.6.5" + }, + "dependencies": { + "ansi-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", + "integrity": "sha1-QchHGUZGN15qGl0Qw8oFTvn8mA0=", + "dev": true + }, + "chalk": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz", + "integrity": "sha1-s89O0P9Tl8mcdbj2edsvUoMfltw=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "1.0.3", + "strip-ansi": "2.0.1", + "supports-color": "1.3.1" + } + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "2.0.10", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "has-ansi": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz", + "integrity": "sha1-wLWxYV2eOCsP9nFp2We0JeSMpTg=", + "dev": true, + "requires": { + "ansi-regex": "1.1.1", + "get-stdin": "4.0.1" + } + }, + "strip-ansi": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", + "integrity": "sha1-32LBqpTtLxFOHQ8h/R1QSCt5pg4=", + "dev": true, + "requires": { + "ansi-regex": "1.1.1" + } + }, + "supports-color": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz", + "integrity": "sha1-FXWN8J2P87SswwdTn6vicJXhBC0=", + "dev": true + } + } + }, + "jshint": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz", + "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=", + "dev": true, + "requires": { + "cli": "1.0.1", + "console-browserify": "1.1.0", + "exit": "0.1.2", + "htmlparser2": "3.8.3", + "lodash": "3.7.0", + "minimatch": "3.0.4", + "shelljs": "0.3.0", + "strip-json-comments": "1.0.4" + }, + "dependencies": { + "lodash": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz", + "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "jshint-stylish": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jshint-stylish/-/jshint-stylish-1.0.2.tgz", + "integrity": "sha1-6Z88w0CvsY4qdwL4eY10AMoxRGo=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "log-symbols": "1.0.2", + "string-length": "1.0.1", + "text-table": "0.2.0" + } + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true, + "optional": true + } + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "karma": { + "version": "0.12.37", + "resolved": "https://registry.npmjs.org/karma/-/karma-0.12.37.tgz", + "integrity": "sha1-Gp9/3szWneLoNeBO26wuzT+mReQ=", + "dev": true, + "requires": { + "chokidar": "1.7.0", + "colors": "1.1.2", + "connect": "2.30.2", + "di": "0.0.1", + "glob": "5.0.15", + "graceful-fs": "3.0.11", + "http-proxy": "0.10.4", + "lodash": "3.10.1", + "log4js": "0.6.38", + "mime": "1.6.0", + "minimatch": "2.0.10", + "optimist": "0.6.1", + "q": "1.5.1", + "rimraf": "2.6.2", + "socket.io": "0.9.16", + "source-map": "0.4.4", + "useragent": "2.2.1" + }, + "dependencies": { + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "2.0.10", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "karma-coverage": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-0.2.7.tgz", + "integrity": "sha1-92dAsnW78woKufQdjPVoQ6CZRXY=", + "dev": true, + "requires": { + "dateformat": "1.0.12", + "ibrik": "2.0.0", + "istanbul": "0.3.22", + "minimatch": "0.3.0" + }, + "dependencies": { + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "3.7.0" + } + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "karma-phantomjs-launcher": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-0.1.4.tgz", + "integrity": "sha1-TvluQyL/Y65dkY5RwlshNyMjjzA=", + "dev": true, + "requires": { + "phantomjs": "1.9.20" + } + }, + "karma-qunit": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/karma-qunit/-/karma-qunit-0.1.9.tgz", + "integrity": "sha1-SXURbg/OvJDI0y8Z8SIuNbTqDQs=", + "dev": true + }, + "kew": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true, + "optional": true + } + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lazy-debug-legacy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz", + "integrity": "sha1-U3cWwHduTPeePtG2IfdljCkRsbE=", + "dev": true + }, + "less": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", + "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", + "dev": true, + "requires": { + "errno": "0.1.4", + "graceful-fs": "4.1.11", + "image-size": "0.5.5", + "mime": "1.6.0", + "mkdirp": "0.5.1", + "promise": "7.3.1", + "request": "2.81.0", + "source-map": "0.5.7" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true, + "optional": true + } + } + }, + "levn": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.2.5.tgz", + "integrity": "sha1-uo0znQykphDjo/FFucr0iAcVUFQ=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "liftoff": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", + "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", + "dev": true, + "requires": { + "extend": "3.0.1", + "findup-sync": "0.4.3", + "fined": "1.1.0", + "flagged-respawn": "0.3.2", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.mapvalues": "4.6.0", + "rechoir": "0.6.2", + "resolve": "1.5.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, + "lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "dev": true, + "requires": { + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9", + "lodash.restparam": "3.6.1" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.0.0.tgz", + "integrity": "sha1-93SdFYCkEgJzo3H1SmaxTJ1yJvo=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._createassigner": "3.1.1" + } + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "3.0.1" + } + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", + "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=", + "dev": true + }, + "lodash.partialright": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz", + "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs=", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "log4js": { + "version": "0.6.38", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "semver": "4.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-cache": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.0.5.tgz", + "integrity": "sha1-2/maVtc2LEPsyvOfC6b5fzGgZ4Y=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "merge-stream": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-0.1.8.tgz", + "integrity": "sha1-SKB7O0oSHXSj7b/c20sIrb8CQLE=", + "dev": true, + "requires": { + "through2": "0.6.5" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "method-override": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.10.tgz", + "integrity": "sha1-49r41d7hDdLc59SuiNYrvud0drQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "methods": "1.1.2", + "parseurl": "1.3.2", + "vary": "1.1.2" + }, + "dependencies": { + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + } + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "morgan": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz", + "integrity": "sha1-X9gYOYxoGcuiinzWZk8pL+HAu/I=", + "dev": true, + "requires": { + "basic-auth": "1.0.4", + "debug": "2.2.0", + "depd": "1.0.1", + "on-finished": "2.3.0", + "on-headers": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multimatch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-1.0.0.tgz", + "integrity": "sha1-3N90mJb1FIDg4cSNq5y6Qe30ZKs=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "minimatch": "1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", + "integrity": "sha1-4N0hILSeG3JM6NcUxSCCKpQ4V20=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "multiparty": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz", + "integrity": "sha1-Nd5oBNwZZD5SSfPT473GyM4wHT8=", + "dev": true, + "requires": { + "readable-stream": "1.1.14", + "stream-counter": "0.2.0" + } + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "natives": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz", + "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==", + "dev": true + }, + "ncp": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", + "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=", + "dev": true + }, + "negotiator": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", + "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g=", + "dev": true + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.0.9" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "4.3.6", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "1.0.1", + "array-slice": "1.1.0", + "for-own": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optionator": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.5.0.tgz", + "integrity": "sha1-t1qJlaLUF98ltuTjhi9QqohlE2g=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "1.0.7", + "levn": "0.2.5", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "0.0.2" + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "dev": true, + "requires": { + "end-of-stream": "0.1.5", + "sequencify": "0.0.7", + "stream-consume": "0.1.0" + } + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "parse-filepath": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", + "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", + "dev": true, + "requires": { + "is-absolute": "0.2.6", + "map-cache": "0.2.2", + "path-root": "0.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "0.1.2" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, + "pathval": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-0.1.1.tgz", + "integrity": "sha1-CPkRzcqczllCiA2ngXvAtyO2bYI=", + "dev": true + }, + "pause": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.1.0.tgz", + "integrity": "sha1-68ikqGGf8LioGsFRPDQ0/0af23Q=", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true, + "optional": true + }, + "phantomjs": { + "version": "1.9.20", + "resolved": "https://registry.npmjs.org/phantomjs/-/phantomjs-1.9.20.tgz", + "integrity": "sha1-RCSsog4U0lXAsIia9va4lz2hDg0=", + "dev": true, + "requires": { + "extract-zip": "1.5.0", + "fs-extra": "0.26.7", + "hasha": "2.2.0", + "kew": "0.7.0", + "progress": "1.1.8", + "request": "2.67.0", + "request-progress": "2.0.1", + "which": "1.2.14" + }, + "dependencies": { + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "dev": true + }, + "form-data": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", + "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", + "dev": true, + "requires": { + "async": "2.6.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.12.2", + "is-my-json-valid": "2.16.1", + "pinkie-promise": "2.0.1" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "qs": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.1.tgz", + "integrity": "sha1-gB/uAw4LlFDWOFrcSKTMVbRK7fw=", + "dev": true + }, + "request": { + "version": "2.67.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz", + "integrity": "sha1-ivdHgOK/EeoK6aqWXBHxGv0nJ0I=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "bl": "1.0.3", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "1.0.1", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "node-uuid": "1.4.8", + "oauth-sign": "0.8.2", + "qs": "5.2.1", + "stringstream": "0.0.5", + "tough-cookie": "2.2.2", + "tunnel-agent": "0.4.3" + } + }, + "tough-cookie": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", + "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + } + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=", + "dev": true + }, + "plato": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/plato/-/plato-1.7.0.tgz", + "integrity": "sha1-mQCltJEKoZDeCKRbrmF1M0/WRqc=", + "dev": true, + "requires": { + "eslint": "3.0.1", + "fs-extra": "0.30.0", + "glob": "7.0.6", + "jshint": "2.9.5", + "lodash": "4.13.1", + "posix-getopt": "1.2.0", + "typhonjs-escomplex": "0.0.9" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.2" + } + }, + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "lodash": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.13.1.tgz", + "integrity": "sha1-g+SxCRP0hJbU0W/sSlYK8u50S2g=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "policyfile": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz", + "integrity": "sha1-1rgurZiueeviKOLa9ZAzEeyYLk0=", + "dev": true + }, + "posix-getopt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/posix-getopt/-/posix-getopt-1.2.0.tgz", + "integrity": "sha1-Su7rfa3mb8qKk2XdqfawBXQctiE=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "2.0.6" + } + }, + "prompt": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", + "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", + "dev": true, + "requires": { + "pkginfo": "0.4.1", + "read": "1.0.7", + "revalidator": "0.1.8", + "utile": "0.2.1", + "winston": "0.8.3" + } + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true, + "optional": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true, + "optional": true + }, + "qunitjs": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/qunitjs/-/qunitjs-1.14.0.tgz", + "integrity": "sha1-x+5PZt4fDJd8YUgHqFDce796l/s=", + "dev": true + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "range-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=", + "dev": true + }, + "raw-body": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "dev": true, + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.13", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + } + } + }, + "rcfinder": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/rcfinder/-/rcfinder-0.1.9.tgz", + "integrity": "sha1-8+gPOH3fmugK4wpBADKWQuroERU=", + "dev": true, + "requires": { + "lodash.clonedeep": "4.5.0" + } + }, + "rcloader": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/rcloader/-/rcloader-0.1.2.tgz", + "integrity": "sha1-oJY6ZDfQnvjLktky0trUl7DRc2w=", + "dev": true, + "requires": { + "lodash": "2.4.2", + "rcfinder": "0.1.9" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "dev": true, + "requires": { + "mute-stream": "0.0.7" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + }, + "dependencies": { + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.5.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "redis": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/redis/-/redis-0.7.3.tgz", + "integrity": "sha1-7le3pE0l7BWU5ENl2BZfp9HUgRo=", + "dev": true, + "optional": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + }, + "dependencies": { + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true, + "optional": true + } + } + }, + "request-progress": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", + "dev": true, + "requires": { + "throttleit": "1.0.0" + } + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "dev": true, + "requires": { + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "response-time": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.2.tgz", + "integrity": "sha1-/6cbq5UtYvfB1Jt0NDVfvGjf/Fo=", + "dev": true, + "requires": { + "depd": "1.1.1", + "on-headers": "1.0.1" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + } + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "revalidator": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "rndm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", + "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=", + "dev": true + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "1.3.3" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "send": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "integrity": "sha1-dl52B8gFVFK7pvCwUllTUJhgNt4=", + "dev": true, + "requires": { + "debug": "2.2.0", + "depd": "1.1.1", + "destroy": "1.0.4", + "escape-html": "1.0.3", + "etag": "1.7.0", + "fresh": "0.3.0", + "http-errors": "1.3.1", + "mime": "1.3.4", + "ms": "0.7.1", + "on-finished": "2.3.0", + "range-parser": "1.0.3", + "statuses": "1.2.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "statuses": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=", + "dev": true + } + } + }, + "sequencify": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "dev": true + }, + "serve-favicon": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.2.tgz", + "integrity": "sha1-3UGeJo3gEqtysxnTN/IQUBP5OB8=", + "dev": true, + "requires": { + "etag": "1.7.0", + "fresh": "0.3.0", + "ms": "0.7.2", + "parseurl": "1.3.2" + }, + "dependencies": { + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "serve-index": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.3.tgz", + "integrity": "sha1-egV/xu4o3GP2RWbl+lexEahq7NI=", + "dev": true, + "requires": { + "accepts": "1.2.13", + "batch": "0.5.3", + "debug": "2.2.0", + "escape-html": "1.0.3", + "http-errors": "1.3.1", + "mime-types": "2.1.17", + "parseurl": "1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "integrity": "sha1-zlpuzTEB/tXsCYJ9rCKpwpv7BTU=", + "dev": true, + "requires": { + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.13.2" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "socket.io": { + "version": "0.9.16", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-0.9.16.tgz", + "integrity": "sha1-O6sEROSbVfu8FXQk29Qao3WlGnY=", + "dev": true, + "requires": { + "base64id": "0.1.0", + "policyfile": "0.0.4", + "redis": "0.7.3", + "socket.io-client": "0.9.16" + } + }, + "socket.io-client": { + "version": "0.9.16", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.16.tgz", + "integrity": "sha1-TadRXF53MEHRtCOXBBW8xDDzX8Y=", + "dev": true, + "requires": { + "active-x-obfuscator": "0.0.1", + "uglify-js": "1.2.5", + "ws": "0.4.32", + "xmlhttprequest": "1.4.2" + }, + "dependencies": { + "uglify-js": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.5.tgz", + "integrity": "sha1-tULCx29477NLIAsgF3Y0Mw/3ArY=", + "dev": true + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", + "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "dev": true, + "requires": { + "atob": "1.1.3", + "resolve-url": "0.2.1", + "source-map-url": "0.3.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", + "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=", + "dev": true + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "stream-consume": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", + "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", + "dev": true + }, + "stream-counter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz", + "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "dev": true, + "requires": { + "strip-ansi": "3.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "dev": true, + "requires": { + "first-chunk-stream": "1.0.0", + "is-utf8": "0.2.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "tinycolor": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz", + "integrity": "sha1-MgtaUtg6u1l42Bo+iH1K77FaYWQ=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tsscmp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", + "integrity": "sha1-fcSjOvcVgatDN9qR2FylQn69mpc=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typhonjs-ast-walker": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/typhonjs-ast-walker/-/typhonjs-ast-walker-0.1.1.tgz", + "integrity": "sha1-gUVUptrSnhyyy2K8io6GwXTBaOM=", + "dev": true + }, + "typhonjs-escomplex": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/typhonjs-escomplex/-/typhonjs-escomplex-0.0.9.tgz", + "integrity": "sha1-1Phd0oOOeiioVNnyVhbLxyo/Dg8=", + "dev": true, + "requires": { + "babylon": "6.18.0", + "commander": "2.6.0", + "typhonjs-escomplex-module": "0.0.9", + "typhonjs-escomplex-project": "0.0.9" + } + }, + "typhonjs-escomplex-commons": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/typhonjs-escomplex-commons/-/typhonjs-escomplex-commons-0.0.14.tgz", + "integrity": "sha1-V643xFegv6LSRHroJj4CKOK6wco=", + "dev": true + }, + "typhonjs-escomplex-module": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/typhonjs-escomplex-module/-/typhonjs-escomplex-module-0.0.9.tgz", + "integrity": "sha1-31vDYLJg/zbi1pvFu0O3PvPzNlw=", + "dev": true, + "requires": { + "escomplex-plugin-metrics-module": "0.0.10", + "escomplex-plugin-syntax-babylon": "0.0.10", + "typhonjs-ast-walker": "0.1.1", + "typhonjs-escomplex-commons": "0.0.14", + "typhonjs-plugin-manager": "0.0.3" + } + }, + "typhonjs-escomplex-project": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/typhonjs-escomplex-project/-/typhonjs-escomplex-project-0.0.9.tgz", + "integrity": "sha1-C6bwzDq6hiwjqXGpCa6rQR6+G/Q=", + "dev": true, + "requires": { + "escomplex-plugin-metrics-project": "0.0.10", + "typhonjs-escomplex-commons": "0.0.14", + "typhonjs-escomplex-module": "0.0.9", + "typhonjs-plugin-manager": "0.0.3" + } + }, + "typhonjs-plugin-manager": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/typhonjs-plugin-manager/-/typhonjs-plugin-manager-0.0.3.tgz", + "integrity": "sha1-hN1eHQG0QRm95JPqZW3O+JJVq4Q=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "uglify-save-license": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/uglify-save-license/-/uglify-save-license-0.4.1.tgz", + "integrity": "sha1-lXJsF8xv0XHDYX479NjYKqjEzOE=", + "dev": true + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true + }, + "uid-safe": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.4.tgz", + "integrity": "sha1-Otbzg2jG1MjHXsF2I/t5qh0HHYE=", + "dev": true, + "requires": { + "random-bytes": "1.0.0" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "unique-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "useragent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", + "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", + "dev": true, + "requires": { + "lru-cache": "2.2.4", + "tmp": "0.0.33" + }, + "dependencies": { + "lru-cache": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", + "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utile": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", + "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", + "dev": true, + "requires": { + "async": "0.2.10", + "deep-equal": "1.0.1", + "i": "0.3.6", + "mkdirp": "0.5.1", + "ncp": "0.4.2", + "rimraf": "2.6.2" + } + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "1.1.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", + "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "vhost": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vhost/-/vhost-3.0.2.tgz", + "integrity": "sha1-L7HezUxGaqiLD5NBrzPcGv8keNU=", + "dev": true + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "1.0.3", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dev": true, + "requires": { + "defaults": "1.0.3", + "glob-stream": "3.1.18", + "glob-watcher": "0.0.6", + "graceful-fs": "3.0.11", + "mkdirp": "0.5.1", + "strip-bom": "1.0.0", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "vow": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.17.tgz", + "integrity": "sha512-A3/9bWFqf6gT0jLR4/+bT+IPTe1mQf+tdsW6+WI5geP9smAp8Kbbu4R6QQCDKZN/8TSCqTlXVQm12QliB4rHfg==", + "dev": true + }, + "vow-fs": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.3.6.tgz", + "integrity": "sha1-LUxZviLivyYY3fWXq0uqkjvnIA0=", + "dev": true, + "requires": { + "glob": "7.1.2", + "uuid": "2.0.3", + "vow": "0.4.17", + "vow-queue": "0.4.3" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "vow-queue": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.4.3.tgz", + "integrity": "sha512-/poAKDTFL3zYbeQg7cl4BGcfP4sGgXKrHnRFSKj97dteUFu8oyXMwIcdwu8NSx/RmPGIuYx1Bik/y5vU4H/VKw==", + "dev": true, + "requires": { + "vow": "0.4.17" + } + }, + "when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "winston": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", + "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", + "dev": true, + "requires": { + "async": "0.2.10", + "colors": "0.6.2", + "cycle": "1.0.3", + "eyes": "0.1.8", + "isstream": "0.1.2", + "pkginfo": "0.3.1", + "stack-trace": "0.0.10" + }, + "dependencies": { + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=", + "dev": true + } + } + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "ws": { + "version": "0.4.32", + "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", + "integrity": "sha1-eHphVEFPPJntg8V3IVOyD+sM7DI=", + "dev": true, + "requires": { + "commander": "2.1.0", + "nan": "1.0.0", + "options": "0.0.6", + "tinycolor": "0.0.1" + }, + "dependencies": { + "commander": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", + "dev": true + }, + "nan": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz", + "integrity": "sha1-riT4hQgY1mL8q1rPfzuVv6oszzg=", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.5.tgz", + "integrity": "sha1-b/etYPty0idk8AehZLd/K/FABSY=", + "dev": true, + "requires": { + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "xmlhttprequest": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.4.2.tgz", + "integrity": "sha1-AUU6HZvtHo8XL2SVu/TIxCYyFQA=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } + }, + "zeparser": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/zeparser/-/zeparser-0.0.5.tgz", + "integrity": "sha1-A3JlYbwmjy5URPVMZlt/1KjAKeI=", + "dev": true + } + } +} diff --git a/node_modules/toastr/package.json b/node_modules/toastr/package.json new file mode 100644 index 0000000..1726f57 --- /dev/null +++ b/node_modules/toastr/package.json @@ -0,0 +1,68 @@ +{ + "name": "toastr", + "filename": "build/toastr.min.js", + "main": "toastr.js", + "style": "build/toastr.min.css", + "version": "2.1.4", + "description": "ToastrJS is a JavaScript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended.", + "homepage": "http://www.toastrjs.com", + "keywords": [ + "Toastr", + "ToastrJS", + "toastr.js" + ], + "maintainers": [ + { + "name": "John Papa", + "web": "http://www.johnpapa.net", + "twitter": "@john_papa" + }, + { + "name": "Tim Ferrell", + "web": "https://twitter.com/ferrell_tim", + "twitter": "@ferrell_tim" + } + ], + "repository": { + "type": "git", + "url": "git://github.com/CodeSeven/toastr.git" + }, + "bugs": "http://stackoverflow.com/questions/tagged/toastr", + "licenses": [ + { + "type": "MIT", + "url": "http://www.opensource.org/licenses/mit-license.php" + } + ], + "dependencies": { + "jquery": ">=1.12.0" + }, + "devDependencies": { + "gulp": "^3.8.10", + "gulp-bytediff": "^0.2.0", + "gulp-jscs": "^1.3.0", + "gulp-jshint": "^1.9.0", + "gulp-less": "^3.0.3", + "gulp-load-plugins": "^0.7.1", + "gulp-load-utils": "0.0.4", + "gulp-minify-css": "^0.3.11", + "gulp-rename": "^1.2.0", + "gulp-sourcemaps": "^1.2.8", + "gulp-task-listing": "^0.3.0", + "gulp-uglify": "^1.0.1", + "gulp-util": "^3.0.1", + "jquery": "^2.1.1", + "jshint-stylish": "^1.0.0", + "karma": "^0.12.25", + "karma-coverage": "^0.2.6", + "karma-phantomjs-launcher": "^0.1.4", + "karma-qunit": "^0.1.3", + "merge-stream": "^0.1.6", + "phantomjs": "^1.9.7-15", + "plato": "^1.2.2", + "qunitjs": "~1.14.0" + }, + "scripts": { + "test": "gulp test" + } +} diff --git a/node_modules/toastr/release checklist.md b/node_modules/toastr/release checklist.md new file mode 100644 index 0000000..52e5a83 --- /dev/null +++ b/node_modules/toastr/release checklist.md @@ -0,0 +1,32 @@ +Toastr Release Checklist + +1. Update Toastr Version + * toastr.js + * bower.json (toastr-bower repo) + * package.json + * nuget versions and dependency versions + * readme file for github repo + * Consider HotTowel VSIX +2. Gulp + * run main demo + * `gulp analyze` + * `gulp test` + * `gulp` +3. Nuget + * Copy new files in + * Build + * Test +4. CDNJS + * Update CDNJS +5. Update Website with New Downloads +6. Publish Bower + * Include License and Readme + * Test Locally + * Update Github repo toastr-bower + * Github tag + * Register with Bower +7. Publish Nugets +8. Release on Github + * Tag with semver + * Attach all artifacts +9. Blog post \ No newline at end of file diff --git a/node_modules/toastr/tests/qunit/qunit.css b/node_modules/toastr/tests/qunit/qunit.css new file mode 100644 index 0000000..7ba3f9a --- /dev/null +++ b/node_modules/toastr/tests/qunit/qunit.css @@ -0,0 +1,244 @@ +/** + * QUnit v1.12.0 - A JavaScript Unit Testing Framework + * + * http://qunitjs.com + * + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +/** Font Family and Sizes */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { + font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; +} + +#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } +#qunit-tests { font-size: smaller; } + + +/** Resets */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { + margin: 0; + padding: 0; +} + + +/** Header */ + +#qunit-header { + padding: 0.5em 0 0.5em 1em; + + color: #8699a4; + background-color: #0d3349; + + font-size: 1.5em; + line-height: 1em; + font-weight: normal; + + border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-top-right-radius: 5px; + -webkit-border-top-left-radius: 5px; +} + +#qunit-header a { + text-decoration: none; + color: #c2ccd1; +} + +#qunit-header a:hover, +#qunit-header a:focus { + color: #fff; +} + +#qunit-testrunner-toolbar label { + display: inline-block; + padding: 0 .5em 0 .1em; +} + +#qunit-banner { + height: 5px; +} + +#qunit-testrunner-toolbar { + padding: 0.5em 0 0.5em 2em; + color: #5E740B; + background-color: #eee; + overflow: hidden; +} + +#qunit-userAgent { + padding: 0.5em 0 0.5em 2.5em; + background-color: #2b81af; + color: #fff; + text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; +} + +#qunit-modulefilter-container { + float: right; +} + +/** Tests: Pass/Fail */ + +#qunit-tests { + list-style-position: inside; +} + +#qunit-tests li { + padding: 0.4em 0.5em 0.4em 2.5em; + border-bottom: 1px solid #fff; + list-style-position: inside; +} + +#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { + display: none; +} + +#qunit-tests li strong { + cursor: pointer; +} + +#qunit-tests li a { + padding: 0.5em; + color: #c2ccd1; + text-decoration: none; +} +#qunit-tests li a:hover, +#qunit-tests li a:focus { + color: #000; +} + +#qunit-tests li .runtime { + float: right; + font-size: smaller; +} + +.qunit-assert-list { + margin-top: 0.5em; + padding: 0.5em; + + background-color: #fff; + + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} + +.qunit-collapsed { + display: none; +} + +#qunit-tests table { + border-collapse: collapse; + margin-top: .2em; +} + +#qunit-tests th { + text-align: right; + vertical-align: top; + padding: 0 .5em 0 0; +} + +#qunit-tests td { + vertical-align: top; +} + +#qunit-tests pre { + margin: 0; + white-space: pre-wrap; + word-wrap: break-word; +} + +#qunit-tests del { + background-color: #e0f2be; + color: #374e0c; + text-decoration: none; +} + +#qunit-tests ins { + background-color: #ffcaca; + color: #500; + text-decoration: none; +} + +/*** Test Counts */ + +#qunit-tests b.counts { color: black; } +#qunit-tests b.passed { color: #5E740B; } +#qunit-tests b.failed { color: #710909; } + +#qunit-tests li li { + padding: 5px; + background-color: #fff; + border-bottom: none; + list-style-position: inside; +} + +/*** Passing Styles */ + +#qunit-tests li li.pass { + color: #3c510c; + background-color: #fff; + border-left: 10px solid #C6E746; +} + +#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } +#qunit-tests .pass .test-name { color: #366097; } + +#qunit-tests .pass .test-actual, +#qunit-tests .pass .test-expected { color: #999999; } + +#qunit-banner.qunit-pass { background-color: #C6E746; } + +/*** Failing Styles */ + +#qunit-tests li li.fail { + color: #710909; + background-color: #fff; + border-left: 10px solid #EE5757; + white-space: pre; +} + +#qunit-tests > li:last-child { + border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -webkit-border-bottom-right-radius: 5px; + -webkit-border-bottom-left-radius: 5px; +} + +#qunit-tests .fail { color: #000000; background-color: #EE5757; } +#qunit-tests .fail .test-name, +#qunit-tests .fail .module-name { color: #000000; } + +#qunit-tests .fail .test-actual { color: #EE5757; } +#qunit-tests .fail .test-expected { color: green; } + +#qunit-banner.qunit-fail { background-color: #EE5757; } + + +/** Result */ + +#qunit-testresult { + padding: 0.5em 0.5em 0.5em 2.5em; + + color: #2b81af; + background-color: #D2E0E6; + + border-bottom: 1px solid white; +} +#qunit-testresult .module-name { + font-weight: bold; +} + +/** Fixture */ + +#qunit-fixture { + position: absolute; + top: -10000px; + left: -10000px; + width: 1000px; + height: 1000px; +} diff --git a/node_modules/toastr/tests/qunit/qunit.js b/node_modules/toastr/tests/qunit/qunit.js new file mode 100644 index 0000000..84c7390 --- /dev/null +++ b/node_modules/toastr/tests/qunit/qunit.js @@ -0,0 +1,2212 @@ +/** + * QUnit v1.12.0 - A JavaScript Unit Testing Framework + * + * http://qunitjs.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license/ + */ + +(function( window ) { + +var QUnit, + assert, + config, + onErrorFnPrev, + testId = 0, + fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""), + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + // Keep a local reference to Date (GH-283) + Date = window.Date, + setTimeout = window.setTimeout, + defined = { + setTimeout: typeof window.setTimeout !== "undefined", + sessionStorage: (function() { + var x = "qunit-test-string"; + try { + sessionStorage.setItem( x, x ); + sessionStorage.removeItem( x ); + return true; + } catch( e ) { + return false; + } + }()) + }, + /** + * Provides a normalized error string, correcting an issue + * with IE 7 (and prior) where Error.prototype.toString is + * not properly implemented + * + * Based on http://es5.github.com/#x15.11.4.4 + * + * @param {String|Error} error + * @return {String} error message + */ + errorString = function( error ) { + var name, message, + errorString = error.toString(); + if ( errorString.substring( 0, 7 ) === "[object" ) { + name = error.name ? error.name.toString() : "Error"; + message = error.message ? error.message.toString() : ""; + if ( name && message ) { + return name + ": " + message; + } else if ( name ) { + return name; + } else if ( message ) { + return message; + } else { + return "Error"; + } + } else { + return errorString; + } + }, + /** + * Makes a clone of an object using only Array or Object as base, + * and copies over the own enumerable properties. + * + * @param {Object} obj + * @return {Object} New object with only the own properties (recursively). + */ + objectValues = function( obj ) { + // Grunt 0.3.x uses an older version of jshint that still has jshint/jshint#392. + /*jshint newcap: false */ + var key, val, + vals = QUnit.is( "array", obj ) ? [] : {}; + for ( key in obj ) { + if ( hasOwn.call( obj, key ) ) { + val = obj[key]; + vals[key] = val === Object(val) ? objectValues(val) : val; + } + } + return vals; + }; + +function Test( settings ) { + extend( this, settings ); + this.assertions = []; + this.testNumber = ++Test.count; +} + +Test.count = 0; + +Test.prototype = { + init: function() { + var a, b, li, + tests = id( "qunit-tests" ); + + if ( tests ) { + b = document.createElement( "strong" ); + b.innerHTML = this.nameHtml; + + // `a` initialized at top of scope + a = document.createElement( "a" ); + a.innerHTML = "Rerun"; + a.href = QUnit.url({ testNumber: this.testNumber }); + + li = document.createElement( "li" ); + li.appendChild( b ); + li.appendChild( a ); + li.className = "running"; + li.id = this.id = "qunit-test-output" + testId++; + + tests.appendChild( li ); + } + }, + setup: function() { + if ( + // Emit moduleStart when we're switching from one module to another + this.module !== config.previousModule || + // They could be equal (both undefined) but if the previousModule property doesn't + // yet exist it means this is the first test in a suite that isn't wrapped in a + // module, in which case we'll just emit a moduleStart event for 'undefined'. + // Without this, reporters can get testStart before moduleStart which is a problem. + !hasOwn.call( config, "previousModule" ) + ) { + if ( hasOwn.call( config, "previousModule" ) ) { + runLoggingCallbacks( "moduleDone", QUnit, { + name: config.previousModule, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all + }); + } + config.previousModule = this.module; + config.moduleStats = { all: 0, bad: 0 }; + runLoggingCallbacks( "moduleStart", QUnit, { + name: this.module + }); + } + + config.current = this; + + this.testEnvironment = extend({ + setup: function() {}, + teardown: function() {} + }, this.moduleTestEnvironment ); + + this.started = +new Date(); + runLoggingCallbacks( "testStart", QUnit, { + name: this.testName, + module: this.module + }); + + /*jshint camelcase:false */ + + + /** + * Expose the current test environment. + * + * @deprecated since 1.12.0: Use QUnit.config.current.testEnvironment instead. + */ + QUnit.current_testEnvironment = this.testEnvironment; + + /*jshint camelcase:true */ + + if ( !config.pollution ) { + saveGlobal(); + } + if ( config.notrycatch ) { + this.testEnvironment.setup.call( this.testEnvironment, QUnit.assert ); + return; + } + try { + this.testEnvironment.setup.call( this.testEnvironment, QUnit.assert ); + } catch( e ) { + QUnit.pushFailure( "Setup failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) ); + } + }, + run: function() { + config.current = this; + + var running = id( "qunit-testresult" ); + + if ( running ) { + running.innerHTML = "Running:
      " + this.nameHtml; + } + + if ( this.async ) { + QUnit.stop(); + } + + this.callbackStarted = +new Date(); + + if ( config.notrycatch ) { + this.callback.call( this.testEnvironment, QUnit.assert ); + this.callbackRuntime = +new Date() - this.callbackStarted; + return; + } + + try { + this.callback.call( this.testEnvironment, QUnit.assert ); + this.callbackRuntime = +new Date() - this.callbackStarted; + } catch( e ) { + this.callbackRuntime = +new Date() - this.callbackStarted; + + QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) ); + // else next test will carry the responsibility + saveGlobal(); + + // Restart the tests if they're blocking + if ( config.blocking ) { + QUnit.start(); + } + } + }, + teardown: function() { + config.current = this; + if ( config.notrycatch ) { + if ( typeof this.callbackRuntime === "undefined" ) { + this.callbackRuntime = +new Date() - this.callbackStarted; + } + this.testEnvironment.teardown.call( this.testEnvironment, QUnit.assert ); + return; + } else { + try { + this.testEnvironment.teardown.call( this.testEnvironment, QUnit.assert ); + } catch( e ) { + QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) ); + } + } + checkPollution(); + }, + finish: function() { + config.current = this; + if ( config.requireExpects && this.expected === null ) { + QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack ); + } else if ( this.expected !== null && this.expected !== this.assertions.length ) { + QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack ); + } else if ( this.expected === null && !this.assertions.length ) { + QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack ); + } + + var i, assertion, a, b, time, li, ol, + test = this, + good = 0, + bad = 0, + tests = id( "qunit-tests" ); + + this.runtime = +new Date() - this.started; + config.stats.all += this.assertions.length; + config.moduleStats.all += this.assertions.length; + + if ( tests ) { + ol = document.createElement( "ol" ); + ol.className = "qunit-assert-list"; + + for ( i = 0; i < this.assertions.length; i++ ) { + assertion = this.assertions[i]; + + li = document.createElement( "li" ); + li.className = assertion.result ? "pass" : "fail"; + li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" ); + ol.appendChild( li ); + + if ( assertion.result ) { + good++; + } else { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + + // store result when possible + if ( QUnit.config.reorder && defined.sessionStorage ) { + if ( bad ) { + sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad ); + } else { + sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName ); + } + } + + if ( bad === 0 ) { + addClass( ol, "qunit-collapsed" ); + } + + // `b` initialized at top of scope + b = document.createElement( "strong" ); + b.innerHTML = this.nameHtml + " (" + bad + ", " + good + ", " + this.assertions.length + ")"; + + addEvent(b, "click", function() { + var next = b.parentNode.lastChild, + collapsed = hasClass( next, "qunit-collapsed" ); + ( collapsed ? removeClass : addClass )( next, "qunit-collapsed" ); + }); + + addEvent(b, "dblclick", function( e ) { + var target = e && e.target ? e.target : window.event.srcElement; + if ( target.nodeName.toLowerCase() === "span" || target.nodeName.toLowerCase() === "b" ) { + target = target.parentNode; + } + if ( window.location && target.nodeName.toLowerCase() === "strong" ) { + window.location = QUnit.url({ testNumber: test.testNumber }); + } + }); + + // `time` initialized at top of scope + time = document.createElement( "span" ); + time.className = "runtime"; + time.innerHTML = this.runtime + " ms"; + + // `li` initialized at top of scope + li = id( this.id ); + li.className = bad ? "fail" : "pass"; + li.removeChild( li.firstChild ); + a = li.firstChild; + li.appendChild( b ); + li.appendChild( a ); + li.appendChild( time ); + li.appendChild( ol ); + + } else { + for ( i = 0; i < this.assertions.length; i++ ) { + if ( !this.assertions[i].result ) { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + } + + runLoggingCallbacks( "testDone", QUnit, { + name: this.testName, + module: this.module, + failed: bad, + passed: this.assertions.length - bad, + total: this.assertions.length, + duration: this.runtime + }); + + QUnit.reset(); + + config.current = undefined; + }, + + queue: function() { + var bad, + test = this; + + synchronize(function() { + test.init(); + }); + function run() { + // each of these can by async + synchronize(function() { + test.setup(); + }); + synchronize(function() { + test.run(); + }); + synchronize(function() { + test.teardown(); + }); + synchronize(function() { + test.finish(); + }); + } + + // `bad` initialized at top of scope + // defer when previous test run passed, if storage is available + bad = QUnit.config.reorder && defined.sessionStorage && + +sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName ); + + if ( bad ) { + run(); + } else { + synchronize( run, true ); + } + } +}; + +// Root QUnit object. +// `QUnit` initialized at top of scope +QUnit = { + + // call on start of module test to prepend name to all tests + module: function( name, testEnvironment ) { + config.currentModule = name; + config.currentModuleTestEnvironment = testEnvironment; + config.modules[name] = true; + }, + + asyncTest: function( testName, expected, callback ) { + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + + QUnit.test( testName, expected, callback, true ); + }, + + test: function( testName, expected, callback, async ) { + var test, + nameHtml = "" + escapeText( testName ) + ""; + + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + + if ( config.currentModule ) { + nameHtml = "" + escapeText( config.currentModule ) + ": " + nameHtml; + } + + test = new Test({ + nameHtml: nameHtml, + testName: testName, + expected: expected, + async: async, + callback: callback, + module: config.currentModule, + moduleTestEnvironment: config.currentModuleTestEnvironment, + stack: sourceFromStacktrace( 2 ) + }); + + if ( !validTest( test ) ) { + return; + } + + test.queue(); + }, + + // Specify the number of expected assertions to guarantee that failed test (no assertions are run at all) don't slip through. + expect: function( asserts ) { + if (arguments.length === 1) { + config.current.expected = asserts; + } else { + return config.current.expected; + } + }, + + start: function( count ) { + // QUnit hasn't been initialized yet. + // Note: RequireJS (et al) may delay onLoad + if ( config.semaphore === undefined ) { + QUnit.begin(function() { + // This is triggered at the top of QUnit.load, push start() to the event loop, to allow QUnit.load to finish first + setTimeout(function() { + QUnit.start( count ); + }); + }); + return; + } + + config.semaphore -= count || 1; + // don't start until equal number of stop-calls + if ( config.semaphore > 0 ) { + return; + } + // ignore if start is called more often then stop + if ( config.semaphore < 0 ) { + config.semaphore = 0; + QUnit.pushFailure( "Called start() while already started (QUnit.config.semaphore was 0 already)", null, sourceFromStacktrace(2) ); + return; + } + // A slight delay, to avoid any current callbacks + if ( defined.setTimeout ) { + setTimeout(function() { + if ( config.semaphore > 0 ) { + return; + } + if ( config.timeout ) { + clearTimeout( config.timeout ); + } + + config.blocking = false; + process( true ); + }, 13); + } else { + config.blocking = false; + process( true ); + } + }, + + stop: function( count ) { + config.semaphore += count || 1; + config.blocking = true; + + if ( config.testTimeout && defined.setTimeout ) { + clearTimeout( config.timeout ); + config.timeout = setTimeout(function() { + QUnit.ok( false, "Test timed out" ); + config.semaphore = 1; + QUnit.start(); + }, config.testTimeout ); + } + } +}; + +// `assert` initialized at top of scope +// Assert helpers +// All of these must either call QUnit.push() or manually do: +// - runLoggingCallbacks( "log", .. ); +// - config.current.assertions.push({ .. }); +// We attach it to the QUnit object *after* we expose the public API, +// otherwise `assert` will become a global variable in browsers (#341). +assert = { + /** + * Asserts rough true-ish result. + * @name ok + * @function + * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); + */ + ok: function( result, msg ) { + if ( !config.current ) { + throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) ); + } + result = !!result; + msg = msg || (result ? "okay" : "failed" ); + + var source, + details = { + module: config.current.module, + name: config.current.testName, + result: result, + message: msg + }; + + msg = "" + escapeText( msg ) + ""; + + if ( !result ) { + source = sourceFromStacktrace( 2 ); + if ( source ) { + details.source = source; + msg += "
      Source:
      " + escapeText( source ) + "
      "; + } + } + runLoggingCallbacks( "log", QUnit, details ); + config.current.assertions.push({ + result: result, + message: msg + }); + }, + + /** + * Assert that the first two arguments are equal, with an optional message. + * Prints out both actual and expected values. + * @name equal + * @function + * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" ); + */ + equal: function( actual, expected, message ) { + /*jshint eqeqeq:false */ + QUnit.push( expected == actual, actual, expected, message ); + }, + + /** + * @name notEqual + * @function + */ + notEqual: function( actual, expected, message ) { + /*jshint eqeqeq:false */ + QUnit.push( expected != actual, actual, expected, message ); + }, + + /** + * @name propEqual + * @function + */ + propEqual: function( actual, expected, message ) { + actual = objectValues(actual); + expected = objectValues(expected); + QUnit.push( QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name notPropEqual + * @function + */ + notPropEqual: function( actual, expected, message ) { + actual = objectValues(actual); + expected = objectValues(expected); + QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name deepEqual + * @function + */ + deepEqual: function( actual, expected, message ) { + QUnit.push( QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name notDeepEqual + * @function + */ + notDeepEqual: function( actual, expected, message ) { + QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name strictEqual + * @function + */ + strictEqual: function( actual, expected, message ) { + QUnit.push( expected === actual, actual, expected, message ); + }, + + /** + * @name notStrictEqual + * @function + */ + notStrictEqual: function( actual, expected, message ) { + QUnit.push( expected !== actual, actual, expected, message ); + }, + + "throws": function( block, expected, message ) { + var actual, + expectedOutput = expected, + ok = false; + + // 'expected' is optional + if ( typeof expected === "string" ) { + message = expected; + expected = null; + } + + config.current.ignoreGlobalErrors = true; + try { + block.call( config.current.testEnvironment ); + } catch (e) { + actual = e; + } + config.current.ignoreGlobalErrors = false; + + if ( actual ) { + // we don't want to validate thrown error + if ( !expected ) { + ok = true; + expectedOutput = null; + // expected is a regexp + } else if ( QUnit.objectType( expected ) === "regexp" ) { + ok = expected.test( errorString( actual ) ); + // expected is a constructor + } else if ( actual instanceof expected ) { + ok = true; + // expected is a validation function which returns true is validation passed + } else if ( expected.call( {}, actual ) === true ) { + expectedOutput = null; + ok = true; + } + + QUnit.push( ok, actual, expectedOutput, message ); + } else { + QUnit.pushFailure( message, null, "No exception was thrown." ); + } + } +}; + +/** + * @deprecated since 1.8.0 + * Kept assertion helpers in root for backwards compatibility. + */ +extend( QUnit, assert ); + +/** + * @deprecated since 1.9.0 + * Kept root "raises()" for backwards compatibility. + * (Note that we don't introduce assert.raises). + */ +QUnit.raises = assert[ "throws" ]; + +/** + * @deprecated since 1.0.0, replaced with error pushes since 1.3.0 + * Kept to avoid TypeErrors for undefined methods. + */ +QUnit.equals = function() { + QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" ); +}; +QUnit.same = function() { + QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" ); +}; + +// We want access to the constructor's prototype +(function() { + function F() {} + F.prototype = QUnit; + QUnit = new F(); + // Make F QUnit's constructor so that we can add to the prototype later + QUnit.constructor = F; +}()); + +/** + * Config object: Maintain internal state + * Later exposed as QUnit.config + * `config` initialized at top of scope + */ +config = { + // The queue of tests to run + queue: [], + + // block until document ready + blocking: true, + + // when enabled, show only failing tests + // gets persisted through sessionStorage and can be changed in UI via checkbox + hidepassed: false, + + // by default, run previously failed tests first + // very useful in combination with "Hide passed tests" checked + reorder: true, + + // by default, modify document.title when suite is done + altertitle: true, + + // when enabled, all tests must call expect() + requireExpects: false, + + // add checkboxes that are persisted in the query-string + // when enabled, the id is set to `true` as a `QUnit.config` property + urlConfig: [ + { + id: "noglobals", + label: "Check for Globals", + tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings." + }, + { + id: "notrycatch", + label: "No try-catch", + tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings." + } + ], + + // Set of all modules. + modules: {}, + + // logging callback queues + begin: [], + done: [], + log: [], + testStart: [], + testDone: [], + moduleStart: [], + moduleDone: [] +}; + +// Export global variables, unless an 'exports' object exists, +// in that case we assume we're in CommonJS (dealt with on the bottom of the script) +if ( typeof exports === "undefined" ) { + extend( window, QUnit.constructor.prototype ); + + // Expose QUnit object + window.QUnit = QUnit; +} + +// Initialize more QUnit.config and QUnit.urlParams +(function() { + var i, + location = window.location || { search: "", protocol: "file:" }, + params = location.search.slice( 1 ).split( "&" ), + length = params.length, + urlParams = {}, + current; + + if ( params[ 0 ] ) { + for ( i = 0; i < length; i++ ) { + current = params[ i ].split( "=" ); + current[ 0 ] = decodeURIComponent( current[ 0 ] ); + // allow just a key to turn on a flag, e.g., test.html?noglobals + current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true; + urlParams[ current[ 0 ] ] = current[ 1 ]; + } + } + + QUnit.urlParams = urlParams; + + // String search anywhere in moduleName+testName + config.filter = urlParams.filter; + + // Exact match of the module name + config.module = urlParams.module; + + config.testNumber = parseInt( urlParams.testNumber, 10 ) || null; + + // Figure out if we're running the tests from a server or not + QUnit.isLocal = location.protocol === "file:"; +}()); + +// Extend QUnit object, +// these after set here because they should not be exposed as global functions +extend( QUnit, { + assert: assert, + + config: config, + + // Initialize the configuration options + init: function() { + extend( config, { + stats: { all: 0, bad: 0 }, + moduleStats: { all: 0, bad: 0 }, + started: +new Date(), + updateRate: 1000, + blocking: false, + autostart: true, + autorun: false, + filter: "", + queue: [], + semaphore: 1 + }); + + var tests, banner, result, + qunit = id( "qunit" ); + + if ( qunit ) { + qunit.innerHTML = + "

      " + escapeText( document.title ) + "

      " + + "

      " + + "
      " + + "

      " + + "
        "; + } + + tests = id( "qunit-tests" ); + banner = id( "qunit-banner" ); + result = id( "qunit-testresult" ); + + if ( tests ) { + tests.innerHTML = ""; + } + + if ( banner ) { + banner.className = ""; + } + + if ( result ) { + result.parentNode.removeChild( result ); + } + + if ( tests ) { + result = document.createElement( "p" ); + result.id = "qunit-testresult"; + result.className = "result"; + tests.parentNode.insertBefore( result, tests ); + result.innerHTML = "Running...
         "; + } + }, + + // Resets the test setup. Useful for tests that modify the DOM. + /* + DEPRECATED: Use multiple tests instead of resetting inside a test. + Use testStart or testDone for custom cleanup. + This method will throw an error in 2.0, and will be removed in 2.1 + */ + reset: function() { + var fixture = id( "qunit-fixture" ); + if ( fixture ) { + fixture.innerHTML = config.fixture; + } + }, + + // Trigger an event on an element. + // @example triggerEvent( document.body, "click" ); + triggerEvent: function( elem, type, event ) { + if ( document.createEvent ) { + event = document.createEvent( "MouseEvents" ); + event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, + 0, 0, 0, 0, 0, false, false, false, false, 0, null); + + elem.dispatchEvent( event ); + } else if ( elem.fireEvent ) { + elem.fireEvent( "on" + type ); + } + }, + + // Safe object type checking + is: function( type, obj ) { + return QUnit.objectType( obj ) === type; + }, + + objectType: function( obj ) { + if ( typeof obj === "undefined" ) { + return "undefined"; + // consider: typeof null === object + } + if ( obj === null ) { + return "null"; + } + + var match = toString.call( obj ).match(/^\[object\s(.*)\]$/), + type = match && match[1] || ""; + + switch ( type ) { + case "Number": + if ( isNaN(obj) ) { + return "nan"; + } + return "number"; + case "String": + case "Boolean": + case "Array": + case "Date": + case "RegExp": + case "Function": + return type.toLowerCase(); + } + if ( typeof obj === "object" ) { + return "object"; + } + return undefined; + }, + + push: function( result, actual, expected, message ) { + if ( !config.current ) { + throw new Error( "assertion outside test context, was " + sourceFromStacktrace() ); + } + + var output, source, + details = { + module: config.current.module, + name: config.current.testName, + result: result, + message: message, + actual: actual, + expected: expected + }; + + message = escapeText( message ) || ( result ? "okay" : "failed" ); + message = "" + message + ""; + output = message; + + if ( !result ) { + expected = escapeText( QUnit.jsDump.parse(expected) ); + actual = escapeText( QUnit.jsDump.parse(actual) ); + output += ""; + + if ( actual !== expected ) { + output += ""; + output += ""; + } + + source = sourceFromStacktrace(); + + if ( source ) { + details.source = source; + output += ""; + } + + output += "
        Expected:
        " + expected + "
        Result:
        " + actual + "
        Diff:
        " + QUnit.diff( expected, actual ) + "
        Source:
        " + escapeText( source ) + "
        "; + } + + runLoggingCallbacks( "log", QUnit, details ); + + config.current.assertions.push({ + result: !!result, + message: output + }); + }, + + pushFailure: function( message, source, actual ) { + if ( !config.current ) { + throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) ); + } + + var output, + details = { + module: config.current.module, + name: config.current.testName, + result: false, + message: message + }; + + message = escapeText( message ) || "error"; + message = "" + message + ""; + output = message; + + output += ""; + + if ( actual ) { + output += ""; + } + + if ( source ) { + details.source = source; + output += ""; + } + + output += "
        Result:
        " + escapeText( actual ) + "
        Source:
        " + escapeText( source ) + "
        "; + + runLoggingCallbacks( "log", QUnit, details ); + + config.current.assertions.push({ + result: false, + message: output + }); + }, + + url: function( params ) { + params = extend( extend( {}, QUnit.urlParams ), params ); + var key, + querystring = "?"; + + for ( key in params ) { + if ( hasOwn.call( params, key ) ) { + querystring += encodeURIComponent( key ) + "=" + + encodeURIComponent( params[ key ] ) + "&"; + } + } + return window.location.protocol + "//" + window.location.host + + window.location.pathname + querystring.slice( 0, -1 ); + }, + + extend: extend, + id: id, + addEvent: addEvent, + addClass: addClass, + hasClass: hasClass, + removeClass: removeClass + // load, equiv, jsDump, diff: Attached later +}); + +/** + * @deprecated: Created for backwards compatibility with test runner that set the hook function + * into QUnit.{hook}, instead of invoking it and passing the hook function. + * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here. + * Doing this allows us to tell if the following methods have been overwritten on the actual + * QUnit object. + */ +extend( QUnit.constructor.prototype, { + + // Logging callbacks; all receive a single argument with the listed properties + // run test/logs.html for any related changes + begin: registerLoggingCallback( "begin" ), + + // done: { failed, passed, total, runtime } + done: registerLoggingCallback( "done" ), + + // log: { result, actual, expected, message } + log: registerLoggingCallback( "log" ), + + // testStart: { name } + testStart: registerLoggingCallback( "testStart" ), + + // testDone: { name, failed, passed, total, duration } + testDone: registerLoggingCallback( "testDone" ), + + // moduleStart: { name } + moduleStart: registerLoggingCallback( "moduleStart" ), + + // moduleDone: { name, failed, passed, total } + moduleDone: registerLoggingCallback( "moduleDone" ) +}); + +if ( typeof document === "undefined" || document.readyState === "complete" ) { + config.autorun = true; +} + +QUnit.load = function() { + runLoggingCallbacks( "begin", QUnit, {} ); + + // Initialize the config, saving the execution queue + var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, + urlConfigCheckboxesContainer, urlConfigCheckboxes, moduleFilter, + numModules = 0, + moduleNames = [], + moduleFilterHtml = "", + urlConfigHtml = "", + oldconfig = extend( {}, config ); + + QUnit.init(); + extend(config, oldconfig); + + config.blocking = false; + + len = config.urlConfig.length; + + for ( i = 0; i < len; i++ ) { + val = config.urlConfig[i]; + if ( typeof val === "string" ) { + val = { + id: val, + label: val, + tooltip: "[no tooltip available]" + }; + } + config[ val.id ] = QUnit.urlParams[ val.id ]; + urlConfigHtml += ""; + } + for ( i in config.modules ) { + if ( config.modules.hasOwnProperty( i ) ) { + moduleNames.push(i); + } + } + numModules = moduleNames.length; + moduleNames.sort( function( a, b ) { + return a.localeCompare( b ); + }); + moduleFilterHtml += ""; + + // `userAgent` initialized at top of scope + userAgent = id( "qunit-userAgent" ); + if ( userAgent ) { + userAgent.innerHTML = navigator.userAgent; + } + + // `banner` initialized at top of scope + banner = id( "qunit-header" ); + if ( banner ) { + banner.innerHTML = "
        " + banner.innerHTML + " "; + } + + // `toolbar` initialized at top of scope + toolbar = id( "qunit-testrunner-toolbar" ); + if ( toolbar ) { + // `filter` initialized at top of scope + filter = document.createElement( "input" ); + filter.type = "checkbox"; + filter.id = "qunit-filter-pass"; + + addEvent( filter, "click", function() { + var tmp, + ol = document.getElementById( "qunit-tests" ); + + if ( filter.checked ) { + ol.className = ol.className + " hidepass"; + } else { + tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " "; + ol.className = tmp.replace( / hidepass /, " " ); + } + if ( defined.sessionStorage ) { + if (filter.checked) { + sessionStorage.setItem( "qunit-filter-passed-tests", "true" ); + } else { + sessionStorage.removeItem( "qunit-filter-passed-tests" ); + } + } + }); + + if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) { + filter.checked = true; + // `ol` initialized at top of scope + ol = document.getElementById( "qunit-tests" ); + ol.className = ol.className + " hidepass"; + } + toolbar.appendChild( filter ); + + // `label` initialized at top of scope + label = document.createElement( "label" ); + label.setAttribute( "for", "qunit-filter-pass" ); + label.setAttribute( "title", "Only show tests and assertions that fail. Stored in sessionStorage." ); + label.innerHTML = "Hide passed tests"; + toolbar.appendChild( label ); + + urlConfigCheckboxesContainer = document.createElement("span"); + urlConfigCheckboxesContainer.innerHTML = urlConfigHtml; + urlConfigCheckboxes = urlConfigCheckboxesContainer.getElementsByTagName("input"); + // For oldIE support: + // * Add handlers to the individual elements instead of the container + // * Use "click" instead of "change" + // * Fallback from event.target to event.srcElement + addEvents( urlConfigCheckboxes, "click", function( event ) { + var params = {}, + target = event.target || event.srcElement; + params[ target.name ] = target.checked ? true : undefined; + window.location = QUnit.url( params ); + }); + toolbar.appendChild( urlConfigCheckboxesContainer ); + + if (numModules > 1) { + moduleFilter = document.createElement( "span" ); + moduleFilter.setAttribute( "id", "qunit-modulefilter-container" ); + moduleFilter.innerHTML = moduleFilterHtml; + addEvent( moduleFilter.lastChild, "change", function() { + var selectBox = moduleFilter.getElementsByTagName("select")[0], + selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value); + + window.location = QUnit.url({ + module: ( selectedModule === "" ) ? undefined : selectedModule, + // Remove any existing filters + filter: undefined, + testNumber: undefined + }); + }); + toolbar.appendChild(moduleFilter); + } + } + + // `main` initialized at top of scope + main = id( "qunit-fixture" ); + if ( main ) { + config.fixture = main.innerHTML; + } + + if ( config.autostart ) { + QUnit.start(); + } +}; + +addEvent( window, "load", QUnit.load ); + +// `onErrorFnPrev` initialized at top of scope +// Preserve other handlers +onErrorFnPrev = window.onerror; + +// Cover uncaught exceptions +// Returning true will suppress the default browser handler, +// returning false will let it run. +window.onerror = function ( error, filePath, linerNr ) { + var ret = false; + if ( onErrorFnPrev ) { + ret = onErrorFnPrev( error, filePath, linerNr ); + } + + // Treat return value as window.onerror itself does, + // Only do our handling if not suppressed. + if ( ret !== true ) { + if ( QUnit.config.current ) { + if ( QUnit.config.current.ignoreGlobalErrors ) { + return true; + } + QUnit.pushFailure( error, filePath + ":" + linerNr ); + } else { + QUnit.test( "global failure", extend( function() { + QUnit.pushFailure( error, filePath + ":" + linerNr ); + }, { validTest: validTest } ) ); + } + return false; + } + + return ret; +}; + +function done() { + config.autorun = true; + + // Log the last module results + if ( config.currentModule ) { + runLoggingCallbacks( "moduleDone", QUnit, { + name: config.currentModule, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all + }); + } + delete config.previousModule; + + var i, key, + banner = id( "qunit-banner" ), + tests = id( "qunit-tests" ), + runtime = +new Date() - config.started, + passed = config.stats.all - config.stats.bad, + html = [ + "Tests completed in ", + runtime, + " milliseconds.
        ", + "", + passed, + " assertions of ", + config.stats.all, + " passed, ", + config.stats.bad, + " failed." + ].join( "" ); + + if ( banner ) { + banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" ); + } + + if ( tests ) { + id( "qunit-testresult" ).innerHTML = html; + } + + if ( config.altertitle && typeof document !== "undefined" && document.title ) { + // show ✖ for good, ✔ for bad suite result in title + // use escape sequences in case file gets loaded with non-utf-8-charset + document.title = [ + ( config.stats.bad ? "\u2716" : "\u2714" ), + document.title.replace( /^[\u2714\u2716] /i, "" ) + ].join( " " ); + } + + // clear own sessionStorage items if all tests passed + if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) { + // `key` & `i` initialized at top of scope + for ( i = 0; i < sessionStorage.length; i++ ) { + key = sessionStorage.key( i++ ); + if ( key.indexOf( "qunit-test-" ) === 0 ) { + sessionStorage.removeItem( key ); + } + } + } + + // scroll back to top to show results + if ( window.scrollTo ) { + window.scrollTo(0, 0); + } + + runLoggingCallbacks( "done", QUnit, { + failed: config.stats.bad, + passed: passed, + total: config.stats.all, + runtime: runtime + }); +} + +/** @return Boolean: true if this test should be ran */ +function validTest( test ) { + var include, + filter = config.filter && config.filter.toLowerCase(), + module = config.module && config.module.toLowerCase(), + fullName = (test.module + ": " + test.testName).toLowerCase(); + + // Internally-generated tests are always valid + if ( test.callback && test.callback.validTest === validTest ) { + delete test.callback.validTest; + return true; + } + + if ( config.testNumber ) { + return test.testNumber === config.testNumber; + } + + if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) { + return false; + } + + if ( !filter ) { + return true; + } + + include = filter.charAt( 0 ) !== "!"; + if ( !include ) { + filter = filter.slice( 1 ); + } + + // If the filter matches, we need to honour include + if ( fullName.indexOf( filter ) !== -1 ) { + return include; + } + + // Otherwise, do the opposite + return !include; +} + +// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions) +// Later Safari and IE10 are supposed to support error.stack as well +// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack +function extractStacktrace( e, offset ) { + offset = offset === undefined ? 3 : offset; + + var stack, include, i; + + if ( e.stacktrace ) { + // Opera + return e.stacktrace.split( "\n" )[ offset + 3 ]; + } else if ( e.stack ) { + // Firefox, Chrome + stack = e.stack.split( "\n" ); + if (/^error$/i.test( stack[0] ) ) { + stack.shift(); + } + if ( fileName ) { + include = []; + for ( i = offset; i < stack.length; i++ ) { + if ( stack[ i ].indexOf( fileName ) !== -1 ) { + break; + } + include.push( stack[ i ] ); + } + if ( include.length ) { + return include.join( "\n" ); + } + } + return stack[ offset ]; + } else if ( e.sourceURL ) { + // Safari, PhantomJS + // hopefully one day Safari provides actual stacktraces + // exclude useless self-reference for generated Error objects + if ( /qunit.js$/.test( e.sourceURL ) ) { + return; + } + // for actual exceptions, this is useful + return e.sourceURL + ":" + e.line; + } +} +function sourceFromStacktrace( offset ) { + try { + throw new Error(); + } catch ( e ) { + return extractStacktrace( e, offset ); + } +} + +/** + * Escape text for attribute or text content. + */ +function escapeText( s ) { + if ( !s ) { + return ""; + } + s = s + ""; + // Both single quotes and double quotes (for attributes) + return s.replace( /['"<>&]/g, function( s ) { + switch( s ) { + case "'": + return "'"; + case "\"": + return """; + case "<": + return "<"; + case ">": + return ">"; + case "&": + return "&"; + } + }); +} + +function synchronize( callback, last ) { + config.queue.push( callback ); + + if ( config.autorun && !config.blocking ) { + process( last ); + } +} + +function process( last ) { + function next() { + process( last ); + } + var start = new Date().getTime(); + config.depth = config.depth ? config.depth + 1 : 1; + + while ( config.queue.length && !config.blocking ) { + if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) { + config.queue.shift()(); + } else { + setTimeout( next, 13 ); + break; + } + } + config.depth--; + if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) { + done(); + } +} + +function saveGlobal() { + config.pollution = []; + + if ( config.noglobals ) { + for ( var key in window ) { + if ( hasOwn.call( window, key ) ) { + // in Opera sometimes DOM element ids show up here, ignore them + if ( /^qunit-test-output/.test( key ) ) { + continue; + } + config.pollution.push( key ); + } + } + } +} + +function checkPollution() { + var newGlobals, + deletedGlobals, + old = config.pollution; + + saveGlobal(); + + newGlobals = diff( config.pollution, old ); + if ( newGlobals.length > 0 ) { + QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") ); + } + + deletedGlobals = diff( old, config.pollution ); + if ( deletedGlobals.length > 0 ) { + QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") ); + } +} + +// returns a new Array with the elements that are in a but not in b +function diff( a, b ) { + var i, j, + result = a.slice(); + + for ( i = 0; i < result.length; i++ ) { + for ( j = 0; j < b.length; j++ ) { + if ( result[i] === b[j] ) { + result.splice( i, 1 ); + i--; + break; + } + } + } + return result; +} + +function extend( a, b ) { + for ( var prop in b ) { + if ( hasOwn.call( b, prop ) ) { + // Avoid "Member not found" error in IE8 caused by messing with window.constructor + if ( !( prop === "constructor" && a === window ) ) { + if ( b[ prop ] === undefined ) { + delete a[ prop ]; + } else { + a[ prop ] = b[ prop ]; + } + } + } + } + + return a; +} + +/** + * @param {HTMLElement} elem + * @param {string} type + * @param {Function} fn + */ +function addEvent( elem, type, fn ) { + // Standards-based browsers + if ( elem.addEventListener ) { + elem.addEventListener( type, fn, false ); + // IE + } else { + elem.attachEvent( "on" + type, fn ); + } +} + +/** + * @param {Array|NodeList} elems + * @param {string} type + * @param {Function} fn + */ +function addEvents( elems, type, fn ) { + var i = elems.length; + while ( i-- ) { + addEvent( elems[i], type, fn ); + } +} + +function hasClass( elem, name ) { + return (" " + elem.className + " ").indexOf(" " + name + " ") > -1; +} + +function addClass( elem, name ) { + if ( !hasClass( elem, name ) ) { + elem.className += (elem.className ? " " : "") + name; + } +} + +function removeClass( elem, name ) { + var set = " " + elem.className + " "; + // Class name may appear multiple times + while ( set.indexOf(" " + name + " ") > -1 ) { + set = set.replace(" " + name + " " , " "); + } + // If possible, trim it for prettiness, but not necessarily + elem.className = typeof set.trim === "function" ? set.trim() : set.replace(/^\s+|\s+$/g, ""); +} + +function id( name ) { + return !!( typeof document !== "undefined" && document && document.getElementById ) && + document.getElementById( name ); +} + +function registerLoggingCallback( key ) { + return function( callback ) { + config[key].push( callback ); + }; +} + +// Supports deprecated method of completely overwriting logging callbacks +function runLoggingCallbacks( key, scope, args ) { + var i, callbacks; + if ( QUnit.hasOwnProperty( key ) ) { + QUnit[ key ].call(scope, args ); + } else { + callbacks = config[ key ]; + for ( i = 0; i < callbacks.length; i++ ) { + callbacks[ i ].call( scope, args ); + } + } +} + +// Test for equality any JavaScript type. +// Author: Philippe Rathé +QUnit.equiv = (function() { + + // Call the o related callback with the given arguments. + function bindCallbacks( o, callbacks, args ) { + var prop = QUnit.objectType( o ); + if ( prop ) { + if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) { + return callbacks[ prop ].apply( callbacks, args ); + } else { + return callbacks[ prop ]; // or undefined + } + } + } + + // the real equiv function + var innerEquiv, + // stack to decide between skip/abort functions + callers = [], + // stack to avoiding loops from circular referencing + parents = [], + parentsB = [], + + getProto = Object.getPrototypeOf || function ( obj ) { + /*jshint camelcase:false */ + return obj.__proto__; + }, + callbacks = (function () { + + // for string, boolean, number and null + function useStrictEquality( b, a ) { + /*jshint eqeqeq:false */ + if ( b instanceof a.constructor || a instanceof b.constructor ) { + // to catch short annotation VS 'new' annotation of a + // declaration + // e.g. var i = 1; + // var j = new Number(1); + return a == b; + } else { + return a === b; + } + } + + return { + "string": useStrictEquality, + "boolean": useStrictEquality, + "number": useStrictEquality, + "null": useStrictEquality, + "undefined": useStrictEquality, + + "nan": function( b ) { + return isNaN( b ); + }, + + "date": function( b, a ) { + return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf(); + }, + + "regexp": function( b, a ) { + return QUnit.objectType( b ) === "regexp" && + // the regex itself + a.source === b.source && + // and its modifiers + a.global === b.global && + // (gmi) ... + a.ignoreCase === b.ignoreCase && + a.multiline === b.multiline && + a.sticky === b.sticky; + }, + + // - skip when the property is a method of an instance (OOP) + // - abort otherwise, + // initial === would have catch identical references anyway + "function": function() { + var caller = callers[callers.length - 1]; + return caller !== Object && typeof caller !== "undefined"; + }, + + "array": function( b, a ) { + var i, j, len, loop, aCircular, bCircular; + + // b could be an object literal here + if ( QUnit.objectType( b ) !== "array" ) { + return false; + } + + len = a.length; + if ( len !== b.length ) { + // safe and faster + return false; + } + + // track reference to avoid circular references + parents.push( a ); + parentsB.push( b ); + for ( i = 0; i < len; i++ ) { + loop = false; + for ( j = 0; j < parents.length; j++ ) { + aCircular = parents[j] === a[i]; + bCircular = parentsB[j] === b[i]; + if ( aCircular || bCircular ) { + if ( a[i] === b[i] || aCircular && bCircular ) { + loop = true; + } else { + parents.pop(); + parentsB.pop(); + return false; + } + } + } + if ( !loop && !innerEquiv(a[i], b[i]) ) { + parents.pop(); + parentsB.pop(); + return false; + } + } + parents.pop(); + parentsB.pop(); + return true; + }, + + "object": function( b, a ) { + /*jshint forin:false */ + var i, j, loop, aCircular, bCircular, + // Default to true + eq = true, + aProperties = [], + bProperties = []; + + // comparing constructors is more strict than using + // instanceof + if ( a.constructor !== b.constructor ) { + // Allow objects with no prototype to be equivalent to + // objects with Object as their constructor. + if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) || + ( getProto(b) === null && getProto(a) === Object.prototype ) ) ) { + return false; + } + } + + // stack constructor before traversing properties + callers.push( a.constructor ); + + // track reference to avoid circular references + parents.push( a ); + parentsB.push( b ); + + // be strict: don't ensure hasOwnProperty and go deep + for ( i in a ) { + loop = false; + for ( j = 0; j < parents.length; j++ ) { + aCircular = parents[j] === a[i]; + bCircular = parentsB[j] === b[i]; + if ( aCircular || bCircular ) { + if ( a[i] === b[i] || aCircular && bCircular ) { + loop = true; + } else { + eq = false; + break; + } + } + } + aProperties.push(i); + if ( !loop && !innerEquiv(a[i], b[i]) ) { + eq = false; + break; + } + } + + parents.pop(); + parentsB.pop(); + callers.pop(); // unstack, we are done + + for ( i in b ) { + bProperties.push( i ); // collect b's properties + } + + // Ensures identical properties name + return eq && innerEquiv( aProperties.sort(), bProperties.sort() ); + } + }; + }()); + + innerEquiv = function() { // can take multiple arguments + var args = [].slice.apply( arguments ); + if ( args.length < 2 ) { + return true; // end transition + } + + return (function( a, b ) { + if ( a === b ) { + return true; // catch the most you can + } else if ( a === null || b === null || typeof a === "undefined" || + typeof b === "undefined" || + QUnit.objectType(a) !== QUnit.objectType(b) ) { + return false; // don't lose time with error prone cases + } else { + return bindCallbacks(a, callbacks, [ b, a ]); + } + + // apply transition with (1..n) arguments + }( args[0], args[1] ) && innerEquiv.apply( this, args.splice(1, args.length - 1 )) ); + }; + + return innerEquiv; +}()); + +/** + * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | + * http://flesler.blogspot.com Licensed under BSD + * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008 + * + * @projectDescription Advanced and extensible data dumping for Javascript. + * @version 1.0.0 + * @author Ariel Flesler + * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html} + */ +QUnit.jsDump = (function() { + function quote( str ) { + return "\"" + str.toString().replace( /"/g, "\\\"" ) + "\""; + } + function literal( o ) { + return o + ""; + } + function join( pre, arr, post ) { + var s = jsDump.separator(), + base = jsDump.indent(), + inner = jsDump.indent(1); + if ( arr.join ) { + arr = arr.join( "," + s + inner ); + } + if ( !arr ) { + return pre + post; + } + return [ pre, inner + arr, base + post ].join(s); + } + function array( arr, stack ) { + var i = arr.length, ret = new Array(i); + this.up(); + while ( i-- ) { + ret[i] = this.parse( arr[i] , undefined , stack); + } + this.down(); + return join( "[", ret, "]" ); + } + + var reName = /^function (\w+)/, + jsDump = { + // type is used mostly internally, you can fix a (custom)type in advance + parse: function( obj, type, stack ) { + stack = stack || [ ]; + var inStack, res, + parser = this.parsers[ type || this.typeOf(obj) ]; + + type = typeof parser; + inStack = inArray( obj, stack ); + + if ( inStack !== -1 ) { + return "recursion(" + (inStack - stack.length) + ")"; + } + if ( type === "function" ) { + stack.push( obj ); + res = parser.call( this, obj, stack ); + stack.pop(); + return res; + } + return ( type === "string" ) ? parser : this.parsers.error; + }, + typeOf: function( obj ) { + var type; + if ( obj === null ) { + type = "null"; + } else if ( typeof obj === "undefined" ) { + type = "undefined"; + } else if ( QUnit.is( "regexp", obj) ) { + type = "regexp"; + } else if ( QUnit.is( "date", obj) ) { + type = "date"; + } else if ( QUnit.is( "function", obj) ) { + type = "function"; + } else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) { + type = "window"; + } else if ( obj.nodeType === 9 ) { + type = "document"; + } else if ( obj.nodeType ) { + type = "node"; + } else if ( + // native arrays + toString.call( obj ) === "[object Array]" || + // NodeList objects + ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) ) + ) { + type = "array"; + } else if ( obj.constructor === Error.prototype.constructor ) { + type = "error"; + } else { + type = typeof obj; + } + return type; + }, + separator: function() { + return this.multiline ? this.HTML ? "
        " : "\n" : this.HTML ? " " : " "; + }, + // extra can be a number, shortcut for increasing-calling-decreasing + indent: function( extra ) { + if ( !this.multiline ) { + return ""; + } + var chr = this.indentChar; + if ( this.HTML ) { + chr = chr.replace( /\t/g, " " ).replace( / /g, " " ); + } + return new Array( this.depth + ( extra || 0 ) ).join(chr); + }, + up: function( a ) { + this.depth += a || 1; + }, + down: function( a ) { + this.depth -= a || 1; + }, + setParser: function( name, parser ) { + this.parsers[name] = parser; + }, + // The next 3 are exposed so you can use them + quote: quote, + literal: literal, + join: join, + // + depth: 1, + // This is the list of parsers, to modify them, use jsDump.setParser + parsers: { + window: "[Window]", + document: "[Document]", + error: function(error) { + return "Error(\"" + error.message + "\")"; + }, + unknown: "[Unknown]", + "null": "null", + "undefined": "undefined", + "function": function( fn ) { + var ret = "function", + // functions never have name in IE + name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1]; + + if ( name ) { + ret += " " + name; + } + ret += "( "; + + ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" ); + return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" ); + }, + array: array, + nodelist: array, + "arguments": array, + object: function( map, stack ) { + /*jshint forin:false */ + var ret = [ ], keys, key, val, i; + QUnit.jsDump.up(); + keys = []; + for ( key in map ) { + keys.push( key ); + } + keys.sort(); + for ( i = 0; i < keys.length; i++ ) { + key = keys[ i ]; + val = map[ key ]; + ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) ); + } + QUnit.jsDump.down(); + return join( "{", ret, "}" ); + }, + node: function( node ) { + var len, i, val, + open = QUnit.jsDump.HTML ? "<" : "<", + close = QUnit.jsDump.HTML ? ">" : ">", + tag = node.nodeName.toLowerCase(), + ret = open + tag, + attrs = node.attributes; + + if ( attrs ) { + for ( i = 0, len = attrs.length; i < len; i++ ) { + val = attrs[i].nodeValue; + // IE6 includes all attributes in .attributes, even ones not explicitly set. + // Those have values like undefined, null, 0, false, "" or "inherit". + if ( val && val !== "inherit" ) { + ret += " " + attrs[i].nodeName + "=" + QUnit.jsDump.parse( val, "attribute" ); + } + } + } + ret += close; + + // Show content of TextNode or CDATASection + if ( node.nodeType === 3 || node.nodeType === 4 ) { + ret += node.nodeValue; + } + + return ret + open + "/" + tag + close; + }, + // function calls it internally, it's the arguments part of the function + functionArgs: function( fn ) { + var args, + l = fn.length; + + if ( !l ) { + return ""; + } + + args = new Array(l); + while ( l-- ) { + // 97 is 'a' + args[l] = String.fromCharCode(97+l); + } + return " " + args.join( ", " ) + " "; + }, + // object calls it internally, the key part of an item in a map + key: quote, + // function calls it internally, it's the content of the function + functionCode: "[code]", + // node calls it internally, it's an html attribute value + attribute: quote, + string: quote, + date: quote, + regexp: literal, + number: literal, + "boolean": literal + }, + // if true, entities are escaped ( <, >, \t, space and \n ) + HTML: false, + // indentation unit + indentChar: " ", + // if true, items in a collection, are separated by a \n, else just a space. + multiline: true + }; + + return jsDump; +}()); + +// from jquery.js +function inArray( elem, array ) { + if ( array.indexOf ) { + return array.indexOf( elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; +} + +/* + * Javascript Diff Algorithm + * By John Resig (http://ejohn.org/) + * Modified by Chu Alan "sprite" + * + * Released under the MIT license. + * + * More Info: + * http://ejohn.org/projects/javascript-diff-algorithm/ + * + * Usage: QUnit.diff(expected, actual) + * + * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the quick brown fox jumped jumps over" + */ +QUnit.diff = (function() { + /*jshint eqeqeq:false, eqnull:true */ + function diff( o, n ) { + var i, + ns = {}, + os = {}; + + for ( i = 0; i < n.length; i++ ) { + if ( !hasOwn.call( ns, n[i] ) ) { + ns[ n[i] ] = { + rows: [], + o: null + }; + } + ns[ n[i] ].rows.push( i ); + } + + for ( i = 0; i < o.length; i++ ) { + if ( !hasOwn.call( os, o[i] ) ) { + os[ o[i] ] = { + rows: [], + n: null + }; + } + os[ o[i] ].rows.push( i ); + } + + for ( i in ns ) { + if ( hasOwn.call( ns, i ) ) { + if ( ns[i].rows.length === 1 && hasOwn.call( os, i ) && os[i].rows.length === 1 ) { + n[ ns[i].rows[0] ] = { + text: n[ ns[i].rows[0] ], + row: os[i].rows[0] + }; + o[ os[i].rows[0] ] = { + text: o[ os[i].rows[0] ], + row: ns[i].rows[0] + }; + } + } + } + + for ( i = 0; i < n.length - 1; i++ ) { + if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null && + n[ i + 1 ] == o[ n[i].row + 1 ] ) { + + n[ i + 1 ] = { + text: n[ i + 1 ], + row: n[i].row + 1 + }; + o[ n[i].row + 1 ] = { + text: o[ n[i].row + 1 ], + row: i + 1 + }; + } + } + + for ( i = n.length - 1; i > 0; i-- ) { + if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null && + n[ i - 1 ] == o[ n[i].row - 1 ]) { + + n[ i - 1 ] = { + text: n[ i - 1 ], + row: n[i].row - 1 + }; + o[ n[i].row - 1 ] = { + text: o[ n[i].row - 1 ], + row: i - 1 + }; + } + } + + return { + o: o, + n: n + }; + } + + return function( o, n ) { + o = o.replace( /\s+$/, "" ); + n = n.replace( /\s+$/, "" ); + + var i, pre, + str = "", + out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ), + oSpace = o.match(/\s+/g), + nSpace = n.match(/\s+/g); + + if ( oSpace == null ) { + oSpace = [ " " ]; + } + else { + oSpace.push( " " ); + } + + if ( nSpace == null ) { + nSpace = [ " " ]; + } + else { + nSpace.push( " " ); + } + + if ( out.n.length === 0 ) { + for ( i = 0; i < out.o.length; i++ ) { + str += "" + out.o[i] + oSpace[i] + ""; + } + } + else { + if ( out.n[0].text == null ) { + for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) { + str += "" + out.o[n] + oSpace[n] + ""; + } + } + + for ( i = 0; i < out.n.length; i++ ) { + if (out.n[i].text == null) { + str += "" + out.n[i] + nSpace[i] + ""; + } + else { + // `pre` initialized at top of scope + pre = ""; + + for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) { + pre += "" + out.o[n] + oSpace[n] + ""; + } + str += " " + out.n[i].text + nSpace[i] + pre; + } + } + } + + return str; + }; +}()); + +// for CommonJS environments, export everything +if ( typeof exports !== "undefined" ) { + extend( exports, QUnit.constructor.prototype ); +} + +// get at whatever the global object is, like window in browsers +}( (function() {return this;}.call()) )); diff --git a/node_modules/toastr/tests/toastr-tests.html b/node_modules/toastr/tests/toastr-tests.html new file mode 100644 index 0000000..1fe155b --- /dev/null +++ b/node_modules/toastr/tests/toastr-tests.html @@ -0,0 +1,21 @@ + + + + toastr QUnit Tests + + + + +
        +

        toastr QUnit Tests

        +

        +
        +

        +
          +
          test markup, will be hidden
          + + + + + + diff --git a/node_modules/toastr/tests/unit/qunit-helper.js b/node_modules/toastr/tests/unit/qunit-helper.js new file mode 100644 index 0000000..42ce5e2 --- /dev/null +++ b/node_modules/toastr/tests/unit/qunit-helper.js @@ -0,0 +1,13 @@ +/** + * Hack to expose spec count from QUnit to Karma + */ + +var testCount = 0; +var qunitTest = QUnit.test; +QUnit.test = window.test = function () { + testCount += 1; + qunitTest.apply(this, arguments); +}; +QUnit.begin(function (args) { + args.totalTests = testCount; +}); diff --git a/node_modules/toastr/tests/unit/toastr-tests.js b/node_modules/toastr/tests/unit/toastr-tests.js new file mode 100644 index 0000000..71b704e --- /dev/null +++ b/node_modules/toastr/tests/unit/toastr-tests.js @@ -0,0 +1,861 @@ +/// +/// +(function () { + var iconClasses = { + error: 'toast-error', + info: 'toast-info', + success: 'toast-success', + warning: 'toast-warning' + }; + var positionClasses = { + topRight: 'toast-top-right', + bottomRight: 'toast-bottom-right', + bottomLeft: 'toast-bottom-left', + topLeft: 'toast-top-left', + topCenter: 'toast-top-center', + bottomCenter: 'toast-bottom-center' + }; + var sampleMsg = 'I don\'t think they really exist'; + var sampleTitle = 'TEST'; + var selectors = { + container: 'div#toast-container', + toastInfo: 'div#toast-container > div.toast-info', + toastWarning: 'div#toast-container > div.toast-success', + toastError: 'div#toast-container > div.toast-error', + toastSuccess: 'div#toast-container > div.toast-success' + }; + + toastr.options = { + timeOut: 2000, + extendedTimeOut: 0, + fadeOut: 0, + fadeIn: 0, + showDuration: 0, + hideDuration: 0, + debug: false + }; + + var delay = toastr.options.timeOut + 500; + + // 'Clears' must go first + module('clear'); + asyncTest('clear - show 3 toasts, clear the 2nd', 1, function () { + //Arrange + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + $toast[2] = toastr.info(sampleMsg, sampleTitle + '-3'); + var $container = toastr.getContainer(); + //Act + toastr.clear($toast[1]); + //Assert + setTimeout(function () { + ok($container && $container.children().length === 2); + //Teardown + resetContainer(); + start(); + }, 1000); + }); + asyncTest('clear - show 3 toasts, clear all 3, 0 left', 1, function () { + //Arrange + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + $toast[2] = toastr.info(sampleMsg, sampleTitle + '-3'); + var $container = toastr.getContainer(); + //Act + toastr.clear(); + //Assert + setTimeout(function () { + ok($container && $container.children().length === 0); + //Teardown + resetContainer(); + start(); + }, delay); + }); + test('clear - after clear with force option toast with focus disappears', 1, function () { + //Arrange + var $toast; + var msg = sampleMsg + '

          '; + //Act + $toast = toastr.info(msg, sampleTitle + '-1'); + $toast.find('button').focus(); + toastr.clear($toast, { force: true }); + var $container = toastr.getContainer(); + //Assert + ok($container && $container.children().length === 0, 'Focused toast after a clear with force is not visible'); + //Teardown + resetContainer(); + }); + asyncTest('clear and show - show 2 toasts, clear both, then show 1 more', 2, function () { + //Arrange + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + var $container = toastr.getContainer(); + toastr.clear(); + //Act + setTimeout(function () { + $toast[2] = toastr.info(sampleMsg, sampleTitle + '-3-Visible'); + //Assert + equal($toast[2].find('div.toast-title').html(), sampleTitle + '-3-Visible', 'Finds toast after a clear'); + ok($toast[2].is(':visible'), 'Toast after a clear is visible'); + //Teardown + resetContainer(); + start(); + }, delay); + }); + asyncTest('clear and show - clear removes toast container', 2, function () { + //Arrange + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + var $container = toastr.getContainer(); + toastr.clear(); + //Act + setTimeout(function () { + //Assert + equal($(selectors.container).length, 0, 'Toast container does not exist'); + ok(!$toast[1].is(':visible'), 'Toast after a clear is visible'); + //Teardown + resetContainer(); + start(); + }, delay); + }); + asyncTest('clear and show - after clear new toast creates container', 1, function () { + //Arrange + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + var $container = toastr.getContainer(); + toastr.clear(); + //Act + setTimeout(function () { + $toast[2] = toastr.info(sampleMsg, sampleTitle + '-3-Visible'); + //Assert + equal($(selectors.container).find('div.toast-title').html(), sampleTitle + '-3-Visible', 'Finds toast after a clear'); //Teardown + resetContainer(); + start(); + }, delay); + }); + asyncTest('clear and show - clear toast after hover', 1, function () { + //Arrange + var $toast = toastr.info(sampleMsg, sampleTitle); + var $container = toastr.getContainer(); + $toast.trigger("mouseout"); + //Act + setTimeout(function () { + //Assert + ok($container.find('div.toast-title').length === 0, 'Toast clears after a mouse hover'); //Teardown + resetContainer(); + start(); + }, 500); + }); + asyncTest('clear and show - do not clear toast after hover', 1, function () { + //Arrange + var $toast = toastr.info(sampleMsg, sampleTitle, { closeOnHover: false }); + var $container = toastr.getContainer(); + $toast.trigger("mouseout"); + //Act + setTimeout(function () { + //Assert + ok($container.find('div.toast-title').length === 1, 'Toast does not clear after a mouse hover'); //Teardown + resetContainer(); + start(); + }, 500); + }); + test('clear and show - after clear all toasts new toast still appears', 1, function () { + //Arrange + var $toast = []; + //Act + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + toastr.clear(); + $toast[2] = toastr.info(sampleMsg, sampleTitle + '-3-Visible'); + //Assert + ok($toast[2].is(':visible'), 'Toast after a clear is visible'); + //Teardown + resetContainer(); + }); + module('info'); + test('info - pass title and message', 3, function () { + //Arrange + //Act + var $toast = toastr.info(sampleMsg, sampleTitle); + //Assert + equal($toast.find('div.toast-title').html(), sampleTitle, 'Sets title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.info), 'Sets info icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('info - pass message, but no title', 3, function () { + //Arrange + //Act + var $toast = toastr.info(sampleMsg); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets null title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.info), 'Sets info icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('info - pass no message nor title', 3, function () { + //Arrange + //Act + var $toast = toastr.info(); //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets null title'); + equal($toast.find('div.toast-message').html(), null, 'Sets message'); + ok($toast.hasClass(iconClasses.info), 'Sets info icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + module('warning'); + test('warning - pass message and title', 3, function () { + //Arrange + //Act + var $toast = toastr.warning(sampleMsg, sampleTitle); + //Assert + equal($toast.find('div.toast-title').html(), sampleTitle, 'Sets title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.warning), 'Sets warning icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('warning - pass message, but no title', 3, function () { + //Arrange + //Act + var $toast = toastr.warning(sampleMsg); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets empty title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.warning), 'Sets warning icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('warning - no message nor title', 3, function () { + //Arrange + //Act + var $toast = toastr.warning(''); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets null title'); + equal($toast.find('div.toast-message').length, 0, 'Sets empty message'); + ok($toast.hasClass(iconClasses.warning), 'Sets warning icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + module('error'); + test('error - pass message and title', 3, function () { + //Arrange + //Act + var $toast = toastr.error(sampleMsg, sampleTitle); + //Assert + equal($toast.find('div.toast-title').html(), sampleTitle, 'Sets title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.error), 'Sets error icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('error - pass message, but no title', 3, function () { + //Arrange + //Act + var $toast = toastr.error(sampleMsg); //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets empty title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.error), 'Sets error icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('error - no message nor title', 3, function () { + //Arrange + //Act + var $toast = toastr.error(''); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets empty title'); + equal($toast.find('div.toast-message').length, 0, 'Sets empty message'); + ok($toast.hasClass(iconClasses.error), 'Sets error icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + module('success'); + test('success - pass message and title', 3, function () { + //Arrange + //Act + var $toast = toastr.success(sampleMsg, sampleTitle); + //Assert + equal($toast.find('div.toast-title').html(), sampleTitle, 'Sets title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.success), 'Sets success icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('success - pass message, but no title', 3, function () { + //Arrange + //Act + var $toast = toastr.success(sampleMsg); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets empty title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.success), 'Sets success icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('success - no message nor title', 3, function () { + //Arrange + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets null title'); + equal($toast.find('div.toast-message').length, 0, 'Sets empty message'); + ok($toast.hasClass(iconClasses.success), 'Sets success icon'); //Teardown + $toast.remove(); + clearContainerChildren(); + }); + + + module('escape html', { + teardown: function () { + toastr.options.escapeHtml = false; + } + }); + test('info - escape html', 2, function () { + //Arrange + toastr.options.escapeHtml = true; + //Act + var $toast = toastr.info('html message', 'html title'); + //Assert + equal($toast.find('div.toast-title').html(), 'html <u>title</u>', 'Title is escaped'); + equal($toast.find('div.toast-message').html(), 'html <strong>message</strong>', 'Message is escaped'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('warning - escape html', 2, function () { + //Arrange + toastr.options.escapeHtml = true; + //Act + var $toast = toastr.warning('html message', 'html title'); + //Assert + equal($toast.find('div.toast-title').html(), 'html <u>title</u>', 'Title is escaped'); + equal($toast.find('div.toast-message').html(), 'html <strong>message</strong>', 'Message is escaped'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('error - escape html', 2, function () { + //Arrange + toastr.options.escapeHtml = true; + //Act + var $toast = toastr.error('html message', 'html title'); + //Assert + equal($toast.find('div.toast-title').html(), 'html <u>title</u>', 'Title is escaped'); + equal($toast.find('div.toast-message').html(), 'html <strong>message</strong>', 'Message is escaped'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('success - escape html', 2, function () { + //Arrange + toastr.options.escapeHtml = true; + //Act + var $toast = toastr.success('html message', 'html title'); + //Assert + equal($toast.find('div.toast-title').html(), 'html <u>title</u>', 'Title is escaped'); + equal($toast.find('div.toast-message').html(), 'html <strong>message</strong>', 'Message is escaped'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + + module('closeButton', { + teardown: function () { + toastr.options.closeButton = false; + } + }); + test('close button disabled', 1, function () { + //Arrange + toastr.options.closeButton = false; + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('button.toast-close-button').length, 0, 'close button should not exist with closeButton=false'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('close button enabled', 1, function () { + //Arrange + toastr.options.closeButton = true; + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('button.toast-close-button').length, 1, 'close button should exist with closeButton=true'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('close button has type=button', 1, function () { + //Arrange + toastr.options.closeButton = true; + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('button[type="button"].toast-close-button').length, 1, 'close button should have type=button'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + asyncTest('close button duration', 1, function () { + //Arrange + toastr.options.closeButton = true; + toastr.options.closeDuration = 0; + toastr.options.hideDuration = 2000; + var $container = toastr.getContainer(); + //Act + var $toast = toastr.success(''); + $toast.find('button.toast-close-button').click(); + setTimeout(function () { + //Assert + ok($container && $container.children().length === 0, 'close button should support own hide animation'); + //Teardown + toastr.options.hideDuration = 0; + resetContainer(); + start(); + }, 500); + }); + + module('progressBar', { + teardown: function () { + toastr.options.progressBar = false; + } + }); + test('progress bar disabled', 1, function () { + //Arrange + toastr.options.progressBar = false; + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('div.toast-progress').length, 0, 'progress bar should not exist with progressBar=false'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('progress bar enabled', 1, function () { + //Arrange + toastr.options.progressBar = true; + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('div.toast-progress').length, 1, 'progress bar should exist with progressBar=true'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + + module('rtl', { + teardown: function () { + toastr.options.rtl = false; + } + }); + test('toastr is ltr by default', 1, function () { + //Arrange + //Act + //Assert + toastr.subscribe(function(response) { + equal(response.options.rtl, false, 'ltr by default (i.e. rtl=false)'); + }); + var $toast = toastr.success(''); + //Teardown + toastr.subscribe(null); + $toast.remove(); + clearContainerChildren(); + }); + test('ltr toastr does not have .rtl class', 1, function () { + //Arrange + //Act + var $toast = toastr.success(''); + //Assert + ok($toast.hasClass('rtl') === false, 'ltr div container does not have .rtl class'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('rtl toastr has .rtl class', 1, function () { + //Arrange + toastr.options.rtl = true; + //Act + var $toast = toastr.success(''); + //Assert + ok($toast.hasClass('rtl'), 'rtl div container has .rtl class'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + + module('accessibility'); + test('toastr success has aria polite',1,function() { + // Arrange + var $toast = toastr.success(''); + + // Act + ok($toast.attr('aria-live')==='polite', 'success toast has aria-live of polite'); + + // Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('toastr info has aria polite',1,function() { + // Arrange + var $toast = toastr.info(''); + + // Act + ok($toast.attr('aria-live')==='polite', 'info toast has aria-live of polite'); + + // Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('toastr warning has aria assertive',1,function() { + // Arrange + var $toast = toastr.warning(''); + + // Act + ok($toast.attr('aria-live')==='assertive', 'warning toast has aria-live of assertive'); + + // Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('toastr error has aria assertive',1,function() { + // Arrange + var $toast = toastr.error(''); + + // Act + ok($toast.attr('aria-live')==='assertive', 'error toast has aria-live of assertive'); + + // Teardown + $toast.remove(); + clearContainerChildren(); + }); + + module('event', { + teardown: function () { + toastr.options.closeButton = false; + toastr.options.hideDuration = 0; + } + }); + asyncTest('event - onShown is executed', 1, function () { + // Arrange + var run = false; + var onShown = function () { run = true; }; + toastr.options.onShown = onShown; + // Act + var $toast = toastr.success(sampleMsg, sampleTitle); + setTimeout(function () { + // Assert + ok(run); + //Teardown + $toast.remove(); + clearContainerChildren(); + start(); + }, delay); + }); + + asyncTest('event - onHidden is executed', 1, function () { + //Arrange + var run = false; + var onHidden = function () { run = true; }; + toastr.options.onHidden = onHidden; + toastr.options.timeOut = 1; + //Act + var $toast = toastr.success(sampleMsg, sampleTitle); + setTimeout(function () { + // Assert + ok(run); //Teardown + $toast.remove(); + clearContainerChildren(); + start(); + }, delay); + }); + + asyncTest('event - onShown and onHidden are both executed', 2, function () { + //Arrange + var onShowRun = false; + var onHideRun = false; + var onShow = function () { onShowRun = true; }; + var onHide = function () { onHideRun = true; }; + toastr.options.onShown = onShow; + toastr.options.onHidden = onHide; + toastr.options.timeOut = 1; + //Act + var $toast = toastr.success(sampleMsg, sampleTitle); + setTimeout(function () { + // Assert + ok(onShowRun); + ok(onHideRun); + //Teardown + $toast.remove(); + clearContainerChildren(); + start(); + }, delay); + }); + + asyncTest('event - onCloseClick is executed', 1, function () { + //Arrange + var run = false; + toastr.options.closeButton = true; + toastr.options.closeDuration = 0; + toastr.options.hideDuration = 2000; + var onCloseClick = function () { run = true; }; + toastr.options.onCloseClick = onCloseClick; + toastr.options.timeOut = 1; + //Act + var $toast = toastr.success(sampleMsg, sampleTitle); + $toast.find('button.toast-close-button').click(); + setTimeout(function () { + // Assert + ok(run); //Teardown + $toast.remove(); + clearContainerChildren(); + start(); + }, delay); + }); + + test('event - message appears when no show or hide method functions provided', 1, function () { + //Arrange + //Act + var $toast = toastr.success(sampleMsg, sampleTitle); + //Assert + ok($toast.hasClass(iconClasses.success), 'Sets success icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + + test('event - prevent duplicate sequential toasts.', 1, function(){ + toastr.options.preventDuplicates = true; + + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle); + $toast[1] = toastr.info(sampleMsg, sampleTitle); + $toast[2] = toastr.info(sampleMsg + " 1", sampleTitle); + $toast[3] = toastr.info(sampleMsg, sampleTitle); + var $container = toastr.getContainer(); + + ok($container && $container.children().length === 3); + + clearContainerChildren(); + }); + + test('event - prevent duplicate sequential toasts, but allow previous after clear.', 1, function(){ + toastr.options.preventDuplicates = true; + + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle); + $toast[1] = toastr.info(sampleMsg, sampleTitle); + clearContainerChildren(); + $toast[3] = toastr.info(sampleMsg, sampleTitle); + var $container = toastr.getContainer(); + + ok($container && $container.children().length === 1); + + clearContainerChildren(); + }); + + test('event - allow duplicate sequential toasts.', 1, function(){ + toastr.options.preventDuplicates = false; + + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle); + $toast[1] = toastr.info(sampleMsg, sampleTitle); + $toast[1] = toastr.info(sampleMsg, sampleTitle); + var $container = toastr.getContainer(); + + ok($container && $container.children().length === 3); + + clearContainerChildren(); + }); + + test('event - allow preventDuplicates option to be overridden.', 1, function() { + var $toast = []; + + $toast[0] = toastr.info(sampleMsg, sampleTitle, { + preventDuplicates: true + }); + $toast[1] = toastr.info(sampleMsg, sampleTitle, { + preventDuplicates: true + }); + $toast[2] = toastr.info(sampleMsg, sampleTitle); + var $container = toastr.getContainer(); + + ok($container && $container.children().length === 2); + clearContainerChildren(); + }); + + module('subscription'); + asyncTest('subscribe - triggers 2 visible and 2 hidden response notifications while clicking on a toast', 1, function () { + //Arrange + var $toast = []; + var expectedReponses = []; + //Act + toastr.subscribe(function(response) { + if(response.options.testId) { + expectedReponses.push(response); + } + }) + + $toast[0] = toastr.info(sampleMsg, sampleTitle, {testId : 1}); + $toast[1] = toastr.info(sampleMsg, sampleTitle, {testId : 2}); + + $toast[1].click() + + setTimeout(function () { + // Assert + ok(expectedReponses.length === 4); + //Teardown + clearContainerChildren(); + toastr.subscribe(null); + start(); + }, delay); + }); + + module('order of appearance'); + test('Newest toast on top', 1, function () { + //Arrange + resetContainer(); + toastr.options.newestOnTop = true; + //Act + var $first = toastr.success("First toast"); + var $second = toastr.success("Second toast"); + //Assert + var containerHtml = toastr.getContainer().html(); + ok(containerHtml.indexOf("First toast") > containerHtml.indexOf("Second toast"), 'Newest toast is on top'); + //Teardown + $first.remove(); + $second.remove(); + resetContainer(); + }); + + test('Oldest toast on top', 1, function () { + //Arrange + resetContainer(); + toastr.options.newestOnTop = false; + //Act + var $first = toastr.success("First toast"); + var $second = toastr.success("Second toast"); + //Assert + var containerHtml = toastr.getContainer().html(); + ok(containerHtml.indexOf("First toast") < containerHtml.indexOf("Second toast"), 'Oldest toast is on top'); + //Teardown + $first.remove(); + $second.remove(); + resetContainer(); + }); + + // These must go last + module('positioning'); + test('Container - position top-right', 1, function () { + //Arrange + resetContainer(); + toastr.options.positionClass = positionClasses.topRight; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.topRight), 'Has position top right'); + //Teardown + $toast.remove(); + resetContainer(); + }); + test('Container - position bottom-right', 1, function () { + //Arrange + resetContainer(); + toastr.options.positionClass = positionClasses.bottomRight; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.bottomRight), 'Has position bottom right'); + //Teardown + $toast.remove(); + resetContainer(); + }); + test('Container - position bottom-left', 1, function () { + //Arrange + resetContainer(); + //$(selectors.container).remove() + toastr.options.positionClass = positionClasses.bottomLeft; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.bottomLeft), 'Has position bottom left'); + //Teardown + $toast.remove(); + resetContainer(); + }); + test('Container - position top-left', 1, function () { + //Arrange + resetContainer(); + toastr.options.positionClass = positionClasses.topLeft; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.topLeft), 'Has position top left'); + //Teardown + $toast.remove(); + resetContainer(); + }); + test('Container - position top-center', 1, function () { + //Arrange + resetContainer(); + toastr.options.positionClass = positionClasses.topCenter; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.topCenter), 'Has position top center'); + //Teardown + $toast.remove(); + resetContainer(); + }); + test('Container - position bottom-center', 1, function () { + //Arrange + resetContainer(); + toastr.options.positionClass = positionClasses.bottomCenter; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.bottomCenter), 'Has position bottom center'); + //Teardown + $toast.remove(); + resetContainer(); + }); + + function resetContainer() { + var $container = toastr.getContainer(); + if ($container) { + $container.remove(); + } + $(selectors.container).remove(); + clearContainerChildren(); + } + + function clearContainerChildren() { + toastr.clear(); + } + +})(); diff --git a/node_modules/toastr/tests/unit/x.js b/node_modules/toastr/tests/unit/x.js new file mode 100644 index 0000000..b78dd48 --- /dev/null +++ b/node_modules/toastr/tests/unit/x.js @@ -0,0 +1,3 @@ + test('test test', 1, function () { + ok(1 === 1, '1 equals 1'); + }); diff --git a/node_modules/toastr/toastr-icon.png b/node_modules/toastr/toastr-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..040102adcf4c6af6200d4ba7fba296cef0524836 GIT binary patch literal 25510 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 0; i--) { + clearToast($(toastsToClear[i]), options); + } + } + + function clearToast ($toastElement, options, clearOptions) { + var force = clearOptions && clearOptions.force ? clearOptions.force : false; + if ($toastElement && (force || $(':focus', $toastElement).length === 0)) { + $toastElement[options.hideMethod]({ + duration: options.hideDuration, + easing: options.hideEasing, + complete: function () { removeToast($toastElement); } + }); + return true; + } + return false; + } + + function createContainer(options) { + $container = $('
          ') + .attr('id', options.containerId) + .addClass(options.positionClass); + + $container.appendTo($(options.target)); + return $container; + } + + function getDefaults() { + return { + tapToDismiss: true, + toastClass: 'toast', + containerId: 'toast-container', + debug: false, + + showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery + showDuration: 300, + showEasing: 'swing', //swing and linear are built into jQuery + onShown: undefined, + hideMethod: 'fadeOut', + hideDuration: 1000, + hideEasing: 'swing', + onHidden: undefined, + closeMethod: false, + closeDuration: false, + closeEasing: false, + closeOnHover: true, + + extendedTimeOut: 1000, + iconClasses: { + error: 'toast-error', + info: 'toast-info', + success: 'toast-success', + warning: 'toast-warning' + }, + iconClass: 'toast-info', + positionClass: 'toast-top-right', + timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky + titleClass: 'toast-title', + messageClass: 'toast-message', + escapeHtml: false, + target: 'body', + closeHtml: '', + closeClass: 'toast-close-button', + newestOnTop: true, + preventDuplicates: false, + progressBar: false, + progressClass: 'toast-progress', + rtl: false + }; + } + + function publish(args) { + if (!listener) { return; } + listener(args); + } + + function notify(map) { + var options = getOptions(); + var iconClass = map.iconClass || options.iconClass; + + if (typeof (map.optionsOverride) !== 'undefined') { + options = $.extend(options, map.optionsOverride); + iconClass = map.optionsOverride.iconClass || iconClass; + } + + if (shouldExit(options, map)) { return; } + + toastId++; + + $container = getContainer(options, true); + + var intervalId = null; + var $toastElement = $('
          '); + var $titleElement = $('
          '); + var $messageElement = $('
          '); + var $progressElement = $('
          '); + var $closeElement = $(options.closeHtml); + var progressBar = { + intervalId: null, + hideEta: null, + maxHideTime: null + }; + var response = { + toastId: toastId, + state: 'visible', + startTime: new Date(), + options: options, + map: map + }; + + personalizeToast(); + + displayToast(); + + handleEvents(); + + publish(response); + + if (options.debug && console) { + console.log(response); + } + + return $toastElement; + + function escapeHtml(source) { + if (source == null) { + source = ''; + } + + return source + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(/'/g, ''') + .replace(//g, '>'); + } + + function personalizeToast() { + setIcon(); + setTitle(); + setMessage(); + setCloseButton(); + setProgressBar(); + setRTL(); + setSequence(); + setAria(); + } + + function setAria() { + var ariaValue = ''; + switch (map.iconClass) { + case 'toast-success': + case 'toast-info': + ariaValue = 'polite'; + break; + default: + ariaValue = 'assertive'; + } + $toastElement.attr('aria-live', ariaValue); + } + + function handleEvents() { + if (options.closeOnHover) { + $toastElement.hover(stickAround, delayedHideToast); + } + + if (!options.onclick && options.tapToDismiss) { + $toastElement.click(hideToast); + } + + if (options.closeButton && $closeElement) { + $closeElement.click(function (event) { + if (event.stopPropagation) { + event.stopPropagation(); + } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) { + event.cancelBubble = true; + } + + if (options.onCloseClick) { + options.onCloseClick(event); + } + + hideToast(true); + }); + } + + if (options.onclick) { + $toastElement.click(function (event) { + options.onclick(event); + hideToast(); + }); + } + } + + function displayToast() { + $toastElement.hide(); + + $toastElement[options.showMethod]( + {duration: options.showDuration, easing: options.showEasing, complete: options.onShown} + ); + + if (options.timeOut > 0) { + intervalId = setTimeout(hideToast, options.timeOut); + progressBar.maxHideTime = parseFloat(options.timeOut); + progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime; + if (options.progressBar) { + progressBar.intervalId = setInterval(updateProgress, 10); + } + } + } + + function setIcon() { + if (map.iconClass) { + $toastElement.addClass(options.toastClass).addClass(iconClass); + } + } + + function setSequence() { + if (options.newestOnTop) { + $container.prepend($toastElement); + } else { + $container.append($toastElement); + } + } + + function setTitle() { + if (map.title) { + var suffix = map.title; + if (options.escapeHtml) { + suffix = escapeHtml(map.title); + } + $titleElement.append(suffix).addClass(options.titleClass); + $toastElement.append($titleElement); + } + } + + function setMessage() { + if (map.message) { + var suffix = map.message; + if (options.escapeHtml) { + suffix = escapeHtml(map.message); + } + $messageElement.append(suffix).addClass(options.messageClass); + $toastElement.append($messageElement); + } + } + + function setCloseButton() { + if (options.closeButton) { + $closeElement.addClass(options.closeClass).attr('role', 'button'); + $toastElement.prepend($closeElement); + } + } + + function setProgressBar() { + if (options.progressBar) { + $progressElement.addClass(options.progressClass); + $toastElement.prepend($progressElement); + } + } + + function setRTL() { + if (options.rtl) { + $toastElement.addClass('rtl'); + } + } + + function shouldExit(options, map) { + if (options.preventDuplicates) { + if (map.message === previousToast) { + return true; + } else { + previousToast = map.message; + } + } + return false; + } + + function hideToast(override) { + var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod; + var duration = override && options.closeDuration !== false ? + options.closeDuration : options.hideDuration; + var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing; + if ($(':focus', $toastElement).length && !override) { + return; + } + clearTimeout(progressBar.intervalId); + return $toastElement[method]({ + duration: duration, + easing: easing, + complete: function () { + removeToast($toastElement); + clearTimeout(intervalId); + if (options.onHidden && response.state !== 'hidden') { + options.onHidden(); + } + response.state = 'hidden'; + response.endTime = new Date(); + publish(response); + } + }); + } + + function delayedHideToast() { + if (options.timeOut > 0 || options.extendedTimeOut > 0) { + intervalId = setTimeout(hideToast, options.extendedTimeOut); + progressBar.maxHideTime = parseFloat(options.extendedTimeOut); + progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime; + } + } + + function stickAround() { + clearTimeout(intervalId); + progressBar.hideEta = 0; + $toastElement.stop(true, true)[options.showMethod]( + {duration: options.showDuration, easing: options.showEasing} + ); + } + + function updateProgress() { + var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100; + $progressElement.width(percentage + '%'); + } + } + + function getOptions() { + return $.extend({}, getDefaults(), toastr.options); + } + + function removeToast($toastElement) { + if (!$container) { $container = getContainer(); } + if ($toastElement.is(':visible')) { + return; + } + $toastElement.remove(); + $toastElement = null; + if ($container.children().length === 0) { + $container.remove(); + previousToast = undefined; + } + } + + })(); + }); +}(typeof define === 'function' && define.amd ? define : function (deps, factory) { + if (typeof module !== 'undefined' && module.exports) { //Node + module.exports = factory(require('jquery')); + } else { + window.toastr = factory(window.jQuery); + } +})); diff --git a/node_modules/toastr/toastr.less b/node_modules/toastr/toastr.less new file mode 100644 index 0000000..7a36d45 --- /dev/null +++ b/node_modules/toastr/toastr.less @@ -0,0 +1,302 @@ +// Mix-ins +.borderRadius(@radius) { + -moz-border-radius: @radius; + -webkit-border-radius: @radius; + border-radius: @radius; +} + +.boxShadow(@boxShadow) { + -moz-box-shadow: @boxShadow; + -webkit-box-shadow: @boxShadow; + box-shadow: @boxShadow; +} + +.opacity(@opacity) { + @opacityPercent: (@opacity * 100); + opacity: @opacity; + -ms-filter: ~"progid:DXImageTransform.Microsoft.Alpha(Opacity=@{opacityPercent})"; + filter: ~"alpha(opacity=@{opacityPercent})"; +} + +.wordWrap(@wordWrap: break-word) { + -ms-word-wrap: @wordWrap; + word-wrap: @wordWrap; +} + +// Variables +@black: #000000; +@grey: #999999; +@light-grey: #CCCCCC; +@white: #FFFFFF; +@near-black: #030303; +@green: #51A351; +@red: #BD362F; +@blue: #2F96B4; +@orange: #F89406; +@default-container-opacity: .8; + +// Styles +.toast-title { + font-weight: bold; +} + +.toast-message { + .wordWrap(); + + a, + label { + color: @white; + } + + a:hover { + color: @light-grey; + text-decoration: none; + } +} + +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: @white; + -webkit-text-shadow: 0 1px 0 rgba(255,255,255,1); + text-shadow: 0 1px 0 rgba(255,255,255,1); + .opacity(0.8); + line-height: 1; + + &:hover, + &:focus { + color: @black; + text-decoration: none; + cursor: pointer; + .opacity(0.4); + } +} + +.rtl .toast-close-button { + left: -0.3em; + float: left; + right: 0.3em; +} + +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +//#endregion + +.toast-top-center { + top: 0; + right: 0; + width: 100%; +} + +.toast-bottom-center { + bottom: 0; + right: 0; + width: 100%; +} + +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} + +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} + +.toast-top-left { + top: 12px; + left: 12px; +} + +.toast-top-right { + top: 12px; + right: 12px; +} + +.toast-bottom-right { + right: 12px; + bottom: 12px; +} + +.toast-bottom-left { + bottom: 12px; + left: 12px; +} + +#toast-container { + position: fixed; + z-index: 999999; + // The container should not be clickable. + pointer-events: none; + * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + } + + > div { + position: relative; + // The toast itself should be clickable. + pointer-events: auto; + overflow: hidden; + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + .borderRadius(3px 3px 3px 3px); + background-position: 15px center; + background-repeat: no-repeat; + .boxShadow(0 0 12px @grey); + color: @white; + .opacity(@default-container-opacity); + } + + > div.rtl { + direction: rtl; + padding: 15px 50px 15px 15px; + background-position: right 15px center; + } + + > div:hover { + .boxShadow(0 0 12px @black); + .opacity(1); + cursor: pointer; + } + + > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; + } + + > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; + } + + > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; + } + + > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; + } + + /*overrides*/ + &.toast-top-center > div, + &.toast-bottom-center > div { + width: 300px; + margin-left: auto; + margin-right: auto; + } + + &.toast-top-full-width > div, + &.toast-bottom-full-width > div { + width: 96%; + margin-left: auto; + margin-right: auto; + } +} + +.toast { + background-color: @near-black; +} + +.toast-success { + background-color: @green; +} + +.toast-error { + background-color: @red; +} + +.toast-info { + background-color: @blue; +} + +.toast-warning { + background-color: @orange; +} + +.toast-progress { + position: absolute; + left: 0; + bottom: 0; + height: 4px; + background-color: @black; + .opacity(0.4); +} + +/*Responsive Design*/ + +@media all and (max-width: 240px) { + #toast-container { + + > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + + > div.rtl { + padding: 8px 50px 8px 8px; + } + + & .toast-close-button { + right: -0.2em; + top: -0.2em; + } + + & .rtl .toast-close-button { + left: -0.2em; + right: 0.2em; + } + } +} + +@media all and (min-width: 241px) and (max-width: 480px) { + #toast-container { + > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + + > div.rtl { + padding: 8px 50px 8px 8px; + } + + & .toast-close-button { + right: -0.2em; + top: -0.2em; + } + + & .rtl .toast-close-button { + left: -0.2em; + right: 0.2em; + } + } +} + +@media all and (min-width: 481px) and (max-width: 768px) { + #toast-container { + > div { + padding: 15px 15px 15px 50px; + width: 25em; + } + + > div.rtl { + padding: 15px 50px 15px 15px; + } + } +} diff --git a/node_modules/toastr/toastr.scss b/node_modules/toastr/toastr.scss new file mode 100644 index 0000000..b96d0cf --- /dev/null +++ b/node_modules/toastr/toastr.scss @@ -0,0 +1,201 @@ +.toast-title { + font-weight: bold; +} +.toast-message { + -ms-word-wrap: break-word; + word-wrap: break-word; +} +.toast-message a, +.toast-message label { + color: #ffffff; +} +.toast-message a:hover { + color: #cccccc; + text-decoration: none; +} +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: #ffffff; + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +.toast-close-button:hover, +.toast-close-button:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.toast-top-center { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-center { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-left { + top: 12px; + left: 12px; +} +.toast-top-right { + top: 12px; + right: 12px; +} +.toast-bottom-right { + right: 12px; + bottom: 12px; +} +.toast-bottom-left { + bottom: 12px; + left: 12px; +} +#toast-container { + position: fixed; + z-index: 999999; + /*overrides*/ + +} +#toast-container * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#toast-container > div { + position: relative; + overflow: hidden; + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: 0 0 12px #999999; + -webkit-box-shadow: 0 0 12px #999999; + box-shadow: 0 0 12px #999999; + color: #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +#toast-container > div:hover { + -moz-box-shadow: 0 0 12px #000000; + -webkit-box-shadow: 0 0 12px #000000; + box-shadow: 0 0 12px #000000; + opacity: 1; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + filter: alpha(opacity=100); + cursor: pointer; +} +#toast-container > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; +} +#toast-container > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; +} +#toast-container.toast-top-center > div, +#toast-container.toast-bottom-center > div { + width: 300px; + margin-left: auto; + margin-right: auto; +} +#toast-container.toast-top-full-width > div, +#toast-container.toast-bottom-full-width > div { + width: 96%; + margin-left: auto; + margin-right: auto; +} +.toast { + background-color: #030303; +} +.toast-success { + background-color: #51a351; +} +.toast-error { + background-color: #bd362f; +} +.toast-info { + background-color: #2f96b4; +} +.toast-warning { + background-color: #f89406; +} + +.toast-progress { + position: absolute; + left: 0; + bottom: 0; + height: 4px; + background-color: #000000; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} + +/*Responsive Design*/ +@media all and (max-width: 240px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 241px) and (max-width: 480px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 481px) and (max-width: 768px) { + #toast-container > div { + padding: 15px 15px 15px 50px; + width: 25em; + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..d16df15 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,52 @@ +{ + "name": "1_TodoForge", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "toastr": "^2.1.4" + }, + "devDependencies": { + "@types/toastr": "^2.1.43" + } + }, + "node_modules/@types/jquery": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.27.tgz", + "integrity": "sha512-TR28Y8ezIGgfyA02UOh9x+Fy16/1qWYAnvtRd2gTBJuccX/vmddyti0MezLkTv7f+OLofVc2T961VPyKv1tXJQ==", + "dev": true, + "dependencies": { + "@types/sizzle": "*" + } + }, + "node_modules/@types/sizzle": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.6.tgz", + "integrity": "sha512-m04Om5Gz6kbjUwAQ7XJJQ30OdEFsSmAVsvn4NYwcTRyMVpKKa1aPuESw1n2CxS5fYkOQv3nHgDKeNa8e76fUkw==", + "dev": true + }, + "node_modules/@types/toastr": { + "version": "2.1.43", + "resolved": "https://registry.npmjs.org/@types/toastr/-/toastr-2.1.43.tgz", + "integrity": "sha512-sLC2fr2OXeE1iyhUixpQ64wQ2tA26awmLidn4tXTLBz4yP/VhtYUKHpmiIyDtztKkHjucdiTLH8F5uRRyhNi2Q==", + "dev": true, + "dependencies": { + "@types/jquery": "*" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, + "node_modules/toastr": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", + "integrity": "sha512-LIy77F5n+sz4tefMmFOntcJ6HL0Fv3k1TDnNmFZ0bU/GcvIIfy6eG2v7zQmMiYgaalAiUv75ttFrPn5s0gyqlA==", + "dependencies": { + "jquery": ">=1.12.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..eb19643 --- /dev/null +++ b/package.json @@ -0,0 +1,8 @@ +{ + "dependencies": { + "toastr": "^2.1.4" + }, + "devDependencies": { + "@types/toastr": "^2.1.43" + } +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..645487e --- /dev/null +++ b/src/main.ts @@ -0,0 +1,159 @@ +// definedTaskType +interface taskType { + id: number; + task: string; + isCompleted: boolean; +} + +// ifSavedlocallyAnyTask +const taskFromStorage = localStorage.getItem("tasksList"); + +// Input Element +const inputTask = document.getElementById("inputTask") as HTMLInputElement; +// Add Button +const addButton = document.querySelector(".addTask") as HTMLButtonElement; +// Save button +const saveTask = document.querySelector(".saveTask") as HTMLButtonElement; + +// Task Container +const taskListContainer = document.querySelector( + ".taskListContainer" +) as HTMLDivElement; + +// TaskList +let tasksList: taskType[] = []; + +// handleTaskDisplay +const handleTask = () => { + displayTask(tasksList); + inputTask.value = ""; +}; + +// dispalyAllTodoToUser +const displayTask = (taskList: taskType[]): void => { + let htmlTaskString = ""; + taskList.map((task: taskType): void => { + htmlTaskString += `
          +
          + + + +
          + +
          + + + + + +
          + +
          + + `; + }); + taskListContainer.innerHTML = htmlTaskString; +}; + +// localSavedDataAddedToTaskList +if (taskFromStorage) { + tasksList = JSON.parse(taskFromStorage); + handleTask(); +} + +// addingTaskOnClick[add] +addButton?.addEventListener("click", () => { + const userTask = inputTask.value; + if (userTask) { + tasksList.push({ + id: tasksList.length + 1, + task: userTask, + isCompleted: false, + }); + handleTask(); + } else { + toastr.error("Kindly Enter the Task.", "Note:", { + positionClass: "toast-bottom-right", + showDuration: 70, + closeButton: true, + progressBar: false, + preventDuplicates: true, + }); + } +}); + +// editTask +const taskToEdit = document.querySelector(".taskToEdit") as HTMLInputElement; +let taskIdToEdit: number; +const editTask = (id: number): void => { + taskIdToEdit = id; + // toFindObjectWithTaskToBeEditedId + tasksList.forEach((task: taskType) => { + if (task.id == taskIdToEdit) { + console.log(taskToEdit); + taskToEdit.value = task.task; + } + }); +}; + +// savingTheEditedTaskToObject +const saveEditedTask = () => { + if (taskToEdit.value == "") { + toastr.error("Kindly Enter the Task.Task is not edited.", "Note:", { + positionClass: "toast-bottom-right", + showDuration: 70, + closeButton: true, + progressBar: false, + preventDuplicates: true, + }); + } else { + tasksList[taskIdToEdit - 1].task = taskToEdit.value; + handleTask(); + } +}; +// deleteTaskonClick[delete] +const deleteTask = (taskIdToRemove: number): void => { + tasksList = tasksList.filter( + (task: taskType): boolean => task.id != taskIdToRemove + ); + displayTask(tasksList); +}; + +// updateTaskStatus[checkbox - complete/incomplete] +const taskCompletionStatus = (taskStatusToUpdate: number) => { + tasksList.find((task: taskType) => { + if (task.id == taskStatusToUpdate) { + task.isCompleted = !task.isCompleted; + } + }); +}; + +// userSearchForAnyTask +const searchTasks = (toSearch: string): void => { + let searchedTasks: taskType[] = []; + // userTypedSomething + if (toSearch !== "") { + // filterTaskSavedToArray - noChangesMadeToTasksList + searchedTasks = tasksList.filter((task: taskType) => { + const Data = Object.values(task).join("").toLowerCase(); + if (Data.includes(toSearch.toLowerCase())) { + return task; + } + }); + } else { + searchedTasks = tasksList; + } + // showTheSearchedTasks => [ tasksList/SearchedTasks] + displayTask(searchedTasks); +}; + +// saveToLocalStorageOnClick[save] +saveTask?.addEventListener("click", () => { + localStorage.setItem("tasksList", JSON.stringify(tasksList)); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..78fc0bd --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "ES2018" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "CommonJS" /* Specify what module code is generated. */, + "rootDir": "./src" /* Specify the root folder within your source files. */, + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + "types": ["toastr"], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./build/JS" /* Specify an output folder for all emitted files. */, + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +}