rails-assets-utatti-perfect-scrollbar-1.4.0/0000755000175000017500000000000013416122242021600 5ustar utkarsh2102utkarsh2102rails-assets-utatti-perfect-scrollbar-1.4.0/rails-assets-utatti-perfect-scrollbar.json0000644000175000017500000000117513416122242032030 0ustar utkarsh2102utkarsh2102{ "name": "rails-assets-utatti-perfect-scrollbar", "downloads": null, "version": "1.4.0", "version_downloads": null, "platform": "ruby", "authors": "rails-assets.org", "info": "", "metadata": { }, "sha": null, "project_uri": "https://github.com/utatti/perfect-scrollbar", "gem_uri": null, "homepage_uri": "https://github.com/utatti/perfect-scrollbar", "wiki_uri": null, "documentation_uri": null, "mailing_list_uri": null, "source_code_uri": "https://github.com/utatti/perfect-scrollbar", "bug_tracker_uri": null, "dependencies": { "development": [ ], "runtime": [ ] } } rails-assets-utatti-perfect-scrollbar-1.4.0/app/0000755000175000017500000000000013416122242022360 5ustar utkarsh2102utkarsh2102rails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/0000755000175000017500000000000013416122242023662 5ustar utkarsh2102utkarsh2102rails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/stylesheets/0000755000175000017500000000000013416122242026236 5ustar utkarsh2102utkarsh2102rails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/stylesheets/utatti-perfect-scrollbar/0000755000175000017500000000000013416122242033157 5ustar utkarsh2102utkarsh2102rails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/stylesheets/utatti-perfect-scrollbar/css/0000755000175000017500000000000013416122242033747 5ustar utkarsh2102utkarsh2102././@LongLink0000644000000000000000000000016700000000000011607 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/stylesheets/utatti-perfect-scrollbar/css/perfect-scrollbar.scssrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/stylesheets/utatti-perfect-scrollbar/css/perf0000644000175000017500000000504613416122242034633 0ustar utkarsh2102utkarsh2102/* * Container style */ .ps { overflow: hidden !important; overflow-anchor: none; -ms-overflow-style: none; touch-action: auto; -ms-touch-action: auto; } /* * Scrollbar rail styles */ .ps__rail-x { display: none; opacity: 0; transition: background-color .2s linear, opacity .2s linear; -webkit-transition: background-color .2s linear, opacity .2s linear; height: 15px; /* there must be 'bottom' or 'top' for ps__rail-x */ bottom: 0px; /* please don't change 'position' */ position: absolute; } .ps__rail-y { display: none; opacity: 0; transition: background-color .2s linear, opacity .2s linear; -webkit-transition: background-color .2s linear, opacity .2s linear; width: 15px; /* there must be 'right' or 'left' for ps__rail-y */ right: 0; /* please don't change 'position' */ position: absolute; } .ps--active-x > .ps__rail-x, .ps--active-y > .ps__rail-y { display: block; background-color: transparent; } .ps:hover > .ps__rail-x, .ps:hover > .ps__rail-y, .ps--focus > .ps__rail-x, .ps--focus > .ps__rail-y, .ps--scrolling-x > .ps__rail-x, .ps--scrolling-y > .ps__rail-y { opacity: 0.6; } .ps .ps__rail-x:hover, .ps .ps__rail-y:hover, .ps .ps__rail-x:focus, .ps .ps__rail-y:focus, .ps .ps__rail-x.ps--clicking, .ps .ps__rail-y.ps--clicking { background-color: #eee; opacity: 0.9; } /* * Scrollbar thumb styles */ .ps__thumb-x { background-color: #aaa; border-radius: 6px; transition: background-color .2s linear, height .2s ease-in-out; -webkit-transition: background-color .2s linear, height .2s ease-in-out; height: 6px; /* there must be 'bottom' for ps__thumb-x */ bottom: 2px; /* please don't change 'position' */ position: absolute; } .ps__thumb-y { background-color: #aaa; border-radius: 6px; transition: background-color .2s linear, width .2s ease-in-out; -webkit-transition: background-color .2s linear, width .2s ease-in-out; width: 6px; /* there must be 'right' for ps__thumb-y */ right: 2px; /* please don't change 'position' */ position: absolute; } .ps__rail-x:hover > .ps__thumb-x, .ps__rail-x:focus > .ps__thumb-x, .ps__rail-x.ps--clicking .ps__thumb-x { background-color: #999; height: 11px; } .ps__rail-y:hover > .ps__thumb-y, .ps__rail-y:focus > .ps__thumb-y, .ps__rail-y.ps--clicking .ps__thumb-y { background-color: #999; width: 11px; } /* MS supports */ @supports (-ms-overflow-style: none) { .ps { overflow: auto !important; } } @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { .ps { overflow: auto !important; } } rails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/documents/0000755000175000017500000000000013416122242025663 5ustar utkarsh2102utkarsh2102rails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/documents/utatti-perfect-scrollbar/0000755000175000017500000000000013416122242032604 5ustar utkarsh2102utkarsh2102././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/documents/utatti-perfect-scrollbar/package-lock.jsonrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/documents/utatti-perfect-scrollbar/package-lo0000644000175000017500000014343513416122242034544 0ustar utkarsh2102utkarsh2102{ "name": "perfect-scrollbar", "version": "1.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { "acorn": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", "dev": true }, "acorn-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { "acorn": "^3.0.4" } }, "acorn-object-spread": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz", "integrity": "sha1-SOrQ9KjrFplaF6Dbn/xqyq2kumg=", "dev": true, "requires": { "acorn": "^3.1.0" } }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "anymatch": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { "micromatch": "^2.1.5", "normalize-path": "^2.0.0" } }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { "arr-flatten": "^1.0.1" } }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", "dev": true }, "array-map": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", "dev": true }, "array-reduce": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "binary-extensions": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", "dev": true }, "bluebird": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=", "dev": true }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { "expand-range": "^1.8.1", "preserve": "^0.2.0", "repeat-element": "^1.1.2" } }, "buble": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/buble/-/buble-0.16.0.tgz", "integrity": "sha512-Eb5vt1+IvXXPyYD1IIQIuaBwIuJOSWQ2kXzULlg5I83aLGF2qzcjRU2joYusnWFgAenvJ9xTOMvZvT0bb8BLbg==", "dev": true, "requires": { "acorn": "^3.3.0", "acorn-jsx": "^3.0.1", "acorn-object-spread": "^1.0.0", "chalk": "^1.1.3", "magic-string": "^0.14.0", "minimist": "^1.2.0", "os-homedir": "^1.0.1", "vlq": "^0.2.2" } }, "camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" } }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { "anymatch": "^1.3.0", "async-each": "^1.0.0", "fsevents": "^1.0.0", "glob-parent": "^2.0.0", "inherits": "^2.0.1", "is-binary-path": "^1.0.0", "is-glob": "^2.0.0", "path-is-absolute": "^1.0.0", "readdirp": "^2.0.0" } }, "chokidar-cli": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/chokidar-cli/-/chokidar-cli-1.2.0.tgz", "integrity": "sha1-jn9YRCJzGCAYvhho5Twir2WiGUg=", "dev": true, "requires": { "anymatch": "^1.1.0", "bluebird": "^2.9.24", "chokidar": "^1.0.1", "lodash": "^3.7.0", "shell-quote": "^1.4.3", "yargs": "^3.7.2" } }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wrap-ansi": "^2.0.0" } }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "estree-walker": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=", "dev": true }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "^0.1.0" } }, "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { "fill-range": "^2.1.0" } }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { "is-extglob": "^1.0.0" } }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, "fill-range": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { "is-number": "^2.1.0", "isobject": "^2.0.0", "randomatic": "^1.1.3", "repeat-element": "^1.1.2", "repeat-string": "^1.5.2" } }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "^1.0.1" } }, "fsevents": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", "dev": true, "optional": true, "requires": { "nan": "^2.3.0", "node-pre-gyp": "^0.6.36" }, "dependencies": { "abbrev": { "version": "1.1.0", "bundled": true, "dev": true, "optional": true }, "ajv": { "version": "4.11.8", "bundled": true, "dev": true, "optional": true, "requires": { "co": "^4.6.0", "json-stable-stringify": "^1.0.1" } }, "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true }, "aproba": { "version": "1.1.1", "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", "bundled": true, "dev": true, "optional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" } }, "asn1": { "version": "0.2.3", "bundled": true, "dev": true, "optional": true }, "assert-plus": { "version": "0.2.0", "bundled": true, "dev": true, "optional": true }, "asynckit": { "version": "0.4.0", "bundled": true, "dev": true, "optional": true }, "aws-sign2": { "version": "0.6.0", "bundled": true, "dev": true, "optional": true }, "aws4": { "version": "1.6.0", "bundled": true, "dev": true, "optional": true }, "balanced-match": { "version": "0.4.2", "bundled": true, "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", "bundled": true, "dev": true, "optional": true, "requires": { "tweetnacl": "^0.14.3" } }, "block-stream": { "version": "0.0.9", "bundled": true, "dev": true, "requires": { "inherits": "~2.0.0" } }, "boom": { "version": "2.10.1", "bundled": true, "dev": true, "requires": { "hoek": "2.x.x" } }, "brace-expansion": { "version": "1.1.7", "bundled": true, "dev": true, "requires": { "balanced-match": "^0.4.1", "concat-map": "0.0.1" } }, "buffer-shims": { "version": "1.0.0", "bundled": true, "dev": true }, "caseless": { "version": "0.12.0", "bundled": true, "dev": true, "optional": true }, "co": { "version": "4.6.0", "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", "bundled": true, "dev": true }, "combined-stream": { "version": "1.0.5", "bundled": true, "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, "concat-map": { "version": "0.0.1", "bundled": true, "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, "dev": true }, "core-util-is": { "version": "1.0.2", "bundled": true, "dev": true }, "cryptiles": { "version": "2.0.5", "bundled": true, "dev": true, "optional": true, "requires": { "boom": "2.x.x" } }, "dashdash": { "version": "1.14.1", "bundled": true, "dev": true, "optional": true, "requires": { "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true } } }, "debug": { "version": "2.6.8", "bundled": true, "dev": true, "optional": true, "requires": { "ms": "2.0.0" } }, "deep-extend": { "version": "0.4.2", "bundled": true, "dev": true, "optional": true }, "delayed-stream": { "version": "1.0.0", "bundled": true, "dev": true }, "delegates": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, "ecc-jsbn": { "version": "0.1.1", "bundled": true, "dev": true, "optional": true, "requires": { "jsbn": "~0.1.0" } }, "extend": { "version": "3.0.1", "bundled": true, "dev": true, "optional": true }, "extsprintf": { "version": "1.0.2", "bundled": true, "dev": true }, "forever-agent": { "version": "0.6.1", "bundled": true, "dev": true, "optional": true }, "form-data": { "version": "2.1.4", "bundled": true, "dev": true, "optional": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.5", "mime-types": "^2.1.12" } }, "fs.realpath": { "version": "1.0.0", "bundled": true, "dev": true }, "fstream": { "version": "1.0.11", "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", "mkdirp": ">=0.5 0", "rimraf": "2" } }, "fstream-ignore": { "version": "1.0.5", "bundled": true, "dev": true, "optional": true, "requires": { "fstream": "^1.0.0", "inherits": "2", "minimatch": "^3.0.0" } }, "gauge": { "version": "2.7.4", "bundled": true, "dev": true, "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", "has-unicode": "^2.0.0", "object-assign": "^4.1.0", "signal-exit": "^3.0.0", "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wide-align": "^1.1.0" } }, "getpass": { "version": "0.1.7", "bundled": true, "dev": true, "optional": true, "requires": { "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true } } }, "glob": { "version": "7.1.2", "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "graceful-fs": { "version": "4.1.11", "bundled": true, "dev": true }, "har-schema": { "version": "1.0.5", "bundled": true, "dev": true, "optional": true }, "har-validator": { "version": "4.2.1", "bundled": true, "dev": true, "optional": true, "requires": { "ajv": "^4.9.1", "har-schema": "^1.0.5" } }, "has-unicode": { "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, "hawk": { "version": "3.1.3", "bundled": true, "dev": true, "optional": true, "requires": { "boom": "2.x.x", "cryptiles": "2.x.x", "hoek": "2.x.x", "sntp": "1.x.x" } }, "hoek": { "version": "2.16.3", "bundled": true, "dev": true }, "http-signature": { "version": "1.1.1", "bundled": true, "dev": true, "optional": true, "requires": { "assert-plus": "^0.2.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" } }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { "version": "2.0.3", "bundled": true, "dev": true }, "ini": { "version": "1.3.4", "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, "is-typedarray": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, "isarray": { "version": "1.0.0", "bundled": true, "dev": true }, "isstream": { "version": "0.1.2", "bundled": true, "dev": true, "optional": true }, "jodid25519": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true, "requires": { "jsbn": "~0.1.0" } }, "jsbn": { "version": "0.1.1", "bundled": true, "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", "bundled": true, "dev": true, "optional": true }, "json-stable-stringify": { "version": "1.0.1", "bundled": true, "dev": true, "optional": true, "requires": { "jsonify": "~0.0.0" } }, "json-stringify-safe": { "version": "5.0.1", "bundled": true, "dev": true, "optional": true }, "jsonify": { "version": "0.0.0", "bundled": true, "dev": true, "optional": true }, "jsprim": { "version": "1.4.0", "bundled": true, "dev": true, "optional": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.0.2", "json-schema": "0.2.3", "verror": "1.3.6" }, "dependencies": { "assert-plus": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true } } }, "mime-db": { "version": "1.27.0", "bundled": true, "dev": true }, "mime-types": { "version": "2.1.15", "bundled": true, "dev": true, "requires": { "mime-db": "~1.27.0" } }, "minimatch": { "version": "3.0.4", "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" } }, "ms": { "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "node-pre-gyp": { "version": "0.6.36", "bundled": true, "dev": true, "optional": true, "requires": { "mkdirp": "^0.5.1", "nopt": "^4.0.1", "npmlog": "^4.0.2", "rc": "^1.1.7", "request": "^2.81.0", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^2.2.1", "tar-pack": "^3.4.0" } }, "nopt": { "version": "4.0.1", "bundled": true, "dev": true, "optional": true, "requires": { "abbrev": "1", "osenv": "^0.1.4" } }, "npmlog": { "version": "4.1.0", "bundled": true, "dev": true, "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", "gauge": "~2.7.3", "set-blocking": "~2.0.0" } }, "number-is-nan": { "version": "1.0.1", "bundled": true, "dev": true }, "oauth-sign": { "version": "0.8.2", "bundled": true, "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", "bundled": true, "dev": true, "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.4", "bundled": true, "dev": true, "optional": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { "version": "1.0.1", "bundled": true, "dev": true }, "performance-now": { "version": "0.2.0", "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "1.0.7", "bundled": true, "dev": true }, "punycode": { "version": "1.4.1", "bundled": true, "dev": true, "optional": true }, "qs": { "version": "6.4.0", "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.1", "bundled": true, "dev": true, "optional": true, "requires": { "deep-extend": "~0.4.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { "version": "1.2.0", "bundled": true, "dev": true, "optional": true } } }, "readable-stream": { "version": "2.2.9", "bundled": true, "dev": true, "requires": { "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "~1.0.0", "process-nextick-args": "~1.0.6", "string_decoder": "~1.0.0", "util-deprecate": "~1.0.1" } }, "request": { "version": "2.81.0", "bundled": true, "dev": true, "optional": true, "requires": { "aws-sign2": "~0.6.0", "aws4": "^1.2.1", "caseless": "~0.12.0", "combined-stream": "~1.0.5", "extend": "~3.0.0", "forever-agent": "~0.6.1", "form-data": "~2.1.1", "har-validator": "~4.2.1", "hawk": "~3.1.3", "http-signature": "~1.1.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.7", "oauth-sign": "~0.8.1", "performance-now": "^0.2.0", "qs": "~6.4.0", "safe-buffer": "^5.0.1", "stringstream": "~0.0.4", "tough-cookie": "~2.3.0", "tunnel-agent": "^0.6.0", "uuid": "^3.0.0" } }, "rimraf": { "version": "2.6.1", "bundled": true, "dev": true, "requires": { "glob": "^7.0.5" } }, "safe-buffer": { "version": "5.0.1", "bundled": true, "dev": true }, "semver": { "version": "5.3.0", "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", "bundled": true, "dev": true, "optional": true }, "sntp": { "version": "1.0.9", "bundled": true, "dev": true, "optional": true, "requires": { "hoek": "2.x.x" } }, "sshpk": { "version": "1.13.0", "bundled": true, "dev": true, "optional": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", "bcrypt-pbkdf": "^1.0.0", "dashdash": "^1.12.0", "ecc-jsbn": "~0.1.1", "getpass": "^0.1.1", "jodid25519": "^1.0.0", "jsbn": "~0.1.0", "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true } } }, "string-width": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } }, "string_decoder": { "version": "1.0.1", "bundled": true, "dev": true, "requires": { "safe-buffer": "^5.0.1" } }, "stringstream": { "version": "0.0.5", "bundled": true, "dev": true, "optional": true }, "strip-ansi": { "version": "3.0.1", "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, "tar": { "version": "2.2.1", "bundled": true, "dev": true, "requires": { "block-stream": "*", "fstream": "^1.0.2", "inherits": "2" } }, "tar-pack": { "version": "3.4.0", "bundled": true, "dev": true, "optional": true, "requires": { "debug": "^2.2.0", "fstream": "^1.0.10", "fstream-ignore": "^1.0.5", "once": "^1.3.3", "readable-stream": "^2.1.4", "rimraf": "^2.5.1", "tar": "^2.2.1", "uid-number": "^0.0.6" } }, "tough-cookie": { "version": "2.3.2", "bundled": true, "dev": true, "optional": true, "requires": { "punycode": "^1.4.1" } }, "tunnel-agent": { "version": "0.6.0", "bundled": true, "dev": true, "optional": true, "requires": { "safe-buffer": "^5.0.1" } }, "tweetnacl": { "version": "0.14.5", "bundled": true, "dev": true, "optional": true }, "uid-number": { "version": "0.0.6", "bundled": true, "dev": true, "optional": true }, "util-deprecate": { "version": "1.0.2", "bundled": true, "dev": true }, "uuid": { "version": "3.0.1", "bundled": true, "dev": true, "optional": true }, "verror": { "version": "1.3.6", "bundled": true, "dev": true, "optional": true, "requires": { "extsprintf": "1.0.2" } }, "wide-align": { "version": "1.1.2", "bundled": true, "dev": true, "optional": true, "requires": { "string-width": "^1.0.2" } }, "wrappy": { "version": "1.0.2", "bundled": true, "dev": true } } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { "glob-parent": "^2.0.0", "is-glob": "^2.0.0" } }, "glob-parent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { "is-glob": "^2.0.0" } }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "^2.0.0" } }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { "binary-extensions": "^1.0.0" } }, "is-buffer": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", "dev": true }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { "is-primitive": "^2.0.0" } }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { "is-extglob": "^1.0.0" } }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "^3.0.2" } }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" } }, "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" } }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "^1.0.0" } }, "lodash": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true }, "magic-string": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.14.0.tgz", "integrity": "sha1-VyJK7xcByu7Sc7F6OalW5ysXJGI=", "dev": true, "requires": { "vlq": "^0.2.1" } }, "micromatch": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { "arr-diff": "^2.0.0", "array-unique": "^0.2.1", "braces": "^1.8.2", "expand-brackets": "^0.1.4", "extglob": "^0.3.1", "filename-regex": "^2.0.0", "is-extglob": "^1.0.0", "is-glob": "^2.0.1", "kind-of": "^3.0.2", "normalize-path": "^2.0.1", "object.omit": "^2.0.0", "parse-glob": "^3.0.4", "regex-cache": "^0.4.2" } }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "nan": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", "dev": true, "optional": true }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" } }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { "for-own": "^0.1.4", "is-extendable": "^0.1.1" } }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { "lcid": "^1.0.0" } }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { "glob-base": "^0.3.0", "is-dotfile": "^1.0.0", "is-extglob": "^1.0.0", "is-glob": "^2.0.0" } }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, "prettier": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.7.0.tgz", "integrity": "sha512-kIbA3UE9sYGiVCxlWg92EOHWZqte6EAkC7DS5je6NaL8g3Uw1rWe0eH+UX4Hy5OEiR9aql2vVMHeg6lR4YGxYg==", "dev": true }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" } } } }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "^1.1.5" } } } }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~1.0.6", "safe-buffer": "~5.1.1", "string_decoder": "~1.0.3", "util-deprecate": "~1.0.1" } }, "readdirp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { "graceful-fs": "^4.1.2", "minimatch": "^3.0.2", "readable-stream": "^2.0.2", "set-immediate-shim": "^1.0.1" } }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "^0.1.3" } }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "rollup": { "version": "0.50.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.50.0.tgz", "integrity": "sha512-7RqCBQ9iwsOBPkjYgoIaeUij606mSkDMExP0NT7QDI3bqkHYQHrQ83uoNIXwPcQm/vP2VbsUz3kiyZZ1qPlLTQ==", "dev": true }, "rollup-plugin-buble": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/rollup-plugin-buble/-/rollup-plugin-buble-0.16.0.tgz", "integrity": "sha512-dPIvH9iK9AUGRrqpARL6TTNY85BJpc5OK5PiCAnFaRe7C1boRBVRXiL0SYsYNVnyYYPl6vu0lVSb722eMSw1Eg==", "dev": true, "requires": { "buble": "^0.16.0", "rollup-pluginutils": "^2.0.1" } }, "rollup-pluginutils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", "dev": true, "requires": { "estree-walker": "^0.3.0", "micromatch": "^2.3.11" } }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, "shell-quote": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "dev": true, "requires": { "array-filter": "~0.0.0", "array-map": "~0.0.0", "array-reduce": "~0.0.0", "jsonify": "~0.0.0" } }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } }, "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" } }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "uglify-js": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.2.tgz", "integrity": "sha512-kKJ8zg7Ivw3DG9Ytgp4+iiSHq3HaHjEQMvyT2x2Bs8kSUwVemj6bPGFp6YWL81f5NAIOLVUKPxBSvqLRGXMpdw==", "dev": true, "requires": { "commander": "~2.11.0", "source-map": "~0.5.1" } }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "vlq": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.2.tgz", "integrity": "sha1-4xbVJXtAuGu0PLjV/qXX9U1rDKE=", "dev": true }, "window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" } }, "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yargs": { "version": "3.32.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "dev": true, "requires": { "camelcase": "^2.0.1", "cliui": "^3.0.3", "decamelize": "^1.1.1", "os-locale": "^1.4.0", "string-width": "^1.0.1", "window-size": "^0.1.4", "y18n": "^3.2.0" } } } } rails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/0000755000175000017500000000000013416122242026213 5ustar utkarsh2102utkarsh2102rails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/0000755000175000017500000000000013416122242033134 5ustar utkarsh2102utkarsh2102rails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/build.js0000644000175000017500000000364513416122242034601 0ustar utkarsh2102utkarsh2102const fs = require('fs'); const path = require('path'); const uglify = require('uglify-js'); const rollup = require('rollup'); const buble = require('rollup-plugin-buble'); const version = require('./package.json').version; const banner = `/*! * perfect-scrollbar v${version} * (c) ${new Date().getFullYear()} Hyunje Jun * @license MIT */`; if (!fs.existsSync('dist')) { fs.mkdirSync('dist') } const resolve = _path => path.resolve(__dirname, _path); const entry = resolve('src/index.js'); build([ { dest: resolve('dist/perfect-scrollbar.js'), format: 'umd', }, { dest: resolve('dist/perfect-scrollbar.min.js'), format: 'umd', }, { dest: resolve('dist/perfect-scrollbar.common.js'), format: 'cjs' }, { dest: resolve('dist/perfect-scrollbar.esm.js'), format: 'es' } ]); function build(builds) { let built = 0; const total = builds.length; const next = () => { buildEntry(builds[built]).then(() => { built++; if (built < total) { next(); } }).catch((e) => console.log(e)); } next(); } function buildEntry(opts) { const isProd = /min\.js$/.test(opts.dest); return rollup .rollup({ input: entry, plugins: [buble()], }) .then(bundle => bundle.generate({ file: opts.dest, format: opts.format, name: 'PerfectScrollbar', banner, })) .then(({code}) => { if (isProd) { code = (banner ? banner + '\n' : '') + uglify.minify(code, { output: { ascii_only: true }, compress: { pure_funcs: ['makeMap'] } }).code; } return write(opts.dest, code); }) } function write(dest, code) { return new Promise((resolve, reject) => { fs.writeFile(dest, code, err => { if (err) { return reject(err); } console.log(path.relative(process.cwd(), dest)); resolve(); }); }); } rails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/dist/0000755000175000017500000000000013416122242034077 5ustar utkarsh2102utkarsh2102././@LongLink0000644000000000000000000000017200000000000011603 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/dist/perfect-scrollbar.esm.jsrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/dist/per0000644000175000017500000010436113416122242034615 0ustar utkarsh2102utkarsh2102/*! * perfect-scrollbar v1.4.0 * (c) 2018 Hyunje Jun * @license MIT */ function get(element) { return getComputedStyle(element); } function set(element, obj) { for (var key in obj) { var val = obj[key]; if (typeof val === 'number') { val = val + "px"; } element.style[key] = val; } return element; } function div(className) { var div = document.createElement('div'); div.className = className; return div; } var elMatches = typeof Element !== 'undefined' && (Element.prototype.matches || Element.prototype.webkitMatchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector); function matches(element, query) { if (!elMatches) { throw new Error('No element matching method supported'); } return elMatches.call(element, query); } function remove(element) { if (element.remove) { element.remove(); } else { if (element.parentNode) { element.parentNode.removeChild(element); } } } function queryChildren(element, selector) { return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); } ); } var cls = { main: 'ps', element: { thumb: function (x) { return ("ps__thumb-" + x); }, rail: function (x) { return ("ps__rail-" + x); }, consuming: 'ps__child--consume', }, state: { focus: 'ps--focus', clicking: 'ps--clicking', active: function (x) { return ("ps--active-" + x); }, scrolling: function (x) { return ("ps--scrolling-" + x); }, }, }; /* * Helper methods */ var scrollingClassTimeout = { x: null, y: null }; function addScrollingClass(i, x) { var classList = i.element.classList; var className = cls.state.scrolling(x); if (classList.contains(className)) { clearTimeout(scrollingClassTimeout[x]); } else { classList.add(className); } } function removeScrollingClass(i, x) { scrollingClassTimeout[x] = setTimeout( function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); }, i.settings.scrollingThreshold ); } function setScrollingClassInstantly(i, x) { addScrollingClass(i, x); removeScrollingClass(i, x); } var EventElement = function EventElement(element) { this.element = element; this.handlers = {}; }; var prototypeAccessors = { isEmpty: { configurable: true } }; EventElement.prototype.bind = function bind (eventName, handler) { if (typeof this.handlers[eventName] === 'undefined') { this.handlers[eventName] = []; } this.handlers[eventName].push(handler); this.element.addEventListener(eventName, handler, false); }; EventElement.prototype.unbind = function unbind (eventName, target) { var this$1 = this; this.handlers[eventName] = this.handlers[eventName].filter(function (handler) { if (target && handler !== target) { return true; } this$1.element.removeEventListener(eventName, handler, false); return false; }); }; EventElement.prototype.unbindAll = function unbindAll () { var this$1 = this; for (var name in this$1.handlers) { this$1.unbind(name); } }; prototypeAccessors.isEmpty.get = function () { var this$1 = this; return Object.keys(this.handlers).every( function (key) { return this$1.handlers[key].length === 0; } ); }; Object.defineProperties( EventElement.prototype, prototypeAccessors ); var EventManager = function EventManager() { this.eventElements = []; }; EventManager.prototype.eventElement = function eventElement (element) { var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0]; if (!ee) { ee = new EventElement(element); this.eventElements.push(ee); } return ee; }; EventManager.prototype.bind = function bind (element, eventName, handler) { this.eventElement(element).bind(eventName, handler); }; EventManager.prototype.unbind = function unbind (element, eventName, handler) { var ee = this.eventElement(element); ee.unbind(eventName, handler); if (ee.isEmpty) { // remove this.eventElements.splice(this.eventElements.indexOf(ee), 1); } }; EventManager.prototype.unbindAll = function unbindAll () { this.eventElements.forEach(function (e) { return e.unbindAll(); }); this.eventElements = []; }; EventManager.prototype.once = function once (element, eventName, handler) { var ee = this.eventElement(element); var onceHandler = function (evt) { ee.unbind(eventName, onceHandler); handler(evt); }; ee.bind(eventName, onceHandler); }; function createEvent(name) { if (typeof window.CustomEvent === 'function') { return new CustomEvent(name); } else { var evt = document.createEvent('CustomEvent'); evt.initCustomEvent(name, false, false, undefined); return evt; } } var processScrollDiff = function( i, axis, diff, useScrollingClass, forceFireReachEvent ) { if ( useScrollingClass === void 0 ) useScrollingClass = true; if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false; var fields; if (axis === 'top') { fields = [ 'contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down' ]; } else if (axis === 'left') { fields = [ 'contentWidth', 'containerWidth', 'scrollLeft', 'x', 'left', 'right' ]; } else { throw new Error('A proper axis should be provided'); } processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent); }; function processScrollDiff$1( i, diff, ref, useScrollingClass, forceFireReachEvent ) { var contentHeight = ref[0]; var containerHeight = ref[1]; var scrollTop = ref[2]; var y = ref[3]; var up = ref[4]; var down = ref[5]; if ( useScrollingClass === void 0 ) useScrollingClass = true; if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false; var element = i.element; // reset reach i.reach[y] = null; // 1 for subpixel rounding if (element[scrollTop] < 1) { i.reach[y] = 'start'; } // 1 for subpixel rounding if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) { i.reach[y] = 'end'; } if (diff) { element.dispatchEvent(createEvent(("ps-scroll-" + y))); if (diff < 0) { element.dispatchEvent(createEvent(("ps-scroll-" + up))); } else if (diff > 0) { element.dispatchEvent(createEvent(("ps-scroll-" + down))); } if (useScrollingClass) { setScrollingClassInstantly(i, y); } } if (i.reach[y] && (diff || forceFireReachEvent)) { element.dispatchEvent(createEvent(("ps-" + y + "-reach-" + (i.reach[y])))); } } function toInt(x) { return parseInt(x, 10) || 0; } function isEditable(el) { return ( matches(el, 'input,[contenteditable]') || matches(el, 'select,[contenteditable]') || matches(el, 'textarea,[contenteditable]') || matches(el, 'button,[contenteditable]') ); } function outerWidth(element) { var styles = get(element); return ( toInt(styles.width) + toInt(styles.paddingLeft) + toInt(styles.paddingRight) + toInt(styles.borderLeftWidth) + toInt(styles.borderRightWidth) ); } var env = { isWebKit: typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style, supportsTouch: typeof window !== 'undefined' && ('ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch)), supportsIePointer: typeof navigator !== 'undefined' && navigator.msMaxTouchPoints, isChrome: typeof navigator !== 'undefined' && /Chrome/i.test(navigator && navigator.userAgent), }; var updateGeometry = function(i) { var element = i.element; var roundedScrollTop = Math.floor(element.scrollTop); i.containerWidth = element.clientWidth; i.containerHeight = element.clientHeight; i.contentWidth = element.scrollWidth; i.contentHeight = element.scrollHeight; if (!element.contains(i.scrollbarXRail)) { // clean up and append queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); } ); element.appendChild(i.scrollbarXRail); } if (!element.contains(i.scrollbarYRail)) { // clean up and append queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); } ); element.appendChild(i.scrollbarYRail); } if ( !i.settings.suppressScrollX && i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth ) { i.scrollbarXActive = true; i.railXWidth = i.containerWidth - i.railXMarginWidth; i.railXRatio = i.containerWidth / i.railXWidth; i.scrollbarXWidth = getThumbSize( i, toInt(i.railXWidth * i.containerWidth / i.contentWidth) ); i.scrollbarXLeft = toInt( (i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth) / (i.contentWidth - i.containerWidth) ); } else { i.scrollbarXActive = false; } if ( !i.settings.suppressScrollY && i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight ) { i.scrollbarYActive = true; i.railYHeight = i.containerHeight - i.railYMarginHeight; i.railYRatio = i.containerHeight / i.railYHeight; i.scrollbarYHeight = getThumbSize( i, toInt(i.railYHeight * i.containerHeight / i.contentHeight) ); i.scrollbarYTop = toInt( roundedScrollTop * (i.railYHeight - i.scrollbarYHeight) / (i.contentHeight - i.containerHeight) ); } else { i.scrollbarYActive = false; } if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) { i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth; } if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) { i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight; } updateCss(element, i); if (i.scrollbarXActive) { element.classList.add(cls.state.active('x')); } else { element.classList.remove(cls.state.active('x')); i.scrollbarXWidth = 0; i.scrollbarXLeft = 0; element.scrollLeft = 0; } if (i.scrollbarYActive) { element.classList.add(cls.state.active('y')); } else { element.classList.remove(cls.state.active('y')); i.scrollbarYHeight = 0; i.scrollbarYTop = 0; element.scrollTop = 0; } }; function getThumbSize(i, thumbSize) { if (i.settings.minScrollbarLength) { thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength); } if (i.settings.maxScrollbarLength) { thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength); } return thumbSize; } function updateCss(element, i) { var xRailOffset = { width: i.railXWidth }; var roundedScrollTop = Math.floor(element.scrollTop); if (i.isRtl) { xRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth; } else { xRailOffset.left = element.scrollLeft; } if (i.isScrollbarXUsingBottom) { xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop; } else { xRailOffset.top = i.scrollbarXTop + roundedScrollTop; } set(i.scrollbarXRail, xRailOffset); var yRailOffset = { top: roundedScrollTop, height: i.railYHeight }; if (i.isScrollbarYUsingRight) { if (i.isRtl) { yRailOffset.right = i.contentWidth - (i.negativeScrollAdjustment + element.scrollLeft) - i.scrollbarYRight - i.scrollbarYOuterWidth; } else { yRailOffset.right = i.scrollbarYRight - element.scrollLeft; } } else { if (i.isRtl) { yRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth * 2 - i.contentWidth - i.scrollbarYLeft - i.scrollbarYOuterWidth; } else { yRailOffset.left = i.scrollbarYLeft + element.scrollLeft; } } set(i.scrollbarYRail, yRailOffset); set(i.scrollbarX, { left: i.scrollbarXLeft, width: i.scrollbarXWidth - i.railBorderXWidth, }); set(i.scrollbarY, { top: i.scrollbarYTop, height: i.scrollbarYHeight - i.railBorderYWidth, }); } var clickRail = function(i) { i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); }); i.event.bind(i.scrollbarYRail, 'mousedown', function (e) { var positionTop = e.pageY - window.pageYOffset - i.scrollbarYRail.getBoundingClientRect().top; var direction = positionTop > i.scrollbarYTop ? 1 : -1; i.element.scrollTop += direction * i.containerHeight; updateGeometry(i); e.stopPropagation(); }); i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); }); i.event.bind(i.scrollbarXRail, 'mousedown', function (e) { var positionLeft = e.pageX - window.pageXOffset - i.scrollbarXRail.getBoundingClientRect().left; var direction = positionLeft > i.scrollbarXLeft ? 1 : -1; i.element.scrollLeft += direction * i.containerWidth; updateGeometry(i); e.stopPropagation(); }); }; var dragThumb = function(i) { bindMouseScrollHandler(i, [ 'containerWidth', 'contentWidth', 'pageX', 'railXWidth', 'scrollbarX', 'scrollbarXWidth', 'scrollLeft', 'x', 'scrollbarXRail' ]); bindMouseScrollHandler(i, [ 'containerHeight', 'contentHeight', 'pageY', 'railYHeight', 'scrollbarY', 'scrollbarYHeight', 'scrollTop', 'y', 'scrollbarYRail' ]); }; function bindMouseScrollHandler( i, ref ) { var containerHeight = ref[0]; var contentHeight = ref[1]; var pageY = ref[2]; var railYHeight = ref[3]; var scrollbarY = ref[4]; var scrollbarYHeight = ref[5]; var scrollTop = ref[6]; var y = ref[7]; var scrollbarYRail = ref[8]; var element = i.element; var startingScrollTop = null; var startingMousePageY = null; var scrollBy = null; function mouseMoveHandler(e) { element[scrollTop] = startingScrollTop + scrollBy * (e[pageY] - startingMousePageY); addScrollingClass(i, y); updateGeometry(i); e.stopPropagation(); e.preventDefault(); } function mouseUpHandler() { removeScrollingClass(i, y); i[scrollbarYRail].classList.remove(cls.state.clicking); i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler); } i.event.bind(i[scrollbarY], 'mousedown', function (e) { startingScrollTop = element[scrollTop]; startingMousePageY = e[pageY]; scrollBy = (i[contentHeight] - i[containerHeight]) / (i[railYHeight] - i[scrollbarYHeight]); i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler); i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler); i[scrollbarYRail].classList.add(cls.state.clicking); e.stopPropagation(); e.preventDefault(); }); } var keyboard = function(i) { var element = i.element; var elementHovered = function () { return matches(element, ':hover'); }; var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); }; function shouldPreventDefault(deltaX, deltaY) { var scrollTop = Math.floor(element.scrollTop); if (deltaX === 0) { if (!i.scrollbarYActive) { return false; } if ( (scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0) ) { return !i.settings.wheelPropagation; } } var scrollLeft = element.scrollLeft; if (deltaY === 0) { if (!i.scrollbarXActive) { return false; } if ( (scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0) ) { return !i.settings.wheelPropagation; } } return true; } i.event.bind(i.ownerDocument, 'keydown', function (e) { if ( (e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented ) { return; } if (!elementHovered() && !scrollbarFocused()) { return; } var activeElement = document.activeElement ? document.activeElement : i.ownerDocument.activeElement; if (activeElement) { if (activeElement.tagName === 'IFRAME') { activeElement = activeElement.contentDocument.activeElement; } else { // go deeper if element is a webcomponent while (activeElement.shadowRoot) { activeElement = activeElement.shadowRoot.activeElement; } } if (isEditable(activeElement)) { return; } } var deltaX = 0; var deltaY = 0; switch (e.which) { case 37: // left if (e.metaKey) { deltaX = -i.contentWidth; } else if (e.altKey) { deltaX = -i.containerWidth; } else { deltaX = -30; } break; case 38: // up if (e.metaKey) { deltaY = i.contentHeight; } else if (e.altKey) { deltaY = i.containerHeight; } else { deltaY = 30; } break; case 39: // right if (e.metaKey) { deltaX = i.contentWidth; } else if (e.altKey) { deltaX = i.containerWidth; } else { deltaX = 30; } break; case 40: // down if (e.metaKey) { deltaY = -i.contentHeight; } else if (e.altKey) { deltaY = -i.containerHeight; } else { deltaY = -30; } break; case 32: // space bar if (e.shiftKey) { deltaY = i.containerHeight; } else { deltaY = -i.containerHeight; } break; case 33: // page up deltaY = i.containerHeight; break; case 34: // page down deltaY = -i.containerHeight; break; case 36: // home deltaY = i.contentHeight; break; case 35: // end deltaY = -i.contentHeight; break; default: return; } if (i.settings.suppressScrollX && deltaX !== 0) { return; } if (i.settings.suppressScrollY && deltaY !== 0) { return; } element.scrollTop -= deltaY; element.scrollLeft += deltaX; updateGeometry(i); if (shouldPreventDefault(deltaX, deltaY)) { e.preventDefault(); } }); }; var wheel = function(i) { var element = i.element; function shouldPreventDefault(deltaX, deltaY) { var roundedScrollTop = Math.floor(element.scrollTop); var isTop = element.scrollTop === 0; var isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight; var isLeft = element.scrollLeft === 0; var isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth; var hitsBound; // pick axis with primary direction if (Math.abs(deltaY) > Math.abs(deltaX)) { hitsBound = isTop || isBottom; } else { hitsBound = isLeft || isRight; } return hitsBound ? !i.settings.wheelPropagation : true; } function getDeltaFromEvent(e) { var deltaX = e.deltaX; var deltaY = -1 * e.deltaY; if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') { // OS X Safari deltaX = -1 * e.wheelDeltaX / 6; deltaY = e.wheelDeltaY / 6; } if (e.deltaMode && e.deltaMode === 1) { // Firefox in deltaMode 1: Line scrolling deltaX *= 10; deltaY *= 10; } if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) { // IE in some mouse drivers deltaX = 0; deltaY = e.wheelDelta; } if (e.shiftKey) { // reverse axis with shift key return [-deltaY, -deltaX]; } return [deltaX, deltaY]; } function shouldBeConsumedByChild(target, deltaX, deltaY) { // FIXME: this is a workaround for issue in FF and IE #571 if (!env.isWebKit && element.querySelector('select:focus')) { return true; } if (!element.contains(target)) { return false; } var cursor = target; while (cursor && cursor !== element) { if (cursor.classList.contains(cls.element.consuming)) { return true; } var style = get(cursor); var overflow = [style.overflow, style.overflowX, style.overflowY].join( '' ); // if scrollable if (overflow.match(/(scroll|auto)/)) { var maxScrollTop = cursor.scrollHeight - cursor.clientHeight; if (maxScrollTop > 0) { if ( !(cursor.scrollTop === 0 && deltaY > 0) && !(cursor.scrollTop === maxScrollTop && deltaY < 0) ) { return true; } } var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth; if (maxScrollLeft > 0) { if ( !(cursor.scrollLeft === 0 && deltaX < 0) && !(cursor.scrollLeft === maxScrollLeft && deltaX > 0) ) { return true; } } } cursor = cursor.parentNode; } return false; } function mousewheelHandler(e) { var ref = getDeltaFromEvent(e); var deltaX = ref[0]; var deltaY = ref[1]; if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) { return; } var shouldPrevent = false; if (!i.settings.useBothWheelAxes) { // deltaX will only be used for horizontal scrolling and deltaY will // only be used for vertical scrolling - this is the default element.scrollTop -= deltaY * i.settings.wheelSpeed; element.scrollLeft += deltaX * i.settings.wheelSpeed; } else if (i.scrollbarYActive && !i.scrollbarXActive) { // only vertical scrollbar is active and useBothWheelAxes option is // active, so let's scroll vertical bar using both mouse wheel axes if (deltaY) { element.scrollTop -= deltaY * i.settings.wheelSpeed; } else { element.scrollTop += deltaX * i.settings.wheelSpeed; } shouldPrevent = true; } else if (i.scrollbarXActive && !i.scrollbarYActive) { // useBothWheelAxes and only horizontal bar is active, so use both // wheel axes for horizontal bar if (deltaX) { element.scrollLeft += deltaX * i.settings.wheelSpeed; } else { element.scrollLeft -= deltaY * i.settings.wheelSpeed; } shouldPrevent = true; } updateGeometry(i); shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY); if (shouldPrevent && !e.ctrlKey) { e.stopPropagation(); e.preventDefault(); } } if (typeof window.onwheel !== 'undefined') { i.event.bind(element, 'wheel', mousewheelHandler); } else if (typeof window.onmousewheel !== 'undefined') { i.event.bind(element, 'mousewheel', mousewheelHandler); } }; var touch = function(i) { if (!env.supportsTouch && !env.supportsIePointer) { return; } var element = i.element; function shouldPrevent(deltaX, deltaY) { var scrollTop = Math.floor(element.scrollTop); var scrollLeft = element.scrollLeft; var magnitudeX = Math.abs(deltaX); var magnitudeY = Math.abs(deltaY); if (magnitudeY > magnitudeX) { // user is perhaps trying to swipe up/down the page if ( (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) || (deltaY > 0 && scrollTop === 0) ) { // set prevent for mobile Chrome refresh return window.scrollY === 0 && deltaY > 0 && env.isChrome; } } else if (magnitudeX > magnitudeY) { // user is perhaps trying to swipe left/right across the page if ( (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) || (deltaX > 0 && scrollLeft === 0) ) { return true; } } return true; } function applyTouchMove(differenceX, differenceY) { element.scrollTop -= differenceY; element.scrollLeft -= differenceX; updateGeometry(i); } var startOffset = {}; var startTime = 0; var speed = {}; var easingLoop = null; function getTouch(e) { if (e.targetTouches) { return e.targetTouches[0]; } else { // Maybe IE pointer return e; } } function shouldHandle(e) { if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) { return false; } if (e.targetTouches && e.targetTouches.length === 1) { return true; } if ( e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE ) { return true; } return false; } function touchStart(e) { if (!shouldHandle(e)) { return; } var touch = getTouch(e); startOffset.pageX = touch.pageX; startOffset.pageY = touch.pageY; startTime = new Date().getTime(); if (easingLoop !== null) { clearInterval(easingLoop); } } function shouldBeConsumedByChild(target, deltaX, deltaY) { if (!element.contains(target)) { return false; } var cursor = target; while (cursor && cursor !== element) { if (cursor.classList.contains(cls.element.consuming)) { return true; } var style = get(cursor); var overflow = [style.overflow, style.overflowX, style.overflowY].join( '' ); // if scrollable if (overflow.match(/(scroll|auto)/)) { var maxScrollTop = cursor.scrollHeight - cursor.clientHeight; if (maxScrollTop > 0) { if ( !(cursor.scrollTop === 0 && deltaY > 0) && !(cursor.scrollTop === maxScrollTop && deltaY < 0) ) { return true; } } var maxScrollLeft = cursor.scrollLeft - cursor.clientWidth; if (maxScrollLeft > 0) { if ( !(cursor.scrollLeft === 0 && deltaX < 0) && !(cursor.scrollLeft === maxScrollLeft && deltaX > 0) ) { return true; } } } cursor = cursor.parentNode; } return false; } function touchMove(e) { if (shouldHandle(e)) { var touch = getTouch(e); var currentOffset = { pageX: touch.pageX, pageY: touch.pageY }; var differenceX = currentOffset.pageX - startOffset.pageX; var differenceY = currentOffset.pageY - startOffset.pageY; if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) { return; } applyTouchMove(differenceX, differenceY); startOffset = currentOffset; var currentTime = new Date().getTime(); var timeGap = currentTime - startTime; if (timeGap > 0) { speed.x = differenceX / timeGap; speed.y = differenceY / timeGap; startTime = currentTime; } if (shouldPrevent(differenceX, differenceY)) { e.preventDefault(); } } } function touchEnd() { if (i.settings.swipeEasing) { clearInterval(easingLoop); easingLoop = setInterval(function() { if (i.isInitialized) { clearInterval(easingLoop); return; } if (!speed.x && !speed.y) { clearInterval(easingLoop); return; } if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) { clearInterval(easingLoop); return; } applyTouchMove(speed.x * 30, speed.y * 30); speed.x *= 0.8; speed.y *= 0.8; }, 10); } } if (env.supportsTouch) { i.event.bind(element, 'touchstart', touchStart); i.event.bind(element, 'touchmove', touchMove); i.event.bind(element, 'touchend', touchEnd); } else if (env.supportsIePointer) { if (window.PointerEvent) { i.event.bind(element, 'pointerdown', touchStart); i.event.bind(element, 'pointermove', touchMove); i.event.bind(element, 'pointerup', touchEnd); } else if (window.MSPointerEvent) { i.event.bind(element, 'MSPointerDown', touchStart); i.event.bind(element, 'MSPointerMove', touchMove); i.event.bind(element, 'MSPointerUp', touchEnd); } } }; var defaultSettings = function () { return ({ handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'], maxScrollbarLength: null, minScrollbarLength: null, scrollingThreshold: 1000, scrollXMarginOffset: 0, scrollYMarginOffset: 0, suppressScrollX: false, suppressScrollY: false, swipeEasing: true, useBothWheelAxes: false, wheelPropagation: true, wheelSpeed: 1, }); }; var handlers = { 'click-rail': clickRail, 'drag-thumb': dragThumb, keyboard: keyboard, wheel: wheel, touch: touch, }; var PerfectScrollbar = function PerfectScrollbar(element, userSettings) { var this$1 = this; if ( userSettings === void 0 ) userSettings = {}; if (typeof element === 'string') { element = document.querySelector(element); } if (!element || !element.nodeName) { throw new Error('no element is specified to initialize PerfectScrollbar'); } this.element = element; element.classList.add(cls.main); this.settings = defaultSettings(); for (var key in userSettings) { this$1.settings[key] = userSettings[key]; } this.containerWidth = null; this.containerHeight = null; this.contentWidth = null; this.contentHeight = null; var focus = function () { return element.classList.add(cls.state.focus); }; var blur = function () { return element.classList.remove(cls.state.focus); }; this.isRtl = get(element).direction === 'rtl'; this.isNegativeScroll = (function () { var originalScrollLeft = element.scrollLeft; var result = null; element.scrollLeft = -1; result = element.scrollLeft < 0; element.scrollLeft = originalScrollLeft; return result; })(); this.negativeScrollAdjustment = this.isNegativeScroll ? element.scrollWidth - element.clientWidth : 0; this.event = new EventManager(); this.ownerDocument = element.ownerDocument || document; this.scrollbarXRail = div(cls.element.rail('x')); element.appendChild(this.scrollbarXRail); this.scrollbarX = div(cls.element.thumb('x')); this.scrollbarXRail.appendChild(this.scrollbarX); this.scrollbarX.setAttribute('tabindex', 0); this.event.bind(this.scrollbarX, 'focus', focus); this.event.bind(this.scrollbarX, 'blur', blur); this.scrollbarXActive = null; this.scrollbarXWidth = null; this.scrollbarXLeft = null; var railXStyle = get(this.scrollbarXRail); this.scrollbarXBottom = parseInt(railXStyle.bottom, 10); if (isNaN(this.scrollbarXBottom)) { this.isScrollbarXUsingBottom = false; this.scrollbarXTop = toInt(railXStyle.top); } else { this.isScrollbarXUsingBottom = true; } this.railBorderXWidth = toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth); // Set rail to display:block to calculate margins set(this.scrollbarXRail, { display: 'block' }); this.railXMarginWidth = toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight); set(this.scrollbarXRail, { display: '' }); this.railXWidth = null; this.railXRatio = null; this.scrollbarYRail = div(cls.element.rail('y')); element.appendChild(this.scrollbarYRail); this.scrollbarY = div(cls.element.thumb('y')); this.scrollbarYRail.appendChild(this.scrollbarY); this.scrollbarY.setAttribute('tabindex', 0); this.event.bind(this.scrollbarY, 'focus', focus); this.event.bind(this.scrollbarY, 'blur', blur); this.scrollbarYActive = null; this.scrollbarYHeight = null; this.scrollbarYTop = null; var railYStyle = get(this.scrollbarYRail); this.scrollbarYRight = parseInt(railYStyle.right, 10); if (isNaN(this.scrollbarYRight)) { this.isScrollbarYUsingRight = false; this.scrollbarYLeft = toInt(railYStyle.left); } else { this.isScrollbarYUsingRight = true; } this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null; this.railBorderYWidth = toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth); set(this.scrollbarYRail, { display: 'block' }); this.railYMarginHeight = toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom); set(this.scrollbarYRail, { display: '' }); this.railYHeight = null; this.railYRatio = null; this.reach = { x: element.scrollLeft <= 0 ? 'start' : element.scrollLeft >= this.contentWidth - this.containerWidth ? 'end' : null, y: element.scrollTop <= 0 ? 'start' : element.scrollTop >= this.contentHeight - this.containerHeight ? 'end' : null, }; this.isAlive = true; this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); }); this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only this.lastScrollLeft = element.scrollLeft; // for onScroll only this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); }); updateGeometry(this); }; PerfectScrollbar.prototype.update = function update () { if (!this.isAlive) { return; } // Recalcuate negative scrollLeft adjustment this.negativeScrollAdjustment = this.isNegativeScroll ? this.element.scrollWidth - this.element.clientWidth : 0; // Recalculate rail margins set(this.scrollbarXRail, { display: 'block' }); set(this.scrollbarYRail, { display: 'block' }); this.railXMarginWidth = toInt(get(this.scrollbarXRail).marginLeft) + toInt(get(this.scrollbarXRail).marginRight); this.railYMarginHeight = toInt(get(this.scrollbarYRail).marginTop) + toInt(get(this.scrollbarYRail).marginBottom); // Hide scrollbars not to affect scrollWidth and scrollHeight set(this.scrollbarXRail, { display: 'none' }); set(this.scrollbarYRail, { display: 'none' }); updateGeometry(this); processScrollDiff(this, 'top', 0, false, true); processScrollDiff(this, 'left', 0, false, true); set(this.scrollbarXRail, { display: '' }); set(this.scrollbarYRail, { display: '' }); }; PerfectScrollbar.prototype.onScroll = function onScroll (e) { if (!this.isAlive) { return; } updateGeometry(this); processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop); processScrollDiff( this, 'left', this.element.scrollLeft - this.lastScrollLeft ); this.lastScrollTop = Math.floor(this.element.scrollTop); this.lastScrollLeft = this.element.scrollLeft; }; PerfectScrollbar.prototype.destroy = function destroy () { if (!this.isAlive) { return; } this.event.unbindAll(); remove(this.scrollbarX); remove(this.scrollbarY); remove(this.scrollbarXRail); remove(this.scrollbarYRail); this.removePsClasses(); // unset elements this.element = null; this.scrollbarX = null; this.scrollbarY = null; this.scrollbarXRail = null; this.scrollbarYRail = null; this.isAlive = false; }; PerfectScrollbar.prototype.removePsClasses = function removePsClasses () { this.element.className = this.element.className .split(' ') .filter(function (name) { return !name.match(/^ps([-_].+|)$/); }) .join(' '); }; module.exports = PerfectScrollbar; ././@LongLink0000644000000000000000000000016600000000000011606 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/dist/perfect-scrollbar.jsrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/dist/per0000644000175000017500000010477113416122242034622 0ustar utkarsh2102utkarsh2102/*! * perfect-scrollbar v1.4.0 * (c) 2018 Hyunje Jun * @license MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global.PerfectScrollbar = factory()); }(this, (function () { 'use strict'; function get(element) { return getComputedStyle(element); } function set(element, obj) { for (var key in obj) { var val = obj[key]; if (typeof val === 'number') { val = val + "px"; } element.style[key] = val; } return element; } function div(className) { var div = document.createElement('div'); div.className = className; return div; } var elMatches = typeof Element !== 'undefined' && (Element.prototype.matches || Element.prototype.webkitMatchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector); function matches(element, query) { if (!elMatches) { throw new Error('No element matching method supported'); } return elMatches.call(element, query); } function remove(element) { if (element.remove) { element.remove(); } else { if (element.parentNode) { element.parentNode.removeChild(element); } } } function queryChildren(element, selector) { return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); } ); } var cls = { main: 'ps', element: { thumb: function (x) { return ("ps__thumb-" + x); }, rail: function (x) { return ("ps__rail-" + x); }, consuming: 'ps__child--consume', }, state: { focus: 'ps--focus', clicking: 'ps--clicking', active: function (x) { return ("ps--active-" + x); }, scrolling: function (x) { return ("ps--scrolling-" + x); }, }, }; /* * Helper methods */ var scrollingClassTimeout = { x: null, y: null }; function addScrollingClass(i, x) { var classList = i.element.classList; var className = cls.state.scrolling(x); if (classList.contains(className)) { clearTimeout(scrollingClassTimeout[x]); } else { classList.add(className); } } function removeScrollingClass(i, x) { scrollingClassTimeout[x] = setTimeout( function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); }, i.settings.scrollingThreshold ); } function setScrollingClassInstantly(i, x) { addScrollingClass(i, x); removeScrollingClass(i, x); } var EventElement = function EventElement(element) { this.element = element; this.handlers = {}; }; var prototypeAccessors = { isEmpty: { configurable: true } }; EventElement.prototype.bind = function bind (eventName, handler) { if (typeof this.handlers[eventName] === 'undefined') { this.handlers[eventName] = []; } this.handlers[eventName].push(handler); this.element.addEventListener(eventName, handler, false); }; EventElement.prototype.unbind = function unbind (eventName, target) { var this$1 = this; this.handlers[eventName] = this.handlers[eventName].filter(function (handler) { if (target && handler !== target) { return true; } this$1.element.removeEventListener(eventName, handler, false); return false; }); }; EventElement.prototype.unbindAll = function unbindAll () { var this$1 = this; for (var name in this$1.handlers) { this$1.unbind(name); } }; prototypeAccessors.isEmpty.get = function () { var this$1 = this; return Object.keys(this.handlers).every( function (key) { return this$1.handlers[key].length === 0; } ); }; Object.defineProperties( EventElement.prototype, prototypeAccessors ); var EventManager = function EventManager() { this.eventElements = []; }; EventManager.prototype.eventElement = function eventElement (element) { var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0]; if (!ee) { ee = new EventElement(element); this.eventElements.push(ee); } return ee; }; EventManager.prototype.bind = function bind (element, eventName, handler) { this.eventElement(element).bind(eventName, handler); }; EventManager.prototype.unbind = function unbind (element, eventName, handler) { var ee = this.eventElement(element); ee.unbind(eventName, handler); if (ee.isEmpty) { // remove this.eventElements.splice(this.eventElements.indexOf(ee), 1); } }; EventManager.prototype.unbindAll = function unbindAll () { this.eventElements.forEach(function (e) { return e.unbindAll(); }); this.eventElements = []; }; EventManager.prototype.once = function once (element, eventName, handler) { var ee = this.eventElement(element); var onceHandler = function (evt) { ee.unbind(eventName, onceHandler); handler(evt); }; ee.bind(eventName, onceHandler); }; function createEvent(name) { if (typeof window.CustomEvent === 'function') { return new CustomEvent(name); } else { var evt = document.createEvent('CustomEvent'); evt.initCustomEvent(name, false, false, undefined); return evt; } } var processScrollDiff = function( i, axis, diff, useScrollingClass, forceFireReachEvent ) { if ( useScrollingClass === void 0 ) useScrollingClass = true; if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false; var fields; if (axis === 'top') { fields = [ 'contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down' ]; } else if (axis === 'left') { fields = [ 'contentWidth', 'containerWidth', 'scrollLeft', 'x', 'left', 'right' ]; } else { throw new Error('A proper axis should be provided'); } processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent); }; function processScrollDiff$1( i, diff, ref, useScrollingClass, forceFireReachEvent ) { var contentHeight = ref[0]; var containerHeight = ref[1]; var scrollTop = ref[2]; var y = ref[3]; var up = ref[4]; var down = ref[5]; if ( useScrollingClass === void 0 ) useScrollingClass = true; if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false; var element = i.element; // reset reach i.reach[y] = null; // 1 for subpixel rounding if (element[scrollTop] < 1) { i.reach[y] = 'start'; } // 1 for subpixel rounding if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) { i.reach[y] = 'end'; } if (diff) { element.dispatchEvent(createEvent(("ps-scroll-" + y))); if (diff < 0) { element.dispatchEvent(createEvent(("ps-scroll-" + up))); } else if (diff > 0) { element.dispatchEvent(createEvent(("ps-scroll-" + down))); } if (useScrollingClass) { setScrollingClassInstantly(i, y); } } if (i.reach[y] && (diff || forceFireReachEvent)) { element.dispatchEvent(createEvent(("ps-" + y + "-reach-" + (i.reach[y])))); } } function toInt(x) { return parseInt(x, 10) || 0; } function isEditable(el) { return ( matches(el, 'input,[contenteditable]') || matches(el, 'select,[contenteditable]') || matches(el, 'textarea,[contenteditable]') || matches(el, 'button,[contenteditable]') ); } function outerWidth(element) { var styles = get(element); return ( toInt(styles.width) + toInt(styles.paddingLeft) + toInt(styles.paddingRight) + toInt(styles.borderLeftWidth) + toInt(styles.borderRightWidth) ); } var env = { isWebKit: typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style, supportsTouch: typeof window !== 'undefined' && ('ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch)), supportsIePointer: typeof navigator !== 'undefined' && navigator.msMaxTouchPoints, isChrome: typeof navigator !== 'undefined' && /Chrome/i.test(navigator && navigator.userAgent), }; var updateGeometry = function(i) { var element = i.element; var roundedScrollTop = Math.floor(element.scrollTop); i.containerWidth = element.clientWidth; i.containerHeight = element.clientHeight; i.contentWidth = element.scrollWidth; i.contentHeight = element.scrollHeight; if (!element.contains(i.scrollbarXRail)) { // clean up and append queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); } ); element.appendChild(i.scrollbarXRail); } if (!element.contains(i.scrollbarYRail)) { // clean up and append queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); } ); element.appendChild(i.scrollbarYRail); } if ( !i.settings.suppressScrollX && i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth ) { i.scrollbarXActive = true; i.railXWidth = i.containerWidth - i.railXMarginWidth; i.railXRatio = i.containerWidth / i.railXWidth; i.scrollbarXWidth = getThumbSize( i, toInt(i.railXWidth * i.containerWidth / i.contentWidth) ); i.scrollbarXLeft = toInt( (i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth) / (i.contentWidth - i.containerWidth) ); } else { i.scrollbarXActive = false; } if ( !i.settings.suppressScrollY && i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight ) { i.scrollbarYActive = true; i.railYHeight = i.containerHeight - i.railYMarginHeight; i.railYRatio = i.containerHeight / i.railYHeight; i.scrollbarYHeight = getThumbSize( i, toInt(i.railYHeight * i.containerHeight / i.contentHeight) ); i.scrollbarYTop = toInt( roundedScrollTop * (i.railYHeight - i.scrollbarYHeight) / (i.contentHeight - i.containerHeight) ); } else { i.scrollbarYActive = false; } if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) { i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth; } if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) { i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight; } updateCss(element, i); if (i.scrollbarXActive) { element.classList.add(cls.state.active('x')); } else { element.classList.remove(cls.state.active('x')); i.scrollbarXWidth = 0; i.scrollbarXLeft = 0; element.scrollLeft = 0; } if (i.scrollbarYActive) { element.classList.add(cls.state.active('y')); } else { element.classList.remove(cls.state.active('y')); i.scrollbarYHeight = 0; i.scrollbarYTop = 0; element.scrollTop = 0; } }; function getThumbSize(i, thumbSize) { if (i.settings.minScrollbarLength) { thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength); } if (i.settings.maxScrollbarLength) { thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength); } return thumbSize; } function updateCss(element, i) { var xRailOffset = { width: i.railXWidth }; var roundedScrollTop = Math.floor(element.scrollTop); if (i.isRtl) { xRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth; } else { xRailOffset.left = element.scrollLeft; } if (i.isScrollbarXUsingBottom) { xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop; } else { xRailOffset.top = i.scrollbarXTop + roundedScrollTop; } set(i.scrollbarXRail, xRailOffset); var yRailOffset = { top: roundedScrollTop, height: i.railYHeight }; if (i.isScrollbarYUsingRight) { if (i.isRtl) { yRailOffset.right = i.contentWidth - (i.negativeScrollAdjustment + element.scrollLeft) - i.scrollbarYRight - i.scrollbarYOuterWidth; } else { yRailOffset.right = i.scrollbarYRight - element.scrollLeft; } } else { if (i.isRtl) { yRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth * 2 - i.contentWidth - i.scrollbarYLeft - i.scrollbarYOuterWidth; } else { yRailOffset.left = i.scrollbarYLeft + element.scrollLeft; } } set(i.scrollbarYRail, yRailOffset); set(i.scrollbarX, { left: i.scrollbarXLeft, width: i.scrollbarXWidth - i.railBorderXWidth, }); set(i.scrollbarY, { top: i.scrollbarYTop, height: i.scrollbarYHeight - i.railBorderYWidth, }); } var clickRail = function(i) { i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); }); i.event.bind(i.scrollbarYRail, 'mousedown', function (e) { var positionTop = e.pageY - window.pageYOffset - i.scrollbarYRail.getBoundingClientRect().top; var direction = positionTop > i.scrollbarYTop ? 1 : -1; i.element.scrollTop += direction * i.containerHeight; updateGeometry(i); e.stopPropagation(); }); i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); }); i.event.bind(i.scrollbarXRail, 'mousedown', function (e) { var positionLeft = e.pageX - window.pageXOffset - i.scrollbarXRail.getBoundingClientRect().left; var direction = positionLeft > i.scrollbarXLeft ? 1 : -1; i.element.scrollLeft += direction * i.containerWidth; updateGeometry(i); e.stopPropagation(); }); }; var dragThumb = function(i) { bindMouseScrollHandler(i, [ 'containerWidth', 'contentWidth', 'pageX', 'railXWidth', 'scrollbarX', 'scrollbarXWidth', 'scrollLeft', 'x', 'scrollbarXRail' ]); bindMouseScrollHandler(i, [ 'containerHeight', 'contentHeight', 'pageY', 'railYHeight', 'scrollbarY', 'scrollbarYHeight', 'scrollTop', 'y', 'scrollbarYRail' ]); }; function bindMouseScrollHandler( i, ref ) { var containerHeight = ref[0]; var contentHeight = ref[1]; var pageY = ref[2]; var railYHeight = ref[3]; var scrollbarY = ref[4]; var scrollbarYHeight = ref[5]; var scrollTop = ref[6]; var y = ref[7]; var scrollbarYRail = ref[8]; var element = i.element; var startingScrollTop = null; var startingMousePageY = null; var scrollBy = null; function mouseMoveHandler(e) { element[scrollTop] = startingScrollTop + scrollBy * (e[pageY] - startingMousePageY); addScrollingClass(i, y); updateGeometry(i); e.stopPropagation(); e.preventDefault(); } function mouseUpHandler() { removeScrollingClass(i, y); i[scrollbarYRail].classList.remove(cls.state.clicking); i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler); } i.event.bind(i[scrollbarY], 'mousedown', function (e) { startingScrollTop = element[scrollTop]; startingMousePageY = e[pageY]; scrollBy = (i[contentHeight] - i[containerHeight]) / (i[railYHeight] - i[scrollbarYHeight]); i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler); i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler); i[scrollbarYRail].classList.add(cls.state.clicking); e.stopPropagation(); e.preventDefault(); }); } var keyboard = function(i) { var element = i.element; var elementHovered = function () { return matches(element, ':hover'); }; var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); }; function shouldPreventDefault(deltaX, deltaY) { var scrollTop = Math.floor(element.scrollTop); if (deltaX === 0) { if (!i.scrollbarYActive) { return false; } if ( (scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0) ) { return !i.settings.wheelPropagation; } } var scrollLeft = element.scrollLeft; if (deltaY === 0) { if (!i.scrollbarXActive) { return false; } if ( (scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0) ) { return !i.settings.wheelPropagation; } } return true; } i.event.bind(i.ownerDocument, 'keydown', function (e) { if ( (e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented ) { return; } if (!elementHovered() && !scrollbarFocused()) { return; } var activeElement = document.activeElement ? document.activeElement : i.ownerDocument.activeElement; if (activeElement) { if (activeElement.tagName === 'IFRAME') { activeElement = activeElement.contentDocument.activeElement; } else { // go deeper if element is a webcomponent while (activeElement.shadowRoot) { activeElement = activeElement.shadowRoot.activeElement; } } if (isEditable(activeElement)) { return; } } var deltaX = 0; var deltaY = 0; switch (e.which) { case 37: // left if (e.metaKey) { deltaX = -i.contentWidth; } else if (e.altKey) { deltaX = -i.containerWidth; } else { deltaX = -30; } break; case 38: // up if (e.metaKey) { deltaY = i.contentHeight; } else if (e.altKey) { deltaY = i.containerHeight; } else { deltaY = 30; } break; case 39: // right if (e.metaKey) { deltaX = i.contentWidth; } else if (e.altKey) { deltaX = i.containerWidth; } else { deltaX = 30; } break; case 40: // down if (e.metaKey) { deltaY = -i.contentHeight; } else if (e.altKey) { deltaY = -i.containerHeight; } else { deltaY = -30; } break; case 32: // space bar if (e.shiftKey) { deltaY = i.containerHeight; } else { deltaY = -i.containerHeight; } break; case 33: // page up deltaY = i.containerHeight; break; case 34: // page down deltaY = -i.containerHeight; break; case 36: // home deltaY = i.contentHeight; break; case 35: // end deltaY = -i.contentHeight; break; default: return; } if (i.settings.suppressScrollX && deltaX !== 0) { return; } if (i.settings.suppressScrollY && deltaY !== 0) { return; } element.scrollTop -= deltaY; element.scrollLeft += deltaX; updateGeometry(i); if (shouldPreventDefault(deltaX, deltaY)) { e.preventDefault(); } }); }; var wheel = function(i) { var element = i.element; function shouldPreventDefault(deltaX, deltaY) { var roundedScrollTop = Math.floor(element.scrollTop); var isTop = element.scrollTop === 0; var isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight; var isLeft = element.scrollLeft === 0; var isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth; var hitsBound; // pick axis with primary direction if (Math.abs(deltaY) > Math.abs(deltaX)) { hitsBound = isTop || isBottom; } else { hitsBound = isLeft || isRight; } return hitsBound ? !i.settings.wheelPropagation : true; } function getDeltaFromEvent(e) { var deltaX = e.deltaX; var deltaY = -1 * e.deltaY; if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') { // OS X Safari deltaX = -1 * e.wheelDeltaX / 6; deltaY = e.wheelDeltaY / 6; } if (e.deltaMode && e.deltaMode === 1) { // Firefox in deltaMode 1: Line scrolling deltaX *= 10; deltaY *= 10; } if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) { // IE in some mouse drivers deltaX = 0; deltaY = e.wheelDelta; } if (e.shiftKey) { // reverse axis with shift key return [-deltaY, -deltaX]; } return [deltaX, deltaY]; } function shouldBeConsumedByChild(target, deltaX, deltaY) { // FIXME: this is a workaround for issue in FF and IE #571 if (!env.isWebKit && element.querySelector('select:focus')) { return true; } if (!element.contains(target)) { return false; } let cursor = target; while (cursor && cursor !== element) { if (cursor.classList.contains(cls.element.consuming)) { return true; } const style = CSS.get(cursor); const overflow = [style.overflow, style.overflowX, style.overflowY].join( '' ); // if scrollable if (overflow.match(/(scroll|auto)/)) { const maxScrollTop = cursor.scrollHeight - cursor.clientHeight; if (maxScrollTop > 0) { if ( !(cursor.scrollTop === 0 && deltaY > 0) && !(cursor.scrollTop === maxScrollTop && deltaY < 0) ) { return true; } } const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth; if (maxScrollLeft > 0) { if ( !(cursor.scrollLeft === 0 && deltaX < 0) && !(cursor.scrollLeft === maxScrollLeft && deltaX > 0) ) { return true; } } } cursor = cursor.parentNode; } return false; } function mousewheelHandler(e) { const [deltaX, deltaY] = getDeltaFromEvent(e); if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) { return; } let shouldPrevent = false; if (!i.settings.useBothWheelAxes) { // deltaX will only be used for horizontal scrolling and deltaY will // only be used for vertical scrolling - this is the default element.scrollTop -= deltaY * i.settings.wheelSpeed; element.scrollLeft += deltaX * i.settings.wheelSpeed; } else if (i.scrollbarYActive && !i.scrollbarXActive) { // only vertical scrollbar is active and useBothWheelAxes option is // active, so let's scroll vertical bar using both mouse wheel axes if (deltaY) { element.scrollTop -= deltaY * i.settings.wheelSpeed; } else { element.scrollTop += deltaX * i.settings.wheelSpeed; } shouldPrevent = true; } else if (i.scrollbarXActive && !i.scrollbarYActive) { // useBothWheelAxes and only horizontal bar is active, so use both // wheel axes for horizontal bar if (deltaX) { element.scrollLeft += deltaX * i.settings.wheelSpeed; } else { element.scrollLeft -= deltaY * i.settings.wheelSpeed; } shouldPrevent = true; } updateGeometry(i); shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY); if (shouldPrevent && !e.ctrlKey) { e.stopPropagation(); e.preventDefault(); } } if (typeof window.onwheel !== 'undefined') { i.event.bind(element, 'wheel', mousewheelHandler); } else if (typeof window.onmousewheel !== 'undefined') { i.event.bind(element, 'mousewheel', mousewheelHandler); } } ././@LongLink0000644000000000000000000000016200000000000011602 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/handlers/touch.jsrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/hand0000644000175000017500000001252513416122242034565 0ustar utkarsh2102utkarsh2102import updateGeometry from '../update-geometry'; import cls from '../lib/class-names'; import * as CSS from '../lib/css'; import { env } from '../lib/util'; export default function(i) { if (!env.supportsTouch && !env.supportsIePointer) { return; } const element = i.element; function shouldPrevent(deltaX, deltaY) { const scrollTop = Math.floor(element.scrollTop); const scrollLeft = element.scrollLeft; const magnitudeX = Math.abs(deltaX); const magnitudeY = Math.abs(deltaY); if (magnitudeY > magnitudeX) { // user is perhaps trying to swipe up/down the page if ( (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) || (deltaY > 0 && scrollTop === 0) ) { // set prevent for mobile Chrome refresh return window.scrollY === 0 && deltaY > 0 && env.isChrome; } } else if (magnitudeX > magnitudeY) { // user is perhaps trying to swipe left/right across the page if ( (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) || (deltaX > 0 && scrollLeft === 0) ) { return true; } } return true; } function applyTouchMove(differenceX, differenceY) { element.scrollTop -= differenceY; element.scrollLeft -= differenceX; updateGeometry(i); } let startOffset = {}; let startTime = 0; let speed = {}; let easingLoop = null; function getTouch(e) { if (e.targetTouches) { return e.targetTouches[0]; } else { // Maybe IE pointer return e; } } function shouldHandle(e) { if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) { return false; } if (e.targetTouches && e.targetTouches.length === 1) { return true; } if ( e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE ) { return true; } return false; } function touchStart(e) { if (!shouldHandle(e)) { return; } const touch = getTouch(e); startOffset.pageX = touch.pageX; startOffset.pageY = touch.pageY; startTime = new Date().getTime(); if (easingLoop !== null) { clearInterval(easingLoop); } } function shouldBeConsumedByChild(target, deltaX, deltaY) { if (!element.contains(target)) { return false; } let cursor = target; while (cursor && cursor !== element) { if (cursor.classList.contains(cls.element.consuming)) { return true; } const style = CSS.get(cursor); const overflow = [style.overflow, style.overflowX, style.overflowY].join( '' ); // if scrollable if (overflow.match(/(scroll|auto)/)) { const maxScrollTop = cursor.scrollHeight - cursor.clientHeight; if (maxScrollTop > 0) { if ( !(cursor.scrollTop === 0 && deltaY > 0) && !(cursor.scrollTop === maxScrollTop && deltaY < 0) ) { return true; } } const maxScrollLeft = cursor.scrollLeft - cursor.clientWidth; if (maxScrollLeft > 0) { if ( !(cursor.scrollLeft === 0 && deltaX < 0) && !(cursor.scrollLeft === maxScrollLeft && deltaX > 0) ) { return true; } } } cursor = cursor.parentNode; } return false; } function touchMove(e) { if (shouldHandle(e)) { const touch = getTouch(e); const currentOffset = { pageX: touch.pageX, pageY: touch.pageY }; const differenceX = currentOffset.pageX - startOffset.pageX; const differenceY = currentOffset.pageY - startOffset.pageY; if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) { return; } applyTouchMove(differenceX, differenceY); startOffset = currentOffset; const currentTime = new Date().getTime(); const timeGap = currentTime - startTime; if (timeGap > 0) { speed.x = differenceX / timeGap; speed.y = differenceY / timeGap; startTime = currentTime; } if (shouldPrevent(differenceX, differenceY)) { e.preventDefault(); } } } function touchEnd() { if (i.settings.swipeEasing) { clearInterval(easingLoop); easingLoop = setInterval(function() { if (i.isInitialized) { clearInterval(easingLoop); return; } if (!speed.x && !speed.y) { clearInterval(easingLoop); return; } if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) { clearInterval(easingLoop); return; } applyTouchMove(speed.x * 30, speed.y * 30); speed.x *= 0.8; speed.y *= 0.8; }, 10); } } if (env.supportsTouch) { i.event.bind(element, 'touchstart', touchStart); i.event.bind(element, 'touchmove', touchMove); i.event.bind(element, 'touchend', touchEnd); } else if (env.supportsIePointer) { if (window.PointerEvent) { i.event.bind(element, 'pointerdown', touchStart); i.event.bind(element, 'pointermove', touchMove); i.event.bind(element, 'pointerup', touchEnd); } else if (window.MSPointerEvent) { i.event.bind(element, 'MSPointerDown', touchStart); i.event.bind(element, 'MSPointerMove', touchMove); i.event.bind(element, 'MSPointerUp', touchEnd); } } } ././@LongLink0000644000000000000000000000016700000000000011607 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/handlers/drag-thumb.jsrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/hand0000644000175000017500000000356413416122242034570 0ustar utkarsh2102utkarsh2102import * as CSS from '../lib/css'; import * as DOM from '../lib/dom'; import cls, { addScrollingClass, removeScrollingClass, } from '../lib/class-names'; import updateGeometry from '../update-geometry'; import { toInt } from '../lib/util'; export default function(i) { bindMouseScrollHandler(i, [ 'containerWidth', 'contentWidth', 'pageX', 'railXWidth', 'scrollbarX', 'scrollbarXWidth', 'scrollLeft', 'x', 'scrollbarXRail', ]); bindMouseScrollHandler(i, [ 'containerHeight', 'contentHeight', 'pageY', 'railYHeight', 'scrollbarY', 'scrollbarYHeight', 'scrollTop', 'y', 'scrollbarYRail', ]); } function bindMouseScrollHandler( i, [ containerHeight, contentHeight, pageY, railYHeight, scrollbarY, scrollbarYHeight, scrollTop, y, scrollbarYRail, ] ) { const element = i.element; let startingScrollTop = null; let startingMousePageY = null; let scrollBy = null; function mouseMoveHandler(e) { element[scrollTop] = startingScrollTop + scrollBy * (e[pageY] - startingMousePageY); addScrollingClass(i, y); updateGeometry(i); e.stopPropagation(); e.preventDefault(); } function mouseUpHandler() { removeScrollingClass(i, y); i[scrollbarYRail].classList.remove(cls.state.clicking); i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler); } i.event.bind(i[scrollbarY], 'mousedown', e => { startingScrollTop = element[scrollTop]; startingMousePageY = e[pageY]; scrollBy = (i[contentHeight] - i[containerHeight]) / (i[railYHeight] - i[scrollbarYHeight]); i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler); i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler); i[scrollbarYRail].classList.add(cls.state.clicking); e.stopPropagation(); e.preventDefault(); }); } ././@LongLink0000644000000000000000000000016700000000000011607 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/handlers/click-rail.jsrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/hand0000644000175000017500000000166613416122242034571 0ustar utkarsh2102utkarsh2102import updateGeometry from '../update-geometry'; export default function(i) { const element = i.element; i.event.bind(i.scrollbarY, 'mousedown', e => e.stopPropagation()); i.event.bind(i.scrollbarYRail, 'mousedown', e => { const positionTop = e.pageY - window.pageYOffset - i.scrollbarYRail.getBoundingClientRect().top; const direction = positionTop > i.scrollbarYTop ? 1 : -1; i.element.scrollTop += direction * i.containerHeight; updateGeometry(i); e.stopPropagation(); }); i.event.bind(i.scrollbarX, 'mousedown', e => e.stopPropagation()); i.event.bind(i.scrollbarXRail, 'mousedown', e => { const positionLeft = e.pageX - window.pageXOffset - i.scrollbarXRail.getBoundingClientRect().left; const direction = positionLeft > i.scrollbarXLeft ? 1 : -1; i.element.scrollLeft += direction * i.containerWidth; updateGeometry(i); e.stopPropagation(); }); } ././@LongLink0000644000000000000000000000016700000000000011607 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/process-scroll-diff.jsrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/proc0000644000175000017500000000343613416122242034617 0ustar utkarsh2102utkarsh2102import { setScrollingClassInstantly } from './lib/class-names'; function createEvent(name) { if (typeof window.CustomEvent === 'function') { return new CustomEvent(name); } else { const evt = document.createEvent('CustomEvent'); evt.initCustomEvent(name, false, false, undefined); return evt; } } export default function( i, axis, diff, useScrollingClass = true, forceFireReachEvent = false ) { let fields; if (axis === 'top') { fields = [ 'contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down', ]; } else if (axis === 'left') { fields = [ 'contentWidth', 'containerWidth', 'scrollLeft', 'x', 'left', 'right', ]; } else { throw new Error('A proper axis should be provided'); } processScrollDiff(i, diff, fields, useScrollingClass, forceFireReachEvent); } function processScrollDiff( i, diff, [contentHeight, containerHeight, scrollTop, y, up, down], useScrollingClass = true, forceFireReachEvent = false ) { const element = i.element; // reset reach i.reach[y] = null; // 1 for subpixel rounding if (element[scrollTop] < 1) { i.reach[y] = 'start'; } // 1 for subpixel rounding if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) { i.reach[y] = 'end'; } if (diff) { element.dispatchEvent(createEvent(`ps-scroll-${y}`)); if (diff < 0) { element.dispatchEvent(createEvent(`ps-scroll-${up}`)); } else if (diff > 0) { element.dispatchEvent(createEvent(`ps-scroll-${down}`)); } if (useScrollingClass) { setScrollingClassInstantly(i, y); } } if (i.reach[y] && (diff || forceFireReachEvent)) { element.dispatchEvent(createEvent(`ps-${y}-reach-${i.reach[y]}`)); } } rails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/lib/0000755000175000017500000000000013416122242034471 5ustar utkarsh2102utkarsh2102././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/lib/util.jsrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/lib/0000644000175000017500000000214013416122242034470 0ustar utkarsh2102utkarsh2102import * as CSS from './css'; import * as DOM from './dom'; export function toInt(x) { return parseInt(x, 10) || 0; } export function isEditable(el) { return ( DOM.matches(el, 'input,[contenteditable]') || DOM.matches(el, 'select,[contenteditable]') || DOM.matches(el, 'textarea,[contenteditable]') || DOM.matches(el, 'button,[contenteditable]') ); } export function outerWidth(element) { const styles = CSS.get(element); return ( toInt(styles.width) + toInt(styles.paddingLeft) + toInt(styles.paddingRight) + toInt(styles.borderLeftWidth) + toInt(styles.borderRightWidth) ); } export const env = { isWebKit: typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style, supportsTouch: typeof window !== 'undefined' && ('ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch)), supportsIePointer: typeof navigator !== 'undefined' && navigator.msMaxTouchPoints, isChrome: typeof navigator !== 'undefined' && /Chrome/i.test(navigator && navigator.userAgent), }; ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/lib/dom.jsrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/lib/0000644000175000017500000000152013416122242034471 0ustar utkarsh2102utkarsh2102export function div(className) { const div = document.createElement('div'); div.className = className; return div; } const elMatches = typeof Element !== 'undefined' && (Element.prototype.matches || Element.prototype.webkitMatchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector); export function matches(element, query) { if (!elMatches) { throw new Error('No element matching method supported'); } return elMatches.call(element, query); } export function remove(element) { if (element.remove) { element.remove(); } else { if (element.parentNode) { element.parentNode.removeChild(element); } } } export function queryChildren(element, selector) { return Array.prototype.filter.call(element.children, child => matches(child, selector) ); } ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/lib/css.jsrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/lib/0000644000175000017500000000042413416122242034473 0ustar utkarsh2102utkarsh2102export function get(element) { return getComputedStyle(element); } export function set(element, obj) { for (const key in obj) { let val = obj[key]; if (typeof val === 'number') { val = `${val}px`; } element.style[key] = val; } return element; } ././@LongLink0000644000000000000000000000016300000000000011603 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/lib/class-names.jsrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/lib/0000644000175000017500000000171413416122242034476 0ustar utkarsh2102utkarsh2102const cls = { main: 'ps', element: { thumb: x => `ps__thumb-${x}`, rail: x => `ps__rail-${x}`, consuming: 'ps__child--consume', }, state: { focus: 'ps--focus', clicking: 'ps--clicking', active: x => `ps--active-${x}`, scrolling: x => `ps--scrolling-${x}`, }, }; export default cls; /* * Helper methods */ const scrollingClassTimeout = { x: null, y: null }; export function addScrollingClass(i, x) { const classList = i.element.classList; const className = cls.state.scrolling(x); if (classList.contains(className)) { clearTimeout(scrollingClassTimeout[x]); } else { classList.add(className); } } export function removeScrollingClass(i, x) { scrollingClassTimeout[x] = setTimeout( () => i.isAlive && i.element.classList.remove(cls.state.scrolling(x)), i.settings.scrollingThreshold ); } export function setScrollingClassInstantly(i, x) { addScrollingClass(i, x); removeScrollingClass(i, x); } ././@LongLink0000644000000000000000000000016500000000000011605 Lustar rootrootrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/lib/event-manager.jsrails-assets-utatti-perfect-scrollbar-1.4.0/app/assets/javascripts/utatti-perfect-scrollbar/src/lib/0000644000175000017500000000341013416122242034471 0ustar utkarsh2102utkarsh2102class EventElement { constructor(element) { this.element = element; this.handlers = {}; } bind(eventName, handler) { if (typeof this.handlers[eventName] === 'undefined') { this.handlers[eventName] = []; } this.handlers[eventName].push(handler); this.element.addEventListener(eventName, handler, false); } unbind(eventName, target) { this.handlers[eventName] = this.handlers[eventName].filter(handler => { if (target && handler !== target) { return true; } this.element.removeEventListener(eventName, handler, false); return false; }); } unbindAll() { for (const name in this.handlers) { this.unbind(name); } } get isEmpty() { return Object.keys(this.handlers).every( key => this.handlers[key].length === 0 ); } } export default class EventManager { constructor() { this.eventElements = []; } eventElement(element) { let ee = this.eventElements.filter(ee => ee.element === element)[0]; if (!ee) { ee = new EventElement(element); this.eventElements.push(ee); } return ee; } bind(element, eventName, handler) { this.eventElement(element).bind(eventName, handler); } unbind(element, eventName, handler) { const ee = this.eventElement(element); ee.unbind(eventName, handler); if (ee.isEmpty) { // remove this.eventElements.splice(this.eventElements.indexOf(ee), 1); } } unbindAll() { this.eventElements.forEach(e => e.unbindAll()); this.eventElements = []; } once(element, eventName, handler) { const ee = this.eventElement(element); const onceHandler = evt => { ee.unbind(eventName, onceHandler); handler(evt); }; ee.bind(eventName, onceHandler); } } rails-assets-utatti-perfect-scrollbar-1.4.0/README.md0000644000175000017500000000072513416122242023063 0ustar utkarsh2102utkarsh2102# rails-assets-utatti-perfect-scrollbar > The Bower package inside a gem This gem was automatically generated. You can visit [rails-assets.org](https://rails-assets.org) for more information. ## Usage Add rails-assets source block to your `Gemfile`: ```ruby source "https://rails-assets.org" do gem "rails-assets-utatti-perfect-scrollbar" end ``` Then, import the asset using Sprockets’ `require` directive: ```js //= require "utatti-perfect-scrollbar" ``` rails-assets-utatti-perfect-scrollbar-1.4.0/rails-assets-utatti-perfect-scrollbar.gemspec0000644000175000017500000000157213416122242032503 0ustar utkarsh2102utkarsh2102# coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'rails-assets-utatti-perfect-scrollbar/version' Gem::Specification.new do |spec| spec.name = "rails-assets-utatti-perfect-scrollbar" spec.version = RailsAssetsUtattiPerfectScrollbar::VERSION spec.authors = ["rails-assets.org"] spec.description = "" spec.summary = "" spec.homepage = "https://github.com/utatti/perfect-scrollbar" spec.files = `find ./* -type f | cut -b 3-`.split($/) spec.require_paths = ["lib"] spec.post_install_message = "This component doesn't define main assets in bower.json.\nPlease open new pull request in component's repository:\nhttps://github.com/utatti/perfect-scrollbar" spec.add_development_dependency "bundler", "~> 1.3" spec.add_development_dependency "rake" end rails-assets-utatti-perfect-scrollbar-1.4.0/Rakefile0000644000175000017500000000003413416122242023242 0ustar utkarsh2102utkarsh2102require 'bundler/gem_tasks' rails-assets-utatti-perfect-scrollbar-1.4.0/Gemfile0000644000175000017500000000011113416122242023064 0ustar utkarsh2102utkarsh2102source 'https://rubygems.org' source 'https://rails-assets.org' gemspec rails-assets-utatti-perfect-scrollbar-1.4.0/lib/0000755000175000017500000000000013416122242022346 5ustar utkarsh2102utkarsh2102rails-assets-utatti-perfect-scrollbar-1.4.0/lib/rails-assets-utatti-perfect-scrollbar/0000755000175000017500000000000013416122242031677 5ustar utkarsh2102utkarsh2102rails-assets-utatti-perfect-scrollbar-1.4.0/lib/rails-assets-utatti-perfect-scrollbar/version.rb0000644000175000017500000000010113416122242033701 0ustar utkarsh2102utkarsh2102module RailsAssetsUtattiPerfectScrollbar VERSION = "1.4.0" end rails-assets-utatti-perfect-scrollbar-1.4.0/lib/rails-assets-utatti-perfect-scrollbar.rb0000644000175000017500000000142313416122242032224 0ustar utkarsh2102utkarsh2102require "rails-assets-utatti-perfect-scrollbar/version" module RailsAssetsUtattiPerfectScrollbar def self.gem_path Pathname(File.realpath(__FILE__)).join('../..') end def self.gem_spec Gem::Specification::load( gem_path.join("rails-assets-utatti-perfect-scrollbar.gemspec").to_s ) end def self.load_paths gem_path.join('app/assets').each_child.to_a end def self.dependencies [ ] end if defined?(Rails) class Engine < ::Rails::Engine # Rails -> use app/assets directory. end end end class RailsAssets @components ||= [] class << self attr_accessor :components def load_paths components.flat_map(&:load_paths) end end end RailsAssets.components << RailsAssetsUtattiPerfectScrollbar