diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
index 04da7d097d..1e87f281bc 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
@@ -358,6 +358,12 @@
"WeWillSendYouADownloadLink": "A link to download the e-book has been sent to {0}.
Check your inbox / junk / spam boxes!",
"InvalidFormInputs": "Please, type the valid information specified on the form.",
"DDDBookEmailBody": "Thank you.
To download your book, click here.",
- "FreeDDDEBook": "Free DDD E-Book"
+ "FreeDDDEBook": "Free DDD E-Book",
+ "SaveAndDownload": "Save And Download",
+ "CompanyNameValidationMessage": "Company Name is too long.",
+ "AddressValidationMessage": "Address is too long.",
+ "TaxNoValidationMessage": "TAX/VAT No is too long.",
+ "NotesValidationMessage": "Too many characters.",
+ "CheckYourBillingInfo": "Check your billing info before creating your invoice. You can create your invoice only once!"
}
}
diff --git a/docs/en/Blog-Posts/2021-07-28-lepton-x-release/POST.md b/docs/en/Blog-Posts/2021-07-28-lepton-x-release/POST.md
new file mode 100644
index 0000000000..179b3326cd
--- /dev/null
+++ b/docs/en/Blog-Posts/2021-07-28-lepton-x-release/POST.md
@@ -0,0 +1,220 @@
+# LeptonX Alpha Release
+
+We are excited to announce that the **alpha version** of the LeptonX theme has been released! As stated in [this blog post](https://volosoft.com/blog/introducing-the-lepton-theme-next-generation), LeptonX comes in different shapes. For this release, we introduce only ABP based projects with the Angular UI. So, if you are already using the ABP Framework and Angular as the frontend choice, you can integrate these packages into your project today.
+
+The theme has been deployed with two versions: LeptonX-lite (free) and LeptonX (commercial).
+
+> **Note that this theme currently only works for the *Angular UI*. Please keep waiting for other UI options.**
+
+## Open-Source
+
+This section shows how to replace the basic theme (that comes with open source ABP Framework startup template) with the new LeptonX-lite theme.
+
+To add `LeptonX-lite` into your project,
+
+* Install `@abp/ng.theme.lepton-x` NPM package
+
+`npm install @abp/ng.theme.lepton-x@preview` or
+
+`yarn add @abp/ng.theme.lepton-x@preview`
+
+* Then, we need to edit the styles array in `angular.json` to replace the existing style with the new one.
+
+Replace the following style
+
+```JSON
+{
+ "input": "node_modules/bootstrap/dist/css/bootstrap.min.css",
+ "inject": true,
+ "bundleName": "bootstrap-ltr.min"
+},
+```
+
+with
+
+```json
+"node_modules/@volo/ngx-lepton-x.lite/styles/sidemenu-layout.min.css",
+"node_modules/bootstrap-icons/font/bootstrap-icons.css",
+```
+
+* Finally, remove `ThemeBasicModule` and import the related modules in `app.module.ts`
+
+```js
+import { ThemeLeptonXModule } from '@abp/ng.theme.lepton-x';
+import { SideMenuLayoutModule } from '@abp/ng.theme.lepton-x/layouts';
+
+@NgModule({
+ imports: [
+ // ...
+
+ // do not forget to remove ThemeBasicModule
+ // ThemeBasicModule.forRoot(),
+ ThemeLeptonXModule.forRoot(),
+ SideMenuLayoutModule.forRoot(),
+ ],
+ // ...
+})
+export class AppModule {}
+```
+
+Note: If you employ [Resource Owner Password Flow](https://docs.abp.io/en/abp/latest/UI/Angular/Authorization#resource-owner-password-flow) for authorization, you should import the following module as well:
+
+```js
+import { AccountLayoutModule } from '@abp/ng.theme.lepton-x/account';
+
+@NgModule({
+ // ...
+ imports: [
+ // ...
+ AccountLayoutModule.forRoot(),
+ // ...
+ ],
+ // ...
+})
+export class AppModule {}
+```
+
+To change the logos and brand color of the `LeptonX`, simply add the following CSS to the `styles.scss`
+
+```css
+:root {
+ --lpx-logo: url('/assets/images/logo.png');
+ --lpx-logo-icon: url('/assets/images/logo-icon.png');
+ --lpx-brand: #edae53;
+}
+```
+
+- `--lpx-logo` is used to place the logo in the menu.
+- `--lpx-logo-icon` is a square icon used when the menu is collapsed.
+- `--lpx-brand` is a color used throughout the application, especially on active elements.
+
+
+
+
+
+## ABP Commercial
+
+This section shows how to replace the lepton theme (that comes with the ABP Commercial startup template) with the new LeptonX theme.
+
+To add `LeptonX` into your existing projects,
+
+* Firstly, install `@volosoft/abp.ng.theme.lepton-x` NPM package
+
+`npm install @volosoft/abp.ng.theme.lepton-x@preview` or
+
+`yarn add @volosoft/abp.ng.theme.lepton-x@preview`
+
+* Then, edit `angular.json` as follows:
+
+Remove the following config from the `styles` array since LeptonX provides bootstrap as embedded in its CSS.
+
+```JSON
+{
+ "input": "node_modules/bootstrap/dist/css/bootstrap.min.css",
+ "inject": true,
+ "bundleName": "bootstrap-ltr.min"
+},
+```
+
+Add the following ones into the `styles` array
+
+```JSON
+{
+ "input": "node_modules/@volosoft/ngx-lepton-x/styles/themes/dark.css",
+ "inject": false,
+ "bundleName": "lepton-x.dark"
+},
+{
+ "input": "node_modules/@volosoft/ngx-lepton-x/styles/themes/dim.css",
+ "inject": false,
+ "bundleName": "lepton-x.dim"
+},
+{
+ "input": "node_modules/@volosoft/ngx-lepton-x/styles/themes/light.css",
+ "inject": false,
+ "bundleName": "lepton-x.light"
+},
+"node_modules/@volosoft/ngx-lepton-x/styles/css/sidemenu-layout.min.css",
+"node_modules/bootstrap-icons/font/bootstrap-icons.css",
+```
+
+Three of them are related to the theming and will be loaded during runtime. That's why they are not injected into the `head` as a style. Hence, the `"inject": false`
+
+The fourth one depends on which layout you want to use. For now, there is only `sidemenu-layout` available. In the future, there will be many layouts to choose from.
+
+The last one is `bootstrap-icons` which are being used throughout the components.
+
+* At last, remove `ThemeLeptonModule` and import the following modules in `app.module.ts`
+
+```js
+import { ThemeLeptonXModule } from '@volosoft/abp.ng.theme.lepton-x';
+import { AbpSideMenuLayoutModule } from '@volosoft/abp.ng.theme.lepton-x/layouts';
+
+@NgModule({
+ // ...
+ imports: [
+ // ...
+ // ThemeLeptonModule.forRoot(),
+ ThemeLeptonXModule.forRoot(),
+ AbpSideMenuLayoutModule.forRoot(), // depends on which layout you choose
+ // ...
+ ],
+ // ...
+})
+export class AppModule {}
+```
+
+Note: If you employ [Resource Owner Password Flow](https://docs.abp.io/en/abp/latest/UI/Angular/Authorization#resource-owner-password-flow) for authorization, you should import the following module as well:
+
+```js
+import { AccountLayoutModule } from '@volosoft/abp.ng.theme.lepton-x/account';
+
+@NgModule({
+ // ...
+ imports: [
+ // ...
+ AccountLayoutModule.forRoot({
+ layout: {
+ authLayoutImg: '/assets/images/login-bg.jpg',
+ },
+ }),
+ // ...
+ ],
+ // ...
+})
+export class AppModule {}
+```
+
+`authLayoutImg`: (Optional) If not given, a default image will be placed on the authentication pages.
+
+
+* At this point, `LeptonX` theme should be up and running within your application. However, you may need to overwrite some css variables based your needs for every theme available as follows:
+```scss
+:root {
+ .lpx-theme-dark {
+ --lpx-logo: url('/assets/images/logo/logo-light.svg');
+ --lpx-logo-icon: url('/assets/images/logo/logo-light-icon.svg');
+ --lpx-brand: #edae53;
+ }
+
+ .lpx-theme-dim {
+ --lpx-logo: url('/assets/images/logo/logo-light.svg');
+ --lpx-logo-icon: url('/assets/images/logo/logo-light-icon.svg');
+ --lpx-brand: #f15835;
+ }
+
+ .lpx-theme-light {
+ --lpx-logo: url('/assets/images/logo/logo-dark.svg');
+ --lpx-logo-icon: url('/assets/images/logo/logo-dark-icon.svg');
+ --lpx-brand: #69aada;
+ }
+}
+```
+
+When the user selects a theme, the corresponding CSS class is added to the `body`, so you can write specific CSS rules to each theme.
+
+## Conclusion
+
+In this blog post, I've explained how to use the alpha version of the new LeptonX theme for ABP-based solution.s Please, keep in mind that this is an alpha version, and we will continue to work on the LeptonX theme. The APIs are bound to change and breaking changes may be introduced in future versions.
+
+We would like you to try it out with the latest version of the ABP Framework and give us feedback at lepton@volosoft.com or open an issue on this repository: https://github.com/volosoft/lepton-theme
\ No newline at end of file
diff --git a/docs/en/Blog-Posts/2021-07-28-lepton-x-release/lepton-x-lite-dashboard.png b/docs/en/Blog-Posts/2021-07-28-lepton-x-release/lepton-x-lite-dashboard.png
new file mode 100644
index 0000000000..6c1ed170fc
Binary files /dev/null and b/docs/en/Blog-Posts/2021-07-28-lepton-x-release/lepton-x-lite-dashboard.png differ
diff --git a/docs/en/Blog-Posts/2021-07-28-lepton-x-release/lepton-x-lite-menu-collapsed.png b/docs/en/Blog-Posts/2021-07-28-lepton-x-release/lepton-x-lite-menu-collapsed.png
new file mode 100644
index 0000000000..36cc5014d3
Binary files /dev/null and b/docs/en/Blog-Posts/2021-07-28-lepton-x-release/lepton-x-lite-menu-collapsed.png differ
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
index 329bbd6cea..6690fc6f4e 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
@@ -3,7 +3,7 @@
"name": "asp.net",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.shared": "^4.4.0-rc.2",
+ "@abp/aspnetcore.mvc.ui.theme.shared": "^4.4.0",
"highlight.js": "^9.13.1"
},
"devDependencies": {}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js
index 28ebcc3765..359d2f7247 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js
@@ -6,683 +6,683 @@
compare = compare && Object.prototype.hasOwnProperty.call(compare, 'default') ? compare['default'] : compare;
- /*! *****************************************************************************
- Copyright (c) Microsoft Corporation.
-
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted.
-
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- ***************************************************************************** */
- /* global Reflect, Promise */
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b)
- if (b.hasOwnProperty(p))
- d[p] = b[p]; };
- return extendStatics(d, b);
- };
- function __extends(d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- }
- var __assign = function () {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s)
- if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- function __rest(s, e) {
- var t = {};
- for (var p in s)
- if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
- }
- function __decorate(decorators, target, key, desc) {
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
- r = Reflect.decorate(decorators, target, key, desc);
- else
- for (var i = decorators.length - 1; i >= 0; i--)
- if (d = decorators[i])
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
- return c > 3 && r && Object.defineProperty(target, key, r), r;
- }
- function __param(paramIndex, decorator) {
- return function (target, key) { decorator(target, key, paramIndex); };
- }
- function __metadata(metadataKey, metadataValue) {
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
- return Reflect.metadata(metadataKey, metadataValue);
- }
- function __awaiter(thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try {
- step(generator.next(value));
- }
- catch (e) {
- reject(e);
- } }
- function rejected(value) { try {
- step(generator["throw"](value));
- }
- catch (e) {
- reject(e);
- } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- }
- function __generator(thisArg, body) {
- var _ = { label: 0, sent: function () { if (t[0] & 1)
- throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f)
- throw new TypeError("Generator is already executing.");
- while (_)
- try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
- return t;
- if (y = 0, t)
- op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0:
- case 1:
- t = op;
- break;
- case 4:
- _.label++;
- return { value: op[1], done: false };
- case 5:
- _.label++;
- y = op[1];
- op = [0];
- continue;
- case 7:
- op = _.ops.pop();
- _.trys.pop();
- continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
- _ = 0;
- continue;
- }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
- _.label = op[1];
- break;
- }
- if (op[0] === 6 && _.label < t[1]) {
- _.label = t[1];
- t = op;
- break;
- }
- if (t && _.label < t[2]) {
- _.label = t[2];
- _.ops.push(op);
- break;
- }
- if (t[2])
- _.ops.pop();
- _.trys.pop();
- continue;
- }
- op = body.call(thisArg, _);
- }
- catch (e) {
- op = [6, e];
- y = 0;
- }
- finally {
- f = t = 0;
- }
- if (op[0] & 5)
- throw op[1];
- return { value: op[0] ? op[1] : void 0, done: true };
- }
- }
- var __createBinding = Object.create ? (function (o, m, k, k2) {
- if (k2 === undefined)
- k2 = k;
- Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
- }) : (function (o, m, k, k2) {
- if (k2 === undefined)
- k2 = k;
- o[k2] = m[k];
- });
- function __exportStar(m, exports) {
- for (var p in m)
- if (p !== "default" && !exports.hasOwnProperty(p))
- __createBinding(exports, m, p);
- }
- function __values(o) {
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
- if (m)
- return m.call(o);
- if (o && typeof o.length === "number")
- return {
- next: function () {
- if (o && i >= o.length)
- o = void 0;
- return { value: o && o[i++], done: !o };
- }
- };
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
- }
- function __read(o, n) {
- var m = typeof Symbol === "function" && o[Symbol.iterator];
- if (!m)
- return o;
- var i = m.call(o), r, ar = [], e;
- try {
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
- ar.push(r.value);
- }
- catch (error) {
- e = { error: error };
- }
- finally {
- try {
- if (r && !r.done && (m = i["return"]))
- m.call(i);
- }
- finally {
- if (e)
- throw e.error;
- }
- }
- return ar;
- }
- function __spread() {
- for (var ar = [], i = 0; i < arguments.length; i++)
- ar = ar.concat(__read(arguments[i]));
- return ar;
- }
- function __spreadArrays() {
- for (var s = 0, i = 0, il = arguments.length; i < il; i++)
- s += arguments[i].length;
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
- r[k] = a[j];
- return r;
- }
- ;
- function __await(v) {
- return this instanceof __await ? (this.v = v, this) : new __await(v);
- }
- function __asyncGenerator(thisArg, _arguments, generator) {
- if (!Symbol.asyncIterator)
- throw new TypeError("Symbol.asyncIterator is not defined.");
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
- function verb(n) { if (g[n])
- i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
- function resume(n, v) { try {
- step(g[n](v));
- }
- catch (e) {
- settle(q[0][3], e);
- } }
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
- function fulfill(value) { resume("next", value); }
- function reject(value) { resume("throw", value); }
- function settle(f, v) { if (f(v), q.shift(), q.length)
- resume(q[0][0], q[0][1]); }
- }
- function __asyncDelegator(o) {
- var i, p;
- return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
- }
- function __asyncValues(o) {
- if (!Symbol.asyncIterator)
- throw new TypeError("Symbol.asyncIterator is not defined.");
- var m = o[Symbol.asyncIterator], i;
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
- }
- function __makeTemplateObject(cooked, raw) {
- if (Object.defineProperty) {
- Object.defineProperty(cooked, "raw", { value: raw });
- }
- else {
- cooked.raw = raw;
- }
- return cooked;
- }
- ;
- var __setModuleDefault = Object.create ? (function (o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
- }) : function (o, v) {
- o["default"] = v;
- };
- function __importStar(mod) {
- if (mod && mod.__esModule)
- return mod;
- var result = {};
- if (mod != null)
- for (var k in mod)
- if (Object.hasOwnProperty.call(mod, k))
- __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
- }
- function __importDefault(mod) {
- return (mod && mod.__esModule) ? mod : { default: mod };
- }
- function __classPrivateFieldGet(receiver, privateMap) {
- if (!privateMap.has(receiver)) {
- throw new TypeError("attempted to get private field on non-instance");
- }
- return privateMap.get(receiver);
- }
- function __classPrivateFieldSet(receiver, privateMap, value) {
- if (!privateMap.has(receiver)) {
- throw new TypeError("attempted to set private field on non-instance");
- }
- privateMap.set(receiver, value);
- return value;
+ /*! *****************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+ /* global Reflect, Promise */
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b)
+ if (b.hasOwnProperty(p))
+ d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ function __extends(d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ }
+ var __assign = function () {
+ __assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s)
+ if (Object.prototype.hasOwnProperty.call(s, p))
+ t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+ };
+ function __rest(s, e) {
+ var t = {};
+ for (var p in s)
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+ }
+ function __decorate(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ }
+ function __param(paramIndex, decorator) {
+ return function (target, key) { decorator(target, key, paramIndex); };
+ }
+ function __metadata(metadataKey, metadataValue) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
+ return Reflect.metadata(metadataKey, metadataValue);
+ }
+ function __awaiter(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try {
+ step(generator.next(value));
+ }
+ catch (e) {
+ reject(e);
+ } }
+ function rejected(value) { try {
+ step(generator["throw"](value));
+ }
+ catch (e) {
+ reject(e);
+ } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+ function __generator(thisArg, body) {
+ var _ = { label: 0, sent: function () { if (t[0] & 1)
+ throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f)
+ throw new TypeError("Generator is already executing.");
+ while (_)
+ try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
+ return t;
+ if (y = 0, t)
+ op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0:
+ case 1:
+ t = op;
+ break;
+ case 4:
+ _.label++;
+ return { value: op[1], done: false };
+ case 5:
+ _.label++;
+ y = op[1];
+ op = [0];
+ continue;
+ case 7:
+ op = _.ops.pop();
+ _.trys.pop();
+ continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+ _ = 0;
+ continue;
+ }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
+ _.label = op[1];
+ break;
+ }
+ if (op[0] === 6 && _.label < t[1]) {
+ _.label = t[1];
+ t = op;
+ break;
+ }
+ if (t && _.label < t[2]) {
+ _.label = t[2];
+ _.ops.push(op);
+ break;
+ }
+ if (t[2])
+ _.ops.pop();
+ _.trys.pop();
+ continue;
+ }
+ op = body.call(thisArg, _);
+ }
+ catch (e) {
+ op = [6, e];
+ y = 0;
+ }
+ finally {
+ f = t = 0;
+ }
+ if (op[0] & 5)
+ throw op[1];
+ return { value: op[0] ? op[1] : void 0, done: true };
+ }
+ }
+ var __createBinding = Object.create ? (function (o, m, k, k2) {
+ if (k2 === undefined)
+ k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
+ }) : (function (o, m, k, k2) {
+ if (k2 === undefined)
+ k2 = k;
+ o[k2] = m[k];
+ });
+ function __exportStar(m, exports) {
+ for (var p in m)
+ if (p !== "default" && !exports.hasOwnProperty(p))
+ __createBinding(exports, m, p);
+ }
+ function __values(o) {
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+ if (m)
+ return m.call(o);
+ if (o && typeof o.length === "number")
+ return {
+ next: function () {
+ if (o && i >= o.length)
+ o = void 0;
+ return { value: o && o[i++], done: !o };
+ }
+ };
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+ }
+ function __read(o, n) {
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
+ if (!m)
+ return o;
+ var i = m.call(o), r, ar = [], e;
+ try {
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
+ ar.push(r.value);
+ }
+ catch (error) {
+ e = { error: error };
+ }
+ finally {
+ try {
+ if (r && !r.done && (m = i["return"]))
+ m.call(i);
+ }
+ finally {
+ if (e)
+ throw e.error;
+ }
+ }
+ return ar;
+ }
+ function __spread() {
+ for (var ar = [], i = 0; i < arguments.length; i++)
+ ar = ar.concat(__read(arguments[i]));
+ return ar;
+ }
+ function __spreadArrays() {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++)
+ s += arguments[i].length;
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+ r[k] = a[j];
+ return r;
+ }
+ ;
+ function __await(v) {
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
+ }
+ function __asyncGenerator(thisArg, _arguments, generator) {
+ if (!Symbol.asyncIterator)
+ throw new TypeError("Symbol.asyncIterator is not defined.");
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+ function verb(n) { if (g[n])
+ i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+ function resume(n, v) { try {
+ step(g[n](v));
+ }
+ catch (e) {
+ settle(q[0][3], e);
+ } }
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
+ function fulfill(value) { resume("next", value); }
+ function reject(value) { resume("throw", value); }
+ function settle(f, v) { if (f(v), q.shift(), q.length)
+ resume(q[0][0], q[0][1]); }
+ }
+ function __asyncDelegator(o) {
+ var i, p;
+ return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+ }
+ function __asyncValues(o) {
+ if (!Symbol.asyncIterator)
+ throw new TypeError("Symbol.asyncIterator is not defined.");
+ var m = o[Symbol.asyncIterator], i;
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
+ }
+ function __makeTemplateObject(cooked, raw) {
+ if (Object.defineProperty) {
+ Object.defineProperty(cooked, "raw", { value: raw });
+ }
+ else {
+ cooked.raw = raw;
+ }
+ return cooked;
+ }
+ ;
+ var __setModuleDefault = Object.create ? (function (o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+ }) : function (o, v) {
+ o["default"] = v;
+ };
+ function __importStar(mod) {
+ if (mod && mod.__esModule)
+ return mod;
+ var result = {};
+ if (mod != null)
+ for (var k in mod)
+ if (Object.hasOwnProperty.call(mod, k))
+ __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+ }
+ function __importDefault(mod) {
+ return (mod && mod.__esModule) ? mod : { default: mod };
+ }
+ function __classPrivateFieldGet(receiver, privateMap) {
+ if (!privateMap.has(receiver)) {
+ throw new TypeError("attempted to get private field on non-instance");
+ }
+ return privateMap.get(receiver);
+ }
+ function __classPrivateFieldSet(receiver, privateMap, value) {
+ if (!privateMap.has(receiver)) {
+ throw new TypeError("attempted to set private field on non-instance");
+ }
+ privateMap.set(receiver, value);
+ return value;
}
- var ListNode = /** @class */ (function () {
- function ListNode(value) {
- this.value = value;
- }
- return ListNode;
- }());
- var LinkedList = /** @class */ (function () {
- function LinkedList() {
- this.size = 0;
- }
- Object.defineProperty(LinkedList.prototype, "head", {
- get: function () {
- return this.first;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(LinkedList.prototype, "tail", {
- get: function () {
- return this.last;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(LinkedList.prototype, "length", {
- get: function () {
- return this.size;
- },
- enumerable: false,
- configurable: true
- });
- LinkedList.prototype.attach = function (value, previousNode, nextNode) {
- if (!previousNode)
- return this.addHead(value);
- if (!nextNode)
- return this.addTail(value);
- var node = new ListNode(value);
- node.previous = previousNode;
- previousNode.next = node;
- node.next = nextNode;
- nextNode.previous = node;
- this.size++;
- return node;
- };
- LinkedList.prototype.attachMany = function (values, previousNode, nextNode) {
- if (!values.length)
- return [];
- if (!previousNode)
- return this.addManyHead(values);
- if (!nextNode)
- return this.addManyTail(values);
- var list = new LinkedList();
- list.addManyTail(values);
- list.first.previous = previousNode;
- previousNode.next = list.first;
- list.last.next = nextNode;
- nextNode.previous = list.last;
- this.size += values.length;
- return list.toNodeArray();
- };
- LinkedList.prototype.detach = function (node) {
- if (!node.previous)
- return this.dropHead();
- if (!node.next)
- return this.dropTail();
- node.previous.next = node.next;
- node.next.previous = node.previous;
- this.size--;
- return node;
- };
- LinkedList.prototype.add = function (value) {
- var _this = this;
- return {
- after: function () {
- var _a;
- var params = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- params[_i] = arguments[_i];
- }
- return (_a = _this.addAfter).call.apply(_a, __spread([_this, value], params));
- },
- before: function () {
- var _a;
- var params = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- params[_i] = arguments[_i];
- }
- return (_a = _this.addBefore).call.apply(_a, __spread([_this, value], params));
- },
- byIndex: function (position) { return _this.addByIndex(value, position); },
- head: function () { return _this.addHead(value); },
- tail: function () { return _this.addTail(value); },
- };
- };
- LinkedList.prototype.addMany = function (values) {
- var _this = this;
- return {
- after: function () {
- var _a;
- var params = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- params[_i] = arguments[_i];
- }
- return (_a = _this.addManyAfter).call.apply(_a, __spread([_this, values], params));
- },
- before: function () {
- var _a;
- var params = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- params[_i] = arguments[_i];
- }
- return (_a = _this.addManyBefore).call.apply(_a, __spread([_this, values], params));
- },
- byIndex: function (position) { return _this.addManyByIndex(values, position); },
- head: function () { return _this.addManyHead(values); },
- tail: function () { return _this.addManyTail(values); },
- };
- };
- LinkedList.prototype.addAfter = function (value, previousValue, compareFn) {
- if (compareFn === void 0) { compareFn = compare; }
- var previous = this.find(function (node) { return compareFn(node.value, previousValue); });
- return previous ? this.attach(value, previous, previous.next) : this.addTail(value);
- };
- LinkedList.prototype.addBefore = function (value, nextValue, compareFn) {
- if (compareFn === void 0) { compareFn = compare; }
- var next = this.find(function (node) { return compareFn(node.value, nextValue); });
- return next ? this.attach(value, next.previous, next) : this.addHead(value);
- };
- LinkedList.prototype.addByIndex = function (value, position) {
- if (position < 0)
- position += this.size;
- else if (position >= this.size)
- return this.addTail(value);
- if (position <= 0)
- return this.addHead(value);
- var next = this.get(position);
- return this.attach(value, next.previous, next);
- };
- LinkedList.prototype.addHead = function (value) {
- var node = new ListNode(value);
- node.next = this.first;
- if (this.first)
- this.first.previous = node;
- else
- this.last = node;
- this.first = node;
- this.size++;
- return node;
- };
- LinkedList.prototype.addTail = function (value) {
- var node = new ListNode(value);
- if (this.first) {
- node.previous = this.last;
- this.last.next = node;
- this.last = node;
- }
- else {
- this.first = node;
- this.last = node;
- }
- this.size++;
- return node;
- };
- LinkedList.prototype.addManyAfter = function (values, previousValue, compareFn) {
- if (compareFn === void 0) { compareFn = compare; }
- var previous = this.find(function (node) { return compareFn(node.value, previousValue); });
- return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);
- };
- LinkedList.prototype.addManyBefore = function (values, nextValue, compareFn) {
- if (compareFn === void 0) { compareFn = compare; }
- var next = this.find(function (node) { return compareFn(node.value, nextValue); });
- return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);
- };
- LinkedList.prototype.addManyByIndex = function (values, position) {
- if (position < 0)
- position += this.size;
- if (position <= 0)
- return this.addManyHead(values);
- if (position >= this.size)
- return this.addManyTail(values);
- var next = this.get(position);
- return this.attachMany(values, next.previous, next);
- };
- LinkedList.prototype.addManyHead = function (values) {
- var _this = this;
- return values.reduceRight(function (nodes, value) {
- nodes.unshift(_this.addHead(value));
- return nodes;
- }, []);
- };
- LinkedList.prototype.addManyTail = function (values) {
- var _this = this;
- return values.map(function (value) { return _this.addTail(value); });
- };
- LinkedList.prototype.drop = function () {
- var _this = this;
- return {
- byIndex: function (position) { return _this.dropByIndex(position); },
- byValue: function () {
- var params = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- params[_i] = arguments[_i];
- }
- return _this.dropByValue.apply(_this, params);
- },
- byValueAll: function () {
- var params = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- params[_i] = arguments[_i];
- }
- return _this.dropByValueAll.apply(_this, params);
- },
- head: function () { return _this.dropHead(); },
- tail: function () { return _this.dropTail(); },
- };
- };
- LinkedList.prototype.dropMany = function (count) {
- var _this = this;
- return {
- byIndex: function (position) { return _this.dropManyByIndex(count, position); },
- head: function () { return _this.dropManyHead(count); },
- tail: function () { return _this.dropManyTail(count); },
- };
- };
- LinkedList.prototype.dropByIndex = function (position) {
- if (position < 0)
- position += this.size;
- var current = this.get(position);
- return current ? this.detach(current) : undefined;
- };
- LinkedList.prototype.dropByValue = function (value, compareFn) {
- if (compareFn === void 0) { compareFn = compare; }
- var position = this.findIndex(function (node) { return compareFn(node.value, value); });
- return position < 0 ? undefined : this.dropByIndex(position);
- };
- LinkedList.prototype.dropByValueAll = function (value, compareFn) {
- if (compareFn === void 0) { compareFn = compare; }
- var dropped = [];
- for (var current = this.first, position = 0; current; position++, current = current.next) {
- if (compareFn(current.value, value)) {
- dropped.push(this.dropByIndex(position - dropped.length));
- }
- }
- return dropped;
- };
- LinkedList.prototype.dropHead = function () {
- var head = this.first;
- if (head) {
- this.first = head.next;
- if (this.first)
- this.first.previous = undefined;
- else
- this.last = undefined;
- this.size--;
- return head;
- }
- return undefined;
- };
- LinkedList.prototype.dropTail = function () {
- var tail = this.last;
- if (tail) {
- this.last = tail.previous;
- if (this.last)
- this.last.next = undefined;
- else
- this.first = undefined;
- this.size--;
- return tail;
- }
- return undefined;
- };
- LinkedList.prototype.dropManyByIndex = function (count, position) {
- if (count <= 0)
- return [];
- if (position < 0)
- position = Math.max(position + this.size, 0);
- else if (position >= this.size)
- return [];
- count = Math.min(count, this.size - position);
- var dropped = [];
- while (count--) {
- var current = this.get(position);
- dropped.push(this.detach(current));
- }
- return dropped;
- };
- LinkedList.prototype.dropManyHead = function (count) {
- if (count <= 0)
- return [];
- count = Math.min(count, this.size);
- var dropped = [];
- while (count--)
- dropped.unshift(this.dropHead());
- return dropped;
- };
- LinkedList.prototype.dropManyTail = function (count) {
- if (count <= 0)
- return [];
- count = Math.min(count, this.size);
- var dropped = [];
- while (count--)
- dropped.push(this.dropTail());
- return dropped;
- };
- LinkedList.prototype.find = function (predicate) {
- for (var current = this.first, position = 0; current; position++, current = current.next) {
- if (predicate(current, position, this))
- return current;
- }
- return undefined;
- };
- LinkedList.prototype.findIndex = function (predicate) {
- for (var current = this.first, position = 0; current; position++, current = current.next) {
- if (predicate(current, position, this))
- return position;
- }
- return -1;
- };
- LinkedList.prototype.forEach = function (iteratorFn) {
- for (var node = this.first, position = 0; node; position++, node = node.next) {
- iteratorFn(node, position, this);
- }
- };
- LinkedList.prototype.get = function (position) {
- return this.find(function (_, index) { return position === index; });
- };
- LinkedList.prototype.indexOf = function (value, compareFn) {
- if (compareFn === void 0) { compareFn = compare; }
- return this.findIndex(function (node) { return compareFn(node.value, value); });
- };
- LinkedList.prototype.toArray = function () {
- var array = new Array(this.size);
- this.forEach(function (node, index) { return (array[index] = node.value); });
- return array;
- };
- LinkedList.prototype.toNodeArray = function () {
- var array = new Array(this.size);
- this.forEach(function (node, index) { return (array[index] = node); });
- return array;
- };
- LinkedList.prototype.toString = function (mapperFn) {
- if (mapperFn === void 0) { mapperFn = JSON.stringify; }
- return this.toArray()
- .map(function (value) { return mapperFn(value); })
- .join(' <-> ');
- };
- // Cannot use Generator type because of ng-packagr
- LinkedList.prototype[Symbol.iterator] = function () {
- var node, position;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- node = this.first, position = 0;
- _a.label = 1;
- case 1:
- if (!node) return [3 /*break*/, 4];
- return [4 /*yield*/, node.value];
- case 2:
- _a.sent();
- _a.label = 3;
- case 3:
- position++, node = node.next;
- return [3 /*break*/, 1];
- case 4: return [2 /*return*/];
- }
- });
- };
- return LinkedList;
+ var ListNode = /** @class */ (function () {
+ function ListNode(value) {
+ this.value = value;
+ }
+ return ListNode;
+ }());
+ var LinkedList = /** @class */ (function () {
+ function LinkedList() {
+ this.size = 0;
+ }
+ Object.defineProperty(LinkedList.prototype, "head", {
+ get: function () {
+ return this.first;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(LinkedList.prototype, "tail", {
+ get: function () {
+ return this.last;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(LinkedList.prototype, "length", {
+ get: function () {
+ return this.size;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ LinkedList.prototype.attach = function (value, previousNode, nextNode) {
+ if (!previousNode)
+ return this.addHead(value);
+ if (!nextNode)
+ return this.addTail(value);
+ var node = new ListNode(value);
+ node.previous = previousNode;
+ previousNode.next = node;
+ node.next = nextNode;
+ nextNode.previous = node;
+ this.size++;
+ return node;
+ };
+ LinkedList.prototype.attachMany = function (values, previousNode, nextNode) {
+ if (!values.length)
+ return [];
+ if (!previousNode)
+ return this.addManyHead(values);
+ if (!nextNode)
+ return this.addManyTail(values);
+ var list = new LinkedList();
+ list.addManyTail(values);
+ list.first.previous = previousNode;
+ previousNode.next = list.first;
+ list.last.next = nextNode;
+ nextNode.previous = list.last;
+ this.size += values.length;
+ return list.toNodeArray();
+ };
+ LinkedList.prototype.detach = function (node) {
+ if (!node.previous)
+ return this.dropHead();
+ if (!node.next)
+ return this.dropTail();
+ node.previous.next = node.next;
+ node.next.previous = node.previous;
+ this.size--;
+ return node;
+ };
+ LinkedList.prototype.add = function (value) {
+ var _this = this;
+ return {
+ after: function () {
+ var _a;
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return (_a = _this.addAfter).call.apply(_a, __spread([_this, value], params));
+ },
+ before: function () {
+ var _a;
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return (_a = _this.addBefore).call.apply(_a, __spread([_this, value], params));
+ },
+ byIndex: function (position) { return _this.addByIndex(value, position); },
+ head: function () { return _this.addHead(value); },
+ tail: function () { return _this.addTail(value); },
+ };
+ };
+ LinkedList.prototype.addMany = function (values) {
+ var _this = this;
+ return {
+ after: function () {
+ var _a;
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return (_a = _this.addManyAfter).call.apply(_a, __spread([_this, values], params));
+ },
+ before: function () {
+ var _a;
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return (_a = _this.addManyBefore).call.apply(_a, __spread([_this, values], params));
+ },
+ byIndex: function (position) { return _this.addManyByIndex(values, position); },
+ head: function () { return _this.addManyHead(values); },
+ tail: function () { return _this.addManyTail(values); },
+ };
+ };
+ LinkedList.prototype.addAfter = function (value, previousValue, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var previous = this.find(function (node) { return compareFn(node.value, previousValue); });
+ return previous ? this.attach(value, previous, previous.next) : this.addTail(value);
+ };
+ LinkedList.prototype.addBefore = function (value, nextValue, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var next = this.find(function (node) { return compareFn(node.value, nextValue); });
+ return next ? this.attach(value, next.previous, next) : this.addHead(value);
+ };
+ LinkedList.prototype.addByIndex = function (value, position) {
+ if (position < 0)
+ position += this.size;
+ else if (position >= this.size)
+ return this.addTail(value);
+ if (position <= 0)
+ return this.addHead(value);
+ var next = this.get(position);
+ return this.attach(value, next.previous, next);
+ };
+ LinkedList.prototype.addHead = function (value) {
+ var node = new ListNode(value);
+ node.next = this.first;
+ if (this.first)
+ this.first.previous = node;
+ else
+ this.last = node;
+ this.first = node;
+ this.size++;
+ return node;
+ };
+ LinkedList.prototype.addTail = function (value) {
+ var node = new ListNode(value);
+ if (this.first) {
+ node.previous = this.last;
+ this.last.next = node;
+ this.last = node;
+ }
+ else {
+ this.first = node;
+ this.last = node;
+ }
+ this.size++;
+ return node;
+ };
+ LinkedList.prototype.addManyAfter = function (values, previousValue, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var previous = this.find(function (node) { return compareFn(node.value, previousValue); });
+ return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);
+ };
+ LinkedList.prototype.addManyBefore = function (values, nextValue, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var next = this.find(function (node) { return compareFn(node.value, nextValue); });
+ return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);
+ };
+ LinkedList.prototype.addManyByIndex = function (values, position) {
+ if (position < 0)
+ position += this.size;
+ if (position <= 0)
+ return this.addManyHead(values);
+ if (position >= this.size)
+ return this.addManyTail(values);
+ var next = this.get(position);
+ return this.attachMany(values, next.previous, next);
+ };
+ LinkedList.prototype.addManyHead = function (values) {
+ var _this = this;
+ return values.reduceRight(function (nodes, value) {
+ nodes.unshift(_this.addHead(value));
+ return nodes;
+ }, []);
+ };
+ LinkedList.prototype.addManyTail = function (values) {
+ var _this = this;
+ return values.map(function (value) { return _this.addTail(value); });
+ };
+ LinkedList.prototype.drop = function () {
+ var _this = this;
+ return {
+ byIndex: function (position) { return _this.dropByIndex(position); },
+ byValue: function () {
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return _this.dropByValue.apply(_this, params);
+ },
+ byValueAll: function () {
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return _this.dropByValueAll.apply(_this, params);
+ },
+ head: function () { return _this.dropHead(); },
+ tail: function () { return _this.dropTail(); },
+ };
+ };
+ LinkedList.prototype.dropMany = function (count) {
+ var _this = this;
+ return {
+ byIndex: function (position) { return _this.dropManyByIndex(count, position); },
+ head: function () { return _this.dropManyHead(count); },
+ tail: function () { return _this.dropManyTail(count); },
+ };
+ };
+ LinkedList.prototype.dropByIndex = function (position) {
+ if (position < 0)
+ position += this.size;
+ var current = this.get(position);
+ return current ? this.detach(current) : undefined;
+ };
+ LinkedList.prototype.dropByValue = function (value, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var position = this.findIndex(function (node) { return compareFn(node.value, value); });
+ return position < 0 ? undefined : this.dropByIndex(position);
+ };
+ LinkedList.prototype.dropByValueAll = function (value, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var dropped = [];
+ for (var current = this.first, position = 0; current; position++, current = current.next) {
+ if (compareFn(current.value, value)) {
+ dropped.push(this.dropByIndex(position - dropped.length));
+ }
+ }
+ return dropped;
+ };
+ LinkedList.prototype.dropHead = function () {
+ var head = this.first;
+ if (head) {
+ this.first = head.next;
+ if (this.first)
+ this.first.previous = undefined;
+ else
+ this.last = undefined;
+ this.size--;
+ return head;
+ }
+ return undefined;
+ };
+ LinkedList.prototype.dropTail = function () {
+ var tail = this.last;
+ if (tail) {
+ this.last = tail.previous;
+ if (this.last)
+ this.last.next = undefined;
+ else
+ this.first = undefined;
+ this.size--;
+ return tail;
+ }
+ return undefined;
+ };
+ LinkedList.prototype.dropManyByIndex = function (count, position) {
+ if (count <= 0)
+ return [];
+ if (position < 0)
+ position = Math.max(position + this.size, 0);
+ else if (position >= this.size)
+ return [];
+ count = Math.min(count, this.size - position);
+ var dropped = [];
+ while (count--) {
+ var current = this.get(position);
+ dropped.push(this.detach(current));
+ }
+ return dropped;
+ };
+ LinkedList.prototype.dropManyHead = function (count) {
+ if (count <= 0)
+ return [];
+ count = Math.min(count, this.size);
+ var dropped = [];
+ while (count--)
+ dropped.unshift(this.dropHead());
+ return dropped;
+ };
+ LinkedList.prototype.dropManyTail = function (count) {
+ if (count <= 0)
+ return [];
+ count = Math.min(count, this.size);
+ var dropped = [];
+ while (count--)
+ dropped.push(this.dropTail());
+ return dropped;
+ };
+ LinkedList.prototype.find = function (predicate) {
+ for (var current = this.first, position = 0; current; position++, current = current.next) {
+ if (predicate(current, position, this))
+ return current;
+ }
+ return undefined;
+ };
+ LinkedList.prototype.findIndex = function (predicate) {
+ for (var current = this.first, position = 0; current; position++, current = current.next) {
+ if (predicate(current, position, this))
+ return position;
+ }
+ return -1;
+ };
+ LinkedList.prototype.forEach = function (iteratorFn) {
+ for (var node = this.first, position = 0; node; position++, node = node.next) {
+ iteratorFn(node, position, this);
+ }
+ };
+ LinkedList.prototype.get = function (position) {
+ return this.find(function (_, index) { return position === index; });
+ };
+ LinkedList.prototype.indexOf = function (value, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ return this.findIndex(function (node) { return compareFn(node.value, value); });
+ };
+ LinkedList.prototype.toArray = function () {
+ var array = new Array(this.size);
+ this.forEach(function (node, index) { return (array[index] = node.value); });
+ return array;
+ };
+ LinkedList.prototype.toNodeArray = function () {
+ var array = new Array(this.size);
+ this.forEach(function (node, index) { return (array[index] = node); });
+ return array;
+ };
+ LinkedList.prototype.toString = function (mapperFn) {
+ if (mapperFn === void 0) { mapperFn = JSON.stringify; }
+ return this.toArray()
+ .map(function (value) { return mapperFn(value); })
+ .join(' <-> ');
+ };
+ // Cannot use Generator type because of ng-packagr
+ LinkedList.prototype[Symbol.iterator] = function () {
+ var node, position;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ node = this.first, position = 0;
+ _a.label = 1;
+ case 1:
+ if (!node) return [3 /*break*/, 4];
+ return [4 /*yield*/, node.value];
+ case 2:
+ _a.sent();
+ _a.label = 3;
+ case 3:
+ position++, node = node.next;
+ return [3 /*break*/, 1];
+ case 4: return [2 /*return*/];
+ }
+ });
+ };
+ return LinkedList;
}());
- /*
- * Public API Surface of utils
+ /*
+ * Public API Surface of utils
*/
- /**
- * Generated bundle index. Do not edit.
+ /**
+ * Generated bundle index. Do not edit.
*/
exports.LinkedList = LinkedList;
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.css b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.css
old mode 100644
new mode 100755
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map
old mode 100644
new mode 100755
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.min.css b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.min.css
old mode 100644
new mode 100755
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.min.css.map b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.min.css.map
old mode 100644
new mode 100755
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/jquery-validation/jquery.validate.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/jquery-validation/jquery.validate.js
index 12674b08b2..abc357d190 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/jquery-validation/jquery.validate.js
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/jquery-validation/jquery.validate.js
@@ -1,21 +1,21 @@
-/*!
- * jQuery Validation Plugin v1.17.0
- *
- * https://jqueryvalidation.org/
- *
- * Copyright (c) 2017 Jörn Zaefferer
- * Released under the MIT license
- */
-(function( factory ) {
- if ( typeof define === "function" && define.amd ) {
- define( ["jquery"], factory );
- } else if (typeof module === "object" && module.exports) {
- module.exports = factory( require( "jquery" ) );
- } else {
- factory( jQuery );
- }
-}(function( $ ) {
-
+/*!
+ * jQuery Validation Plugin v1.17.0
+ *
+ * https://jqueryvalidation.org/
+ *
+ * Copyright (c) 2017 Jörn Zaefferer
+ * Released under the MIT license
+ */
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
$.extend( $.fn, {
// https://jqueryvalidation.org/validate/
@@ -1561,7 +1561,7 @@ $.extend( $.validator, {
}
} );
-
+
// Ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
@@ -1597,5 +1597,5 @@ if ( $.ajaxPrefilter ) {
return ajax.apply( this, arguments );
};
}
-return $;
+return $;
}));
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js
index 611808654e..8d13c0a985 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js
@@ -1,5 +1,5 @@
-/* == jquery mousewheel plugin == Version: 3.1.13, License: MIT License (MIT) */
-!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
-/* == malihu jquery custom scrollbar plugin == Version: 3.1.5, License: MIT License (MIT) */
-!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"undefined"!=typeof module&&module.exports?module.exports=e:e(jQuery,window,document)}(function(e){!function(t){var o="function"==typeof define&&define.amd,a="undefined"!=typeof module&&module.exports,n="https:"==document.location.protocol?"https:":"http:",i="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js";o||(a?require("jquery-mousewheel")(e):e.event.special.mousewheel||e("head").append(decodeURI("%3Cscript src="+n+"//"+i+"%3E%3C/script%3E"))),t()}(function(){var t,o="mCustomScrollbar",a="mCS",n=".mCustomScrollbar",i={setTop:0,setLeft:0,axis:"y",scrollbarPosition:"inside",scrollInertia:950,autoDraggerLength:!0,alwaysShowScrollbar:0,snapOffset:0,mouseWheel:{enable:!0,scrollAmount:"auto",axis:"y",deltaFactor:"auto",disableOver:["select","option","keygen","datalist","textarea"]},scrollButtons:{scrollType:"stepless",scrollAmount:"auto"},keyboard:{enable:!0,scrollType:"stepless",scrollAmount:"auto"},contentTouchScroll:25,documentTouchScroll:!0,advanced:{autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",updateOnContentResize:!0,updateOnImageLoad:"auto",autoUpdateTimeout:60},theme:"light",callbacks:{onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:!0}},r=0,l={},s=window.attachEvent&&!window.addEventListener?1:0,c=!1,d=["mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar","mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer","mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight"],u={init:function(t){var t=e.extend(!0,{},i,t),o=f.call(this);if(t.live){var s=t.liveSelector||this.selector||n,c=e(s);if("off"===t.live)return void m(s);l[s]=setTimeout(function(){c.mCustomScrollbar(t),"once"===t.live&&c.length&&m(s)},500)}else m(s);return t.setWidth=t.set_width?t.set_width:t.setWidth,t.setHeight=t.set_height?t.set_height:t.setHeight,t.axis=t.horizontalScroll?"x":p(t.axis),t.scrollInertia=t.scrollInertia>0&&t.scrollInertia<17?17:t.scrollInertia,"object"!=typeof t.mouseWheel&&1==t.mouseWheel&&(t.mouseWheel={enable:!0,scrollAmount:"auto",axis:"y",preventDefault:!1,deltaFactor:"auto",normalizeDelta:!1,invert:!1}),t.mouseWheel.scrollAmount=t.mouseWheelPixels?t.mouseWheelPixels:t.mouseWheel.scrollAmount,t.mouseWheel.normalizeDelta=t.advanced.normalizeMouseWheelDelta?t.advanced.normalizeMouseWheelDelta:t.mouseWheel.normalizeDelta,t.scrollButtons.scrollType=g(t.scrollButtons.scrollType),h(t),e(o).each(function(){var o=e(this);if(!o.data(a)){o.data(a,{idx:++r,opt:t,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:!1,tweenRunning:!1,sequential:{},langDir:o.css("direction"),cbOffsets:null,trigger:null,poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}}});var n=o.data(a),i=n.opt,l=o.data("mcs-axis"),s=o.data("mcs-scrollbar-position"),c=o.data("mcs-theme");l&&(i.axis=l),s&&(i.scrollbarPosition=s),c&&(i.theme=c,h(i)),v.call(this),n&&i.callbacks.onCreate&&"function"==typeof i.callbacks.onCreate&&i.callbacks.onCreate.call(this),e("#mCSB_"+n.idx+"_container img:not(."+d[2]+")").addClass(d[2]),u.update.call(null,o)}})},update:function(t,o){var n=t||f.call(this);return e(n).each(function(){var t=e(this);if(t.data(a)){var n=t.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container"),l=e("#mCSB_"+n.idx),s=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];if(!r.length)return;n.tweenRunning&&Q(t),o&&n&&i.callbacks.onBeforeUpdate&&"function"==typeof i.callbacks.onBeforeUpdate&&i.callbacks.onBeforeUpdate.call(this),t.hasClass(d[3])&&t.removeClass(d[3]),t.hasClass(d[4])&&t.removeClass(d[4]),l.css("max-height","none"),l.height()!==t.height()&&l.css("max-height",t.height()),_.call(this),"y"===i.axis||i.advanced.autoExpandHorizontalScroll||r.css("width",x(r)),n.overflowed=y.call(this),M.call(this),i.autoDraggerLength&&S.call(this),b.call(this),T.call(this);var c=[Math.abs(r[0].offsetTop),Math.abs(r[0].offsetLeft)];"x"!==i.axis&&(n.overflowed[0]?s[0].height()>s[0].parent().height()?B.call(this):(G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}),n.contentReset.y=null):(B.call(this),"y"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[1]&&G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==i.axis&&(n.overflowed[1]?s[1].width()>s[1].parent().width()?B.call(this):(G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}),n.contentReset.x=null):(B.call(this),"x"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[0]&&G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),o&&n&&(2===o&&i.callbacks.onImageLoad&&"function"==typeof i.callbacks.onImageLoad?i.callbacks.onImageLoad.call(this):3===o&&i.callbacks.onSelectorChange&&"function"==typeof i.callbacks.onSelectorChange?i.callbacks.onSelectorChange.call(this):i.callbacks.onUpdate&&"function"==typeof i.callbacks.onUpdate&&i.callbacks.onUpdate.call(this)),N.call(this)}})},scrollTo:function(t,o){if("undefined"!=typeof t&&null!=t){var n=f.call(this);return e(n).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l={trigger:"external",scrollInertia:r.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},s=e.extend(!0,{},l,o),c=Y.call(this,t),d=s.scrollInertia>0&&s.scrollInertia<17?17:s.scrollInertia;c[0]=X.call(this,c[0],"y"),c[1]=X.call(this,c[1],"x"),s.moveDragger&&(c[0]*=i.scrollRatio.y,c[1]*=i.scrollRatio.x),s.dur=ne()?0:d,setTimeout(function(){null!==c[0]&&"undefined"!=typeof c[0]&&"x"!==r.axis&&i.overflowed[0]&&(s.dir="y",s.overwrite="all",G(n,c[0].toString(),s)),null!==c[1]&&"undefined"!=typeof c[1]&&"y"!==r.axis&&i.overflowed[1]&&(s.dir="x",s.overwrite="none",G(n,c[1].toString(),s))},s.timeout)}})}},stop:function(){var t=f.call(this);return e(t).each(function(){var t=e(this);t.data(a)&&Q(t)})},disable:function(t){var o=f.call(this);return e(o).each(function(){var o=e(this);if(o.data(a)){o.data(a);N.call(this,"remove"),k.call(this),t&&B.call(this),M.call(this,!0),o.addClass(d[3])}})},destroy:function(){var t=f.call(this);return e(t).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx),s=e("#mCSB_"+i.idx+"_container"),c=e(".mCSB_"+i.idx+"_scrollbar");r.live&&m(r.liveSelector||e(t).selector),N.call(this,"remove"),k.call(this),B.call(this),n.removeData(a),$(this,"mcs"),c.remove(),s.find("img."+d[2]).removeClass(d[2]),l.replaceWith(s.contents()),n.removeClass(o+" _"+a+"_"+i.idx+" "+d[6]+" "+d[7]+" "+d[5]+" "+d[3]).addClass(d[4])}})}},f=function(){return"object"!=typeof e(this)||e(this).length<1?n:this},h=function(t){var o=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],a=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],n=["minimal","minimal-dark"],i=["minimal","minimal-dark"],r=["minimal","minimal-dark"];t.autoDraggerLength=e.inArray(t.theme,o)>-1?!1:t.autoDraggerLength,t.autoExpandScrollbar=e.inArray(t.theme,a)>-1?!1:t.autoExpandScrollbar,t.scrollButtons.enable=e.inArray(t.theme,n)>-1?!1:t.scrollButtons.enable,t.autoHideScrollbar=e.inArray(t.theme,i)>-1?!0:t.autoHideScrollbar,t.scrollbarPosition=e.inArray(t.theme,r)>-1?"outside":t.scrollbarPosition},m=function(e){l[e]&&(clearTimeout(l[e]),$(l,e))},p=function(e){return"yx"===e||"xy"===e||"auto"===e?"yx":"x"===e||"horizontal"===e?"x":"y"},g=function(e){return"stepped"===e||"pixels"===e||"step"===e||"click"===e?"stepped":"stepless"},v=function(){var t=e(this),n=t.data(a),i=n.opt,r=i.autoExpandScrollbar?" "+d[1]+"_expand":"",l=["
",""],s="yx"===i.axis?"mCSB_vertical_horizontal":"x"===i.axis?"mCSB_horizontal":"mCSB_vertical",c="yx"===i.axis?l[0]+l[1]:"x"===i.axis?l[1]:l[0],u="yx"===i.axis?"":"",f=i.autoHideScrollbar?" "+d[6]:"",h="x"!==i.axis&&"rtl"===n.langDir?" "+d[7]:"";i.setWidth&&t.css("width",i.setWidth),i.setHeight&&t.css("height",i.setHeight),i.setLeft="y"!==i.axis&&"rtl"===n.langDir?"989999px":i.setLeft,t.addClass(o+" _"+a+"_"+n.idx+f+h).wrapInner("");var m=e("#mCSB_"+n.idx),p=e("#mCSB_"+n.idx+"_container");"y"===i.axis||i.advanced.autoExpandHorizontalScroll||p.css("width",x(p)),"outside"===i.scrollbarPosition?("static"===t.css("position")&&t.css("position","relative"),t.css("overflow","visible"),m.addClass("mCSB_outside").after(c)):(m.addClass("mCSB_inside").append(c),p.wrap(u)),w.call(this);var g=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];g[0].css("min-height",g[0].height()),g[1].css("min-width",g[1].width())},x=function(t){var o=[t[0].scrollWidth,Math.max.apply(Math,t.children().map(function(){return e(this).outerWidth(!0)}).get())],a=t.parent().width();return o[0]>a?o[0]:o[1]>a?o[1]:"100%"},_=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx+"_container");if(n.advanced.autoExpandHorizontalScroll&&"y"!==n.axis){i.css({width:"auto","min-width":0,"overflow-x":"scroll"});var r=Math.ceil(i[0].scrollWidth);3===n.advanced.autoExpandHorizontalScroll||2!==n.advanced.autoExpandHorizontalScroll&&r>i.parent().width()?i.css({width:r,"min-width":"100%","overflow-x":"inherit"}):i.css({"overflow-x":"inherit",position:"absolute"}).wrap("").css({width:Math.ceil(i[0].getBoundingClientRect().right+.4)-Math.floor(i[0].getBoundingClientRect().left),"min-width":"100%",position:"relative"}).unwrap()}},w=function(){var t=e(this),o=t.data(a),n=o.opt,i=e(".mCSB_"+o.idx+"_scrollbar:first"),r=oe(n.scrollButtons.tabindex)?"tabindex='"+n.scrollButtons.tabindex+"'":"",l=["","","",""],s=["x"===n.axis?l[2]:l[0],"x"===n.axis?l[3]:l[1],l[2],l[3]];n.scrollButtons.enable&&i.prepend(s[0]).append(s[1]).next(".mCSB_scrollTools").prepend(s[2]).append(s[3])},S=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),r=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")],l=[n.height()/i.outerHeight(!1),n.width()/i.outerWidth(!1)],c=[parseInt(r[0].css("min-height")),Math.round(l[0]*r[0].parent().height()),parseInt(r[1].css("min-width")),Math.round(l[1]*r[1].parent().width())],d=s&&c[1]r&&(r=s),c>l&&(l=c),[r>n.height(),l>n.width()]},B=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx),r=e("#mCSB_"+o.idx+"_container"),l=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")];if(Q(t),("x"!==n.axis&&!o.overflowed[0]||"y"===n.axis&&o.overflowed[0])&&(l[0].add(r).css("top",0),G(t,"_resetY")),"y"!==n.axis&&!o.overflowed[1]||"x"===n.axis&&o.overflowed[1]){var s=dx=0;"rtl"===o.langDir&&(s=i.width()-r.outerWidth(!1),dx=Math.abs(s/o.scrollRatio.x)),r.css("left",s),l[1].css("left",dx),G(t,"_resetX")}},T=function(){function t(){r=setTimeout(function(){e.event.special.mousewheel?(clearTimeout(r),W.call(o[0])):t()},100)}var o=e(this),n=o.data(a),i=n.opt;if(!n.bindEvents){if(I.call(this),i.contentTouchScroll&&D.call(this),E.call(this),i.mouseWheel.enable){var r;t()}P.call(this),U.call(this),i.advanced.autoScrollOnFocus&&H.call(this),i.scrollButtons.enable&&F.call(this),i.keyboard.enable&&q.call(this),n.bindEvents=!0}},k=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=".mCSB_"+o.idx+"_scrollbar",l=e("#mCSB_"+o.idx+",#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,"+r+" ."+d[12]+",#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal,"+r+">a"),s=e("#mCSB_"+o.idx+"_container");n.advanced.releaseDraggableSelectors&&l.add(e(n.advanced.releaseDraggableSelectors)),n.advanced.extraDraggableSelectors&&l.add(e(n.advanced.extraDraggableSelectors)),o.bindEvents&&(e(document).add(e(!A()||top.document)).unbind("."+i),l.each(function(){e(this).unbind("."+i)}),clearTimeout(t[0]._focusTimeout),$(t[0],"_focusTimeout"),clearTimeout(o.sequential.step),$(o.sequential,"step"),clearTimeout(s[0].onCompleteTimeout),$(s[0],"onCompleteTimeout"),o.bindEvents=!1)},M=function(t){var o=e(this),n=o.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container_wrapper"),l=r.length?r:e("#mCSB_"+n.idx+"_container"),s=[e("#mCSB_"+n.idx+"_scrollbar_vertical"),e("#mCSB_"+n.idx+"_scrollbar_horizontal")],c=[s[0].find(".mCSB_dragger"),s[1].find(".mCSB_dragger")];"x"!==i.axis&&(n.overflowed[0]&&!t?(s[0].add(c[0]).add(s[0].children("a")).css("display","block"),l.removeClass(d[8]+" "+d[10])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[0].css("display","none"),l.removeClass(d[10])):(s[0].css("display","none"),l.addClass(d[10])),l.addClass(d[8]))),"y"!==i.axis&&(n.overflowed[1]&&!t?(s[1].add(c[1]).add(s[1].children("a")).css("display","block"),l.removeClass(d[9]+" "+d[11])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[1].css("display","none"),l.removeClass(d[11])):(s[1].css("display","none"),l.addClass(d[11])),l.addClass(d[9]))),n.overflowed[0]||n.overflowed[1]?o.removeClass(d[5]):o.addClass(d[5])},O=function(t){var o=t.type,a=t.target.ownerDocument!==document&&null!==frameElement?[e(frameElement).offset().top,e(frameElement).offset().left]:null,n=A()&&t.target.ownerDocument!==top.document&&null!==frameElement?[e(t.view.frameElement).offset().top,e(t.view.frameElement).offset().left]:[0,0];switch(o){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return a?[t.originalEvent.pageY-a[0]+n[0],t.originalEvent.pageX-a[1]+n[1],!1]:[t.originalEvent.pageY,t.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var i=t.originalEvent.touches[0]||t.originalEvent.changedTouches[0],r=t.originalEvent.touches.length||t.originalEvent.changedTouches.length;return t.target.ownerDocument!==document?[i.screenY,i.screenX,r>1]:[i.pageY,i.pageX,r>1];default:return a?[t.pageY-a[0]+n[0],t.pageX-a[1]+n[1],!1]:[t.pageY,t.pageX,!1]}},I=function(){function t(e,t,a,n){if(h[0].idleTimer=d.scrollInertia<233?250:0,o.attr("id")===f[1])var i="x",s=(o[0].offsetLeft-t+n)*l.scrollRatio.x;else var i="y",s=(o[0].offsetTop-e+a)*l.scrollRatio.y;G(r,s.toString(),{dir:i,drag:!0})}var o,n,i,r=e(this),l=r.data(a),d=l.opt,u=a+"_"+l.idx,f=["mCSB_"+l.idx+"_dragger_vertical","mCSB_"+l.idx+"_dragger_horizontal"],h=e("#mCSB_"+l.idx+"_container"),m=e("#"+f[0]+",#"+f[1]),p=d.advanced.releaseDraggableSelectors?m.add(e(d.advanced.releaseDraggableSelectors)):m,g=d.advanced.extraDraggableSelectors?e(!A()||top.document).add(e(d.advanced.extraDraggableSelectors)):e(!A()||top.document);m.bind("contextmenu."+u,function(e){e.preventDefault()}).bind("mousedown."+u+" touchstart."+u+" pointerdown."+u+" MSPointerDown."+u,function(t){if(t.stopImmediatePropagation(),t.preventDefault(),ee(t)){c=!0,s&&(document.onselectstart=function(){return!1}),L.call(h,!1),Q(r),o=e(this);var a=o.offset(),l=O(t)[0]-a.top,u=O(t)[1]-a.left,f=o.height()+a.top,m=o.width()+a.left;f>l&&l>0&&m>u&&u>0&&(n=l,i=u),C(o,"active",d.autoExpandScrollbar)}}).bind("touchmove."+u,function(e){e.stopImmediatePropagation(),e.preventDefault();var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;t(n,i,r,l)}),e(document).add(g).bind("mousemove."+u+" pointermove."+u+" MSPointerMove."+u,function(e){if(o){var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;if(n===r&&i===l)return;t(n,i,r,l)}}).add(p).bind("mouseup."+u+" touchend."+u+" pointerup."+u+" MSPointerUp."+u,function(){o&&(C(o,"active",d.autoExpandScrollbar),o=null),c=!1,s&&(document.onselectstart=null),L.call(h,!0)})},D=function(){function o(e){if(!te(e)||c||O(e)[2])return void(t=0);t=1,b=0,C=0,d=1,y.removeClass("mCS_touch_action");var o=I.offset();u=O(e)[0]-o.top,f=O(e)[1]-o.left,z=[O(e)[0],O(e)[1]]}function n(e){if(te(e)&&!c&&!O(e)[2]&&(T.documentTouchScroll||e.preventDefault(),e.stopImmediatePropagation(),(!C||b)&&d)){g=K();var t=M.offset(),o=O(e)[0]-t.top,a=O(e)[1]-t.left,n="mcsLinearOut";if(E.push(o),W.push(a),z[2]=Math.abs(O(e)[0]-z[0]),z[3]=Math.abs(O(e)[1]-z[1]),B.overflowed[0])var i=D[0].parent().height()-D[0].height(),r=u-o>0&&o-u>-(i*B.scrollRatio.y)&&(2*z[3]0&&a-f>-(l*B.scrollRatio.x)&&(2*z[2]30)){_=1e3/(v-p);var n="mcsEaseOut",i=2.5>_,r=i?[E[E.length-2],W[W.length-2]]:[0,0];x=i?[o-r[0],a-r[1]]:[o-h,a-m];var u=[Math.abs(x[0]),Math.abs(x[1])];_=i?[Math.abs(x[0]/4),Math.abs(x[1]/4)]:[_,_];var f=[Math.abs(I[0].offsetTop)-x[0]*l(u[0]/_[0],_[0]),Math.abs(I[0].offsetLeft)-x[1]*l(u[1]/_[1],_[1])];w="yx"===T.axis?[f[0],f[1]]:"x"===T.axis?[null,f[1]]:[f[0],null],S=[4*u[0]+T.scrollInertia,4*u[1]+T.scrollInertia];var y=parseInt(T.contentTouchScroll)||0;w[0]=u[0]>y?w[0]:0,w[1]=u[1]>y?w[1]:0,B.overflowed[0]&&s(w[0],S[0],n,"y",L,!1),B.overflowed[1]&&s(w[1],S[1],n,"x",L,!1)}}}function l(e,t){var o=[1.5*t,2*t,t/1.5,t/2];return e>90?t>4?o[0]:o[3]:e>60?t>3?o[3]:o[2]:e>30?t>8?o[1]:t>6?o[0]:t>4?t:o[2]:t>8?t:o[3]}function s(e,t,o,a,n,i){e&&G(y,e.toString(),{dur:t,scrollEasing:o,dir:a,overwrite:n,drag:i})}var d,u,f,h,m,p,g,v,x,_,w,S,b,C,y=e(this),B=y.data(a),T=B.opt,k=a+"_"+B.idx,M=e("#mCSB_"+B.idx),I=e("#mCSB_"+B.idx+"_container"),D=[e("#mCSB_"+B.idx+"_dragger_vertical"),e("#mCSB_"+B.idx+"_dragger_horizontal")],E=[],W=[],R=0,L="yx"===T.axis?"none":"all",z=[],P=I.find("iframe"),H=["touchstart."+k+" pointerdown."+k+" MSPointerDown."+k,"touchmove."+k+" pointermove."+k+" MSPointerMove."+k,"touchend."+k+" pointerup."+k+" MSPointerUp."+k],U=void 0!==document.body.style.touchAction&&""!==document.body.style.touchAction;I.bind(H[0],function(e){o(e)}).bind(H[1],function(e){n(e)}),M.bind(H[0],function(e){i(e)}).bind(H[2],function(e){r(e)}),P.length&&P.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(H[0],function(e){o(e),i(e)}).bind(H[1],function(e){n(e)}).bind(H[2],function(e){r(e)})})})},E=function(){function o(){return window.getSelection?window.getSelection().toString():document.selection&&"Control"!=document.selection.type?document.selection.createRange().text:0}function n(e,t,o){d.type=o&&i?"stepped":"stepless",d.scrollAmount=10,j(r,e,t,"mcsLinearOut",o?60:null)}var i,r=e(this),l=r.data(a),s=l.opt,d=l.sequential,u=a+"_"+l.idx,f=e("#mCSB_"+l.idx+"_container"),h=f.parent();f.bind("mousedown."+u,function(){t||i||(i=1,c=!0)}).add(document).bind("mousemove."+u,function(e){if(!t&&i&&o()){var a=f.offset(),r=O(e)[0]-a.top+f[0].offsetTop,c=O(e)[1]-a.left+f[0].offsetLeft;r>0&&r0&&cr?n("on",38):r>h.height()&&n("on",40)),"y"!==s.axis&&l.overflowed[1]&&(0>c?n("on",37):c>h.width()&&n("on",39)))}}).bind("mouseup."+u+" dragend."+u,function(){t||(i&&(i=0,n("off",null)),c=!1)})},W=function(){function t(t,a){if(Q(o),!z(o,t.target)){var r="auto"!==i.mouseWheel.deltaFactor?parseInt(i.mouseWheel.deltaFactor):s&&t.deltaFactor<100?100:t.deltaFactor||100,d=i.scrollInertia;if("x"===i.axis||"x"===i.mouseWheel.axis)var u="x",f=[Math.round(r*n.scrollRatio.x),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.width()?.9*l.width():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetLeft),p=c[1][0].offsetLeft,g=c[1].parent().width()-c[1].width(),v="y"===i.mouseWheel.axis?t.deltaY||a:t.deltaX;else var u="y",f=[Math.round(r*n.scrollRatio.y),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.height()?.9*l.height():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetTop),p=c[0][0].offsetTop,g=c[0].parent().height()-c[0].height(),v=t.deltaY||a;"y"===u&&!n.overflowed[0]||"x"===u&&!n.overflowed[1]||((i.mouseWheel.invert||t.webkitDirectionInvertedFromDevice)&&(v=-v),i.mouseWheel.normalizeDelta&&(v=0>v?-1:1),(v>0&&0!==p||0>v&&p!==g||i.mouseWheel.preventDefault)&&(t.stopImmediatePropagation(),t.preventDefault()),t.deltaFactor<5&&!i.mouseWheel.normalizeDelta&&(h=t.deltaFactor,d=17),G(o,(m-v*h).toString(),{dir:u,dur:d}))}}if(e(this).data(a)){var o=e(this),n=o.data(a),i=n.opt,r=a+"_"+n.idx,l=e("#mCSB_"+n.idx),c=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")],d=e("#mCSB_"+n.idx+"_container").find("iframe");d.length&&d.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind("mousewheel."+r,function(e,o){t(e,o)})})}),l.bind("mousewheel."+r,function(e,o){t(e,o)})}},R=new Object,A=function(t){var o=!1,a=!1,n=null;if(void 0===t?a="#empty":void 0!==e(t).attr("id")&&(a=e(t).attr("id")),a!==!1&&void 0!==R[a])return R[a];if(t){try{var i=t.contentDocument||t.contentWindow.document;n=i.body.innerHTML}catch(r){}o=null!==n}else{try{var i=top.document;n=i.body.innerHTML}catch(r){}o=null!==n}return a!==!1&&(R[a]=o),o},L=function(e){var t=this.find("iframe");if(t.length){var o=e?"auto":"none";t.css("pointer-events",o)}},z=function(t,o){var n=o.nodeName.toLowerCase(),i=t.data(a).opt.mouseWheel.disableOver,r=["select","textarea"];return e.inArray(n,i)>-1&&!(e.inArray(n,r)>-1&&!e(o).is(":focus"))},P=function(){var t,o=e(this),n=o.data(a),i=a+"_"+n.idx,r=e("#mCSB_"+n.idx+"_container"),l=r.parent(),s=e(".mCSB_"+n.idx+"_scrollbar ."+d[12]);s.bind("mousedown."+i+" touchstart."+i+" pointerdown."+i+" MSPointerDown."+i,function(o){c=!0,e(o.target).hasClass("mCSB_dragger")||(t=1)}).bind("touchend."+i+" pointerup."+i+" MSPointerUp."+i,function(){c=!1}).bind("click."+i,function(a){if(t&&(t=0,e(a.target).hasClass(d[12])||e(a.target).hasClass("mCSB_draggerRail"))){Q(o);var i=e(this),s=i.find(".mCSB_dragger");if(i.parent(".mCSB_scrollTools_horizontal").length>0){if(!n.overflowed[1])return;var c="x",u=a.pageX>s.offset().left?-1:1,f=Math.abs(r[0].offsetLeft)-u*(.9*l.width())}else{if(!n.overflowed[0])return;var c="y",u=a.pageY>s.offset().top?-1:1,f=Math.abs(r[0].offsetTop)-u*(.9*l.height())}G(o,f.toString(),{dir:c,scrollEasing:"mcsEaseInOut"})}})},H=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=e("#mCSB_"+o.idx+"_container"),l=r.parent();r.bind("focusin."+i,function(){var o=e(document.activeElement),a=r.find(".mCustomScrollBox").length,i=0;o.is(n.advanced.autoScrollOnFocus)&&(Q(t),clearTimeout(t[0]._focusTimeout),t[0]._focusTimer=a?(i+17)*a:0,t[0]._focusTimeout=setTimeout(function(){var e=[ae(o)[0],ae(o)[1]],a=[r[0].offsetTop,r[0].offsetLeft],s=[a[0]+e[0]>=0&&a[0]+e[0]=0&&a[0]+e[1]a");s.bind("contextmenu."+r,function(e){e.preventDefault()}).bind("mousedown."+r+" touchstart."+r+" pointerdown."+r+" MSPointerDown."+r+" mouseup."+r+" touchend."+r+" pointerup."+r+" MSPointerUp."+r+" mouseout."+r+" pointerout."+r+" MSPointerOut."+r+" click."+r,function(a){function r(e,o){i.scrollAmount=n.scrollButtons.scrollAmount,j(t,e,o)}if(a.preventDefault(),ee(a)){var l=e(this).attr("class");switch(i.type=n.scrollButtons.scrollType,a.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===i.type)return;c=!0,o.tweenRunning=!1,r("on",l);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===i.type)return;c=!1,i.dir&&r("off",l);break;case"click":if("stepped"!==i.type||o.tweenRunning)return;r("on",l)}}})},q=function(){function t(t){function a(e,t){r.type=i.keyboard.scrollType,r.scrollAmount=i.keyboard.scrollAmount,"stepped"===r.type&&n.tweenRunning||j(o,e,t)}switch(t.type){case"blur":n.tweenRunning&&r.dir&&a("off",null);break;case"keydown":case"keyup":var l=t.keyCode?t.keyCode:t.which,s="on";if("x"!==i.axis&&(38===l||40===l)||"y"!==i.axis&&(37===l||39===l)){if((38===l||40===l)&&!n.overflowed[0]||(37===l||39===l)&&!n.overflowed[1])return;"keyup"===t.type&&(s="off"),e(document.activeElement).is(u)||(t.preventDefault(),t.stopImmediatePropagation(),a(s,l))}else if(33===l||34===l){if((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type){Q(o);var f=34===l?-1:1;if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=Math.abs(c[0].offsetLeft)-f*(.9*d.width());else var h="y",m=Math.abs(c[0].offsetTop)-f*(.9*d.height());G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}else if((35===l||36===l)&&!e(document.activeElement).is(u)&&((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type)){if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=35===l?Math.abs(d.width()-c.outerWidth(!1)):0;else var h="y",m=35===l?Math.abs(d.height()-c.outerHeight(!1)):0;G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}}var o=e(this),n=o.data(a),i=n.opt,r=n.sequential,l=a+"_"+n.idx,s=e("#mCSB_"+n.idx),c=e("#mCSB_"+n.idx+"_container"),d=c.parent(),u="input,textarea,select,datalist,keygen,[contenteditable='true']",f=c.find("iframe"),h=["blur."+l+" keydown."+l+" keyup."+l];f.length&&f.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(h[0],function(e){t(e)})})}),s.attr("tabindex","0").bind(h[0],function(e){t(e)})},j=function(t,o,n,i,r){function l(e){u.snapAmount&&(f.scrollAmount=u.snapAmount instanceof Array?"x"===f.dir[0]?u.snapAmount[1]:u.snapAmount[0]:u.snapAmount);var o="stepped"!==f.type,a=r?r:e?o?p/1.5:g:1e3/60,n=e?o?7.5:40:2.5,s=[Math.abs(h[0].offsetTop),Math.abs(h[0].offsetLeft)],d=[c.scrollRatio.y>10?10:c.scrollRatio.y,c.scrollRatio.x>10?10:c.scrollRatio.x],m="x"===f.dir[0]?s[1]+f.dir[1]*(d[1]*n):s[0]+f.dir[1]*(d[0]*n),v="x"===f.dir[0]?s[1]+f.dir[1]*parseInt(f.scrollAmount):s[0]+f.dir[1]*parseInt(f.scrollAmount),x="auto"!==f.scrollAmount?v:m,_=i?i:e?o?"mcsLinearOut":"mcsEaseInOut":"mcsLinear",w=!!e;return e&&17>a&&(x="x"===f.dir[0]?s[1]:s[0]),G(t,x.toString(),{dir:f.dir[0],scrollEasing:_,dur:a,onComplete:w}),e?void(f.dir=!1):(clearTimeout(f.step),void(f.step=setTimeout(function(){l()},a)))}function s(){clearTimeout(f.step),$(f,"step"),Q(t)}var c=t.data(a),u=c.opt,f=c.sequential,h=e("#mCSB_"+c.idx+"_container"),m="stepped"===f.type,p=u.scrollInertia<26?26:u.scrollInertia,g=u.scrollInertia<1?17:u.scrollInertia;switch(o){case"on":if(f.dir=[n===d[16]||n===d[15]||39===n||37===n?"x":"y",n===d[13]||n===d[15]||38===n||37===n?-1:1],Q(t),oe(n)&&"stepped"===f.type)return;l(m);break;case"off":s(),(m||c.tweenRunning&&f.dir)&&l(!0)}},Y=function(t){var o=e(this).data(a).opt,n=[];return"function"==typeof t&&(t=t()),t instanceof Array?n=t.length>1?[t[0],t[1]]:"x"===o.axis?[null,t[0]]:[t[0],null]:(n[0]=t.y?t.y:t.x||"x"===o.axis?null:t,n[1]=t.x?t.x:t.y||"y"===o.axis?null:t),"function"==typeof n[0]&&(n[0]=n[0]()),"function"==typeof n[1]&&(n[1]=n[1]()),n},X=function(t,o){if(null!=t&&"undefined"!=typeof t){var n=e(this),i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx+"_container"),s=l.parent(),c=typeof t;o||(o="x"===r.axis?"x":"y");var d="x"===o?l.outerWidth(!1)-s.width():l.outerHeight(!1)-s.height(),f="x"===o?l[0].offsetLeft:l[0].offsetTop,h="x"===o?"left":"top";switch(c){case"function":return t();case"object":var m=t.jquery?t:e(t);if(!m.length)return;return"x"===o?ae(m)[1]:ae(m)[0];case"string":case"number":if(oe(t))return Math.abs(t);if(-1!==t.indexOf("%"))return Math.abs(d*parseInt(t)/100);if(-1!==t.indexOf("-="))return Math.abs(f-parseInt(t.split("-=")[1]));if(-1!==t.indexOf("+=")){var p=f+parseInt(t.split("+=")[1]);return p>=0?0:Math.abs(p)}if(-1!==t.indexOf("px")&&oe(t.split("px")[0]))return Math.abs(t.split("px")[0]);if("top"===t||"left"===t)return 0;if("bottom"===t)return Math.abs(s.height()-l.outerHeight(!1));if("right"===t)return Math.abs(s.width()-l.outerWidth(!1));if("first"===t||"last"===t){var m=l.find(":"+t);return"x"===o?ae(m)[1]:ae(m)[0]}return e(t).length?"x"===o?ae(e(t))[1]:ae(e(t))[0]:(l.css(h,t),void u.update.call(null,n[0]))}}},N=function(t){function o(){return clearTimeout(f[0].autoUpdate),0===l.parents("html").length?void(l=null):void(f[0].autoUpdate=setTimeout(function(){return c.advanced.updateOnSelectorChange&&(s.poll.change.n=i(),s.poll.change.n!==s.poll.change.o)?(s.poll.change.o=s.poll.change.n,void r(3)):c.advanced.updateOnContentResize&&(s.poll.size.n=l[0].scrollHeight+l[0].scrollWidth+f[0].offsetHeight+l[0].offsetHeight+l[0].offsetWidth,s.poll.size.n!==s.poll.size.o)?(s.poll.size.o=s.poll.size.n,void r(1)):!c.advanced.updateOnImageLoad||"auto"===c.advanced.updateOnImageLoad&&"y"===c.axis||(s.poll.img.n=f.find("img").length,s.poll.img.n===s.poll.img.o)?void((c.advanced.updateOnSelectorChange||c.advanced.updateOnContentResize||c.advanced.updateOnImageLoad)&&o()):(s.poll.img.o=s.poll.img.n,void f.find("img").each(function(){n(this)}))},c.advanced.autoUpdateTimeout))}function n(t){function o(e,t){return function(){
+/* == jquery mousewheel plugin == Version: 3.1.13, License: MIT License (MIT) */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
+/* == malihu jquery custom scrollbar plugin == Version: 3.1.5, License: MIT License (MIT) */
+!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"undefined"!=typeof module&&module.exports?module.exports=e:e(jQuery,window,document)}(function(e){!function(t){var o="function"==typeof define&&define.amd,a="undefined"!=typeof module&&module.exports,n="https:"==document.location.protocol?"https:":"http:",i="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js";o||(a?require("jquery-mousewheel")(e):e.event.special.mousewheel||e("head").append(decodeURI("%3Cscript src="+n+"//"+i+"%3E%3C/script%3E"))),t()}(function(){var t,o="mCustomScrollbar",a="mCS",n=".mCustomScrollbar",i={setTop:0,setLeft:0,axis:"y",scrollbarPosition:"inside",scrollInertia:950,autoDraggerLength:!0,alwaysShowScrollbar:0,snapOffset:0,mouseWheel:{enable:!0,scrollAmount:"auto",axis:"y",deltaFactor:"auto",disableOver:["select","option","keygen","datalist","textarea"]},scrollButtons:{scrollType:"stepless",scrollAmount:"auto"},keyboard:{enable:!0,scrollType:"stepless",scrollAmount:"auto"},contentTouchScroll:25,documentTouchScroll:!0,advanced:{autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",updateOnContentResize:!0,updateOnImageLoad:"auto",autoUpdateTimeout:60},theme:"light",callbacks:{onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:!0}},r=0,l={},s=window.attachEvent&&!window.addEventListener?1:0,c=!1,d=["mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar","mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer","mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight"],u={init:function(t){var t=e.extend(!0,{},i,t),o=f.call(this);if(t.live){var s=t.liveSelector||this.selector||n,c=e(s);if("off"===t.live)return void m(s);l[s]=setTimeout(function(){c.mCustomScrollbar(t),"once"===t.live&&c.length&&m(s)},500)}else m(s);return t.setWidth=t.set_width?t.set_width:t.setWidth,t.setHeight=t.set_height?t.set_height:t.setHeight,t.axis=t.horizontalScroll?"x":p(t.axis),t.scrollInertia=t.scrollInertia>0&&t.scrollInertia<17?17:t.scrollInertia,"object"!=typeof t.mouseWheel&&1==t.mouseWheel&&(t.mouseWheel={enable:!0,scrollAmount:"auto",axis:"y",preventDefault:!1,deltaFactor:"auto",normalizeDelta:!1,invert:!1}),t.mouseWheel.scrollAmount=t.mouseWheelPixels?t.mouseWheelPixels:t.mouseWheel.scrollAmount,t.mouseWheel.normalizeDelta=t.advanced.normalizeMouseWheelDelta?t.advanced.normalizeMouseWheelDelta:t.mouseWheel.normalizeDelta,t.scrollButtons.scrollType=g(t.scrollButtons.scrollType),h(t),e(o).each(function(){var o=e(this);if(!o.data(a)){o.data(a,{idx:++r,opt:t,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:!1,tweenRunning:!1,sequential:{},langDir:o.css("direction"),cbOffsets:null,trigger:null,poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}}});var n=o.data(a),i=n.opt,l=o.data("mcs-axis"),s=o.data("mcs-scrollbar-position"),c=o.data("mcs-theme");l&&(i.axis=l),s&&(i.scrollbarPosition=s),c&&(i.theme=c,h(i)),v.call(this),n&&i.callbacks.onCreate&&"function"==typeof i.callbacks.onCreate&&i.callbacks.onCreate.call(this),e("#mCSB_"+n.idx+"_container img:not(."+d[2]+")").addClass(d[2]),u.update.call(null,o)}})},update:function(t,o){var n=t||f.call(this);return e(n).each(function(){var t=e(this);if(t.data(a)){var n=t.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container"),l=e("#mCSB_"+n.idx),s=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];if(!r.length)return;n.tweenRunning&&Q(t),o&&n&&i.callbacks.onBeforeUpdate&&"function"==typeof i.callbacks.onBeforeUpdate&&i.callbacks.onBeforeUpdate.call(this),t.hasClass(d[3])&&t.removeClass(d[3]),t.hasClass(d[4])&&t.removeClass(d[4]),l.css("max-height","none"),l.height()!==t.height()&&l.css("max-height",t.height()),_.call(this),"y"===i.axis||i.advanced.autoExpandHorizontalScroll||r.css("width",x(r)),n.overflowed=y.call(this),M.call(this),i.autoDraggerLength&&S.call(this),b.call(this),T.call(this);var c=[Math.abs(r[0].offsetTop),Math.abs(r[0].offsetLeft)];"x"!==i.axis&&(n.overflowed[0]?s[0].height()>s[0].parent().height()?B.call(this):(G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}),n.contentReset.y=null):(B.call(this),"y"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[1]&&G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==i.axis&&(n.overflowed[1]?s[1].width()>s[1].parent().width()?B.call(this):(G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}),n.contentReset.x=null):(B.call(this),"x"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[0]&&G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),o&&n&&(2===o&&i.callbacks.onImageLoad&&"function"==typeof i.callbacks.onImageLoad?i.callbacks.onImageLoad.call(this):3===o&&i.callbacks.onSelectorChange&&"function"==typeof i.callbacks.onSelectorChange?i.callbacks.onSelectorChange.call(this):i.callbacks.onUpdate&&"function"==typeof i.callbacks.onUpdate&&i.callbacks.onUpdate.call(this)),N.call(this)}})},scrollTo:function(t,o){if("undefined"!=typeof t&&null!=t){var n=f.call(this);return e(n).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l={trigger:"external",scrollInertia:r.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},s=e.extend(!0,{},l,o),c=Y.call(this,t),d=s.scrollInertia>0&&s.scrollInertia<17?17:s.scrollInertia;c[0]=X.call(this,c[0],"y"),c[1]=X.call(this,c[1],"x"),s.moveDragger&&(c[0]*=i.scrollRatio.y,c[1]*=i.scrollRatio.x),s.dur=ne()?0:d,setTimeout(function(){null!==c[0]&&"undefined"!=typeof c[0]&&"x"!==r.axis&&i.overflowed[0]&&(s.dir="y",s.overwrite="all",G(n,c[0].toString(),s)),null!==c[1]&&"undefined"!=typeof c[1]&&"y"!==r.axis&&i.overflowed[1]&&(s.dir="x",s.overwrite="none",G(n,c[1].toString(),s))},s.timeout)}})}},stop:function(){var t=f.call(this);return e(t).each(function(){var t=e(this);t.data(a)&&Q(t)})},disable:function(t){var o=f.call(this);return e(o).each(function(){var o=e(this);if(o.data(a)){o.data(a);N.call(this,"remove"),k.call(this),t&&B.call(this),M.call(this,!0),o.addClass(d[3])}})},destroy:function(){var t=f.call(this);return e(t).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx),s=e("#mCSB_"+i.idx+"_container"),c=e(".mCSB_"+i.idx+"_scrollbar");r.live&&m(r.liveSelector||e(t).selector),N.call(this,"remove"),k.call(this),B.call(this),n.removeData(a),$(this,"mcs"),c.remove(),s.find("img."+d[2]).removeClass(d[2]),l.replaceWith(s.contents()),n.removeClass(o+" _"+a+"_"+i.idx+" "+d[6]+" "+d[7]+" "+d[5]+" "+d[3]).addClass(d[4])}})}},f=function(){return"object"!=typeof e(this)||e(this).length<1?n:this},h=function(t){var o=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],a=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],n=["minimal","minimal-dark"],i=["minimal","minimal-dark"],r=["minimal","minimal-dark"];t.autoDraggerLength=e.inArray(t.theme,o)>-1?!1:t.autoDraggerLength,t.autoExpandScrollbar=e.inArray(t.theme,a)>-1?!1:t.autoExpandScrollbar,t.scrollButtons.enable=e.inArray(t.theme,n)>-1?!1:t.scrollButtons.enable,t.autoHideScrollbar=e.inArray(t.theme,i)>-1?!0:t.autoHideScrollbar,t.scrollbarPosition=e.inArray(t.theme,r)>-1?"outside":t.scrollbarPosition},m=function(e){l[e]&&(clearTimeout(l[e]),$(l,e))},p=function(e){return"yx"===e||"xy"===e||"auto"===e?"yx":"x"===e||"horizontal"===e?"x":"y"},g=function(e){return"stepped"===e||"pixels"===e||"step"===e||"click"===e?"stepped":"stepless"},v=function(){var t=e(this),n=t.data(a),i=n.opt,r=i.autoExpandScrollbar?" "+d[1]+"_expand":"",l=["",""],s="yx"===i.axis?"mCSB_vertical_horizontal":"x"===i.axis?"mCSB_horizontal":"mCSB_vertical",c="yx"===i.axis?l[0]+l[1]:"x"===i.axis?l[1]:l[0],u="yx"===i.axis?"":"",f=i.autoHideScrollbar?" "+d[6]:"",h="x"!==i.axis&&"rtl"===n.langDir?" "+d[7]:"";i.setWidth&&t.css("width",i.setWidth),i.setHeight&&t.css("height",i.setHeight),i.setLeft="y"!==i.axis&&"rtl"===n.langDir?"989999px":i.setLeft,t.addClass(o+" _"+a+"_"+n.idx+f+h).wrapInner("");var m=e("#mCSB_"+n.idx),p=e("#mCSB_"+n.idx+"_container");"y"===i.axis||i.advanced.autoExpandHorizontalScroll||p.css("width",x(p)),"outside"===i.scrollbarPosition?("static"===t.css("position")&&t.css("position","relative"),t.css("overflow","visible"),m.addClass("mCSB_outside").after(c)):(m.addClass("mCSB_inside").append(c),p.wrap(u)),w.call(this);var g=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];g[0].css("min-height",g[0].height()),g[1].css("min-width",g[1].width())},x=function(t){var o=[t[0].scrollWidth,Math.max.apply(Math,t.children().map(function(){return e(this).outerWidth(!0)}).get())],a=t.parent().width();return o[0]>a?o[0]:o[1]>a?o[1]:"100%"},_=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx+"_container");if(n.advanced.autoExpandHorizontalScroll&&"y"!==n.axis){i.css({width:"auto","min-width":0,"overflow-x":"scroll"});var r=Math.ceil(i[0].scrollWidth);3===n.advanced.autoExpandHorizontalScroll||2!==n.advanced.autoExpandHorizontalScroll&&r>i.parent().width()?i.css({width:r,"min-width":"100%","overflow-x":"inherit"}):i.css({"overflow-x":"inherit",position:"absolute"}).wrap("").css({width:Math.ceil(i[0].getBoundingClientRect().right+.4)-Math.floor(i[0].getBoundingClientRect().left),"min-width":"100%",position:"relative"}).unwrap()}},w=function(){var t=e(this),o=t.data(a),n=o.opt,i=e(".mCSB_"+o.idx+"_scrollbar:first"),r=oe(n.scrollButtons.tabindex)?"tabindex='"+n.scrollButtons.tabindex+"'":"",l=["","","",""],s=["x"===n.axis?l[2]:l[0],"x"===n.axis?l[3]:l[1],l[2],l[3]];n.scrollButtons.enable&&i.prepend(s[0]).append(s[1]).next(".mCSB_scrollTools").prepend(s[2]).append(s[3])},S=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),r=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")],l=[n.height()/i.outerHeight(!1),n.width()/i.outerWidth(!1)],c=[parseInt(r[0].css("min-height")),Math.round(l[0]*r[0].parent().height()),parseInt(r[1].css("min-width")),Math.round(l[1]*r[1].parent().width())],d=s&&c[1]r&&(r=s),c>l&&(l=c),[r>n.height(),l>n.width()]},B=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx),r=e("#mCSB_"+o.idx+"_container"),l=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")];if(Q(t),("x"!==n.axis&&!o.overflowed[0]||"y"===n.axis&&o.overflowed[0])&&(l[0].add(r).css("top",0),G(t,"_resetY")),"y"!==n.axis&&!o.overflowed[1]||"x"===n.axis&&o.overflowed[1]){var s=dx=0;"rtl"===o.langDir&&(s=i.width()-r.outerWidth(!1),dx=Math.abs(s/o.scrollRatio.x)),r.css("left",s),l[1].css("left",dx),G(t,"_resetX")}},T=function(){function t(){r=setTimeout(function(){e.event.special.mousewheel?(clearTimeout(r),W.call(o[0])):t()},100)}var o=e(this),n=o.data(a),i=n.opt;if(!n.bindEvents){if(I.call(this),i.contentTouchScroll&&D.call(this),E.call(this),i.mouseWheel.enable){var r;t()}P.call(this),U.call(this),i.advanced.autoScrollOnFocus&&H.call(this),i.scrollButtons.enable&&F.call(this),i.keyboard.enable&&q.call(this),n.bindEvents=!0}},k=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=".mCSB_"+o.idx+"_scrollbar",l=e("#mCSB_"+o.idx+",#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,"+r+" ."+d[12]+",#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal,"+r+">a"),s=e("#mCSB_"+o.idx+"_container");n.advanced.releaseDraggableSelectors&&l.add(e(n.advanced.releaseDraggableSelectors)),n.advanced.extraDraggableSelectors&&l.add(e(n.advanced.extraDraggableSelectors)),o.bindEvents&&(e(document).add(e(!A()||top.document)).unbind("."+i),l.each(function(){e(this).unbind("."+i)}),clearTimeout(t[0]._focusTimeout),$(t[0],"_focusTimeout"),clearTimeout(o.sequential.step),$(o.sequential,"step"),clearTimeout(s[0].onCompleteTimeout),$(s[0],"onCompleteTimeout"),o.bindEvents=!1)},M=function(t){var o=e(this),n=o.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container_wrapper"),l=r.length?r:e("#mCSB_"+n.idx+"_container"),s=[e("#mCSB_"+n.idx+"_scrollbar_vertical"),e("#mCSB_"+n.idx+"_scrollbar_horizontal")],c=[s[0].find(".mCSB_dragger"),s[1].find(".mCSB_dragger")];"x"!==i.axis&&(n.overflowed[0]&&!t?(s[0].add(c[0]).add(s[0].children("a")).css("display","block"),l.removeClass(d[8]+" "+d[10])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[0].css("display","none"),l.removeClass(d[10])):(s[0].css("display","none"),l.addClass(d[10])),l.addClass(d[8]))),"y"!==i.axis&&(n.overflowed[1]&&!t?(s[1].add(c[1]).add(s[1].children("a")).css("display","block"),l.removeClass(d[9]+" "+d[11])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[1].css("display","none"),l.removeClass(d[11])):(s[1].css("display","none"),l.addClass(d[11])),l.addClass(d[9]))),n.overflowed[0]||n.overflowed[1]?o.removeClass(d[5]):o.addClass(d[5])},O=function(t){var o=t.type,a=t.target.ownerDocument!==document&&null!==frameElement?[e(frameElement).offset().top,e(frameElement).offset().left]:null,n=A()&&t.target.ownerDocument!==top.document&&null!==frameElement?[e(t.view.frameElement).offset().top,e(t.view.frameElement).offset().left]:[0,0];switch(o){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return a?[t.originalEvent.pageY-a[0]+n[0],t.originalEvent.pageX-a[1]+n[1],!1]:[t.originalEvent.pageY,t.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var i=t.originalEvent.touches[0]||t.originalEvent.changedTouches[0],r=t.originalEvent.touches.length||t.originalEvent.changedTouches.length;return t.target.ownerDocument!==document?[i.screenY,i.screenX,r>1]:[i.pageY,i.pageX,r>1];default:return a?[t.pageY-a[0]+n[0],t.pageX-a[1]+n[1],!1]:[t.pageY,t.pageX,!1]}},I=function(){function t(e,t,a,n){if(h[0].idleTimer=d.scrollInertia<233?250:0,o.attr("id")===f[1])var i="x",s=(o[0].offsetLeft-t+n)*l.scrollRatio.x;else var i="y",s=(o[0].offsetTop-e+a)*l.scrollRatio.y;G(r,s.toString(),{dir:i,drag:!0})}var o,n,i,r=e(this),l=r.data(a),d=l.opt,u=a+"_"+l.idx,f=["mCSB_"+l.idx+"_dragger_vertical","mCSB_"+l.idx+"_dragger_horizontal"],h=e("#mCSB_"+l.idx+"_container"),m=e("#"+f[0]+",#"+f[1]),p=d.advanced.releaseDraggableSelectors?m.add(e(d.advanced.releaseDraggableSelectors)):m,g=d.advanced.extraDraggableSelectors?e(!A()||top.document).add(e(d.advanced.extraDraggableSelectors)):e(!A()||top.document);m.bind("contextmenu."+u,function(e){e.preventDefault()}).bind("mousedown."+u+" touchstart."+u+" pointerdown."+u+" MSPointerDown."+u,function(t){if(t.stopImmediatePropagation(),t.preventDefault(),ee(t)){c=!0,s&&(document.onselectstart=function(){return!1}),L.call(h,!1),Q(r),o=e(this);var a=o.offset(),l=O(t)[0]-a.top,u=O(t)[1]-a.left,f=o.height()+a.top,m=o.width()+a.left;f>l&&l>0&&m>u&&u>0&&(n=l,i=u),C(o,"active",d.autoExpandScrollbar)}}).bind("touchmove."+u,function(e){e.stopImmediatePropagation(),e.preventDefault();var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;t(n,i,r,l)}),e(document).add(g).bind("mousemove."+u+" pointermove."+u+" MSPointerMove."+u,function(e){if(o){var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;if(n===r&&i===l)return;t(n,i,r,l)}}).add(p).bind("mouseup."+u+" touchend."+u+" pointerup."+u+" MSPointerUp."+u,function(){o&&(C(o,"active",d.autoExpandScrollbar),o=null),c=!1,s&&(document.onselectstart=null),L.call(h,!0)})},D=function(){function o(e){if(!te(e)||c||O(e)[2])return void(t=0);t=1,b=0,C=0,d=1,y.removeClass("mCS_touch_action");var o=I.offset();u=O(e)[0]-o.top,f=O(e)[1]-o.left,z=[O(e)[0],O(e)[1]]}function n(e){if(te(e)&&!c&&!O(e)[2]&&(T.documentTouchScroll||e.preventDefault(),e.stopImmediatePropagation(),(!C||b)&&d)){g=K();var t=M.offset(),o=O(e)[0]-t.top,a=O(e)[1]-t.left,n="mcsLinearOut";if(E.push(o),W.push(a),z[2]=Math.abs(O(e)[0]-z[0]),z[3]=Math.abs(O(e)[1]-z[1]),B.overflowed[0])var i=D[0].parent().height()-D[0].height(),r=u-o>0&&o-u>-(i*B.scrollRatio.y)&&(2*z[3]0&&a-f>-(l*B.scrollRatio.x)&&(2*z[2]30)){_=1e3/(v-p);var n="mcsEaseOut",i=2.5>_,r=i?[E[E.length-2],W[W.length-2]]:[0,0];x=i?[o-r[0],a-r[1]]:[o-h,a-m];var u=[Math.abs(x[0]),Math.abs(x[1])];_=i?[Math.abs(x[0]/4),Math.abs(x[1]/4)]:[_,_];var f=[Math.abs(I[0].offsetTop)-x[0]*l(u[0]/_[0],_[0]),Math.abs(I[0].offsetLeft)-x[1]*l(u[1]/_[1],_[1])];w="yx"===T.axis?[f[0],f[1]]:"x"===T.axis?[null,f[1]]:[f[0],null],S=[4*u[0]+T.scrollInertia,4*u[1]+T.scrollInertia];var y=parseInt(T.contentTouchScroll)||0;w[0]=u[0]>y?w[0]:0,w[1]=u[1]>y?w[1]:0,B.overflowed[0]&&s(w[0],S[0],n,"y",L,!1),B.overflowed[1]&&s(w[1],S[1],n,"x",L,!1)}}}function l(e,t){var o=[1.5*t,2*t,t/1.5,t/2];return e>90?t>4?o[0]:o[3]:e>60?t>3?o[3]:o[2]:e>30?t>8?o[1]:t>6?o[0]:t>4?t:o[2]:t>8?t:o[3]}function s(e,t,o,a,n,i){e&&G(y,e.toString(),{dur:t,scrollEasing:o,dir:a,overwrite:n,drag:i})}var d,u,f,h,m,p,g,v,x,_,w,S,b,C,y=e(this),B=y.data(a),T=B.opt,k=a+"_"+B.idx,M=e("#mCSB_"+B.idx),I=e("#mCSB_"+B.idx+"_container"),D=[e("#mCSB_"+B.idx+"_dragger_vertical"),e("#mCSB_"+B.idx+"_dragger_horizontal")],E=[],W=[],R=0,L="yx"===T.axis?"none":"all",z=[],P=I.find("iframe"),H=["touchstart."+k+" pointerdown."+k+" MSPointerDown."+k,"touchmove."+k+" pointermove."+k+" MSPointerMove."+k,"touchend."+k+" pointerup."+k+" MSPointerUp."+k],U=void 0!==document.body.style.touchAction&&""!==document.body.style.touchAction;I.bind(H[0],function(e){o(e)}).bind(H[1],function(e){n(e)}),M.bind(H[0],function(e){i(e)}).bind(H[2],function(e){r(e)}),P.length&&P.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(H[0],function(e){o(e),i(e)}).bind(H[1],function(e){n(e)}).bind(H[2],function(e){r(e)})})})},E=function(){function o(){return window.getSelection?window.getSelection().toString():document.selection&&"Control"!=document.selection.type?document.selection.createRange().text:0}function n(e,t,o){d.type=o&&i?"stepped":"stepless",d.scrollAmount=10,j(r,e,t,"mcsLinearOut",o?60:null)}var i,r=e(this),l=r.data(a),s=l.opt,d=l.sequential,u=a+"_"+l.idx,f=e("#mCSB_"+l.idx+"_container"),h=f.parent();f.bind("mousedown."+u,function(){t||i||(i=1,c=!0)}).add(document).bind("mousemove."+u,function(e){if(!t&&i&&o()){var a=f.offset(),r=O(e)[0]-a.top+f[0].offsetTop,c=O(e)[1]-a.left+f[0].offsetLeft;r>0&&r0&&cr?n("on",38):r>h.height()&&n("on",40)),"y"!==s.axis&&l.overflowed[1]&&(0>c?n("on",37):c>h.width()&&n("on",39)))}}).bind("mouseup."+u+" dragend."+u,function(){t||(i&&(i=0,n("off",null)),c=!1)})},W=function(){function t(t,a){if(Q(o),!z(o,t.target)){var r="auto"!==i.mouseWheel.deltaFactor?parseInt(i.mouseWheel.deltaFactor):s&&t.deltaFactor<100?100:t.deltaFactor||100,d=i.scrollInertia;if("x"===i.axis||"x"===i.mouseWheel.axis)var u="x",f=[Math.round(r*n.scrollRatio.x),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.width()?.9*l.width():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetLeft),p=c[1][0].offsetLeft,g=c[1].parent().width()-c[1].width(),v="y"===i.mouseWheel.axis?t.deltaY||a:t.deltaX;else var u="y",f=[Math.round(r*n.scrollRatio.y),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.height()?.9*l.height():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetTop),p=c[0][0].offsetTop,g=c[0].parent().height()-c[0].height(),v=t.deltaY||a;"y"===u&&!n.overflowed[0]||"x"===u&&!n.overflowed[1]||((i.mouseWheel.invert||t.webkitDirectionInvertedFromDevice)&&(v=-v),i.mouseWheel.normalizeDelta&&(v=0>v?-1:1),(v>0&&0!==p||0>v&&p!==g||i.mouseWheel.preventDefault)&&(t.stopImmediatePropagation(),t.preventDefault()),t.deltaFactor<5&&!i.mouseWheel.normalizeDelta&&(h=t.deltaFactor,d=17),G(o,(m-v*h).toString(),{dir:u,dur:d}))}}if(e(this).data(a)){var o=e(this),n=o.data(a),i=n.opt,r=a+"_"+n.idx,l=e("#mCSB_"+n.idx),c=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")],d=e("#mCSB_"+n.idx+"_container").find("iframe");d.length&&d.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind("mousewheel."+r,function(e,o){t(e,o)})})}),l.bind("mousewheel."+r,function(e,o){t(e,o)})}},R=new Object,A=function(t){var o=!1,a=!1,n=null;if(void 0===t?a="#empty":void 0!==e(t).attr("id")&&(a=e(t).attr("id")),a!==!1&&void 0!==R[a])return R[a];if(t){try{var i=t.contentDocument||t.contentWindow.document;n=i.body.innerHTML}catch(r){}o=null!==n}else{try{var i=top.document;n=i.body.innerHTML}catch(r){}o=null!==n}return a!==!1&&(R[a]=o),o},L=function(e){var t=this.find("iframe");if(t.length){var o=e?"auto":"none";t.css("pointer-events",o)}},z=function(t,o){var n=o.nodeName.toLowerCase(),i=t.data(a).opt.mouseWheel.disableOver,r=["select","textarea"];return e.inArray(n,i)>-1&&!(e.inArray(n,r)>-1&&!e(o).is(":focus"))},P=function(){var t,o=e(this),n=o.data(a),i=a+"_"+n.idx,r=e("#mCSB_"+n.idx+"_container"),l=r.parent(),s=e(".mCSB_"+n.idx+"_scrollbar ."+d[12]);s.bind("mousedown."+i+" touchstart."+i+" pointerdown."+i+" MSPointerDown."+i,function(o){c=!0,e(o.target).hasClass("mCSB_dragger")||(t=1)}).bind("touchend."+i+" pointerup."+i+" MSPointerUp."+i,function(){c=!1}).bind("click."+i,function(a){if(t&&(t=0,e(a.target).hasClass(d[12])||e(a.target).hasClass("mCSB_draggerRail"))){Q(o);var i=e(this),s=i.find(".mCSB_dragger");if(i.parent(".mCSB_scrollTools_horizontal").length>0){if(!n.overflowed[1])return;var c="x",u=a.pageX>s.offset().left?-1:1,f=Math.abs(r[0].offsetLeft)-u*(.9*l.width())}else{if(!n.overflowed[0])return;var c="y",u=a.pageY>s.offset().top?-1:1,f=Math.abs(r[0].offsetTop)-u*(.9*l.height())}G(o,f.toString(),{dir:c,scrollEasing:"mcsEaseInOut"})}})},H=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=e("#mCSB_"+o.idx+"_container"),l=r.parent();r.bind("focusin."+i,function(){var o=e(document.activeElement),a=r.find(".mCustomScrollBox").length,i=0;o.is(n.advanced.autoScrollOnFocus)&&(Q(t),clearTimeout(t[0]._focusTimeout),t[0]._focusTimer=a?(i+17)*a:0,t[0]._focusTimeout=setTimeout(function(){var e=[ae(o)[0],ae(o)[1]],a=[r[0].offsetTop,r[0].offsetLeft],s=[a[0]+e[0]>=0&&a[0]+e[0]=0&&a[0]+e[1]a");s.bind("contextmenu."+r,function(e){e.preventDefault()}).bind("mousedown."+r+" touchstart."+r+" pointerdown."+r+" MSPointerDown."+r+" mouseup."+r+" touchend."+r+" pointerup."+r+" MSPointerUp."+r+" mouseout."+r+" pointerout."+r+" MSPointerOut."+r+" click."+r,function(a){function r(e,o){i.scrollAmount=n.scrollButtons.scrollAmount,j(t,e,o)}if(a.preventDefault(),ee(a)){var l=e(this).attr("class");switch(i.type=n.scrollButtons.scrollType,a.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===i.type)return;c=!0,o.tweenRunning=!1,r("on",l);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===i.type)return;c=!1,i.dir&&r("off",l);break;case"click":if("stepped"!==i.type||o.tweenRunning)return;r("on",l)}}})},q=function(){function t(t){function a(e,t){r.type=i.keyboard.scrollType,r.scrollAmount=i.keyboard.scrollAmount,"stepped"===r.type&&n.tweenRunning||j(o,e,t)}switch(t.type){case"blur":n.tweenRunning&&r.dir&&a("off",null);break;case"keydown":case"keyup":var l=t.keyCode?t.keyCode:t.which,s="on";if("x"!==i.axis&&(38===l||40===l)||"y"!==i.axis&&(37===l||39===l)){if((38===l||40===l)&&!n.overflowed[0]||(37===l||39===l)&&!n.overflowed[1])return;"keyup"===t.type&&(s="off"),e(document.activeElement).is(u)||(t.preventDefault(),t.stopImmediatePropagation(),a(s,l))}else if(33===l||34===l){if((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type){Q(o);var f=34===l?-1:1;if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=Math.abs(c[0].offsetLeft)-f*(.9*d.width());else var h="y",m=Math.abs(c[0].offsetTop)-f*(.9*d.height());G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}else if((35===l||36===l)&&!e(document.activeElement).is(u)&&((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type)){if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=35===l?Math.abs(d.width()-c.outerWidth(!1)):0;else var h="y",m=35===l?Math.abs(d.height()-c.outerHeight(!1)):0;G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}}var o=e(this),n=o.data(a),i=n.opt,r=n.sequential,l=a+"_"+n.idx,s=e("#mCSB_"+n.idx),c=e("#mCSB_"+n.idx+"_container"),d=c.parent(),u="input,textarea,select,datalist,keygen,[contenteditable='true']",f=c.find("iframe"),h=["blur."+l+" keydown."+l+" keyup."+l];f.length&&f.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(h[0],function(e){t(e)})})}),s.attr("tabindex","0").bind(h[0],function(e){t(e)})},j=function(t,o,n,i,r){function l(e){u.snapAmount&&(f.scrollAmount=u.snapAmount instanceof Array?"x"===f.dir[0]?u.snapAmount[1]:u.snapAmount[0]:u.snapAmount);var o="stepped"!==f.type,a=r?r:e?o?p/1.5:g:1e3/60,n=e?o?7.5:40:2.5,s=[Math.abs(h[0].offsetTop),Math.abs(h[0].offsetLeft)],d=[c.scrollRatio.y>10?10:c.scrollRatio.y,c.scrollRatio.x>10?10:c.scrollRatio.x],m="x"===f.dir[0]?s[1]+f.dir[1]*(d[1]*n):s[0]+f.dir[1]*(d[0]*n),v="x"===f.dir[0]?s[1]+f.dir[1]*parseInt(f.scrollAmount):s[0]+f.dir[1]*parseInt(f.scrollAmount),x="auto"!==f.scrollAmount?v:m,_=i?i:e?o?"mcsLinearOut":"mcsEaseInOut":"mcsLinear",w=!!e;return e&&17>a&&(x="x"===f.dir[0]?s[1]:s[0]),G(t,x.toString(),{dir:f.dir[0],scrollEasing:_,dur:a,onComplete:w}),e?void(f.dir=!1):(clearTimeout(f.step),void(f.step=setTimeout(function(){l()},a)))}function s(){clearTimeout(f.step),$(f,"step"),Q(t)}var c=t.data(a),u=c.opt,f=c.sequential,h=e("#mCSB_"+c.idx+"_container"),m="stepped"===f.type,p=u.scrollInertia<26?26:u.scrollInertia,g=u.scrollInertia<1?17:u.scrollInertia;switch(o){case"on":if(f.dir=[n===d[16]||n===d[15]||39===n||37===n?"x":"y",n===d[13]||n===d[15]||38===n||37===n?-1:1],Q(t),oe(n)&&"stepped"===f.type)return;l(m);break;case"off":s(),(m||c.tweenRunning&&f.dir)&&l(!0)}},Y=function(t){var o=e(this).data(a).opt,n=[];return"function"==typeof t&&(t=t()),t instanceof Array?n=t.length>1?[t[0],t[1]]:"x"===o.axis?[null,t[0]]:[t[0],null]:(n[0]=t.y?t.y:t.x||"x"===o.axis?null:t,n[1]=t.x?t.x:t.y||"y"===o.axis?null:t),"function"==typeof n[0]&&(n[0]=n[0]()),"function"==typeof n[1]&&(n[1]=n[1]()),n},X=function(t,o){if(null!=t&&"undefined"!=typeof t){var n=e(this),i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx+"_container"),s=l.parent(),c=typeof t;o||(o="x"===r.axis?"x":"y");var d="x"===o?l.outerWidth(!1)-s.width():l.outerHeight(!1)-s.height(),f="x"===o?l[0].offsetLeft:l[0].offsetTop,h="x"===o?"left":"top";switch(c){case"function":return t();case"object":var m=t.jquery?t:e(t);if(!m.length)return;return"x"===o?ae(m)[1]:ae(m)[0];case"string":case"number":if(oe(t))return Math.abs(t);if(-1!==t.indexOf("%"))return Math.abs(d*parseInt(t)/100);if(-1!==t.indexOf("-="))return Math.abs(f-parseInt(t.split("-=")[1]));if(-1!==t.indexOf("+=")){var p=f+parseInt(t.split("+=")[1]);return p>=0?0:Math.abs(p)}if(-1!==t.indexOf("px")&&oe(t.split("px")[0]))return Math.abs(t.split("px")[0]);if("top"===t||"left"===t)return 0;if("bottom"===t)return Math.abs(s.height()-l.outerHeight(!1));if("right"===t)return Math.abs(s.width()-l.outerWidth(!1));if("first"===t||"last"===t){var m=l.find(":"+t);return"x"===o?ae(m)[1]:ae(m)[0]}return e(t).length?"x"===o?ae(e(t))[1]:ae(e(t))[0]:(l.css(h,t),void u.update.call(null,n[0]))}}},N=function(t){function o(){return clearTimeout(f[0].autoUpdate),0===l.parents("html").length?void(l=null):void(f[0].autoUpdate=setTimeout(function(){return c.advanced.updateOnSelectorChange&&(s.poll.change.n=i(),s.poll.change.n!==s.poll.change.o)?(s.poll.change.o=s.poll.change.n,void r(3)):c.advanced.updateOnContentResize&&(s.poll.size.n=l[0].scrollHeight+l[0].scrollWidth+f[0].offsetHeight+l[0].offsetHeight+l[0].offsetWidth,s.poll.size.n!==s.poll.size.o)?(s.poll.size.o=s.poll.size.n,void r(1)):!c.advanced.updateOnImageLoad||"auto"===c.advanced.updateOnImageLoad&&"y"===c.axis||(s.poll.img.n=f.find("img").length,s.poll.img.n===s.poll.img.o)?void((c.advanced.updateOnSelectorChange||c.advanced.updateOnContentResize||c.advanced.updateOnImageLoad)&&o()):(s.poll.img.o=s.poll.img.n,void f.find("img").each(function(){n(this)}))},c.advanced.autoUpdateTimeout))}function n(t){function o(e,t){return function(){
return t.apply(e,arguments)}}function a(){this.onload=null,e(t).addClass(d[2]),r(2)}if(e(t).hasClass(d[2]))return void r();var n=new Image;n.onload=o(n,a),n.src=t.src}function i(){c.advanced.updateOnSelectorChange===!0&&(c.advanced.updateOnSelectorChange="*");var e=0,t=f.find(c.advanced.updateOnSelectorChange);return c.advanced.updateOnSelectorChange&&t.length>0&&t.each(function(){e+=this.offsetHeight+this.offsetWidth}),e}function r(e){clearTimeout(f[0].autoUpdate),u.update.call(null,l[0],e)}var l=e(this),s=l.data(a),c=s.opt,f=e("#mCSB_"+s.idx+"_container");return t?(clearTimeout(f[0].autoUpdate),void $(f[0],"autoUpdate")):void o()},V=function(e,t,o){return Math.round(e/t)*t-o},Q=function(t){var o=t.data(a),n=e("#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal");n.each(function(){Z.call(this)})},G=function(t,o,n){function i(e){return s&&c.callbacks[e]&&"function"==typeof c.callbacks[e]}function r(){return[c.callbacks.alwaysTriggerOffsets||w>=S[0]+y,c.callbacks.alwaysTriggerOffsets||-B>=w]}function l(){var e=[h[0].offsetTop,h[0].offsetLeft],o=[x[0].offsetTop,x[0].offsetLeft],a=[h.outerHeight(!1),h.outerWidth(!1)],i=[f.height(),f.width()];t[0].mcs={content:h,top:e[0],left:e[1],draggerTop:o[0],draggerLeft:o[1],topPct:Math.round(100*Math.abs(e[0])/(Math.abs(a[0])-i[0])),leftPct:Math.round(100*Math.abs(e[1])/(Math.abs(a[1])-i[1])),direction:n.dir}}var s=t.data(a),c=s.opt,d={trigger:"internal",dir:"y",scrollEasing:"mcsEaseOut",drag:!1,dur:c.scrollInertia,overwrite:"all",callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},n=e.extend(d,n),u=[n.dur,n.drag?0:n.dur],f=e("#mCSB_"+s.idx),h=e("#mCSB_"+s.idx+"_container"),m=h.parent(),p=c.callbacks.onTotalScrollOffset?Y.call(t,c.callbacks.onTotalScrollOffset):[0,0],g=c.callbacks.onTotalScrollBackOffset?Y.call(t,c.callbacks.onTotalScrollBackOffset):[0,0];if(s.trigger=n.trigger,0===m.scrollTop()&&0===m.scrollLeft()||(e(".mCSB_"+s.idx+"_scrollbar").css("visibility","visible"),m.scrollTop(0).scrollLeft(0)),"_resetY"!==o||s.contentReset.y||(i("onOverflowYNone")&&c.callbacks.onOverflowYNone.call(t[0]),s.contentReset.y=1),"_resetX"!==o||s.contentReset.x||(i("onOverflowXNone")&&c.callbacks.onOverflowXNone.call(t[0]),s.contentReset.x=1),"_resetY"!==o&&"_resetX"!==o){if(!s.contentReset.y&&t[0].mcs||!s.overflowed[0]||(i("onOverflowY")&&c.callbacks.onOverflowY.call(t[0]),s.contentReset.x=null),!s.contentReset.x&&t[0].mcs||!s.overflowed[1]||(i("onOverflowX")&&c.callbacks.onOverflowX.call(t[0]),s.contentReset.x=null),c.snapAmount){var v=c.snapAmount instanceof Array?"x"===n.dir?c.snapAmount[1]:c.snapAmount[0]:c.snapAmount;o=V(o,v,c.snapOffset)}switch(n.dir){case"x":var x=e("#mCSB_"+s.idx+"_dragger_horizontal"),_="left",w=h[0].offsetLeft,S=[f.width()-h.outerWidth(!1),x.parent().width()-x.width()],b=[o,0===o?0:o/s.scrollRatio.x],y=p[1],B=g[1],T=y>0?y/s.scrollRatio.x:0,k=B>0?B/s.scrollRatio.x:0;break;case"y":var x=e("#mCSB_"+s.idx+"_dragger_vertical"),_="top",w=h[0].offsetTop,S=[f.height()-h.outerHeight(!1),x.parent().height()-x.height()],b=[o,0===o?0:o/s.scrollRatio.y],y=p[0],B=g[0],T=y>0?y/s.scrollRatio.y:0,k=B>0?B/s.scrollRatio.y:0}b[1]<0||0===b[0]&&0===b[1]?b=[0,0]:b[1]>=S[1]?b=[S[0],S[1]]:b[0]=-b[0],t[0].mcs||(l(),i("onInit")&&c.callbacks.onInit.call(t[0])),clearTimeout(h[0].onCompleteTimeout),J(x[0],_,Math.round(b[1]),u[1],n.scrollEasing),!s.tweenRunning&&(0===w&&b[0]>=0||w===S[0]&&b[0]<=S[0])||J(h[0],_,Math.round(b[0]),u[0],n.scrollEasing,n.overwrite,{onStart:function(){n.callbacks&&n.onStart&&!s.tweenRunning&&(i("onScrollStart")&&(l(),c.callbacks.onScrollStart.call(t[0])),s.tweenRunning=!0,C(x),s.cbOffsets=r())},onUpdate:function(){n.callbacks&&n.onUpdate&&i("whileScrolling")&&(l(),c.callbacks.whileScrolling.call(t[0]))},onComplete:function(){if(n.callbacks&&n.onComplete){"yx"===c.axis&&clearTimeout(h[0].onCompleteTimeout);var e=h[0].idleTimer||0;h[0].onCompleteTimeout=setTimeout(function(){i("onScroll")&&(l(),c.callbacks.onScroll.call(t[0])),i("onTotalScroll")&&b[1]>=S[1]-T&&s.cbOffsets[0]&&(l(),c.callbacks.onTotalScroll.call(t[0])),i("onTotalScrollBack")&&b[1]<=k&&s.cbOffsets[1]&&(l(),c.callbacks.onTotalScrollBack.call(t[0])),s.tweenRunning=!1,h[0].idleTimer=0,C(x,"hide")},e)}}})}},J=function(e,t,o,a,n,i,r){function l(){S.stop||(x||m.call(),x=K()-v,s(),x>=S.time&&(S.time=x>S.time?x+f-(x-S.time):x+f-1,S.time0?(S.currVal=u(S.time,_,b,a,n),w[t]=Math.round(S.currVal)+"px"):w[t]=o+"px",p.call()}function c(){f=1e3/60,S.time=x+f,h=window.requestAnimationFrame?window.requestAnimationFrame:function(e){return s(),setTimeout(e,.01)},S.id=h(l)}function d(){null!=S.id&&(window.requestAnimationFrame?window.cancelAnimationFrame(S.id):clearTimeout(S.id),S.id=null)}function u(e,t,o,a,n){switch(n){case"linear":case"mcsLinear":return o*e/a+t;case"mcsLinearOut":return e/=a,e--,o*Math.sqrt(1-e*e)+t;case"easeInOutSmooth":return e/=a/2,1>e?o/2*e*e+t:(e--,-o/2*(e*(e-2)-1)+t);case"easeInOutStrong":return e/=a/2,1>e?o/2*Math.pow(2,10*(e-1))+t:(e--,o/2*(-Math.pow(2,-10*e)+2)+t);case"easeInOut":case"mcsEaseInOut":return e/=a/2,1>e?o/2*e*e*e+t:(e-=2,o/2*(e*e*e+2)+t);case"easeOutSmooth":return e/=a,e--,-o*(e*e*e*e-1)+t;case"easeOutStrong":return o*(-Math.pow(2,-10*e/a)+1)+t;case"easeOut":case"mcsEaseOut":default:var i=(e/=a)*e,r=i*e;return t+o*(.499999999999997*r*i+-2.5*i*i+5.5*r+-6.5*i+4*e)}}e._mTween||(e._mTween={top:{},left:{}});var f,h,r=r||{},m=r.onStart||function(){},p=r.onUpdate||function(){},g=r.onComplete||function(){},v=K(),x=0,_=e.offsetTop,w=e.style,S=e._mTween[t];"left"===t&&(_=e.offsetLeft);var b=o-_;S.stop=0,"none"!==i&&d(),c()},K=function(){return window.performance&&window.performance.now?window.performance.now():window.performance&&window.performance.webkitNow?window.performance.webkitNow():Date.now?Date.now():(new Date).getTime()},Z=function(){var e=this;e._mTween||(e._mTween={top:{},left:{}});for(var t=["top","left"],o=0;o=0&&a[0]+ae(n)[0]=0&&a[1]+ae(n)[1]=0&&r[1]-i[1]*l[1][0]<0&&r[1]+n[1]-i[1]*l[1][1]>=0},mcsOverflow:e.expr[":"].mcsOverflow||function(t){var o=e(t).data(a);if(o)return o.overflowed[0]||o.overflowed[1]}})})})});
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css
index 45152c1bec..8f013dafa3 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css
@@ -1,1267 +1,1267 @@
-/*
-== malihu jquery custom scrollbar plugin ==
-Plugin URI: http://manos.malihu.gr/jquery-custom-content-scroller
-*/
-
-
-
-/*
-CONTENTS:
- 1. BASIC STYLE - Plugin's basic/essential CSS properties (normally, should not be edited).
- 2. VERTICAL SCROLLBAR - Positioning and dimensions of vertical scrollbar.
- 3. HORIZONTAL SCROLLBAR - Positioning and dimensions of horizontal scrollbar.
- 4. VERTICAL AND HORIZONTAL SCROLLBARS - Positioning and dimensions of 2-axis scrollbars.
- 5. TRANSITIONS - CSS3 transitions for hover events, auto-expanded and auto-hidden scrollbars.
- 6. SCROLLBAR COLORS, OPACITY AND BACKGROUNDS
- 6.1 THEMES - Scrollbar colors, opacity, dimensions, backgrounds etc. via ready-to-use themes.
-*/
-
-
-
-/*
-------------------------------------------------------------------------------------------------------------------------
-1. BASIC STYLE
-------------------------------------------------------------------------------------------------------------------------
-*/
-
- .mCustomScrollbar{ -ms-touch-action: pinch-zoom; touch-action: pinch-zoom; /* direct pointer events to js */ }
- .mCustomScrollbar.mCS_no_scrollbar, .mCustomScrollbar.mCS_touch_action{ -ms-touch-action: auto; touch-action: auto; }
-
- .mCustomScrollBox{ /* contains plugin's markup */
- position: relative;
- overflow: hidden;
- height: 100%;
- max-width: 100%;
- outline: none;
- direction: ltr;
- }
-
- .mCSB_container{ /* contains the original content */
- overflow: hidden;
- width: auto;
- height: auto;
- }
-
-
-
-/*
-------------------------------------------------------------------------------------------------------------------------
-2. VERTICAL SCROLLBAR
-y-axis
-------------------------------------------------------------------------------------------------------------------------
-*/
-
- .mCSB_inside > .mCSB_container{ margin-right: 30px; }
-
- .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-right: 0; } /* non-visible scrollbar */
-
- .mCS-dir-rtl > .mCSB_inside > .mCSB_container{ /* RTL direction/left-side scrollbar */
- margin-right: 0;
- margin-left: 30px;
- }
-
- .mCS-dir-rtl > .mCSB_inside > .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-left: 0; } /* RTL direction/left-side scrollbar */
-
- .mCSB_scrollTools{ /* contains scrollbar markup (draggable element, dragger rail, buttons etc.) */
- position: absolute;
- width: 16px;
- height: auto;
- left: auto;
- top: 0;
- right: 0;
- bottom: 0;
- }
-
- .mCSB_outside + .mCSB_scrollTools{ right: -26px; } /* scrollbar position: outside */
-
- .mCS-dir-rtl > .mCSB_inside > .mCSB_scrollTools,
- .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ /* RTL direction/left-side scrollbar */
- right: auto;
- left: 0;
- }
-
- .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ left: -26px; } /* RTL direction/left-side scrollbar (scrollbar position: outside) */
-
- .mCSB_scrollTools .mCSB_draggerContainer{ /* contains the draggable element and dragger rail markup */
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
- height: auto;
- }
-
- .mCSB_scrollTools a + .mCSB_draggerContainer{ margin: 20px 0; }
-
- .mCSB_scrollTools .mCSB_draggerRail{
- width: 2px;
- height: 100%;
- margin: 0 auto;
- -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px;
- }
-
- .mCSB_scrollTools .mCSB_dragger{ /* the draggable element */
- cursor: pointer;
- width: 100%;
- height: 30px; /* minimum dragger height */
- z-index: 1;
- }
-
- .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ /* the dragger element */
- position: relative;
- width: 4px;
- height: 100%;
- margin: 0 auto;
- -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px;
- text-align: center;
- }
-
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ width: 12px; /* auto-expanded scrollbar */ }
-
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 8px; /* auto-expanded scrollbar */ }
-
- .mCSB_scrollTools .mCSB_buttonUp,
- .mCSB_scrollTools .mCSB_buttonDown{
- display: block;
- position: absolute;
- height: 20px;
- width: 100%;
- overflow: hidden;
- margin: 0 auto;
- cursor: pointer;
- }
-
- .mCSB_scrollTools .mCSB_buttonDown{ bottom: 0; }
-
-
-
-/*
-------------------------------------------------------------------------------------------------------------------------
-3. HORIZONTAL SCROLLBAR
-x-axis
-------------------------------------------------------------------------------------------------------------------------
-*/
-
- .mCSB_horizontal.mCSB_inside > .mCSB_container{
- margin-right: 0;
- margin-bottom: 30px;
- }
-
- .mCSB_horizontal.mCSB_outside > .mCSB_container{ min-height: 100%; }
-
- .mCSB_horizontal > .mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; } /* non-visible scrollbar */
-
- .mCSB_scrollTools.mCSB_scrollTools_horizontal{
- width: auto;
- height: 16px;
- top: auto;
- right: 0;
- bottom: 0;
- left: 0;
- }
-
- .mCustomScrollBox + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
- .mCustomScrollBox + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ bottom: -26px; } /* scrollbar position: outside */
-
- .mCSB_scrollTools.mCSB_scrollTools_horizontal a + .mCSB_draggerContainer{ margin: 0 20px; }
-
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{
- width: 100%;
- height: 2px;
- margin: 7px 0;
- }
-
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{
- width: 30px; /* minimum dragger width */
- height: 100%;
- left: 0;
- }
-
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
- width: 100%;
- height: 4px;
- margin: 6px auto;
- }
-
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
- height: 12px; /* auto-expanded scrollbar */
- margin: 2px auto;
- }
-
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
- height: 8px; /* auto-expanded scrollbar */
- margin: 4px 0;
- }
-
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft,
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{
- display: block;
- position: absolute;
- width: 20px;
- height: 100%;
- overflow: hidden;
- margin: 0 auto;
- cursor: pointer;
- }
-
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{ left: 0; }
-
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{ right: 0; }
-
-
-
-/*
-------------------------------------------------------------------------------------------------------------------------
-4. VERTICAL AND HORIZONTAL SCROLLBARS
-yx-axis
-------------------------------------------------------------------------------------------------------------------------
-*/
-
- .mCSB_container_wrapper{
- position: absolute;
- height: auto;
- width: auto;
- overflow: hidden;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- margin-right: 30px;
- margin-bottom: 30px;
- }
-
- .mCSB_container_wrapper > .mCSB_container{
- padding-right: 30px;
- padding-bottom: 30px;
- -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;
- }
-
- .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 20px; }
-
- .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 20px; }
-
- /* non-visible horizontal scrollbar */
- .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden + .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 0; }
-
- /* non-visible vertical scrollbar/RTL direction/left-side scrollbar */
- .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal,
- .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 0; }
-
- /* RTL direction/left-side scrollbar */
- .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 20px; }
-
- /* non-visible scrollbar/RTL direction/left-side scrollbar */
- .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 0; }
-
- .mCS-dir-rtl > .mCSB_inside > .mCSB_container_wrapper{ /* RTL direction/left-side scrollbar */
- margin-right: 0;
- margin-left: 30px;
- }
-
- .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden > .mCSB_container{ padding-right: 0; }
-
- .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden > .mCSB_container{ padding-bottom: 0; }
-
- .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{
- margin-right: 0; /* non-visible scrollbar */
- margin-left: 0;
- }
-
- /* non-visible horizontal scrollbar */
- .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; }
-
-
-
-/*
-------------------------------------------------------------------------------------------------------------------------
-5. TRANSITIONS
-------------------------------------------------------------------------------------------------------------------------
-*/
-
- .mCSB_scrollTools,
- .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCSB_scrollTools .mCSB_buttonUp,
- .mCSB_scrollTools .mCSB_buttonDown,
- .mCSB_scrollTools .mCSB_buttonLeft,
- .mCSB_scrollTools .mCSB_buttonRight{
- -webkit-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
- -moz-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
- -o-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
- transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
- }
-
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, /* auto-expanded scrollbar */
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar,
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail{
- -webkit-transition: width .2s ease-out .2s, height .2s ease-out .2s,
- margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
- margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
- opacity .2s ease-in-out, background-color .2s ease-in-out;
- -moz-transition: width .2s ease-out .2s, height .2s ease-out .2s,
- margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
- margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
- opacity .2s ease-in-out, background-color .2s ease-in-out;
- -o-transition: width .2s ease-out .2s, height .2s ease-out .2s,
- margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
- margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
- opacity .2s ease-in-out, background-color .2s ease-in-out;
- transition: width .2s ease-out .2s, height .2s ease-out .2s,
- margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
- margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
- opacity .2s ease-in-out, background-color .2s ease-in-out;
- }
-
-
-
-/*
-------------------------------------------------------------------------------------------------------------------------
-6. SCROLLBAR COLORS, OPACITY AND BACKGROUNDS
-------------------------------------------------------------------------------------------------------------------------
-*/
-
- /*
- ----------------------------------------
- 6.1 THEMES
- ----------------------------------------
- */
-
- /* default theme ("light") */
-
- .mCSB_scrollTools{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; }
-
- .mCS-autoHide > .mCustomScrollBox > .mCSB_scrollTools,
- .mCS-autoHide > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 0; filter: "alpha(opacity=0)"; -ms-filter: "alpha(opacity=0)"; }
-
- .mCustomScrollbar > .mCustomScrollBox > .mCSB_scrollTools.mCSB_scrollTools_onDrag,
- .mCustomScrollbar > .mCustomScrollBox ~ .mCSB_scrollTools.mCSB_scrollTools_onDrag,
- .mCustomScrollBox:hover > .mCSB_scrollTools,
- .mCustomScrollBox:hover ~ .mCSB_scrollTools,
- .mCS-autoHide:hover > .mCustomScrollBox > .mCSB_scrollTools,
- .mCS-autoHide:hover > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 1; filter: "alpha(opacity=100)"; -ms-filter: "alpha(opacity=100)"; }
-
- .mCSB_scrollTools .mCSB_draggerRail{
- background-color: #000; background-color: rgba(0,0,0,0.4);
- filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)";
- }
-
- .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
- background-color: #fff; background-color: rgba(255,255,255,0.75);
- filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)";
- }
-
- .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
- background-color: #fff; background-color: rgba(255,255,255,0.85);
- filter: "alpha(opacity=85)"; -ms-filter: "alpha(opacity=85)";
- }
- .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
- background-color: #fff; background-color: rgba(255,255,255,0.9);
- filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)";
- }
-
- .mCSB_scrollTools .mCSB_buttonUp,
- .mCSB_scrollTools .mCSB_buttonDown,
- .mCSB_scrollTools .mCSB_buttonLeft,
- .mCSB_scrollTools .mCSB_buttonRight{
- background-image: url(mCSB_buttons.png); /* css sprites */
- background-repeat: no-repeat;
- opacity: 0.4; filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)";
- }
-
- .mCSB_scrollTools .mCSB_buttonUp{
- background-position: 0 0;
- /*
- sprites locations
- light: 0 0, -16px 0, -32px 0, -48px 0, 0 -72px, -16px -72px, -32px -72px
- dark: -80px 0, -96px 0, -112px 0, -128px 0, -80px -72px, -96px -72px, -112px -72px
- */
- }
-
- .mCSB_scrollTools .mCSB_buttonDown{
- background-position: 0 -20px;
- /*
- sprites locations
- light: 0 -20px, -16px -20px, -32px -20px, -48px -20px, 0 -92px, -16px -92px, -32px -92px
- dark: -80px -20px, -96px -20px, -112px -20px, -128px -20px, -80px -92px, -96px -92px, -112 -92px
- */
- }
-
- .mCSB_scrollTools .mCSB_buttonLeft{
- background-position: 0 -40px;
- /*
- sprites locations
- light: 0 -40px, -20px -40px, -40px -40px, -60px -40px, 0 -112px, -20px -112px, -40px -112px
- dark: -80px -40px, -100px -40px, -120px -40px, -140px -40px, -80px -112px, -100px -112px, -120px -112px
- */
- }
-
- .mCSB_scrollTools .mCSB_buttonRight{
- background-position: 0 -56px;
- /*
- sprites locations
- light: 0 -56px, -20px -56px, -40px -56px, -60px -56px, 0 -128px, -20px -128px, -40px -128px
- dark: -80px -56px, -100px -56px, -120px -56px, -140px -56px, -80px -128px, -100px -128px, -120px -128px
- */
- }
-
- .mCSB_scrollTools .mCSB_buttonUp:hover,
- .mCSB_scrollTools .mCSB_buttonDown:hover,
- .mCSB_scrollTools .mCSB_buttonLeft:hover,
- .mCSB_scrollTools .mCSB_buttonRight:hover{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; }
-
- .mCSB_scrollTools .mCSB_buttonUp:active,
- .mCSB_scrollTools .mCSB_buttonDown:active,
- .mCSB_scrollTools .mCSB_buttonLeft:active,
- .mCSB_scrollTools .mCSB_buttonRight:active{ opacity: 0.9; filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; }
-
-
- /* theme: "dark" */
-
- .mCS-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
-
- .mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
-
- .mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.85); }
-
- .mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.9); }
-
- .mCS-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; }
-
- .mCS-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; }
-
- .mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; }
-
- .mCS-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; }
-
- /* ---------------------------------------- */
-
-
-
- /* theme: "light-2", "dark-2" */
-
- .mCS-light-2.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{
- width: 4px;
- background-color: #fff; background-color: rgba(255,255,255,0.1);
- -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
- }
-
- .mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
- width: 4px;
- background-color: #fff; background-color: rgba(255,255,255,0.75);
- -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
- }
-
- .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
- width: 100%;
- height: 4px;
- margin: 6px auto;
- }
-
- .mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
-
- .mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
-
- .mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px 0; }
-
- .mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -20px; }
-
- .mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -40px; }
-
- .mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -56px; }
-
-
- /* theme: "dark-2" */
-
- .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{
- background-color: #000; background-color: rgba(0,0,0,0.1);
- -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
- }
-
- .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
- background-color: #000; background-color: rgba(0,0,0,0.75);
- -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
- }
-
- .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
-
- .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
-
- .mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px 0; }
-
- .mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -20px; }
-
- .mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -40px; }
-
- .mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -56px; }
-
- /* ---------------------------------------- */
-
-
-
- /* theme: "light-thick", "dark-thick" */
-
- .mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{
- width: 4px;
- background-color: #fff; background-color: rgba(255,255,255,0.1);
- -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
- }
-
- .mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
- width: 6px;
- background-color: #fff; background-color: rgba(255,255,255,0.75);
- -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
- }
-
- .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{
- width: 100%;
- height: 4px;
- margin: 6px 0;
- }
-
- .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
- width: 100%;
- height: 6px;
- margin: 5px auto;
- }
-
- .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
-
- .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
-
- .mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px 0; }
-
- .mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -20px; }
-
- .mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -40px; }
-
- .mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -56px; }
-
-
- /* theme: "dark-thick" */
-
- .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{
- background-color: #000; background-color: rgba(0,0,0,0.1);
- -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
- }
-
- .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
- background-color: #000; background-color: rgba(0,0,0,0.75);
- -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
- }
-
- .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
-
- .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
-
- .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px 0; }
-
- .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -20px; }
-
- .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -40px; }
-
- .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -56px; }
-
- /* ---------------------------------------- */
-
-
-
- /* theme: "light-thin", "dark-thin" */
-
- .mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.1); }
-
- .mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 2px; }
-
- .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{ width: 100%; }
-
- .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
- width: 100%;
- height: 2px;
- margin: 7px auto;
- }
-
-
- /* theme "dark-thin" */
-
- .mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
-
- .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
-
- .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
-
- .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
-
- .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; }
-
- .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; }
-
- .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; }
-
- .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; }
-
- /* ---------------------------------------- */
-
-
-
- /* theme "rounded", "rounded-dark", "rounded-dots", "rounded-dots-dark" */
-
- .mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.15); }
-
- .mCS-rounded.mCSB_scrollTools .mCSB_dragger,
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger,
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger,
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger{ height: 14px; }
-
- .mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
- width: 14px;
- margin: 0 1px;
- }
-
- .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger,
- .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger,
- .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger,
- .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 14px; }
-
- .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
- height: 14px;
- margin: 1px 0;
- }
-
- .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
- .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,
- .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
- .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
- width: 16px; /* auto-expanded scrollbar */
- height: 16px;
- margin: -1px 0;
- }
-
- .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
- .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
- .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
- .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 4px; /* auto-expanded scrollbar */ }
-
- .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
- .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,
- .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
- .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
- height: 16px; /* auto-expanded scrollbar */
- width: 16px;
- margin: 0 -1px;
- }
-
- .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
- .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
- .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
- .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
- height: 4px; /* auto-expanded scrollbar */
- margin: 6px 0;
- }
-
- .mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{ background-position: 0 -72px; }
-
- .mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{ background-position: 0 -92px; }
-
- .mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{ background-position: 0 -112px; }
-
- .mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{ background-position: 0 -128px; }
-
-
- /* theme "rounded-dark", "rounded-dots-dark" */
-
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
-
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
-
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
-
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
-
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px -72px; }
-
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -92px; }
-
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -112px; }
-
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -128px; }
-
-
- /* theme "rounded-dots", "rounded-dots-dark" */
-
- .mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail,
- .mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail{ width: 4px; }
-
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
- background-color: transparent;
- background-position: center;
- }
-
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg==");
- background-repeat: repeat-y;
- opacity: 0.3;
- filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
- }
-
- .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
- height: 4px;
- margin: 6px 0;
- background-repeat: repeat-x;
- }
-
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px -72px; }
-
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -92px; }
-
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -112px; }
-
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -128px; }
-
-
- /* theme "rounded-dots-dark" */
-
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII=");
- }
-
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px -72px; }
-
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -92px; }
-
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -112px; }
-
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -128px; }
-
- /* ---------------------------------------- */
-
-
-
- /* theme "3d", "3d-dark", "3d-thick", "3d-thick-dark" */
-
- .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
- background-repeat: repeat-y;
- background-image: -moz-linear-gradient(left, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
- background-image: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0)));
- background-image: -webkit-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
- background-image: -o-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
- background-image: -ms-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
- background-image: linear-gradient(to right, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
- }
-
- .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
- background-repeat: repeat-x;
- background-image: -moz-linear-gradient(top, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0)));
- background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
- background-image: -o-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
- background-image: -ms-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
- background-image: linear-gradient(to bottom, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
- }
-
-
- /* theme "3d", "3d-dark" */
-
- .mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger,
- .mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 70px; }
-
- .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger,
- .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 70px; }
-
- .mCS-3d.mCSB_scrollTools,
- .mCS-3d-dark.mCSB_scrollTools{
- opacity: 1;
- filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
- }
-
- .mCS-3d.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; }
-
- .mCS-3d.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{
- width: 8px;
- background-color: #000; background-color: rgba(0,0,0,0.2);
- box-shadow: inset 1px 0 1px rgba(0,0,0,0.5), inset -1px 0 1px rgba(255,255,255,0.2);
- }
-
- .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
- .mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; }
-
- .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 8px; }
-
- .mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
- width: 100%;
- height: 8px;
- margin: 4px 0;
- box-shadow: inset 0 1px 1px rgba(0,0,0,0.5), inset 0 -1px 1px rgba(255,255,255,0.2);
- }
-
- .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
- width: 100%;
- height: 8px;
- margin: 4px auto;
- }
-
- .mCS-3d.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
-
- .mCS-3d.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
-
- .mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
-
- .mCS-3d.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
-
-
- /* theme "3d-dark" */
-
- .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{
- background-color: #000; background-color: rgba(0,0,0,0.1);
- box-shadow: inset 1px 0 1px rgba(0,0,0,0.1);
- }
-
- .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1); }
-
- .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
-
- .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
-
- .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
-
- .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
-
- /* ---------------------------------------- */
-
-
-
- /* theme: "3d-thick", "3d-thick-dark" */
-
- .mCS-3d-thick.mCSB_scrollTools,
- .mCS-3d-thick-dark.mCSB_scrollTools{
- opacity: 1;
- filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
- }
-
- .mCS-3d-thick.mCSB_scrollTools,
- .mCS-3d-thick-dark.mCSB_scrollTools,
- .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer,
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{ -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; }
-
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; }
-
- .mCSB_inside + .mCS-3d-thick.mCSB_scrollTools_vertical,
- .mCSB_inside + .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ right: 1px; }
-
- .mCS-3d-thick.mCSB_scrollTools_vertical,
- .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ box-shadow: inset 1px 0 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); }
-
- .mCS-3d-thick.mCSB_scrollTools_horizontal,
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{
- bottom: 1px;
- box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5);
- }
-
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
- box-shadow: inset 1px 0 0 rgba(255,255,255,0.4);
- width: 12px;
- margin: 2px;
- position: absolute;
- height: auto;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- }
-
- .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4); }
-
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; }
-
- .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
- height: 12px;
- width: auto;
- }
-
- .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{
- background-color: #000; background-color: rgba(0,0,0,0.05);
- box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1);
- }
-
- .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
-
- .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
-
- .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
-
- .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
-
- .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
-
-
- /* theme: "3d-thick-dark" */
-
- .mCS-3d-thick-dark.mCSB_scrollTools{ box-shadow: inset 0 0 14px rgba(0,0,0,0.2); }
-
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.2); }
-
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 1px 0 0 rgba(255,255,255,0.4), inset -1px 0 0 rgba(0,0,0,0.2); }
-
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4), inset 0 -1px 0 rgba(0,0,0,0.2); }
-
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #777; }
-
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{
- background-color: #fff; background-color: rgba(0,0,0,0.05);
- box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1);
- }
-
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
-
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
-
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
-
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
-
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
-
- /* ---------------------------------------- */
-
-
-
- /* theme: "minimal", "minimal-dark" */
-
- .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical,
- .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{
- right: 0;
- margin: 12px 0;
- }
-
- .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
- .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
- .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
- .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{
- bottom: 0;
- margin: 0 12px;
- }
-
- /* RTL direction/left-side scrollbar */
- .mCS-dir-rtl > .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical,
- .mCS-dir-rtl > .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{
- left: 0;
- right: auto;
- }
-
- .mCS-minimal.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
-
- .mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger,
- .mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 50px; }
-
- .mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger,
- .mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 50px; }
-
- .mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
- background-color: #fff; background-color: rgba(255,255,255,0.2);
- filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)";
- }
-
- .mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
- background-color: #fff; background-color: rgba(255,255,255,0.5);
- filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)";
- }
-
-
- /* theme: "minimal-dark" */
-
- .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
- background-color: #000; background-color: rgba(0,0,0,0.2);
- filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)";
- }
-
- .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
- background-color: #000; background-color: rgba(0,0,0,0.5);
- filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)";
- }
-
- /* ---------------------------------------- */
-
-
-
- /* theme "light-3", "dark-3" */
-
- .mCS-light-3.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{
- width: 6px;
- background-color: #000; background-color: rgba(0,0,0,0.2);
- }
-
- .mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 6px; }
-
- .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{
- width: 100%;
- height: 6px;
- margin: 5px 0;
- }
-
- .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
- .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
- .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
- .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
- width: 12px;
- }
-
- .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
- .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
- .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
- .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
- height: 12px;
- margin: 2px 0;
- }
-
- .mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
-
- .mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
-
- .mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
-
- .mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
-
-
- /* theme "dark-3" */
-
- .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
-
- .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
-
- .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
-
- .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); }
-
- .mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
-
- .mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
-
- .mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
-
- .mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
-
- /* ---------------------------------------- */
-
-
-
- /* theme "inset", "inset-dark", "inset-2", "inset-2-dark", "inset-3", "inset-3-dark" */
-
- .mCS-inset.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{
- width: 12px;
- background-color: #000; background-color: rgba(0,0,0,0.2);
- }
-
- .mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
- width: 6px;
- margin: 3px 5px;
- position: absolute;
- height: auto;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- }
-
- .mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
- height: 6px;
- margin: 5px 3px;
- position: absolute;
- width: auto;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- }
-
- .mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,
- .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
- width: 100%;
- height: 12px;
- margin: 2px 0;
- }
-
- .mCS-inset.mCSB_scrollTools .mCSB_buttonUp,
- .mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp,
- .mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
-
- .mCS-inset.mCSB_scrollTools .mCSB_buttonDown,
- .mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown,
- .mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
-
- .mCS-inset.mCSB_scrollTools .mCSB_buttonLeft,
- .mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft,
- .mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
-
- .mCS-inset.mCSB_scrollTools .mCSB_buttonRight,
- .mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight,
- .mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
-
-
- /* theme "inset-dark", "inset-2-dark", "inset-3-dark" */
-
- .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
-
- .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
-
- .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
-
- .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); }
-
- .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
-
- .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
-
- .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
-
- .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
-
-
- /* theme "inset-2", "inset-2-dark" */
-
- .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{
- background-color: transparent;
- border-width: 1px;
- border-style: solid;
- border-color: #fff;
- border-color: rgba(255,255,255,0.2);
- -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;
- }
-
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{ border-color: #000; border-color: rgba(0,0,0,0.2); }
-
-
- /* theme "inset-3", "inset-3-dark" */
-
- .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.6); }
-
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.6); }
-
- .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
-
- .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
-
- .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
-
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.75); }
-
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
-
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
-
- /* ---------------------------------------- */
+/*
+== malihu jquery custom scrollbar plugin ==
+Plugin URI: http://manos.malihu.gr/jquery-custom-content-scroller
+*/
+
+
+
+/*
+CONTENTS:
+ 1. BASIC STYLE - Plugin's basic/essential CSS properties (normally, should not be edited).
+ 2. VERTICAL SCROLLBAR - Positioning and dimensions of vertical scrollbar.
+ 3. HORIZONTAL SCROLLBAR - Positioning and dimensions of horizontal scrollbar.
+ 4. VERTICAL AND HORIZONTAL SCROLLBARS - Positioning and dimensions of 2-axis scrollbars.
+ 5. TRANSITIONS - CSS3 transitions for hover events, auto-expanded and auto-hidden scrollbars.
+ 6. SCROLLBAR COLORS, OPACITY AND BACKGROUNDS
+ 6.1 THEMES - Scrollbar colors, opacity, dimensions, backgrounds etc. via ready-to-use themes.
+*/
+
+
+
+/*
+------------------------------------------------------------------------------------------------------------------------
+1. BASIC STYLE
+------------------------------------------------------------------------------------------------------------------------
+*/
+
+ .mCustomScrollbar{ -ms-touch-action: pinch-zoom; touch-action: pinch-zoom; /* direct pointer events to js */ }
+ .mCustomScrollbar.mCS_no_scrollbar, .mCustomScrollbar.mCS_touch_action{ -ms-touch-action: auto; touch-action: auto; }
+
+ .mCustomScrollBox{ /* contains plugin's markup */
+ position: relative;
+ overflow: hidden;
+ height: 100%;
+ max-width: 100%;
+ outline: none;
+ direction: ltr;
+ }
+
+ .mCSB_container{ /* contains the original content */
+ overflow: hidden;
+ width: auto;
+ height: auto;
+ }
+
+
+
+/*
+------------------------------------------------------------------------------------------------------------------------
+2. VERTICAL SCROLLBAR
+y-axis
+------------------------------------------------------------------------------------------------------------------------
+*/
+
+ .mCSB_inside > .mCSB_container{ margin-right: 30px; }
+
+ .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-right: 0; } /* non-visible scrollbar */
+
+ .mCS-dir-rtl > .mCSB_inside > .mCSB_container{ /* RTL direction/left-side scrollbar */
+ margin-right: 0;
+ margin-left: 30px;
+ }
+
+ .mCS-dir-rtl > .mCSB_inside > .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-left: 0; } /* RTL direction/left-side scrollbar */
+
+ .mCSB_scrollTools{ /* contains scrollbar markup (draggable element, dragger rail, buttons etc.) */
+ position: absolute;
+ width: 16px;
+ height: auto;
+ left: auto;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ }
+
+ .mCSB_outside + .mCSB_scrollTools{ right: -26px; } /* scrollbar position: outside */
+
+ .mCS-dir-rtl > .mCSB_inside > .mCSB_scrollTools,
+ .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ /* RTL direction/left-side scrollbar */
+ right: auto;
+ left: 0;
+ }
+
+ .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ left: -26px; } /* RTL direction/left-side scrollbar (scrollbar position: outside) */
+
+ .mCSB_scrollTools .mCSB_draggerContainer{ /* contains the draggable element and dragger rail markup */
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ height: auto;
+ }
+
+ .mCSB_scrollTools a + .mCSB_draggerContainer{ margin: 20px 0; }
+
+ .mCSB_scrollTools .mCSB_draggerRail{
+ width: 2px;
+ height: 100%;
+ margin: 0 auto;
+ -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px;
+ }
+
+ .mCSB_scrollTools .mCSB_dragger{ /* the draggable element */
+ cursor: pointer;
+ width: 100%;
+ height: 30px; /* minimum dragger height */
+ z-index: 1;
+ }
+
+ .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ /* the dragger element */
+ position: relative;
+ width: 4px;
+ height: 100%;
+ margin: 0 auto;
+ -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px;
+ text-align: center;
+ }
+
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ width: 12px; /* auto-expanded scrollbar */ }
+
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 8px; /* auto-expanded scrollbar */ }
+
+ .mCSB_scrollTools .mCSB_buttonUp,
+ .mCSB_scrollTools .mCSB_buttonDown{
+ display: block;
+ position: absolute;
+ height: 20px;
+ width: 100%;
+ overflow: hidden;
+ margin: 0 auto;
+ cursor: pointer;
+ }
+
+ .mCSB_scrollTools .mCSB_buttonDown{ bottom: 0; }
+
+
+
+/*
+------------------------------------------------------------------------------------------------------------------------
+3. HORIZONTAL SCROLLBAR
+x-axis
+------------------------------------------------------------------------------------------------------------------------
+*/
+
+ .mCSB_horizontal.mCSB_inside > .mCSB_container{
+ margin-right: 0;
+ margin-bottom: 30px;
+ }
+
+ .mCSB_horizontal.mCSB_outside > .mCSB_container{ min-height: 100%; }
+
+ .mCSB_horizontal > .mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; } /* non-visible scrollbar */
+
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal{
+ width: auto;
+ height: 16px;
+ top: auto;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ }
+
+ .mCustomScrollBox + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
+ .mCustomScrollBox + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ bottom: -26px; } /* scrollbar position: outside */
+
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal a + .mCSB_draggerContainer{ margin: 0 20px; }
+
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{
+ width: 100%;
+ height: 2px;
+ margin: 7px 0;
+ }
+
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{
+ width: 30px; /* minimum dragger width */
+ height: 100%;
+ left: 0;
+ }
+
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
+ width: 100%;
+ height: 4px;
+ margin: 6px auto;
+ }
+
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
+ height: 12px; /* auto-expanded scrollbar */
+ margin: 2px auto;
+ }
+
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
+ height: 8px; /* auto-expanded scrollbar */
+ margin: 4px 0;
+ }
+
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft,
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{
+ display: block;
+ position: absolute;
+ width: 20px;
+ height: 100%;
+ overflow: hidden;
+ margin: 0 auto;
+ cursor: pointer;
+ }
+
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{ left: 0; }
+
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{ right: 0; }
+
+
+
+/*
+------------------------------------------------------------------------------------------------------------------------
+4. VERTICAL AND HORIZONTAL SCROLLBARS
+yx-axis
+------------------------------------------------------------------------------------------------------------------------
+*/
+
+ .mCSB_container_wrapper{
+ position: absolute;
+ height: auto;
+ width: auto;
+ overflow: hidden;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin-right: 30px;
+ margin-bottom: 30px;
+ }
+
+ .mCSB_container_wrapper > .mCSB_container{
+ padding-right: 30px;
+ padding-bottom: 30px;
+ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;
+ }
+
+ .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 20px; }
+
+ .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 20px; }
+
+ /* non-visible horizontal scrollbar */
+ .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden + .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 0; }
+
+ /* non-visible vertical scrollbar/RTL direction/left-side scrollbar */
+ .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal,
+ .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 0; }
+
+ /* RTL direction/left-side scrollbar */
+ .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 20px; }
+
+ /* non-visible scrollbar/RTL direction/left-side scrollbar */
+ .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 0; }
+
+ .mCS-dir-rtl > .mCSB_inside > .mCSB_container_wrapper{ /* RTL direction/left-side scrollbar */
+ margin-right: 0;
+ margin-left: 30px;
+ }
+
+ .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden > .mCSB_container{ padding-right: 0; }
+
+ .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden > .mCSB_container{ padding-bottom: 0; }
+
+ .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{
+ margin-right: 0; /* non-visible scrollbar */
+ margin-left: 0;
+ }
+
+ /* non-visible horizontal scrollbar */
+ .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; }
+
+
+
+/*
+------------------------------------------------------------------------------------------------------------------------
+5. TRANSITIONS
+------------------------------------------------------------------------------------------------------------------------
+*/
+
+ .mCSB_scrollTools,
+ .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCSB_scrollTools .mCSB_buttonUp,
+ .mCSB_scrollTools .mCSB_buttonDown,
+ .mCSB_scrollTools .mCSB_buttonLeft,
+ .mCSB_scrollTools .mCSB_buttonRight{
+ -webkit-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
+ -moz-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
+ -o-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
+ transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
+ }
+
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, /* auto-expanded scrollbar */
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar,
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail{
+ -webkit-transition: width .2s ease-out .2s, height .2s ease-out .2s,
+ margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
+ margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
+ opacity .2s ease-in-out, background-color .2s ease-in-out;
+ -moz-transition: width .2s ease-out .2s, height .2s ease-out .2s,
+ margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
+ margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
+ opacity .2s ease-in-out, background-color .2s ease-in-out;
+ -o-transition: width .2s ease-out .2s, height .2s ease-out .2s,
+ margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
+ margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
+ opacity .2s ease-in-out, background-color .2s ease-in-out;
+ transition: width .2s ease-out .2s, height .2s ease-out .2s,
+ margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
+ margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
+ opacity .2s ease-in-out, background-color .2s ease-in-out;
+ }
+
+
+
+/*
+------------------------------------------------------------------------------------------------------------------------
+6. SCROLLBAR COLORS, OPACITY AND BACKGROUNDS
+------------------------------------------------------------------------------------------------------------------------
+*/
+
+ /*
+ ----------------------------------------
+ 6.1 THEMES
+ ----------------------------------------
+ */
+
+ /* default theme ("light") */
+
+ .mCSB_scrollTools{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; }
+
+ .mCS-autoHide > .mCustomScrollBox > .mCSB_scrollTools,
+ .mCS-autoHide > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 0; filter: "alpha(opacity=0)"; -ms-filter: "alpha(opacity=0)"; }
+
+ .mCustomScrollbar > .mCustomScrollBox > .mCSB_scrollTools.mCSB_scrollTools_onDrag,
+ .mCustomScrollbar > .mCustomScrollBox ~ .mCSB_scrollTools.mCSB_scrollTools_onDrag,
+ .mCustomScrollBox:hover > .mCSB_scrollTools,
+ .mCustomScrollBox:hover ~ .mCSB_scrollTools,
+ .mCS-autoHide:hover > .mCustomScrollBox > .mCSB_scrollTools,
+ .mCS-autoHide:hover > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 1; filter: "alpha(opacity=100)"; -ms-filter: "alpha(opacity=100)"; }
+
+ .mCSB_scrollTools .mCSB_draggerRail{
+ background-color: #000; background-color: rgba(0,0,0,0.4);
+ filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)";
+ }
+
+ .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+ background-color: #fff; background-color: rgba(255,255,255,0.75);
+ filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)";
+ }
+
+ .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
+ background-color: #fff; background-color: rgba(255,255,255,0.85);
+ filter: "alpha(opacity=85)"; -ms-filter: "alpha(opacity=85)";
+ }
+ .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+ background-color: #fff; background-color: rgba(255,255,255,0.9);
+ filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)";
+ }
+
+ .mCSB_scrollTools .mCSB_buttonUp,
+ .mCSB_scrollTools .mCSB_buttonDown,
+ .mCSB_scrollTools .mCSB_buttonLeft,
+ .mCSB_scrollTools .mCSB_buttonRight{
+ background-image: url(mCSB_buttons.png); /* css sprites */
+ background-repeat: no-repeat;
+ opacity: 0.4; filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)";
+ }
+
+ .mCSB_scrollTools .mCSB_buttonUp{
+ background-position: 0 0;
+ /*
+ sprites locations
+ light: 0 0, -16px 0, -32px 0, -48px 0, 0 -72px, -16px -72px, -32px -72px
+ dark: -80px 0, -96px 0, -112px 0, -128px 0, -80px -72px, -96px -72px, -112px -72px
+ */
+ }
+
+ .mCSB_scrollTools .mCSB_buttonDown{
+ background-position: 0 -20px;
+ /*
+ sprites locations
+ light: 0 -20px, -16px -20px, -32px -20px, -48px -20px, 0 -92px, -16px -92px, -32px -92px
+ dark: -80px -20px, -96px -20px, -112px -20px, -128px -20px, -80px -92px, -96px -92px, -112 -92px
+ */
+ }
+
+ .mCSB_scrollTools .mCSB_buttonLeft{
+ background-position: 0 -40px;
+ /*
+ sprites locations
+ light: 0 -40px, -20px -40px, -40px -40px, -60px -40px, 0 -112px, -20px -112px, -40px -112px
+ dark: -80px -40px, -100px -40px, -120px -40px, -140px -40px, -80px -112px, -100px -112px, -120px -112px
+ */
+ }
+
+ .mCSB_scrollTools .mCSB_buttonRight{
+ background-position: 0 -56px;
+ /*
+ sprites locations
+ light: 0 -56px, -20px -56px, -40px -56px, -60px -56px, 0 -128px, -20px -128px, -40px -128px
+ dark: -80px -56px, -100px -56px, -120px -56px, -140px -56px, -80px -128px, -100px -128px, -120px -128px
+ */
+ }
+
+ .mCSB_scrollTools .mCSB_buttonUp:hover,
+ .mCSB_scrollTools .mCSB_buttonDown:hover,
+ .mCSB_scrollTools .mCSB_buttonLeft:hover,
+ .mCSB_scrollTools .mCSB_buttonRight:hover{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; }
+
+ .mCSB_scrollTools .mCSB_buttonUp:active,
+ .mCSB_scrollTools .mCSB_buttonDown:active,
+ .mCSB_scrollTools .mCSB_buttonLeft:active,
+ .mCSB_scrollTools .mCSB_buttonRight:active{ opacity: 0.9; filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; }
+
+
+ /* theme: "dark" */
+
+ .mCS-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
+
+ .mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
+
+ .mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.85); }
+
+ .mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.9); }
+
+ .mCS-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; }
+
+ .mCS-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; }
+
+ .mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; }
+
+ .mCS-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; }
+
+ /* ---------------------------------------- */
+
+
+
+ /* theme: "light-2", "dark-2" */
+
+ .mCS-light-2.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{
+ width: 4px;
+ background-color: #fff; background-color: rgba(255,255,255,0.1);
+ -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
+ }
+
+ .mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+ width: 4px;
+ background-color: #fff; background-color: rgba(255,255,255,0.75);
+ -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
+ }
+
+ .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
+ width: 100%;
+ height: 4px;
+ margin: 6px auto;
+ }
+
+ .mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
+
+ .mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
+
+ .mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px 0; }
+
+ .mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -20px; }
+
+ .mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -40px; }
+
+ .mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -56px; }
+
+
+ /* theme: "dark-2" */
+
+ .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{
+ background-color: #000; background-color: rgba(0,0,0,0.1);
+ -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
+ }
+
+ .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+ background-color: #000; background-color: rgba(0,0,0,0.75);
+ -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
+ }
+
+ .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
+
+ .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
+
+ .mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px 0; }
+
+ .mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -20px; }
+
+ .mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -40px; }
+
+ .mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -56px; }
+
+ /* ---------------------------------------- */
+
+
+
+ /* theme: "light-thick", "dark-thick" */
+
+ .mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{
+ width: 4px;
+ background-color: #fff; background-color: rgba(255,255,255,0.1);
+ -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
+ }
+
+ .mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+ width: 6px;
+ background-color: #fff; background-color: rgba(255,255,255,0.75);
+ -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
+ }
+
+ .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{
+ width: 100%;
+ height: 4px;
+ margin: 6px 0;
+ }
+
+ .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
+ width: 100%;
+ height: 6px;
+ margin: 5px auto;
+ }
+
+ .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
+
+ .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
+
+ .mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px 0; }
+
+ .mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -20px; }
+
+ .mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -40px; }
+
+ .mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -56px; }
+
+
+ /* theme: "dark-thick" */
+
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{
+ background-color: #000; background-color: rgba(0,0,0,0.1);
+ -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
+ }
+
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+ background-color: #000; background-color: rgba(0,0,0,0.75);
+ -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
+ }
+
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
+
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
+
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px 0; }
+
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -20px; }
+
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -40px; }
+
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -56px; }
+
+ /* ---------------------------------------- */
+
+
+
+ /* theme: "light-thin", "dark-thin" */
+
+ .mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.1); }
+
+ .mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 2px; }
+
+ .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{ width: 100%; }
+
+ .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
+ width: 100%;
+ height: 2px;
+ margin: 7px auto;
+ }
+
+
+ /* theme "dark-thin" */
+
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
+
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
+
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
+
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
+
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; }
+
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; }
+
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; }
+
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; }
+
+ /* ---------------------------------------- */
+
+
+
+ /* theme "rounded", "rounded-dark", "rounded-dots", "rounded-dots-dark" */
+
+ .mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.15); }
+
+ .mCS-rounded.mCSB_scrollTools .mCSB_dragger,
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger,
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger,
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger{ height: 14px; }
+
+ .mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+ width: 14px;
+ margin: 0 1px;
+ }
+
+ .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger,
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger,
+ .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger,
+ .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 14px; }
+
+ .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
+ height: 14px;
+ margin: 1px 0;
+ }
+
+ .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
+ .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
+ .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
+ width: 16px; /* auto-expanded scrollbar */
+ height: 16px;
+ margin: -1px 0;
+ }
+
+ .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
+ .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
+ .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
+ .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 4px; /* auto-expanded scrollbar */ }
+
+ .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
+ .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
+ height: 16px; /* auto-expanded scrollbar */
+ width: 16px;
+ margin: 0 -1px;
+ }
+
+ .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
+ .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
+ height: 4px; /* auto-expanded scrollbar */
+ margin: 6px 0;
+ }
+
+ .mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{ background-position: 0 -72px; }
+
+ .mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{ background-position: 0 -92px; }
+
+ .mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{ background-position: 0 -112px; }
+
+ .mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{ background-position: 0 -128px; }
+
+
+ /* theme "rounded-dark", "rounded-dots-dark" */
+
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
+
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
+
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
+
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
+
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px -72px; }
+
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -92px; }
+
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -112px; }
+
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -128px; }
+
+
+ /* theme "rounded-dots", "rounded-dots-dark" */
+
+ .mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail,
+ .mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail{ width: 4px; }
+
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
+ background-color: transparent;
+ background-position: center;
+ }
+
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg==");
+ background-repeat: repeat-y;
+ opacity: 0.3;
+ filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
+ }
+
+ .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
+ height: 4px;
+ margin: 6px 0;
+ background-repeat: repeat-x;
+ }
+
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px -72px; }
+
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -92px; }
+
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -112px; }
+
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -128px; }
+
+
+ /* theme "rounded-dots-dark" */
+
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII=");
+ }
+
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px -72px; }
+
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -92px; }
+
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -112px; }
+
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -128px; }
+
+ /* ---------------------------------------- */
+
+
+
+ /* theme "3d", "3d-dark", "3d-thick", "3d-thick-dark" */
+
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+ background-repeat: repeat-y;
+ background-image: -moz-linear-gradient(left, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
+ background-image: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0)));
+ background-image: -webkit-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
+ background-image: -o-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
+ background-image: -ms-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
+ background-image: linear-gradient(to right, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
+ }
+
+ .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
+ background-repeat: repeat-x;
+ background-image: -moz-linear-gradient(top, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0)));
+ background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
+ background-image: -o-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
+ background-image: -ms-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
+ background-image: linear-gradient(to bottom, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
+ }
+
+
+ /* theme "3d", "3d-dark" */
+
+ .mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger,
+ .mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 70px; }
+
+ .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger,
+ .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 70px; }
+
+ .mCS-3d.mCSB_scrollTools,
+ .mCS-3d-dark.mCSB_scrollTools{
+ opacity: 1;
+ filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
+ }
+
+ .mCS-3d.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; }
+
+ .mCS-3d.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{
+ width: 8px;
+ background-color: #000; background-color: rgba(0,0,0,0.2);
+ box-shadow: inset 1px 0 1px rgba(0,0,0,0.5), inset -1px 0 1px rgba(255,255,255,0.2);
+ }
+
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; }
+
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 8px; }
+
+ .mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
+ width: 100%;
+ height: 8px;
+ margin: 4px 0;
+ box-shadow: inset 0 1px 1px rgba(0,0,0,0.5), inset 0 -1px 1px rgba(255,255,255,0.2);
+ }
+
+ .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
+ width: 100%;
+ height: 8px;
+ margin: 4px auto;
+ }
+
+ .mCS-3d.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
+
+ .mCS-3d.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
+
+ .mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
+
+ .mCS-3d.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
+
+
+ /* theme "3d-dark" */
+
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{
+ background-color: #000; background-color: rgba(0,0,0,0.1);
+ box-shadow: inset 1px 0 1px rgba(0,0,0,0.1);
+ }
+
+ .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1); }
+
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
+
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
+
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
+
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
+
+ /* ---------------------------------------- */
+
+
+
+ /* theme: "3d-thick", "3d-thick-dark" */
+
+ .mCS-3d-thick.mCSB_scrollTools,
+ .mCS-3d-thick-dark.mCSB_scrollTools{
+ opacity: 1;
+ filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
+ }
+
+ .mCS-3d-thick.mCSB_scrollTools,
+ .mCS-3d-thick-dark.mCSB_scrollTools,
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer,
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{ -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; }
+
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; }
+
+ .mCSB_inside + .mCS-3d-thick.mCSB_scrollTools_vertical,
+ .mCSB_inside + .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ right: 1px; }
+
+ .mCS-3d-thick.mCSB_scrollTools_vertical,
+ .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ box-shadow: inset 1px 0 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); }
+
+ .mCS-3d-thick.mCSB_scrollTools_horizontal,
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{
+ bottom: 1px;
+ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5);
+ }
+
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+ box-shadow: inset 1px 0 0 rgba(255,255,255,0.4);
+ width: 12px;
+ margin: 2px;
+ position: absolute;
+ height: auto;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ }
+
+ .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4); }
+
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; }
+
+ .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
+ height: 12px;
+ width: auto;
+ }
+
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{
+ background-color: #000; background-color: rgba(0,0,0,0.05);
+ box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1);
+ }
+
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
+
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
+
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
+
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
+
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
+
+
+ /* theme: "3d-thick-dark" */
+
+ .mCS-3d-thick-dark.mCSB_scrollTools{ box-shadow: inset 0 0 14px rgba(0,0,0,0.2); }
+
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.2); }
+
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 1px 0 0 rgba(255,255,255,0.4), inset -1px 0 0 rgba(0,0,0,0.2); }
+
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4), inset 0 -1px 0 rgba(0,0,0,0.2); }
+
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #777; }
+
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{
+ background-color: #fff; background-color: rgba(0,0,0,0.05);
+ box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1);
+ }
+
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
+
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
+
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
+
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
+
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
+
+ /* ---------------------------------------- */
+
+
+
+ /* theme: "minimal", "minimal-dark" */
+
+ .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical,
+ .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{
+ right: 0;
+ margin: 12px 0;
+ }
+
+ .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
+ .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
+ .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
+ .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{
+ bottom: 0;
+ margin: 0 12px;
+ }
+
+ /* RTL direction/left-side scrollbar */
+ .mCS-dir-rtl > .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical,
+ .mCS-dir-rtl > .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{
+ left: 0;
+ right: auto;
+ }
+
+ .mCS-minimal.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
+
+ .mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger,
+ .mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 50px; }
+
+ .mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger,
+ .mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 50px; }
+
+ .mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+ background-color: #fff; background-color: rgba(255,255,255,0.2);
+ filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)";
+ }
+
+ .mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+ background-color: #fff; background-color: rgba(255,255,255,0.5);
+ filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)";
+ }
+
+
+ /* theme: "minimal-dark" */
+
+ .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+ background-color: #000; background-color: rgba(0,0,0,0.2);
+ filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)";
+ }
+
+ .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
+ background-color: #000; background-color: rgba(0,0,0,0.5);
+ filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)";
+ }
+
+ /* ---------------------------------------- */
+
+
+
+ /* theme "light-3", "dark-3" */
+
+ .mCS-light-3.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{
+ width: 6px;
+ background-color: #000; background-color: rgba(0,0,0,0.2);
+ }
+
+ .mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 6px; }
+
+ .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{
+ width: 100%;
+ height: 6px;
+ margin: 5px 0;
+ }
+
+ .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
+ .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
+ .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
+ .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
+ width: 12px;
+ }
+
+ .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
+ .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
+ .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
+ .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
+ height: 12px;
+ margin: 2px 0;
+ }
+
+ .mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
+
+ .mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
+
+ .mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
+
+ .mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
+
+
+ /* theme "dark-3" */
+
+ .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
+
+ .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
+
+ .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
+
+ .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); }
+
+ .mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
+
+ .mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
+
+ .mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
+
+ .mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
+
+ /* ---------------------------------------- */
+
+
+
+ /* theme "inset", "inset-dark", "inset-2", "inset-2-dark", "inset-3", "inset-3-dark" */
+
+ .mCS-inset.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{
+ width: 12px;
+ background-color: #000; background-color: rgba(0,0,0,0.2);
+ }
+
+ .mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
+ width: 6px;
+ margin: 3px 5px;
+ position: absolute;
+ height: auto;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ }
+
+ .mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
+ height: 6px;
+ margin: 5px 3px;
+ position: absolute;
+ width: auto;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ }
+
+ .mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,
+ .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
+ width: 100%;
+ height: 12px;
+ margin: 2px 0;
+ }
+
+ .mCS-inset.mCSB_scrollTools .mCSB_buttonUp,
+ .mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp,
+ .mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
+
+ .mCS-inset.mCSB_scrollTools .mCSB_buttonDown,
+ .mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown,
+ .mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
+
+ .mCS-inset.mCSB_scrollTools .mCSB_buttonLeft,
+ .mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft,
+ .mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
+
+ .mCS-inset.mCSB_scrollTools .mCSB_buttonRight,
+ .mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight,
+ .mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
+
+
+ /* theme "inset-dark", "inset-2-dark", "inset-3-dark" */
+
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
+
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
+
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
+
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); }
+
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
+
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
+
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
+
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
+
+
+ /* theme "inset-2", "inset-2-dark" */
+
+ .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{
+ background-color: transparent;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #fff;
+ border-color: rgba(255,255,255,0.2);
+ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;
+ }
+
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{ border-color: #000; border-color: rgba(0,0,0,0.2); }
+
+
+ /* theme "inset-3", "inset-3-dark" */
+
+ .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.6); }
+
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.6); }
+
+ .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
+
+ .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
+
+ .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
+
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.75); }
+
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
+
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
+
+ /* ---------------------------------------- */
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js
index 4c9a0b2e52..ff7a7263f8 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js
@@ -1,2458 +1,2458 @@
-/*
-== malihu jquery custom scrollbar plugin ==
-Version: 3.1.5
-Plugin URI: http://manos.malihu.gr/jquery-custom-content-scroller
-Author: malihu
-Author URI: http://manos.malihu.gr
-License: MIT License (MIT)
-*/
-
-/*
-Copyright Manos Malihutsakis (email: manos@malihu.gr)
-
-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.
-*/
-
-/*
-The code below is fairly long, fully commented and should be normally used in development.
-For production, use either the minified jquery.mCustomScrollbar.min.js script or
-the production-ready jquery.mCustomScrollbar.concat.min.js which contains the plugin
-and dependencies (minified).
-*/
-
-(function(factory){
- if(typeof define==="function" && define.amd){
- define(["jquery"],factory);
- }else if(typeof module!=="undefined" && module.exports){
- module.exports=factory;
- }else{
- factory(jQuery,window,document);
- }
-}(function($){
-(function(init){
- var _rjs=typeof define==="function" && define.amd, /* RequireJS */
- _njs=typeof module !== "undefined" && module.exports, /* NodeJS */
- _dlp=("https:"==document.location.protocol) ? "https:" : "http:", /* location protocol */
- _url="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js";
- if(!_rjs){
- if(_njs){
- require("jquery-mousewheel")($);
- }else{
- /* load jquery-mousewheel plugin (via CDN) if it's not present or not loaded via RequireJS
- (works when mCustomScrollbar fn is called on window load) */
- $.event.special.mousewheel || $("head").append(decodeURI("%3Cscript src="+_dlp+"//"+_url+"%3E%3C/script%3E"));
- }
- }
- init();
-}(function(){
-
- /*
- ----------------------------------------
- PLUGIN NAMESPACE, PREFIX, DEFAULT SELECTOR(S)
- ----------------------------------------
- */
-
- var pluginNS="mCustomScrollbar",
- pluginPfx="mCS",
- defaultSelector=".mCustomScrollbar",
-
-
-
-
-
- /*
- ----------------------------------------
- DEFAULT OPTIONS
- ----------------------------------------
- */
-
- defaults={
- /*
- set element/content width/height programmatically
- values: boolean, pixels, percentage
- option default
- -------------------------------------
- setWidth false
- setHeight false
- */
- /*
- set the initial css top property of content
- values: string (e.g. "-100px", "10%" etc.)
- */
- setTop:0,
- /*
- set the initial css left property of content
- values: string (e.g. "-100px", "10%" etc.)
- */
- setLeft:0,
- /*
- scrollbar axis (vertical and/or horizontal scrollbars)
- values (string): "y", "x", "yx"
- */
- axis:"y",
- /*
- position of scrollbar relative to content
- values (string): "inside", "outside" ("outside" requires elements with position:relative)
- */
- scrollbarPosition:"inside",
- /*
- scrolling inertia
- values: integer (milliseconds)
- */
- scrollInertia:950,
- /*
- auto-adjust scrollbar dragger length
- values: boolean
- */
- autoDraggerLength:true,
- /*
- auto-hide scrollbar when idle
- values: boolean
- option default
- -------------------------------------
- autoHideScrollbar false
- */
- /*
- auto-expands scrollbar on mouse-over and dragging
- values: boolean
- option default
- -------------------------------------
- autoExpandScrollbar false
- */
- /*
- always show scrollbar, even when there's nothing to scroll
- values: integer (0=disable, 1=always show dragger rail and buttons, 2=always show dragger rail, dragger and buttons), boolean
- */
- alwaysShowScrollbar:0,
- /*
- scrolling always snaps to a multiple of this number in pixels
- values: integer, array ([y,x])
- option default
- -------------------------------------
- snapAmount null
- */
- /*
- when snapping, snap with this number in pixels as an offset
- values: integer
- */
- snapOffset:0,
- /*
- mouse-wheel scrolling
- */
- mouseWheel:{
- /*
- enable mouse-wheel scrolling
- values: boolean
- */
- enable:true,
- /*
- scrolling amount in pixels
- values: "auto", integer
- */
- scrollAmount:"auto",
- /*
- mouse-wheel scrolling axis
- the default scrolling direction when both vertical and horizontal scrollbars are present
- values (string): "y", "x"
- */
- axis:"y",
- /*
- prevent the default behaviour which automatically scrolls the parent element(s) when end of scrolling is reached
- values: boolean
- option default
- -------------------------------------
- preventDefault null
- */
- /*
- the reported mouse-wheel delta value. The number of lines (translated to pixels) one wheel notch scrolls.
- values: "auto", integer
- "auto" uses the default OS/browser value
- */
- deltaFactor:"auto",
- /*
- normalize mouse-wheel delta to -1 or 1 (disables mouse-wheel acceleration)
- values: boolean
- option default
- -------------------------------------
- normalizeDelta null
- */
- /*
- invert mouse-wheel scrolling direction
- values: boolean
- option default
- -------------------------------------
- invert null
- */
- /*
- the tags that disable mouse-wheel when cursor is over them
- */
- disableOver:["select","option","keygen","datalist","textarea"]
- },
- /*
- scrollbar buttons
- */
- scrollButtons:{
- /*
- enable scrollbar buttons
- values: boolean
- option default
- -------------------------------------
- enable null
- */
- /*
- scrollbar buttons scrolling type
- values (string): "stepless", "stepped"
- */
- scrollType:"stepless",
- /*
- scrolling amount in pixels
- values: "auto", integer
- */
- scrollAmount:"auto"
- /*
- tabindex of the scrollbar buttons
- values: false, integer
- option default
- -------------------------------------
- tabindex null
- */
- },
- /*
- keyboard scrolling
- */
- keyboard:{
- /*
- enable scrolling via keyboard
- values: boolean
- */
- enable:true,
- /*
- keyboard scrolling type
- values (string): "stepless", "stepped"
- */
- scrollType:"stepless",
- /*
- scrolling amount in pixels
- values: "auto", integer
- */
- scrollAmount:"auto"
- },
- /*
- enable content touch-swipe scrolling
- values: boolean, integer, string (number)
- integer values define the axis-specific minimum amount required for scrolling momentum
- */
- contentTouchScroll:25,
- /*
- enable/disable document (default) touch-swipe scrolling
- */
- documentTouchScroll:true,
- /*
- advanced option parameters
- */
- advanced:{
- /*
- auto-expand content horizontally (for "x" or "yx" axis)
- values: boolean, integer (the value 2 forces the non scrollHeight/scrollWidth method, the value 3 forces the scrollHeight/scrollWidth method)
- option default
- -------------------------------------
- autoExpandHorizontalScroll null
- */
- /*
- auto-scroll to elements with focus
- */
- autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",
- /*
- auto-update scrollbars on content, element or viewport resize
- should be true for fluid layouts/elements, adding/removing content dynamically, hiding/showing elements, content with images etc.
- values: boolean
- */
- updateOnContentResize:true,
- /*
- auto-update scrollbars each time each image inside the element is fully loaded
- values: "auto", boolean
- */
- updateOnImageLoad:"auto",
- /*
- auto-update scrollbars based on the amount and size changes of specific selectors
- useful when you need to update the scrollbar(s) automatically, each time a type of element is added, removed or changes its size
- values: boolean, string (e.g. "ul li" will auto-update scrollbars each time list-items inside the element are changed)
- a value of true (boolean) will auto-update scrollbars each time any element is changed
- option default
- -------------------------------------
- updateOnSelectorChange null
- */
- /*
- extra selectors that'll allow scrollbar dragging upon mousemove/up, pointermove/up, touchend etc. (e.g. "selector-1, selector-2")
- option default
- -------------------------------------
- extraDraggableSelectors null
- */
- /*
- extra selectors that'll release scrollbar dragging upon mouseup, pointerup, touchend etc. (e.g. "selector-1, selector-2")
- option default
- -------------------------------------
- releaseDraggableSelectors null
- */
- /*
- auto-update timeout
- values: integer (milliseconds)
- */
- autoUpdateTimeout:60
- },
- /*
- scrollbar theme
- values: string (see CSS/plugin URI for a list of ready-to-use themes)
- */
- theme:"light",
- /*
- user defined callback functions
- */
- callbacks:{
- /*
- Available callbacks:
- callback default
- -------------------------------------
- onCreate null
- onInit null
- onScrollStart null
- onScroll null
- onTotalScroll null
- onTotalScrollBack null
- whileScrolling null
- onOverflowY null
- onOverflowX null
- onOverflowYNone null
- onOverflowXNone null
- onImageLoad null
- onSelectorChange null
- onBeforeUpdate null
- onUpdate null
- */
- onTotalScrollOffset:0,
- onTotalScrollBackOffset:0,
- alwaysTriggerOffsets:true
- }
- /*
- add scrollbar(s) on all elements matching the current selector, now and in the future
- values: boolean, string
- string values: "on" (enable), "once" (disable after first invocation), "off" (disable)
- liveSelector values: string (selector)
- option default
- -------------------------------------
- live false
- liveSelector null
- */
- },
-
-
-
-
-
- /*
- ----------------------------------------
- VARS, CONSTANTS
- ----------------------------------------
- */
-
- totalInstances=0, /* plugin instances amount */
- liveTimers={}, /* live option timers */
- oldIE=(window.attachEvent && !window.addEventListener) ? 1 : 0, /* detect IE < 9 */
- touchActive=false,touchable, /* global touch vars (for touch and pointer events) */
- /* general plugin classes */
- classes=[
- "mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar",
- "mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer",
- "mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight"
- ],
-
-
-
-
-
- /*
- ----------------------------------------
- METHODS
- ----------------------------------------
- */
-
- methods={
-
- /*
- plugin initialization method
- creates the scrollbar(s), plugin data object and options
- ----------------------------------------
- */
-
- init:function(options){
-
- var options=$.extend(true,{},defaults,options),
- selector=_selector.call(this); /* validate selector */
-
- /*
- if live option is enabled, monitor for elements matching the current selector and
- apply scrollbar(s) when found (now and in the future)
- */
- if(options.live){
- var liveSelector=options.liveSelector || this.selector || defaultSelector, /* live selector(s) */
- $liveSelector=$(liveSelector); /* live selector(s) as jquery object */
- if(options.live==="off"){
- /*
- disable live if requested
- usage: $(selector).mCustomScrollbar({live:"off"});
- */
- removeLiveTimers(liveSelector);
- return;
- }
- liveTimers[liveSelector]=setTimeout(function(){
- /* call mCustomScrollbar fn on live selector(s) every half-second */
- $liveSelector.mCustomScrollbar(options);
- if(options.live==="once" && $liveSelector.length){
- /* disable live after first invocation */
- removeLiveTimers(liveSelector);
- }
- },500);
- }else{
- removeLiveTimers(liveSelector);
- }
-
- /* options backward compatibility (for versions < 3.0.0) and normalization */
- options.setWidth=(options.set_width) ? options.set_width : options.setWidth;
- options.setHeight=(options.set_height) ? options.set_height : options.setHeight;
- options.axis=(options.horizontalScroll) ? "x" : _findAxis(options.axis);
- options.scrollInertia=options.scrollInertia>0 && options.scrollInertia<17 ? 17 : options.scrollInertia;
- if(typeof options.mouseWheel!=="object" && options.mouseWheel==true){ /* old school mouseWheel option (non-object) */
- options.mouseWheel={enable:true,scrollAmount:"auto",axis:"y",preventDefault:false,deltaFactor:"auto",normalizeDelta:false,invert:false}
- }
- options.mouseWheel.scrollAmount=!options.mouseWheelPixels ? options.mouseWheel.scrollAmount : options.mouseWheelPixels;
- options.mouseWheel.normalizeDelta=!options.advanced.normalizeMouseWheelDelta ? options.mouseWheel.normalizeDelta : options.advanced.normalizeMouseWheelDelta;
- options.scrollButtons.scrollType=_findScrollButtonsType(options.scrollButtons.scrollType);
-
- _theme(options); /* theme-specific options */
-
- /* plugin constructor */
- return $(selector).each(function(){
-
- var $this=$(this);
-
- if(!$this.data(pluginPfx)){ /* prevent multiple instantiations */
-
- /* store options and create objects in jquery data */
- $this.data(pluginPfx,{
- idx:++totalInstances, /* instance index */
- opt:options, /* options */
- scrollRatio:{y:null,x:null}, /* scrollbar to content ratio */
- overflowed:null, /* overflowed axis */
- contentReset:{y:null,x:null}, /* object to check when content resets */
- bindEvents:false, /* object to check if events are bound */
- tweenRunning:false, /* object to check if tween is running */
- sequential:{}, /* sequential scrolling object */
- langDir:$this.css("direction"), /* detect/store direction (ltr or rtl) */
- cbOffsets:null, /* object to check whether callback offsets always trigger */
- /*
- object to check how scrolling events where last triggered
- "internal" (default - triggered by this script), "external" (triggered by other scripts, e.g. via scrollTo method)
- usage: object.data("mCS").trigger
- */
- trigger:null,
- /*
- object to check for changes in elements in order to call the update method automatically
- */
- poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}}
- });
-
- var d=$this.data(pluginPfx),o=d.opt,
- /* HTML data attributes */
- htmlDataAxis=$this.data("mcs-axis"),htmlDataSbPos=$this.data("mcs-scrollbar-position"),htmlDataTheme=$this.data("mcs-theme");
-
- if(htmlDataAxis){o.axis=htmlDataAxis;} /* usage example: data-mcs-axis="y" */
- if(htmlDataSbPos){o.scrollbarPosition=htmlDataSbPos;} /* usage example: data-mcs-scrollbar-position="outside" */
- if(htmlDataTheme){ /* usage example: data-mcs-theme="minimal" */
- o.theme=htmlDataTheme;
- _theme(o); /* theme-specific options */
- }
-
- _pluginMarkup.call(this); /* add plugin markup */
-
- if(d && o.callbacks.onCreate && typeof o.callbacks.onCreate==="function"){o.callbacks.onCreate.call(this);} /* callbacks: onCreate */
-
- $("#mCSB_"+d.idx+"_container img:not(."+classes[2]+")").addClass(classes[2]); /* flag loaded images */
-
- methods.update.call(null,$this); /* call the update method */
-
- }
-
- });
-
- },
- /* ---------------------------------------- */
-
-
-
- /*
- plugin update method
- updates content and scrollbar(s) values, events and status
- ----------------------------------------
- usage: $(selector).mCustomScrollbar("update");
- */
-
- update:function(el,cb){
-
- var selector=el || _selector.call(this); /* validate selector */
-
- return $(selector).each(function(){
-
- var $this=$(this);
-
- if($this.data(pluginPfx)){ /* check if plugin has initialized */
-
- var d=$this.data(pluginPfx),o=d.opt,
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- mCustomScrollBox=$("#mCSB_"+d.idx),
- mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")];
-
- if(!mCSB_container.length){return;}
-
- if(d.tweenRunning){_stop($this);} /* stop any running tweens while updating */
-
- if(cb && d && o.callbacks.onBeforeUpdate && typeof o.callbacks.onBeforeUpdate==="function"){o.callbacks.onBeforeUpdate.call(this);} /* callbacks: onBeforeUpdate */
-
- /* if element was disabled or destroyed, remove class(es) */
- if($this.hasClass(classes[3])){$this.removeClass(classes[3]);}
- if($this.hasClass(classes[4])){$this.removeClass(classes[4]);}
-
- /* css flexbox fix, detect/set max-height */
- mCustomScrollBox.css("max-height","none");
- if(mCustomScrollBox.height()!==$this.height()){mCustomScrollBox.css("max-height",$this.height());}
-
- _expandContentHorizontally.call(this); /* expand content horizontally */
-
- if(o.axis!=="y" && !o.advanced.autoExpandHorizontalScroll){
- mCSB_container.css("width",_contentWidth(mCSB_container));
- }
-
- d.overflowed=_overflowed.call(this); /* determine if scrolling is required */
-
- _scrollbarVisibility.call(this); /* show/hide scrollbar(s) */
-
- /* auto-adjust scrollbar dragger length analogous to content */
- if(o.autoDraggerLength){_setDraggerLength.call(this);}
-
- _scrollRatio.call(this); /* calculate and store scrollbar to content ratio */
-
- _bindEvents.call(this); /* bind scrollbar events */
-
- /* reset scrolling position and/or events */
- var to=[Math.abs(mCSB_container[0].offsetTop),Math.abs(mCSB_container[0].offsetLeft)];
- if(o.axis!=="x"){ /* y/yx axis */
- if(!d.overflowed[0]){ /* y scrolling is not required */
- _resetContentPosition.call(this); /* reset content position */
- if(o.axis==="y"){
- _unbindEvents.call(this);
- }else if(o.axis==="yx" && d.overflowed[1]){
- _scrollTo($this,to[1].toString(),{dir:"x",dur:0,overwrite:"none"});
- }
- }else if(mCSB_dragger[0].height()>mCSB_dragger[0].parent().height()){
- _resetContentPosition.call(this); /* reset content position */
- }else{ /* y scrolling is required */
- _scrollTo($this,to[0].toString(),{dir:"y",dur:0,overwrite:"none"});
- d.contentReset.y=null;
- }
- }
- if(o.axis!=="y"){ /* x/yx axis */
- if(!d.overflowed[1]){ /* x scrolling is not required */
- _resetContentPosition.call(this); /* reset content position */
- if(o.axis==="x"){
- _unbindEvents.call(this);
- }else if(o.axis==="yx" && d.overflowed[0]){
- _scrollTo($this,to[0].toString(),{dir:"y",dur:0,overwrite:"none"});
- }
- }else if(mCSB_dragger[1].width()>mCSB_dragger[1].parent().width()){
- _resetContentPosition.call(this); /* reset content position */
- }else{ /* x scrolling is required */
- _scrollTo($this,to[1].toString(),{dir:"x",dur:0,overwrite:"none"});
- d.contentReset.x=null;
- }
- }
-
- /* callbacks: onImageLoad, onSelectorChange, onUpdate */
- if(cb && d){
- if(cb===2 && o.callbacks.onImageLoad && typeof o.callbacks.onImageLoad==="function"){
- o.callbacks.onImageLoad.call(this);
- }else if(cb===3 && o.callbacks.onSelectorChange && typeof o.callbacks.onSelectorChange==="function"){
- o.callbacks.onSelectorChange.call(this);
- }else if(o.callbacks.onUpdate && typeof o.callbacks.onUpdate==="function"){
- o.callbacks.onUpdate.call(this);
- }
- }
-
- _autoUpdate.call(this); /* initialize automatic updating (for dynamic content, fluid layouts etc.) */
-
- }
-
- });
-
- },
- /* ---------------------------------------- */
-
-
-
- /*
- plugin scrollTo method
- triggers a scrolling event to a specific value
- ----------------------------------------
- usage: $(selector).mCustomScrollbar("scrollTo",value,options);
- */
-
- scrollTo:function(val,options){
-
- /* prevent silly things like $(selector).mCustomScrollbar("scrollTo",undefined); */
- if(typeof val=="undefined" || val==null){return;}
-
- var selector=_selector.call(this); /* validate selector */
-
- return $(selector).each(function(){
-
- var $this=$(this);
-
- if($this.data(pluginPfx)){ /* check if plugin has initialized */
-
- var d=$this.data(pluginPfx),o=d.opt,
- /* method default options */
- methodDefaults={
- trigger:"external", /* method is by default triggered externally (e.g. from other scripts) */
- scrollInertia:o.scrollInertia, /* scrolling inertia (animation duration) */
- scrollEasing:"mcsEaseInOut", /* animation easing */
- moveDragger:false, /* move dragger instead of content */
- timeout:60, /* scroll-to delay */
- callbacks:true, /* enable/disable callbacks */
- onStart:true,
- onUpdate:true,
- onComplete:true
- },
- methodOptions=$.extend(true,{},methodDefaults,options),
- to=_arr.call(this,val),dur=methodOptions.scrollInertia>0 && methodOptions.scrollInertia<17 ? 17 : methodOptions.scrollInertia;
-
- /* translate yx values to actual scroll-to positions */
- to[0]=_to.call(this,to[0],"y");
- to[1]=_to.call(this,to[1],"x");
-
- /*
- check if scroll-to value moves the dragger instead of content.
- Only pixel values apply on dragger (e.g. 100, "100px", "-=100" etc.)
- */
- if(methodOptions.moveDragger){
- to[0]*=d.scrollRatio.y;
- to[1]*=d.scrollRatio.x;
- }
-
- methodOptions.dur=_isTabHidden() ? 0 : dur; //skip animations if browser tab is hidden
-
- setTimeout(function(){
- /* do the scrolling */
- if(to[0]!==null && typeof to[0]!=="undefined" && o.axis!=="x" && d.overflowed[0]){ /* scroll y */
- methodOptions.dir="y";
- methodOptions.overwrite="all";
- _scrollTo($this,to[0].toString(),methodOptions);
- }
- if(to[1]!==null && typeof to[1]!=="undefined" && o.axis!=="y" && d.overflowed[1]){ /* scroll x */
- methodOptions.dir="x";
- methodOptions.overwrite="none";
- _scrollTo($this,to[1].toString(),methodOptions);
- }
- },methodOptions.timeout);
-
- }
-
- });
-
- },
- /* ---------------------------------------- */
-
-
-
- /*
- plugin stop method
- stops scrolling animation
- ----------------------------------------
- usage: $(selector).mCustomScrollbar("stop");
- */
- stop:function(){
-
- var selector=_selector.call(this); /* validate selector */
-
- return $(selector).each(function(){
-
- var $this=$(this);
-
- if($this.data(pluginPfx)){ /* check if plugin has initialized */
-
- _stop($this);
-
- }
-
- });
-
- },
- /* ---------------------------------------- */
-
-
-
- /*
- plugin disable method
- temporarily disables the scrollbar(s)
- ----------------------------------------
- usage: $(selector).mCustomScrollbar("disable",reset);
- reset (boolean): resets content position to 0
- */
- disable:function(r){
-
- var selector=_selector.call(this); /* validate selector */
-
- return $(selector).each(function(){
-
- var $this=$(this);
-
- if($this.data(pluginPfx)){ /* check if plugin has initialized */
-
- var d=$this.data(pluginPfx);
-
- _autoUpdate.call(this,"remove"); /* remove automatic updating */
-
- _unbindEvents.call(this); /* unbind events */
-
- if(r){_resetContentPosition.call(this);} /* reset content position */
-
- _scrollbarVisibility.call(this,true); /* show/hide scrollbar(s) */
-
- $this.addClass(classes[3]); /* add disable class */
-
- }
-
- });
-
- },
- /* ---------------------------------------- */
-
-
-
- /*
- plugin destroy method
- completely removes the scrollbar(s) and returns the element to its original state
- ----------------------------------------
- usage: $(selector).mCustomScrollbar("destroy");
- */
- destroy:function(){
-
- var selector=_selector.call(this); /* validate selector */
-
- return $(selector).each(function(){
-
- var $this=$(this);
-
- if($this.data(pluginPfx)){ /* check if plugin has initialized */
-
- var d=$this.data(pluginPfx),o=d.opt,
- mCustomScrollBox=$("#mCSB_"+d.idx),
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- scrollbar=$(".mCSB_"+d.idx+"_scrollbar");
-
- if(o.live){removeLiveTimers(o.liveSelector || $(selector).selector);} /* remove live timers */
-
- _autoUpdate.call(this,"remove"); /* remove automatic updating */
-
- _unbindEvents.call(this); /* unbind events */
-
- _resetContentPosition.call(this); /* reset content position */
-
- $this.removeData(pluginPfx); /* remove plugin data object */
-
- _delete(this,"mcs"); /* delete callbacks object */
-
- /* remove plugin markup */
- scrollbar.remove(); /* remove scrollbar(s) first (those can be either inside or outside plugin's inner wrapper) */
- mCSB_container.find("img."+classes[2]).removeClass(classes[2]); /* remove loaded images flag */
- mCustomScrollBox.replaceWith(mCSB_container.contents()); /* replace plugin's inner wrapper with the original content */
- /* remove plugin classes from the element and add destroy class */
- $this.removeClass(pluginNS+" _"+pluginPfx+"_"+d.idx+" "+classes[6]+" "+classes[7]+" "+classes[5]+" "+classes[3]).addClass(classes[4]);
-
- }
-
- });
-
- }
- /* ---------------------------------------- */
-
- },
-
-
-
-
-
- /*
- ----------------------------------------
- FUNCTIONS
- ----------------------------------------
- */
-
- /* validates selector (if selector is invalid or undefined uses the default one) */
- _selector=function(){
- return (typeof $(this)!=="object" || $(this).length<1) ? defaultSelector : this;
- },
- /* -------------------- */
-
-
- /* changes options according to theme */
- _theme=function(obj){
- var fixedSizeScrollbarThemes=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],
- nonExpandedScrollbarThemes=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],
- disabledScrollButtonsThemes=["minimal","minimal-dark"],
- enabledAutoHideScrollbarThemes=["minimal","minimal-dark"],
- scrollbarPositionOutsideThemes=["minimal","minimal-dark"];
- obj.autoDraggerLength=$.inArray(obj.theme,fixedSizeScrollbarThemes) > -1 ? false : obj.autoDraggerLength;
- obj.autoExpandScrollbar=$.inArray(obj.theme,nonExpandedScrollbarThemes) > -1 ? false : obj.autoExpandScrollbar;
- obj.scrollButtons.enable=$.inArray(obj.theme,disabledScrollButtonsThemes) > -1 ? false : obj.scrollButtons.enable;
- obj.autoHideScrollbar=$.inArray(obj.theme,enabledAutoHideScrollbarThemes) > -1 ? true : obj.autoHideScrollbar;
- obj.scrollbarPosition=$.inArray(obj.theme,scrollbarPositionOutsideThemes) > -1 ? "outside" : obj.scrollbarPosition;
- },
- /* -------------------- */
-
-
- /* live option timers removal */
- removeLiveTimers=function(selector){
- if(liveTimers[selector]){
- clearTimeout(liveTimers[selector]);
- _delete(liveTimers,selector);
- }
- },
- /* -------------------- */
-
-
- /* normalizes axis option to valid values: "y", "x", "yx" */
- _findAxis=function(val){
- return (val==="yx" || val==="xy" || val==="auto") ? "yx" : (val==="x" || val==="horizontal") ? "x" : "y";
- },
- /* -------------------- */
-
-
- /* normalizes scrollButtons.scrollType option to valid values: "stepless", "stepped" */
- _findScrollButtonsType=function(val){
- return (val==="stepped" || val==="pixels" || val==="step" || val==="click") ? "stepped" : "stepless";
- },
- /* -------------------- */
-
-
- /* generates plugin markup */
- _pluginMarkup=function(){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- expandClass=o.autoExpandScrollbar ? " "+classes[1]+"_expand" : "",
- scrollbar=["",""],
- wrapperClass=o.axis==="yx" ? "mCSB_vertical_horizontal" : o.axis==="x" ? "mCSB_horizontal" : "mCSB_vertical",
- scrollbars=o.axis==="yx" ? scrollbar[0]+scrollbar[1] : o.axis==="x" ? scrollbar[1] : scrollbar[0],
- contentWrapper=o.axis==="yx" ? "" : "",
- autoHideClass=o.autoHideScrollbar ? " "+classes[6] : "",
- scrollbarDirClass=(o.axis!=="x" && d.langDir==="rtl") ? " "+classes[7] : "";
- if(o.setWidth){$this.css("width",o.setWidth);} /* set element width */
- if(o.setHeight){$this.css("height",o.setHeight);} /* set element height */
- o.setLeft=(o.axis!=="y" && d.langDir==="rtl") ? "989999px" : o.setLeft; /* adjust left position for rtl direction */
- $this.addClass(pluginNS+" _"+pluginPfx+"_"+d.idx+autoHideClass+scrollbarDirClass).wrapInner("");
- var mCustomScrollBox=$("#mCSB_"+d.idx),
- mCSB_container=$("#mCSB_"+d.idx+"_container");
- if(o.axis!=="y" && !o.advanced.autoExpandHorizontalScroll){
- mCSB_container.css("width",_contentWidth(mCSB_container));
- }
- if(o.scrollbarPosition==="outside"){
- if($this.css("position")==="static"){ /* requires elements with non-static position */
- $this.css("position","relative");
- }
- $this.css("overflow","visible");
- mCustomScrollBox.addClass("mCSB_outside").after(scrollbars);
- }else{
- mCustomScrollBox.addClass("mCSB_inside").append(scrollbars);
- mCSB_container.wrap(contentWrapper);
- }
- _scrollButtons.call(this); /* add scrollbar buttons */
- /* minimum dragger length */
- var mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")];
- mCSB_dragger[0].css("min-height",mCSB_dragger[0].height());
- mCSB_dragger[1].css("min-width",mCSB_dragger[1].width());
- },
- /* -------------------- */
-
-
- /* calculates content width */
- _contentWidth=function(el){
- var val=[el[0].scrollWidth,Math.max.apply(Math,el.children().map(function(){return $(this).outerWidth(true);}).get())],w=el.parent().width();
- return val[0]>w ? val[0] : val[1]>w ? val[1] : "100%";
- },
- /* -------------------- */
-
-
- /* expands content horizontally */
- _expandContentHorizontally=function(){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- mCSB_container=$("#mCSB_"+d.idx+"_container");
- if(o.advanced.autoExpandHorizontalScroll && o.axis!=="y"){
- /* calculate scrollWidth */
- mCSB_container.css({"width":"auto","min-width":0,"overflow-x":"scroll"});
- var w=Math.ceil(mCSB_container[0].scrollWidth);
- if(o.advanced.autoExpandHorizontalScroll===3 || (o.advanced.autoExpandHorizontalScroll!==2 && w>mCSB_container.parent().width())){
- mCSB_container.css({"width":w,"min-width":"100%","overflow-x":"inherit"});
- }else{
- /*
- wrap content with an infinite width div and set its position to absolute and width to auto.
- Setting width to auto before calculating the actual width is important!
- We must let the browser set the width as browser zoom values are impossible to calculate.
- */
- mCSB_container.css({"overflow-x":"inherit","position":"absolute"})
- .wrap("")
- .css({ /* set actual width, original position and un-wrap */
- /*
- get the exact width (with decimals) and then round-up.
- Using jquery outerWidth() will round the width value which will mess up with inner elements that have non-integer width
- */
- "width":(Math.ceil(mCSB_container[0].getBoundingClientRect().right+0.4)-Math.floor(mCSB_container[0].getBoundingClientRect().left)),
- "min-width":"100%",
- "position":"relative"
- }).unwrap();
- }
- }
- },
- /* -------------------- */
-
-
- /* adds scrollbar buttons */
- _scrollButtons=function(){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- mCSB_scrollTools=$(".mCSB_"+d.idx+"_scrollbar:first"),
- tabindex=!_isNumeric(o.scrollButtons.tabindex) ? "" : "tabindex='"+o.scrollButtons.tabindex+"'",
- btnHTML=[
- "",
- "",
- "",
- ""
- ],
- btn=[(o.axis==="x" ? btnHTML[2] : btnHTML[0]),(o.axis==="x" ? btnHTML[3] : btnHTML[1]),btnHTML[2],btnHTML[3]];
- if(o.scrollButtons.enable){
- mCSB_scrollTools.prepend(btn[0]).append(btn[1]).next(".mCSB_scrollTools").prepend(btn[2]).append(btn[3]);
- }
- },
- /* -------------------- */
-
-
- /* auto-adjusts scrollbar dragger length */
- _setDraggerLength=function(){
- var $this=$(this),d=$this.data(pluginPfx),
- mCustomScrollBox=$("#mCSB_"+d.idx),
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")],
- ratio=[mCustomScrollBox.height()/mCSB_container.outerHeight(false),mCustomScrollBox.width()/mCSB_container.outerWidth(false)],
- l=[
- parseInt(mCSB_dragger[0].css("min-height")),Math.round(ratio[0]*mCSB_dragger[0].parent().height()),
- parseInt(mCSB_dragger[1].css("min-width")),Math.round(ratio[1]*mCSB_dragger[1].parent().width())
- ],
- h=oldIE && (l[1]contentHeight){contentHeight=h;}
- if(w>contentWidth){contentWidth=w;}
- return [contentHeight>mCustomScrollBox.height(),contentWidth>mCustomScrollBox.width()];
- },
- /* -------------------- */
-
-
- /* resets content position to 0 */
- _resetContentPosition=function(){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- mCustomScrollBox=$("#mCSB_"+d.idx),
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")];
- _stop($this); /* stop any current scrolling before resetting */
- if((o.axis!=="x" && !d.overflowed[0]) || (o.axis==="y" && d.overflowed[0])){ /* reset y */
- mCSB_dragger[0].add(mCSB_container).css("top",0);
- _scrollTo($this,"_resetY");
- }
- if((o.axis!=="y" && !d.overflowed[1]) || (o.axis==="x" && d.overflowed[1])){ /* reset x */
- var cx=dx=0;
- if(d.langDir==="rtl"){ /* adjust left position for rtl direction */
- cx=mCustomScrollBox.width()-mCSB_container.outerWidth(false);
- dx=Math.abs(cx/d.scrollRatio.x);
- }
- mCSB_container.css("left",cx);
- mCSB_dragger[1].css("left",dx);
- _scrollTo($this,"_resetX");
- }
- },
- /* -------------------- */
-
-
- /* binds scrollbar events */
- _bindEvents=function(){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt;
- if(!d.bindEvents){ /* check if events are already bound */
- _draggable.call(this);
- if(o.contentTouchScroll){_contentDraggable.call(this);}
- _selectable.call(this);
- if(o.mouseWheel.enable){ /* bind mousewheel fn when plugin is available */
- function _mwt(){
- mousewheelTimeout=setTimeout(function(){
- if(!$.event.special.mousewheel){
- _mwt();
- }else{
- clearTimeout(mousewheelTimeout);
- _mousewheel.call($this[0]);
- }
- },100);
- }
- var mousewheelTimeout;
- _mwt();
- }
- _draggerRail.call(this);
- _wrapperScroll.call(this);
- if(o.advanced.autoScrollOnFocus){_focus.call(this);}
- if(o.scrollButtons.enable){_buttons.call(this);}
- if(o.keyboard.enable){_keyboard.call(this);}
- d.bindEvents=true;
- }
- },
- /* -------------------- */
-
-
- /* unbinds scrollbar events */
- _unbindEvents=function(){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- namespace=pluginPfx+"_"+d.idx,
- sb=".mCSB_"+d.idx+"_scrollbar",
- sel=$("#mCSB_"+d.idx+",#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,"+sb+" ."+classes[12]+",#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal,"+sb+">a"),
- mCSB_container=$("#mCSB_"+d.idx+"_container");
- if(o.advanced.releaseDraggableSelectors){sel.add($(o.advanced.releaseDraggableSelectors));}
- if(o.advanced.extraDraggableSelectors){sel.add($(o.advanced.extraDraggableSelectors));}
- if(d.bindEvents){ /* check if events are bound */
- /* unbind namespaced events from document/selectors */
- $(document).add($(!_canAccessIFrame() || top.document)).unbind("."+namespace);
- sel.each(function(){
- $(this).unbind("."+namespace);
- });
- /* clear and delete timeouts/objects */
- clearTimeout($this[0]._focusTimeout); _delete($this[0],"_focusTimeout");
- clearTimeout(d.sequential.step); _delete(d.sequential,"step");
- clearTimeout(mCSB_container[0].onCompleteTimeout); _delete(mCSB_container[0],"onCompleteTimeout");
- d.bindEvents=false;
- }
- },
- /* -------------------- */
-
-
- /* toggles scrollbar visibility */
- _scrollbarVisibility=function(disabled){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- contentWrapper=$("#mCSB_"+d.idx+"_container_wrapper"),
- content=contentWrapper.length ? contentWrapper : $("#mCSB_"+d.idx+"_container"),
- scrollbar=[$("#mCSB_"+d.idx+"_scrollbar_vertical"),$("#mCSB_"+d.idx+"_scrollbar_horizontal")],
- mCSB_dragger=[scrollbar[0].find(".mCSB_dragger"),scrollbar[1].find(".mCSB_dragger")];
- if(o.axis!=="x"){
- if(d.overflowed[0] && !disabled){
- scrollbar[0].add(mCSB_dragger[0]).add(scrollbar[0].children("a")).css("display","block");
- content.removeClass(classes[8]+" "+classes[10]);
- }else{
- if(o.alwaysShowScrollbar){
- if(o.alwaysShowScrollbar!==2){mCSB_dragger[0].css("display","none");}
- content.removeClass(classes[10]);
- }else{
- scrollbar[0].css("display","none");
- content.addClass(classes[10]);
- }
- content.addClass(classes[8]);
- }
- }
- if(o.axis!=="y"){
- if(d.overflowed[1] && !disabled){
- scrollbar[1].add(mCSB_dragger[1]).add(scrollbar[1].children("a")).css("display","block");
- content.removeClass(classes[9]+" "+classes[11]);
- }else{
- if(o.alwaysShowScrollbar){
- if(o.alwaysShowScrollbar!==2){mCSB_dragger[1].css("display","none");}
- content.removeClass(classes[11]);
- }else{
- scrollbar[1].css("display","none");
- content.addClass(classes[11]);
- }
- content.addClass(classes[9]);
- }
- }
- if(!d.overflowed[0] && !d.overflowed[1]){
- $this.addClass(classes[5]);
- }else{
- $this.removeClass(classes[5]);
- }
- },
- /* -------------------- */
-
-
- /* returns input coordinates of pointer, touch and mouse events (relative to document) */
- _coordinates=function(e){
- var t=e.type,o=e.target.ownerDocument!==document && frameElement!==null ? [$(frameElement).offset().top,$(frameElement).offset().left] : null,
- io=_canAccessIFrame() && e.target.ownerDocument!==top.document && frameElement!==null ? [$(e.view.frameElement).offset().top,$(e.view.frameElement).offset().left] : [0,0];
- switch(t){
- case "pointerdown": case "MSPointerDown": case "pointermove": case "MSPointerMove": case "pointerup": case "MSPointerUp":
- return o ? [e.originalEvent.pageY-o[0]+io[0],e.originalEvent.pageX-o[1]+io[1],false] : [e.originalEvent.pageY,e.originalEvent.pageX,false];
- break;
- case "touchstart": case "touchmove": case "touchend":
- var touch=e.originalEvent.touches[0] || e.originalEvent.changedTouches[0],
- touches=e.originalEvent.touches.length || e.originalEvent.changedTouches.length;
- return e.target.ownerDocument!==document ? [touch.screenY,touch.screenX,touches>1] : [touch.pageY,touch.pageX,touches>1];
- break;
- default:
- return o ? [e.pageY-o[0]+io[0],e.pageX-o[1]+io[1],false] : [e.pageY,e.pageX,false];
- }
- },
- /* -------------------- */
-
-
- /*
- SCROLLBAR DRAG EVENTS
- scrolls content via scrollbar dragging
- */
- _draggable=function(){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- namespace=pluginPfx+"_"+d.idx,
- draggerId=["mCSB_"+d.idx+"_dragger_vertical","mCSB_"+d.idx+"_dragger_horizontal"],
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- mCSB_dragger=$("#"+draggerId[0]+",#"+draggerId[1]),
- draggable,dragY,dragX,
- rds=o.advanced.releaseDraggableSelectors ? mCSB_dragger.add($(o.advanced.releaseDraggableSelectors)) : mCSB_dragger,
- eds=o.advanced.extraDraggableSelectors ? $(!_canAccessIFrame() || top.document).add($(o.advanced.extraDraggableSelectors)) : $(!_canAccessIFrame() || top.document);
- mCSB_dragger.bind("contextmenu."+namespace,function(e){
- e.preventDefault(); //prevent right click
- }).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){
- e.stopImmediatePropagation();
- e.preventDefault();
- if(!_mouseBtnLeft(e)){return;} /* left mouse button only */
- touchActive=true;
- if(oldIE){document.onselectstart=function(){return false;}} /* disable text selection for IE < 9 */
- _iframe.call(mCSB_container,false); /* enable scrollbar dragging over iframes by disabling their events */
- _stop($this);
- draggable=$(this);
- var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left,
- h=draggable.height()+offset.top,w=draggable.width()+offset.left;
- if(y0 && x0){
- dragY=y;
- dragX=x;
- }
- _onDragClasses(draggable,"active",o.autoExpandScrollbar);
- }).bind("touchmove."+namespace,function(e){
- e.stopImmediatePropagation();
- e.preventDefault();
- var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left;
- _drag(dragY,dragX,y,x);
- });
- $(document).add(eds).bind("mousemove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace,function(e){
- if(draggable){
- var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left;
- if(dragY===y && dragX===x){return;} /* has it really moved? */
- _drag(dragY,dragX,y,x);
- }
- }).add(rds).bind("mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){
- if(draggable){
- _onDragClasses(draggable,"active",o.autoExpandScrollbar);
- draggable=null;
- }
- touchActive=false;
- if(oldIE){document.onselectstart=null;} /* enable text selection for IE < 9 */
- _iframe.call(mCSB_container,true); /* enable iframes events */
- });
- function _drag(dragY,dragX,y,x){
- mCSB_container[0].idleTimer=o.scrollInertia<233 ? 250 : 0;
- if(draggable.attr("id")===draggerId[1]){
- var dir="x",to=((draggable[0].offsetLeft-dragX)+x)*d.scrollRatio.x;
- }else{
- var dir="y",to=((draggable[0].offsetTop-dragY)+y)*d.scrollRatio.y;
- }
- _scrollTo($this,to.toString(),{dir:dir,drag:true});
- }
- },
- /* -------------------- */
-
-
- /*
- TOUCH SWIPE EVENTS
- scrolls content via touch swipe
- Emulates the native touch-swipe scrolling with momentum found in iOS, Android and WP devices
- */
- _contentDraggable=function(){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- namespace=pluginPfx+"_"+d.idx,
- mCustomScrollBox=$("#mCSB_"+d.idx),
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")],
- draggable,dragY,dragX,touchStartY,touchStartX,touchMoveY=[],touchMoveX=[],startTime,runningTime,endTime,distance,speed,amount,
- durA=0,durB,overwrite=o.axis==="yx" ? "none" : "all",touchIntent=[],touchDrag,docDrag,
- iframe=mCSB_container.find("iframe"),
- events=[
- "touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace, //start
- "touchmove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace, //move
- "touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace //end
- ],
- touchAction=document.body.style.touchAction!==undefined && document.body.style.touchAction!=="";
- mCSB_container.bind(events[0],function(e){
- _onTouchstart(e);
- }).bind(events[1],function(e){
- _onTouchmove(e);
- });
- mCustomScrollBox.bind(events[0],function(e){
- _onTouchstart2(e);
- }).bind(events[2],function(e){
- _onTouchend(e);
- });
- if(iframe.length){
- iframe.each(function(){
- $(this).bind("load",function(){
- /* bind events on accessible iframes */
- if(_canAccessIFrame(this)){
- $(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){
- _onTouchstart(e);
- _onTouchstart2(e);
- }).bind(events[1],function(e){
- _onTouchmove(e);
- }).bind(events[2],function(e){
- _onTouchend(e);
- });
- }
- });
- });
- }
- function _onTouchstart(e){
- if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){touchable=0; return;}
- touchable=1; touchDrag=0; docDrag=0; draggable=1;
- $this.removeClass("mCS_touch_action");
- var offset=mCSB_container.offset();
- dragY=_coordinates(e)[0]-offset.top;
- dragX=_coordinates(e)[1]-offset.left;
- touchIntent=[_coordinates(e)[0],_coordinates(e)[1]];
- }
- function _onTouchmove(e){
- if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){return;}
- if(!o.documentTouchScroll){e.preventDefault();}
- e.stopImmediatePropagation();
- if(docDrag && !touchDrag){return;}
- if(draggable){
- runningTime=_getTime();
- var offset=mCustomScrollBox.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left,
- easing="mcsLinearOut";
- touchMoveY.push(y);
- touchMoveX.push(x);
- touchIntent[2]=Math.abs(_coordinates(e)[0]-touchIntent[0]); touchIntent[3]=Math.abs(_coordinates(e)[1]-touchIntent[1]);
- if(d.overflowed[0]){
- var limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(),
- prevent=((dragY-y)>0 && (y-dragY)>-(limit*d.scrollRatio.y) && (touchIntent[3]*20 && (x-dragX)>-(limitX*d.scrollRatio.x) && (touchIntent[2]*230){return;}
- speed=1000/(endTime-startTime);
- var easing="mcsEaseOut",slow=speed<2.5,
- diff=slow ? [touchMoveY[touchMoveY.length-2],touchMoveX[touchMoveX.length-2]] : [0,0];
- distance=slow ? [(y-diff[0]),(x-diff[1])] : [y-touchStartY,x-touchStartX];
- var absDistance=[Math.abs(distance[0]),Math.abs(distance[1])];
- speed=slow ? [Math.abs(distance[0]/4),Math.abs(distance[1]/4)] : [speed,speed];
- var a=[
- Math.abs(mCSB_container[0].offsetTop)-(distance[0]*_m((absDistance[0]/speed[0]),speed[0])),
- Math.abs(mCSB_container[0].offsetLeft)-(distance[1]*_m((absDistance[1]/speed[1]),speed[1]))
- ];
- amount=o.axis==="yx" ? [a[0],a[1]] : o.axis==="x" ? [null,a[1]] : [a[0],null];
- durB=[(absDistance[0]*4)+o.scrollInertia,(absDistance[1]*4)+o.scrollInertia];
- var md=parseInt(o.contentTouchScroll) || 0; /* absolute minimum distance required */
- amount[0]=absDistance[0]>md ? amount[0] : 0;
- amount[1]=absDistance[1]>md ? amount[1] : 0;
- if(d.overflowed[0]){_drag(amount[0],durB[0],easing,"y",overwrite,false);}
- if(d.overflowed[1]){_drag(amount[1],durB[1],easing,"x",overwrite,false);}
- }
- function _m(ds,s){
- var r=[s*1.5,s*2,s/1.5,s/2];
- if(ds>90){
- return s>4 ? r[0] : r[3];
- }else if(ds>60){
- return s>3 ? r[3] : r[2];
- }else if(ds>30){
- return s>8 ? r[1] : s>6 ? r[0] : s>4 ? s : r[2];
- }else{
- return s>8 ? s : r[3];
- }
- }
- function _drag(amount,dur,easing,dir,overwrite,drag){
- if(!amount){return;}
- _scrollTo($this,amount.toString(),{dur:dur,scrollEasing:easing,dir:dir,overwrite:overwrite,drag:drag});
- }
- },
- /* -------------------- */
-
-
- /*
- SELECT TEXT EVENTS
- scrolls content when text is selected
- */
- _selectable=function(){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential,
- namespace=pluginPfx+"_"+d.idx,
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- wrapper=mCSB_container.parent(),
- action;
- mCSB_container.bind("mousedown."+namespace,function(e){
- if(touchable){return;}
- if(!action){action=1; touchActive=true;}
- }).add(document).bind("mousemove."+namespace,function(e){
- if(!touchable && action && _sel()){
- var offset=mCSB_container.offset(),
- y=_coordinates(e)[0]-offset.top+mCSB_container[0].offsetTop,x=_coordinates(e)[1]-offset.left+mCSB_container[0].offsetLeft;
- if(y>0 && y0 && xwrapper.height()){
- _seq("on",40);
- }
- }
- if(o.axis!=="y" && d.overflowed[1]){
- if(x<0){
- _seq("on",37);
- }else if(x>wrapper.width()){
- _seq("on",39);
- }
- }
- }
- }
- }).bind("mouseup."+namespace+" dragend."+namespace,function(e){
- if(touchable){return;}
- if(action){action=0; _seq("off",null);}
- touchActive=false;
- });
- function _sel(){
- return window.getSelection ? window.getSelection().toString() :
- document.selection && document.selection.type!="Control" ? document.selection.createRange().text : 0;
- }
- function _seq(a,c,s){
- seq.type=s && action ? "stepped" : "stepless";
- seq.scrollAmount=10;
- _sequentialScroll($this,a,c,"mcsLinearOut",s ? 60 : null);
- }
- },
- /* -------------------- */
-
-
- /*
- MOUSE WHEEL EVENT
- scrolls content via mouse-wheel
- via mouse-wheel plugin (https://github.com/brandonaaron/jquery-mousewheel)
- */
- _mousewheel=function(){
- if(!$(this).data(pluginPfx)){return;} /* Check if the scrollbar is ready to use mousewheel events (issue: #185) */
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- namespace=pluginPfx+"_"+d.idx,
- mCustomScrollBox=$("#mCSB_"+d.idx),
- mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")],
- iframe=$("#mCSB_"+d.idx+"_container").find("iframe");
- if(iframe.length){
- iframe.each(function(){
- $(this).bind("load",function(){
- /* bind events on accessible iframes */
- if(_canAccessIFrame(this)){
- $(this.contentDocument || this.contentWindow.document).bind("mousewheel."+namespace,function(e,delta){
- _onMousewheel(e,delta);
- });
- }
- });
- });
- }
- mCustomScrollBox.bind("mousewheel."+namespace,function(e,delta){
- _onMousewheel(e,delta);
- });
- function _onMousewheel(e,delta){
- _stop($this);
- if(_disableMousewheel($this,e.target)){return;} /* disables mouse-wheel when hovering specific elements */
- var deltaFactor=o.mouseWheel.deltaFactor!=="auto" ? parseInt(o.mouseWheel.deltaFactor) : (oldIE && e.deltaFactor<100) ? 100 : e.deltaFactor || 100,
- dur=o.scrollInertia;
- if(o.axis==="x" || o.mouseWheel.axis==="x"){
- var dir="x",
- px=[Math.round(deltaFactor*d.scrollRatio.x),parseInt(o.mouseWheel.scrollAmount)],
- amount=o.mouseWheel.scrollAmount!=="auto" ? px[1] : px[0]>=mCustomScrollBox.width() ? mCustomScrollBox.width()*0.9 : px[0],
- contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetLeft),
- draggerPos=mCSB_dragger[1][0].offsetLeft,
- limit=mCSB_dragger[1].parent().width()-mCSB_dragger[1].width(),
- dlt=o.mouseWheel.axis==="y" ? (e.deltaY || delta) : e.deltaX;
- }else{
- var dir="y",
- px=[Math.round(deltaFactor*d.scrollRatio.y),parseInt(o.mouseWheel.scrollAmount)],
- amount=o.mouseWheel.scrollAmount!=="auto" ? px[1] : px[0]>=mCustomScrollBox.height() ? mCustomScrollBox.height()*0.9 : px[0],
- contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetTop),
- draggerPos=mCSB_dragger[0][0].offsetTop,
- limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(),
- dlt=e.deltaY || delta;
- }
- if((dir==="y" && !d.overflowed[0]) || (dir==="x" && !d.overflowed[1])){return;}
- if(o.mouseWheel.invert || e.webkitDirectionInvertedFromDevice){dlt=-dlt;}
- if(o.mouseWheel.normalizeDelta){dlt=dlt<0 ? -1 : 1;}
- if((dlt>0 && draggerPos!==0) || (dlt<0 && draggerPos!==limit) || o.mouseWheel.preventDefault){
- e.stopImmediatePropagation();
- e.preventDefault();
- }
- if(e.deltaFactor<5 && !o.mouseWheel.normalizeDelta){
- //very low deltaFactor values mean some kind of delta acceleration (e.g. osx trackpad), so adjusting scrolling accordingly
- amount=e.deltaFactor; dur=17;
- }
- _scrollTo($this,(contentPos-(dlt*amount)).toString(),{dir:dir,dur:dur});
- }
- },
- /* -------------------- */
-
-
- /* checks if iframe can be accessed */
- _canAccessIFrameCache=new Object(),
- _canAccessIFrame=function(iframe){
- var result=false,cacheKey=false,html=null;
- if(iframe===undefined){
- cacheKey="#empty";
- }else if($(iframe).attr("id")!==undefined){
- cacheKey=$(iframe).attr("id");
- }
- if(cacheKey!==false && _canAccessIFrameCache[cacheKey]!==undefined){
- return _canAccessIFrameCache[cacheKey];
- }
- if(!iframe){
- try{
- var doc=top.document;
- html=doc.body.innerHTML;
- }catch(err){/* do nothing */}
- result=(html!==null);
- }else{
- try{
- var doc=iframe.contentDocument || iframe.contentWindow.document;
- html=doc.body.innerHTML;
- }catch(err){/* do nothing */}
- result=(html!==null);
- }
- if(cacheKey!==false){_canAccessIFrameCache[cacheKey]=result;}
- return result;
- },
- /* -------------------- */
-
-
- /* switches iframe's pointer-events property (drag, mousewheel etc. over cross-domain iframes) */
- _iframe=function(evt){
- var el=this.find("iframe");
- if(!el.length){return;} /* check if content contains iframes */
- var val=!evt ? "none" : "auto";
- el.css("pointer-events",val); /* for IE11, iframe's display property should not be "block" */
- },
- /* -------------------- */
-
-
- /* disables mouse-wheel when hovering specific elements like select, datalist etc. */
- _disableMousewheel=function(el,target){
- var tag=target.nodeName.toLowerCase(),
- tags=el.data(pluginPfx).opt.mouseWheel.disableOver,
- /* elements that require focus */
- focusTags=["select","textarea"];
- return $.inArray(tag,tags) > -1 && !($.inArray(tag,focusTags) > -1 && !$(target).is(":focus"));
- },
- /* -------------------- */
-
-
- /*
- DRAGGER RAIL CLICK EVENT
- scrolls content via dragger rail
- */
- _draggerRail=function(){
- var $this=$(this),d=$this.data(pluginPfx),
- namespace=pluginPfx+"_"+d.idx,
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- wrapper=mCSB_container.parent(),
- mCSB_draggerContainer=$(".mCSB_"+d.idx+"_scrollbar ."+classes[12]),
- clickable;
- mCSB_draggerContainer.bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){
- touchActive=true;
- if(!$(e.target).hasClass("mCSB_dragger")){clickable=1;}
- }).bind("touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){
- touchActive=false;
- }).bind("click."+namespace,function(e){
- if(!clickable){return;}
- clickable=0;
- if($(e.target).hasClass(classes[12]) || $(e.target).hasClass("mCSB_draggerRail")){
- _stop($this);
- var el=$(this),mCSB_dragger=el.find(".mCSB_dragger");
- if(el.parent(".mCSB_scrollTools_horizontal").length>0){
- if(!d.overflowed[1]){return;}
- var dir="x",
- clickDir=e.pageX>mCSB_dragger.offset().left ? -1 : 1,
- to=Math.abs(mCSB_container[0].offsetLeft)-(clickDir*(wrapper.width()*0.9));
- }else{
- if(!d.overflowed[0]){return;}
- var dir="y",
- clickDir=e.pageY>mCSB_dragger.offset().top ? -1 : 1,
- to=Math.abs(mCSB_container[0].offsetTop)-(clickDir*(wrapper.height()*0.9));
- }
- _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"});
- }
- });
- },
- /* -------------------- */
-
-
- /*
- FOCUS EVENT
- scrolls content via element focus (e.g. clicking an input, pressing TAB key etc.)
- */
- _focus=function(){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- namespace=pluginPfx+"_"+d.idx,
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- wrapper=mCSB_container.parent();
- mCSB_container.bind("focusin."+namespace,function(e){
- var el=$(document.activeElement),
- nested=mCSB_container.find(".mCustomScrollBox").length,
- dur=0;
- if(!el.is(o.advanced.autoScrollOnFocus)){return;}
- _stop($this);
- clearTimeout($this[0]._focusTimeout);
- $this[0]._focusTimer=nested ? (dur+17)*nested : 0;
- $this[0]._focusTimeout=setTimeout(function(){
- var to=[_childPos(el)[0],_childPos(el)[1]],
- contentPos=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft],
- isVisible=[
- (contentPos[0]+to[0]>=0 && contentPos[0]+to[0]=0 && contentPos[0]+to[1]a");
- btn.bind("contextmenu."+namespace,function(e){
- e.preventDefault(); //prevent right click
- }).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace+" mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace+" mouseout."+namespace+" pointerout."+namespace+" MSPointerOut."+namespace+" click."+namespace,function(e){
- e.preventDefault();
- if(!_mouseBtnLeft(e)){return;} /* left mouse button only */
- var btnClass=$(this).attr("class");
- seq.type=o.scrollButtons.scrollType;
- switch(e.type){
- case "mousedown": case "touchstart": case "pointerdown": case "MSPointerDown":
- if(seq.type==="stepped"){return;}
- touchActive=true;
- d.tweenRunning=false;
- _seq("on",btnClass);
- break;
- case "mouseup": case "touchend": case "pointerup": case "MSPointerUp":
- case "mouseout": case "pointerout": case "MSPointerOut":
- if(seq.type==="stepped"){return;}
- touchActive=false;
- if(seq.dir){_seq("off",btnClass);}
- break;
- case "click":
- if(seq.type!=="stepped" || d.tweenRunning){return;}
- _seq("on",btnClass);
- break;
- }
- function _seq(a,c){
- seq.scrollAmount=o.scrollButtons.scrollAmount;
- _sequentialScroll($this,a,c);
- }
- });
- },
- /* -------------------- */
-
-
- /*
- KEYBOARD EVENTS
- scrolls content via keyboard
- Keys: up arrow, down arrow, left arrow, right arrow, PgUp, PgDn, Home, End
- */
- _keyboard=function(){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential,
- namespace=pluginPfx+"_"+d.idx,
- mCustomScrollBox=$("#mCSB_"+d.idx),
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- wrapper=mCSB_container.parent(),
- editables="input,textarea,select,datalist,keygen,[contenteditable='true']",
- iframe=mCSB_container.find("iframe"),
- events=["blur."+namespace+" keydown."+namespace+" keyup."+namespace];
- if(iframe.length){
- iframe.each(function(){
- $(this).bind("load",function(){
- /* bind events on accessible iframes */
- if(_canAccessIFrame(this)){
- $(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){
- _onKeyboard(e);
- });
- }
- });
- });
- }
- mCustomScrollBox.attr("tabindex","0").bind(events[0],function(e){
- _onKeyboard(e);
- });
- function _onKeyboard(e){
- switch(e.type){
- case "blur":
- if(d.tweenRunning && seq.dir){_seq("off",null);}
- break;
- case "keydown": case "keyup":
- var code=e.keyCode ? e.keyCode : e.which,action="on";
- if((o.axis!=="x" && (code===38 || code===40)) || (o.axis!=="y" && (code===37 || code===39))){
- /* up (38), down (40), left (37), right (39) arrows */
- if(((code===38 || code===40) && !d.overflowed[0]) || ((code===37 || code===39) && !d.overflowed[1])){return;}
- if(e.type==="keyup"){action="off";}
- if(!$(document.activeElement).is(editables)){
- e.preventDefault();
- e.stopImmediatePropagation();
- _seq(action,code);
- }
- }else if(code===33 || code===34){
- /* PgUp (33), PgDn (34) */
- if(d.overflowed[0] || d.overflowed[1]){
- e.preventDefault();
- e.stopImmediatePropagation();
- }
- if(e.type==="keyup"){
- _stop($this);
- var keyboardDir=code===34 ? -1 : 1;
- if(o.axis==="x" || (o.axis==="yx" && d.overflowed[1] && !d.overflowed[0])){
- var dir="x",to=Math.abs(mCSB_container[0].offsetLeft)-(keyboardDir*(wrapper.width()*0.9));
- }else{
- var dir="y",to=Math.abs(mCSB_container[0].offsetTop)-(keyboardDir*(wrapper.height()*0.9));
- }
- _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"});
- }
- }else if(code===35 || code===36){
- /* End (35), Home (36) */
- if(!$(document.activeElement).is(editables)){
- if(d.overflowed[0] || d.overflowed[1]){
- e.preventDefault();
- e.stopImmediatePropagation();
- }
- if(e.type==="keyup"){
- if(o.axis==="x" || (o.axis==="yx" && d.overflowed[1] && !d.overflowed[0])){
- var dir="x",to=code===35 ? Math.abs(wrapper.width()-mCSB_container.outerWidth(false)) : 0;
- }else{
- var dir="y",to=code===35 ? Math.abs(wrapper.height()-mCSB_container.outerHeight(false)) : 0;
- }
- _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"});
- }
- }
- }
- break;
- }
- function _seq(a,c){
- seq.type=o.keyboard.scrollType;
- seq.scrollAmount=o.keyboard.scrollAmount;
- if(seq.type==="stepped" && d.tweenRunning){return;}
- _sequentialScroll($this,a,c);
- }
- }
- },
- /* -------------------- */
-
-
- /* scrolls content sequentially (used when scrolling via buttons, keyboard arrows etc.) */
- _sequentialScroll=function(el,action,trigger,e,s){
- var d=el.data(pluginPfx),o=d.opt,seq=d.sequential,
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- once=seq.type==="stepped" ? true : false,
- steplessSpeed=o.scrollInertia < 26 ? 26 : o.scrollInertia, /* 26/1.5=17 */
- steppedSpeed=o.scrollInertia < 1 ? 17 : o.scrollInertia;
- switch(action){
- case "on":
- seq.dir=[
- (trigger===classes[16] || trigger===classes[15] || trigger===39 || trigger===37 ? "x" : "y"),
- (trigger===classes[13] || trigger===classes[15] || trigger===38 || trigger===37 ? -1 : 1)
- ];
- _stop(el);
- if(_isNumeric(trigger) && seq.type==="stepped"){return;}
- _on(once);
- break;
- case "off":
- _off();
- if(once || (d.tweenRunning && seq.dir)){
- _on(true);
- }
- break;
- }
-
- /* starts sequence */
- function _on(once){
- if(o.snapAmount){seq.scrollAmount=!(o.snapAmount instanceof Array) ? o.snapAmount : seq.dir[0]==="x" ? o.snapAmount[1] : o.snapAmount[0];} /* scrolling snapping */
- var c=seq.type!=="stepped", /* continuous scrolling */
- t=s ? s : !once ? 1000/60 : c ? steplessSpeed/1.5 : steppedSpeed, /* timer */
- m=!once ? 2.5 : c ? 7.5 : 40, /* multiplier */
- contentPos=[Math.abs(mCSB_container[0].offsetTop),Math.abs(mCSB_container[0].offsetLeft)],
- ratio=[d.scrollRatio.y>10 ? 10 : d.scrollRatio.y,d.scrollRatio.x>10 ? 10 : d.scrollRatio.x],
- amount=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*(ratio[1]*m)) : contentPos[0]+(seq.dir[1]*(ratio[0]*m)),
- px=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*parseInt(seq.scrollAmount)) : contentPos[0]+(seq.dir[1]*parseInt(seq.scrollAmount)),
- to=seq.scrollAmount!=="auto" ? px : amount,
- easing=e ? e : !once ? "mcsLinear" : c ? "mcsLinearOut" : "mcsEaseInOut",
- onComplete=!once ? false : true;
- if(once && t<17){
- to=seq.dir[0]==="x" ? contentPos[1] : contentPos[0];
- }
- _scrollTo(el,to.toString(),{dir:seq.dir[0],scrollEasing:easing,dur:t,onComplete:onComplete});
- if(once){
- seq.dir=false;
- return;
- }
- clearTimeout(seq.step);
- seq.step=setTimeout(function(){
- _on();
- },t);
- }
- /* stops sequence */
- function _off(){
- clearTimeout(seq.step);
- _delete(seq,"step");
- _stop(el);
- }
- },
- /* -------------------- */
-
-
- /* returns a yx array from value */
- _arr=function(val){
- var o=$(this).data(pluginPfx).opt,vals=[];
- if(typeof val==="function"){val=val();} /* check if the value is a single anonymous function */
- /* check if value is object or array, its length and create an array with yx values */
- if(!(val instanceof Array)){ /* object value (e.g. {y:"100",x:"100"}, 100 etc.) */
- vals[0]=val.y ? val.y : val.x || o.axis==="x" ? null : val;
- vals[1]=val.x ? val.x : val.y || o.axis==="y" ? null : val;
- }else{ /* array value (e.g. [100,100]) */
- vals=val.length>1 ? [val[0],val[1]] : o.axis==="x" ? [null,val[0]] : [val[0],null];
- }
- /* check if array values are anonymous functions */
- if(typeof vals[0]==="function"){vals[0]=vals[0]();}
- if(typeof vals[1]==="function"){vals[1]=vals[1]();}
- return vals;
- },
- /* -------------------- */
-
-
- /* translates values (e.g. "top", 100, "100px", "#id") to actual scroll-to positions */
- _to=function(val,dir){
- if(val==null || typeof val=="undefined"){return;}
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- wrapper=mCSB_container.parent(),
- t=typeof val;
- if(!dir){dir=o.axis==="x" ? "x" : "y";}
- var contentLength=dir==="x" ? mCSB_container.outerWidth(false)-wrapper.width() : mCSB_container.outerHeight(false)-wrapper.height(),
- contentPos=dir==="x" ? mCSB_container[0].offsetLeft : mCSB_container[0].offsetTop,
- cssProp=dir==="x" ? "left" : "top";
- switch(t){
- case "function": /* this currently is not used. Consider removing it */
- return val();
- break;
- case "object": /* js/jquery object */
- var obj=val.jquery ? val : $(val);
- if(!obj.length){return;}
- return dir==="x" ? _childPos(obj)[1] : _childPos(obj)[0];
- break;
- case "string": case "number":
- if(_isNumeric(val)){ /* numeric value */
- return Math.abs(val);
- }else if(val.indexOf("%")!==-1){ /* percentage value */
- return Math.abs(contentLength*parseInt(val)/100);
- }else if(val.indexOf("-=")!==-1){ /* decrease value */
- return Math.abs(contentPos-parseInt(val.split("-=")[1]));
- }else if(val.indexOf("+=")!==-1){ /* inrease value */
- var p=(contentPos+parseInt(val.split("+=")[1]));
- return p>=0 ? 0 : Math.abs(p);
- }else if(val.indexOf("px")!==-1 && _isNumeric(val.split("px")[0])){ /* pixels string value (e.g. "100px") */
- return Math.abs(val.split("px")[0]);
- }else{
- if(val==="top" || val==="left"){ /* special strings */
- return 0;
- }else if(val==="bottom"){
- return Math.abs(wrapper.height()-mCSB_container.outerHeight(false));
- }else if(val==="right"){
- return Math.abs(wrapper.width()-mCSB_container.outerWidth(false));
- }else if(val==="first" || val==="last"){
- var obj=mCSB_container.find(":"+val);
- return dir==="x" ? _childPos(obj)[1] : _childPos(obj)[0];
- }else{
- if($(val).length){ /* jquery selector */
- return dir==="x" ? _childPos($(val))[1] : _childPos($(val))[0];
- }else{ /* other values (e.g. "100em") */
- mCSB_container.css(cssProp,val);
- methods.update.call(null,$this[0]);
- return;
- }
- }
- }
- break;
- }
- },
- /* -------------------- */
-
-
- /* calls the update method automatically */
- _autoUpdate=function(rem){
- var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
- mCSB_container=$("#mCSB_"+d.idx+"_container");
- if(rem){
- /*
- removes autoUpdate timer
- usage: _autoUpdate.call(this,"remove");
- */
- clearTimeout(mCSB_container[0].autoUpdate);
- _delete(mCSB_container[0],"autoUpdate");
- return;
- }
- upd();
- function upd(){
- clearTimeout(mCSB_container[0].autoUpdate);
- if($this.parents("html").length===0){
- /* check element in dom tree */
- $this=null;
- return;
- }
- mCSB_container[0].autoUpdate=setTimeout(function(){
- /* update on specific selector(s) length and size change */
- if(o.advanced.updateOnSelectorChange){
- d.poll.change.n=sizesSum();
- if(d.poll.change.n!==d.poll.change.o){
- d.poll.change.o=d.poll.change.n;
- doUpd(3);
- return;
- }
- }
- /* update on main element and scrollbar size changes */
- if(o.advanced.updateOnContentResize){
- d.poll.size.n=$this[0].scrollHeight+$this[0].scrollWidth+mCSB_container[0].offsetHeight+$this[0].offsetHeight+$this[0].offsetWidth;
- if(d.poll.size.n!==d.poll.size.o){
- d.poll.size.o=d.poll.size.n;
- doUpd(1);
- return;
- }
- }
- /* update on image load */
- if(o.advanced.updateOnImageLoad){
- if(!(o.advanced.updateOnImageLoad==="auto" && o.axis==="y")){ //by default, it doesn't run on vertical content
- d.poll.img.n=mCSB_container.find("img").length;
- if(d.poll.img.n!==d.poll.img.o){
- d.poll.img.o=d.poll.img.n;
- mCSB_container.find("img").each(function(){
- imgLoader(this);
- });
- return;
- }
- }
- }
- if(o.advanced.updateOnSelectorChange || o.advanced.updateOnContentResize || o.advanced.updateOnImageLoad){upd();}
- },o.advanced.autoUpdateTimeout);
- }
- /* a tiny image loader */
- function imgLoader(el){
- if($(el).hasClass(classes[2])){doUpd(); return;}
- var img=new Image();
- function createDelegate(contextObject,delegateMethod){
- return function(){return delegateMethod.apply(contextObject,arguments);}
- }
- function imgOnLoad(){
- this.onload=null;
- $(el).addClass(classes[2]);
- doUpd(2);
- }
- img.onload=createDelegate(img,imgOnLoad);
- img.src=el.src;
- }
- /* returns the total height and width sum of all elements matching the selector */
- function sizesSum(){
- if(o.advanced.updateOnSelectorChange===true){o.advanced.updateOnSelectorChange="*";}
- var total=0,sel=mCSB_container.find(o.advanced.updateOnSelectorChange);
- if(o.advanced.updateOnSelectorChange && sel.length>0){sel.each(function(){total+=this.offsetHeight+this.offsetWidth;});}
- return total;
- }
- /* calls the update method */
- function doUpd(cb){
- clearTimeout(mCSB_container[0].autoUpdate);
- methods.update.call(null,$this[0],cb);
- }
- },
- /* -------------------- */
-
-
- /* snaps scrolling to a multiple of a pixels number */
- _snapAmount=function(to,amount,offset){
- return (Math.round(to/amount)*amount-offset);
- },
- /* -------------------- */
-
-
- /* stops content and scrollbar animations */
- _stop=function(el){
- var d=el.data(pluginPfx),
- sel=$("#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal");
- sel.each(function(){
- _stopTween.call(this);
- });
- },
- /* -------------------- */
-
-
- /*
- ANIMATES CONTENT
- This is where the actual scrolling happens
- */
- _scrollTo=function(el,to,options){
- var d=el.data(pluginPfx),o=d.opt,
- defaults={
- trigger:"internal",
- dir:"y",
- scrollEasing:"mcsEaseOut",
- drag:false,
- dur:o.scrollInertia,
- overwrite:"all",
- callbacks:true,
- onStart:true,
- onUpdate:true,
- onComplete:true
- },
- options=$.extend(defaults,options),
- dur=[options.dur,(options.drag ? 0 : options.dur)],
- mCustomScrollBox=$("#mCSB_"+d.idx),
- mCSB_container=$("#mCSB_"+d.idx+"_container"),
- wrapper=mCSB_container.parent(),
- totalScrollOffsets=o.callbacks.onTotalScrollOffset ? _arr.call(el,o.callbacks.onTotalScrollOffset) : [0,0],
- totalScrollBackOffsets=o.callbacks.onTotalScrollBackOffset ? _arr.call(el,o.callbacks.onTotalScrollBackOffset) : [0,0];
- d.trigger=options.trigger;
- if(wrapper.scrollTop()!==0 || wrapper.scrollLeft()!==0){ /* always reset scrollTop/Left */
- $(".mCSB_"+d.idx+"_scrollbar").css("visibility","visible");
- wrapper.scrollTop(0).scrollLeft(0);
- }
- if(to==="_resetY" && !d.contentReset.y){
- /* callbacks: onOverflowYNone */
- if(_cb("onOverflowYNone")){o.callbacks.onOverflowYNone.call(el[0]);}
- d.contentReset.y=1;
- }
- if(to==="_resetX" && !d.contentReset.x){
- /* callbacks: onOverflowXNone */
- if(_cb("onOverflowXNone")){o.callbacks.onOverflowXNone.call(el[0]);}
- d.contentReset.x=1;
- }
- if(to==="_resetY" || to==="_resetX"){return;}
- if((d.contentReset.y || !el[0].mcs) && d.overflowed[0]){
- /* callbacks: onOverflowY */
- if(_cb("onOverflowY")){o.callbacks.onOverflowY.call(el[0]);}
- d.contentReset.x=null;
- }
- if((d.contentReset.x || !el[0].mcs) && d.overflowed[1]){
- /* callbacks: onOverflowX */
- if(_cb("onOverflowX")){o.callbacks.onOverflowX.call(el[0]);}
- d.contentReset.x=null;
- }
- if(o.snapAmount){ /* scrolling snapping */
- var snapAmount=!(o.snapAmount instanceof Array) ? o.snapAmount : options.dir==="x" ? o.snapAmount[1] : o.snapAmount[0];
- to=_snapAmount(to,snapAmount,o.snapOffset);
- }
- switch(options.dir){
- case "x":
- var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_horizontal"),
- property="left",
- contentPos=mCSB_container[0].offsetLeft,
- limit=[
- mCustomScrollBox.width()-mCSB_container.outerWidth(false),
- mCSB_dragger.parent().width()-mCSB_dragger.width()
- ],
- scrollTo=[to,to===0 ? 0 : (to/d.scrollRatio.x)],
- tso=totalScrollOffsets[1],
- tsbo=totalScrollBackOffsets[1],
- totalScrollOffset=tso>0 ? tso/d.scrollRatio.x : 0,
- totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.x : 0;
- break;
- case "y":
- var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_vertical"),
- property="top",
- contentPos=mCSB_container[0].offsetTop,
- limit=[
- mCustomScrollBox.height()-mCSB_container.outerHeight(false),
- mCSB_dragger.parent().height()-mCSB_dragger.height()
- ],
- scrollTo=[to,to===0 ? 0 : (to/d.scrollRatio.y)],
- tso=totalScrollOffsets[0],
- tsbo=totalScrollBackOffsets[0],
- totalScrollOffset=tso>0 ? tso/d.scrollRatio.y : 0,
- totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.y : 0;
- break;
- }
- if(scrollTo[1]<0 || (scrollTo[0]===0 && scrollTo[1]===0)){
- scrollTo=[0,0];
- }else if(scrollTo[1]>=limit[1]){
- scrollTo=[limit[0],limit[1]];
- }else{
- scrollTo[0]=-scrollTo[0];
- }
- if(!el[0].mcs){
- _mcs(); /* init mcs object (once) to make it available before callbacks */
- if(_cb("onInit")){o.callbacks.onInit.call(el[0]);} /* callbacks: onInit */
- }
- clearTimeout(mCSB_container[0].onCompleteTimeout);
- _tweenTo(mCSB_dragger[0],property,Math.round(scrollTo[1]),dur[1],options.scrollEasing);
- if(!d.tweenRunning && ((contentPos===0 && scrollTo[0]>=0) || (contentPos===limit[0] && scrollTo[0]<=limit[0]))){return;}
- _tweenTo(mCSB_container[0],property,Math.round(scrollTo[0]),dur[0],options.scrollEasing,options.overwrite,{
- onStart:function(){
- if(options.callbacks && options.onStart && !d.tweenRunning){
- /* callbacks: onScrollStart */
- if(_cb("onScrollStart")){_mcs(); o.callbacks.onScrollStart.call(el[0]);}
- d.tweenRunning=true;
- _onDragClasses(mCSB_dragger);
- d.cbOffsets=_cbOffsets();
- }
- },onUpdate:function(){
- if(options.callbacks && options.onUpdate){
- /* callbacks: whileScrolling */
- if(_cb("whileScrolling")){_mcs(); o.callbacks.whileScrolling.call(el[0]);}
- }
- },onComplete:function(){
- if(options.callbacks && options.onComplete){
- if(o.axis==="yx"){clearTimeout(mCSB_container[0].onCompleteTimeout);}
- var t=mCSB_container[0].idleTimer || 0;
- mCSB_container[0].onCompleteTimeout=setTimeout(function(){
- /* callbacks: onScroll, onTotalScroll, onTotalScrollBack */
- if(_cb("onScroll")){_mcs(); o.callbacks.onScroll.call(el[0]);}
- if(_cb("onTotalScroll") && scrollTo[1]>=limit[1]-totalScrollOffset && d.cbOffsets[0]){_mcs(); o.callbacks.onTotalScroll.call(el[0]);}
- if(_cb("onTotalScrollBack") && scrollTo[1]<=totalScrollBackOffset && d.cbOffsets[1]){_mcs(); o.callbacks.onTotalScrollBack.call(el[0]);}
- d.tweenRunning=false;
- mCSB_container[0].idleTimer=0;
- _onDragClasses(mCSB_dragger,"hide");
- },t);
- }
- }
- });
- /* checks if callback function exists */
- function _cb(cb){
- return d && o.callbacks[cb] && typeof o.callbacks[cb]==="function";
- }
- /* checks whether callback offsets always trigger */
- function _cbOffsets(){
- return [o.callbacks.alwaysTriggerOffsets || contentPos>=limit[0]+tso,o.callbacks.alwaysTriggerOffsets || contentPos<=-tsbo];
- }
- /*
- populates object with useful values for the user
- values:
- content: this.mcs.content
- content top position: this.mcs.top
- content left position: this.mcs.left
- dragger top position: this.mcs.draggerTop
- dragger left position: this.mcs.draggerLeft
- scrolling y percentage: this.mcs.topPct
- scrolling x percentage: this.mcs.leftPct
- scrolling direction: this.mcs.direction
- */
- function _mcs(){
- var cp=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft], /* content position */
- dp=[mCSB_dragger[0].offsetTop,mCSB_dragger[0].offsetLeft], /* dragger position */
- cl=[mCSB_container.outerHeight(false),mCSB_container.outerWidth(false)], /* content length */
- pl=[mCustomScrollBox.height(),mCustomScrollBox.width()]; /* content parent length */
- el[0].mcs={
- content:mCSB_container, /* original content wrapper as jquery object */
- top:cp[0],left:cp[1],draggerTop:dp[0],draggerLeft:dp[1],
- topPct:Math.round((100*Math.abs(cp[0]))/(Math.abs(cl[0])-pl[0])),leftPct:Math.round((100*Math.abs(cp[1]))/(Math.abs(cl[1])-pl[1])),
- direction:options.dir
- };
- /*
- this refers to the original element containing the scrollbar(s)
- usage: this.mcs.top, this.mcs.leftPct etc.
- */
- }
- },
- /* -------------------- */
-
-
- /*
- CUSTOM JAVASCRIPT ANIMATION TWEEN
- Lighter and faster than jquery animate() and css transitions
- Animates top/left properties and includes easings
- */
- _tweenTo=function(el,prop,to,duration,easing,overwrite,callbacks){
- if(!el._mTween){el._mTween={top:{},left:{}};}
- var callbacks=callbacks || {},
- onStart=callbacks.onStart || function(){},onUpdate=callbacks.onUpdate || function(){},onComplete=callbacks.onComplete || function(){},
- startTime=_getTime(),_delay,progress=0,from=el.offsetTop,elStyle=el.style,_request,tobj=el._mTween[prop];
- if(prop==="left"){from=el.offsetLeft;}
- var diff=to-from;
- tobj.stop=0;
- if(overwrite!=="none"){_cancelTween();}
- _startTween();
- function _step(){
- if(tobj.stop){return;}
- if(!progress){onStart.call();}
- progress=_getTime()-startTime;
- _tween();
- if(progress>=tobj.time){
- tobj.time=(progress>tobj.time) ? progress+_delay-(progress-tobj.time) : progress+_delay-1;
- if(tobj.time