From 06ce805854043ee12abf9aa60b1738218227fdbb Mon Sep 17 00:00:00 2001 From: Colin Frei Date: Mon, 29 Jul 2013 07:33:56 +0200 Subject: [PATCH] remove components for now --- components/iscroll/.gitignore | 3 - components/iscroll/README.md | 36 - components/iscroll/bin/make-dist | 0 components/iscroll/component.json | 9 - .../iscroll/examples/carousel/index.html | 170 -- .../examples/check-dom-changes/index.html | 172 -- .../examples/custom-scrollbar/index.html | 172 -- .../examples/custom-scrollbar/scrollbar.css | 91 - components/iscroll/examples/ender/ender.js | 1602 ----------------- .../iscroll/examples/ender/ender.min.js | 27 - components/iscroll/examples/ender/index.html | 166 -- .../iscroll/examples/form-fields/index.html | 176 -- .../examples/horizontal-scroll/index.html | 134 -- components/iscroll/examples/hover/index.html | 199 -- .../examples/ios-perfect-scrollbar/index.html | 170 -- .../ios-perfect-scrollbar/scrollbar.css | 57 - .../ios-perfect-scrollbar/scrollbar.png | Bin 199 -> 0 bytes components/iscroll/examples/ipad/index.html | 167 -- components/iscroll/examples/lite/index.html | 161 -- .../examples/pull-to-refresh/index.html | 313 ---- .../examples/pull-to-refresh/pull-icon@2x.png | Bin 850 -> 0 bytes components/iscroll/examples/simple/index.html | 189 -- .../examples/snap-to-element/index.html | 133 -- .../examples/use-transition/index.html | 186 -- components/iscroll/examples/zoom/index.html | 118 -- components/iscroll/examples/zoom/iscroll.jpg | Bin 10018 -> 0 bytes components/iscroll/license.txt | 22 - components/iscroll/package.json | 14 - components/iscroll/src/ender.js | 7 - components/iscroll/src/iscroll-lite.js | 594 ------ components/iscroll/src/iscroll.js | 1104 ------------ 31 files changed, 6192 deletions(-) delete mode 100644 components/iscroll/.gitignore delete mode 100644 components/iscroll/README.md delete mode 100644 components/iscroll/bin/make-dist delete mode 100644 components/iscroll/component.json delete mode 100644 components/iscroll/examples/carousel/index.html delete mode 100644 components/iscroll/examples/check-dom-changes/index.html delete mode 100644 components/iscroll/examples/custom-scrollbar/index.html delete mode 100644 components/iscroll/examples/custom-scrollbar/scrollbar.css delete mode 100644 components/iscroll/examples/ender/ender.js delete mode 100644 components/iscroll/examples/ender/ender.min.js delete mode 100644 components/iscroll/examples/ender/index.html delete mode 100644 components/iscroll/examples/form-fields/index.html delete mode 100644 components/iscroll/examples/horizontal-scroll/index.html delete mode 100644 components/iscroll/examples/hover/index.html delete mode 100644 components/iscroll/examples/ios-perfect-scrollbar/index.html delete mode 100644 components/iscroll/examples/ios-perfect-scrollbar/scrollbar.css delete mode 100644 components/iscroll/examples/ios-perfect-scrollbar/scrollbar.png delete mode 100644 components/iscroll/examples/ipad/index.html delete mode 100644 components/iscroll/examples/lite/index.html delete mode 100644 components/iscroll/examples/pull-to-refresh/index.html delete mode 100644 components/iscroll/examples/pull-to-refresh/pull-icon@2x.png delete mode 100644 components/iscroll/examples/simple/index.html delete mode 100644 components/iscroll/examples/snap-to-element/index.html delete mode 100644 components/iscroll/examples/use-transition/index.html delete mode 100644 components/iscroll/examples/zoom/index.html delete mode 100644 components/iscroll/examples/zoom/iscroll.jpg delete mode 100644 components/iscroll/license.txt delete mode 100644 components/iscroll/package.json delete mode 100644 components/iscroll/src/ender.js delete mode 100644 components/iscroll/src/iscroll-lite.js delete mode 100644 components/iscroll/src/iscroll.js diff --git a/components/iscroll/.gitignore b/components/iscroll/.gitignore deleted file mode 100644 index 82d8bba..0000000 --- a/components/iscroll/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store -dist/*.js -node_modules \ No newline at end of file diff --git a/components/iscroll/README.md b/components/iscroll/README.md deleted file mode 100644 index 052ce32..0000000 --- a/components/iscroll/README.md +++ /dev/null @@ -1,36 +0,0 @@ -iScroll v4.2.5 - 2012-10-26 -=========================== - -The overflow:scroll for mobile webkit. Project started because webkit for iPhone does not provide a native way to scroll content inside a fixed size (width/height) div. So basically it was impossible to have a fixed header/footer and a scrolling central area. Until now. Read more at [cubiq.org](http://cubiq.org). - -## Ender support -Using [Ender](http://ender.no.de), add it to your existing build - - $ ender add iscroll - -Use it like this: - -``` js -var myScroll = $('#doc').iScroll(options) -``` - -## Credits and Special thanks -iScroll is evolving thank to the help of all those who sent suggestions, bug reports and ideas on [github](https://github.com/cubiq/iscroll), my [blog](http://cubiq.org) and [googlecode](http://code.google.com/p/iscroll-js/). This is by no means the work of a sole man. - -In completely random order: - -- All Github [contributors](https://github.com/cubiq/iscroll/contributors) -- [beedesk](http://beedesk.com) for bug squashing in the pull to refresh feature -- [Daniel J. Pinter](http://twitter.com/#!/HeadDZombie) for continued support, bug reports and for killing zombies -- [Aseem Kishore](http://about.me/aseemk) for help with the zoom functionality -- [Alex Gibson](http://miniapps.co.uk/) for continued support and bug reports -- [Christoph Pojer](http://cpojer.net) for ideas, suggestions and bug reports -- [Shimon Dookdin](https://github.com/shimondoodkin) for help with wheel support -- [Will Bailey](http://blog.thirtymontgomery.com/) for commonJS compatibility -- [Aaron Reisman](https://github.com/lifeiscontent) for bug reports and continued support -- [David Haslem](https://github.com/therabidbanana) for suggestions and bug reports -- [gingertom](https://github.com/gingertom) for suggestions and bug reports -- [David Alan Hjelle](https://github.com/dahjelle) for bug squashing -- [iangilman](https://github.com/iangilman) for help with the zoom functionality -- All those who supported, linked, loved the iScroll -- I'm sure I'm missing someone, sorry about that. If you helped in the script development and you don't see your name here, please drop me a line diff --git a/components/iscroll/bin/make-dist b/components/iscroll/bin/make-dist deleted file mode 100644 index e69de29..0000000 diff --git a/components/iscroll/component.json b/components/iscroll/component.json deleted file mode 100644 index 5d3eadd..0000000 --- a/components/iscroll/component.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "iscroll", - "version": "0.0.0", - "commit": "d1e642c1d6751877ca0b2b13faf6c2bd512bf473", - "repository": { - "type": "git", - "url": "git://github.com/cubiq/iscroll.git" - } -} \ No newline at end of file diff --git a/components/iscroll/examples/carousel/index.html b/components/iscroll/examples/carousel/index.html deleted file mode 100644 index a975797..0000000 --- a/components/iscroll/examples/carousel/index.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - -iScroll demo: Carousel - - - - - - - - -
-
-
    -
  • 1. A robot may not injure a human being or, through inaction, allow a human being to come to harm.
  • -
  • 2. A robot must obey any orders given to it by human beings, except where such orders would conflict with the First Law.
  • -
  • 3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.
  • -
  • Zeroth Law: A robot may not harm humanity, or, by inaction, allow humanity to come to harm.
  • -
  • Lyuben Dilov's Forth law: A robot must establish its identity as a robot in all cases.
  • -
  • Harry Harrison's Forth law: A robot must reproduce. As long as such reproduction does not interfere with the First or Second or Third Law.
  • -
  • Nikola Kesarovski's Fifth law: A robot must know it is a robot.
  • -
-
-
- - - \ No newline at end of file diff --git a/components/iscroll/examples/check-dom-changes/index.html b/components/iscroll/examples/check-dom-changes/index.html deleted file mode 100644 index 0895bc7..0000000 --- a/components/iscroll/examples/check-dom-changes/index.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -iScroll demo: Check DOM Changes - - - - - - - - - - -
-
-
    -
  • Pretty row 1
  • -
  • Pretty row 2
  • -
  • Pretty row 3
  • -
  • Pretty row 4
  • -
  • Pretty row 5
  • -
  • Pretty row 6
  • -
  • Pretty row 7
  • -
  • Pretty row 8
  • -
  • Pretty row 9
  • -
  • Pretty row 10
  • -
  • Pretty row 11
  • -
  • Pretty row 12
  • -
  • Pretty row 13
  • -
  • Pretty row 14
  • -
  • Pretty row 15
  • -
  • Pretty row 16
  • -
  • Pretty row 17
  • -
  • Pretty row 18
  • -
  • Pretty row 19
  • -
  • Pretty row 20
  • -
  • Pretty row 21
  • -
  • Pretty row 22
  • -
  • Pretty row 23
  • -
  • Pretty row 24
  • -
  • Pretty row 25
  • -
  • Pretty row 26
  • -
  • Pretty row 27
  • -
  • Pretty row 28
  • -
  • Pretty row 29
  • -
  • Pretty row 30
  • -
  • Pretty row 31
  • -
  • Pretty row 32
  • -
  • Pretty row 33
  • -
  • Pretty row 34
  • -
  • Pretty row 35
  • -
  • Pretty row 36
  • -
  • Pretty row 37
  • -
  • Pretty row 38
  • -
  • Pretty row 39
  • -
  • Pretty row 40
  • -
-
-
- - - - diff --git a/components/iscroll/examples/custom-scrollbar/index.html b/components/iscroll/examples/custom-scrollbar/index.html deleted file mode 100644 index 6cfff61..0000000 --- a/components/iscroll/examples/custom-scrollbar/index.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -iScroll demo: custom scrollbar - - - - - - - - - - - -
-
-
    -
  • Pretty row 1
  • -
  • Pretty row 2
  • -
  • Pretty row 3
  • -
  • Pretty row 4
  • -
  • Pretty row 5
  • -
  • Pretty row 6
  • -
  • Pretty row 7
  • -
  • Pretty row 8
  • -
  • Pretty row 9
  • -
  • Pretty row 10
  • -
  • Pretty row 11
  • -
  • Pretty row 12
  • -
  • Pretty row 13
  • -
  • Pretty row 14
  • -
  • Pretty row 15
  • -
  • Pretty row 16
  • -
  • Pretty row 17
  • -
  • Pretty row 18
  • -
  • Pretty row 19
  • -
  • Pretty row 20
  • -
  • Pretty row 21
  • -
  • Pretty row 22
  • -
  • Pretty row 23
  • -
  • Pretty row 24
  • -
  • Pretty row 25
  • -
  • Pretty row 26
  • -
  • Pretty row 27
  • -
  • Pretty row 28
  • -
  • Pretty row 29
  • -
  • Pretty row 30
  • -
  • Pretty row 31
  • -
  • Pretty row 32
  • -
  • Pretty row 33
  • -
  • Pretty row 34
  • -
  • Pretty row 35
  • -
  • Pretty row 36
  • -
  • Pretty row 37
  • -
  • Pretty row 38
  • -
  • Pretty row 39
  • -
  • Pretty row 40
  • -
-
-
- - - - - \ No newline at end of file diff --git a/components/iscroll/examples/custom-scrollbar/scrollbar.css b/components/iscroll/examples/custom-scrollbar/scrollbar.css deleted file mode 100644 index a538481..0000000 --- a/components/iscroll/examples/custom-scrollbar/scrollbar.css +++ /dev/null @@ -1,91 +0,0 @@ - -/** - * - * Horizontal Scrollbar - * - */ -.myScrollbarH { - position:absolute; - z-index:100; - height:8px; - bottom:1px; - left:2px; - right:7px -} - -.myScrollbarH > div { - position:absolute; - z-index:100; - height:100%; - - /* The following is probably what you want to customize */ - background-image:-webkit-gradient(linear, 0 0, 100% 0, from(#a00), to(#f00)); - background-image:-moz-linear-gradient(top, #f00, #900); - background-image:-o-linear-gradient(top, #f00, #900); - - border:1px solid #900; - -webkit-background-clip:padding-box; - -moz-background-clip:padding-box; - -o-background-clip:padding-box; - background-clip:padding-box; - - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - -o-box-sizing:border-box; - box-sizing:border-box; - - -webkit-border-radius:4px; - -moz-border-radius:4px; - -o-border-radius:4px; - border-radius:4px; - - -webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5); - -moz-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5); - -o-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5); - box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5); -} - - -/** - * - * Vertical Scrollbar - * - */ -.myScrollbarV { - position:absolute; - z-index:100; - width:8px;bottom:7px;top:2px;right:1px -} - -.myScrollbarV > div { - position:absolute; - z-index:100; - width:100%; - - /* The following is probably what you want to customize */ - background:-webkit-gradient(linear, 0 0, 100% 0, from(#f00), to(#900)); - background-image:-moz-linear-gradient(top, #f00, #900); - background-image:-o-linear-gradient(top, #f00, #900); - - border:1px solid #900; - - -webkit-background-clip:padding-box; - -moz-background-clip:padding-box; - -o-background-clip:padding-box; - background-clip:padding-box; - - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - -o-box-sizing:border-box; - box-sizing:border-box; - - -webkit-border-radius:4px; - -moz-border-radius:4px; - -o-border-radius:4px; - border-radius:4px; - - -webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5); - -moz-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5); - -o-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5); - box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5); -} diff --git a/components/iscroll/examples/ender/ender.js b/components/iscroll/examples/ender/ender.js deleted file mode 100644 index bb99e0c..0000000 --- a/components/iscroll/examples/ender/ender.js +++ /dev/null @@ -1,1602 +0,0 @@ -/*! - * ============================================================= - * Ender: open module JavaScript framework (https://ender.no.de) - * Build: ender build qwery domready ../../ - * ============================================================= - */ - -/*! - * Ender-JS: open module JavaScript framework (client-lib) - * copyright Dustin Diaz & Jacob Thornton 2011 (@ded @fat) - * https://ender.no.de - * License MIT - */ -!function (context) { - - // a global object for node.js module compatiblity - // ============================================ - - context['global'] = context; - - // Implements simple module system - // losely based on CommonJS Modules spec v1.1.1 - // ============================================ - - var modules = {}; - - function require (identifier) { - var module = modules[identifier] || window[identifier]; - if (!module) throw new Error("Requested module '" + identifier + "' has not been defined."); - return module; - } - - function provide (name, what) { - return modules[name] = what; - } - - context['provide'] = provide; - context['require'] = require; - - // Implements Ender's $ global access object - // ========================================= - - function aug(o, o2) { - for (var k in o2) { - k != 'noConflict' && k != '_VERSION' && (o[k] = o2[k]); - } - return o; - } - - function boosh(s, r, els) { - // string || node || nodelist || window - if (ender._select && (typeof s == 'string' || s.nodeName || s.length && 'item' in s || s == window)) { - els = ender._select(s, r); - els.selector = s; - } else { - els = isFinite(s.length) ? s : [s]; - } - return aug(els, boosh); - } - - function ender(s, r) { - return boosh(s, r); - } - - aug(ender, { - _VERSION: '0.2.5', - ender: function (o, chain) { - aug(chain ? boosh : ender, o); - }, - fn: context.$ && context.$.fn || {} // for easy compat to jQuery plugins - }); - - aug(boosh, { - forEach: function (fn, scope, i) { - // opt out of native forEach so we can intentionally call our own scope - // defaulting to the current item and be able to return self - for (i = 0, l = this.length; i < l; ++i) { - i in this && fn.call(scope || this[i], this[i], i, this); - } - // return self for chaining - return this; - }, - $: ender // handy reference to self - }); - - var old = context.$; - ender.noConflict = function () { - context.$ = old; - return this; - }; - - (typeof module !== 'undefined') && module.exports && (module.exports = ender); - // use subscript notation as extern for Closure compilation - context['ender'] = context['$'] = context['ender'] || ender; - -}(this); - -!function () { - - var module = { exports: {} }, exports = module.exports; - - /*! - * Qwery - A Blazing Fast query selector engine - * https://github.com/ded/qwery - * copyright Dustin Diaz & Jacob Thornton 2011 - * MIT License - */ - - !function (name, definition) { - if (typeof define == 'function') define(definition) - else if (typeof module != 'undefined') module.exports = definition() - else this[name] = definition() - }('qwery', function () { - var context = this - , doc = document - , c, i, j, k, l, m, o, p, r, v - , el, node, found, classes, item, items, token - , html = doc.documentElement - , id = /#([\w\-]+)/ - , clas = /\.[\w\-]+/g - , idOnly = /^#([\w\-]+$)/ - , classOnly = /^\.([\w\-]+)$/ - , tagOnly = /^([\w\-]+)$/ - , tagAndOrClass = /^([\w]+)?\.([\w\-]+)$/ - , normalizr = /\s*([\s\+\~>])\s*/g - , splitters = /[\s\>\+\~]/ - , splittersMore = /(?![\s\w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^'"]*\]|[\s\w\+\-]*\))/ - , specialChars = /([.*+?\^=!:${}()|\[\]\/\\])/g - , simple = /^([a-z0-9]+)?(?:([\.\#]+[\w\-\.#]+)?)/ - , attr = /\[([\w\-]+)(?:([\|\^\$\*\~]?\=)['"]?([ \w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^]+)["']?)?\]/ - , pseudo = /:([\w\-]+)(\(['"]?([\s\w\+\-]+)['"]?\))?/ - , dividers = new RegExp('(' + splitters.source + ')' + splittersMore.source, 'g') - , tokenizr = new RegExp(splitters.source + splittersMore.source) - , chunker = new RegExp(simple.source + '(' + attr.source + ')?' + '(' + pseudo.source + ')?') - , walker = { - ' ': function (node) { - return node && node !== html && node.parentNode - } - , '>': function (node, contestant) { - return node && node.parentNode == contestant.parentNode && node.parentNode; - } - , '~': function (node) { - return node && node.previousSibling; - } - , '+': function (node, contestant, p1, p2) { - if (!node) { - return false; - } - p1 = previous(node); - p2 = previous(contestant); - return p1 && p2 && p1 == p2 && p1; - } - } - function cache() { - this.c = {} - } - cache.prototype = { - g: function (k) { - return this.c[k] || undefined - } - , s: function (k, v) { - this.c[k] = v - return v - } - } - - var classCache = new cache() - , cleanCache = new cache() - , attrCache = new cache() - , tokenCache = new cache() - - function flatten(ar) { - r = [] - for (i = 0, l = ar.length; i < l; i++) { - if (arrayLike(ar[i])) { - r = r.concat(ar[i]) - } else { - r.push(ar[i]) - } - } - return r - } - - function previous(n) { - while (n = n.previousSibling) { - if (n.nodeType == 1) { - break; - } - } - return n - } - - function q(query) { - return query.match(chunker) - } - - // this next method expect at most these args - // given => div.hello[title="world"]:foo('bar') - - // div.hello[title="world"]:foo('bar'), div, .hello, [title="world"], title, =, world, :foo('bar'), foo, ('bar'), bar] - - function interpret(whole, tag, idsAndClasses, wholeAttribute, attribute, qualifier, value, wholePseudo, pseudo, wholePseudoVal, pseudoVal) { - var m, c, k; - if (tag && this.tagName.toLowerCase() !== tag) { - return false - } - if (idsAndClasses && (m = idsAndClasses.match(id)) && m[1] !== this.id) { - return false - } - if (idsAndClasses && (classes = idsAndClasses.match(clas))) { - for (i = classes.length; i--;) { - c = classes[i].slice(1) - if (!(classCache.g(c) || classCache.s(c, new RegExp('(^|\\s+)' + c + '(\\s+|$)'))).test(this.className)) { - return false - } - } - } - if (pseudo && qwery.pseudos[pseudo] && !qwery.pseudos[pseudo](this, pseudoVal)) { - return false - } - if (wholeAttribute && !value) { - o = this.attributes - for (k in o) { - if (Object.prototype.hasOwnProperty.call(o, k) && (o[k].name || k) == attribute) { - return this - } - } - } - if (wholeAttribute && !checkAttr(qualifier, this.getAttribute(attribute) || '', value)) { - return false - } - return this - } - - function clean(s) { - return cleanCache.g(s) || cleanCache.s(s, s.replace(specialChars, '\\$1')) - } - - function checkAttr(qualify, actual, val) { - switch (qualify) { - case '=': - return actual == val - case '^=': - return actual.match(attrCache.g('^=' + val) || attrCache.s('^=' + val, new RegExp('^' + clean(val)))) - case '$=': - return actual.match(attrCache.g('$=' + val) || attrCache.s('$=' + val, new RegExp(clean(val) + '$'))) - case '*=': - return actual.match(attrCache.g(val) || attrCache.s(val, new RegExp(clean(val)))) - case '~=': - return actual.match(attrCache.g('~=' + val) || attrCache.s('~=' + val, new RegExp('(?:^|\\s+)' + clean(val) + '(?:\\s+|$)'))) - case '|=': - return actual.match(attrCache.g('|=' + val) || attrCache.s('|=' + val, new RegExp('^' + clean(val) + '(-|$)'))) - } - return 0 - } - - function _qwery(selector) { - var r = [], ret = [], i, j = 0, k, l, m, p, token, tag, els, root, intr, item, children - , tokens = tokenCache.g(selector) || tokenCache.s(selector, selector.split(tokenizr)) - , dividedTokens = selector.match(dividers), dividedToken - tokens = tokens.slice(0) // this makes a copy of the array so the cached original is not effected - - if (!tokens.length) return r - - token = tokens.pop() - root = tokens.length && (m = tokens[tokens.length - 1].match(idOnly)) ? doc.getElementById(m[1]) : doc - - if (!root) return r - - intr = q(token) - els = dividedTokens && /^[+~]$/.test(dividedTokens[dividedTokens.length - 1]) ? function (r) { - while (root = root.nextSibling) { - root.nodeType == 1 && (intr[1] ? intr[1] == root.tagName.toLowerCase() : 1) && r.push(root) - } - return r - }([]) : - root.getElementsByTagName(intr[1] || '*') - for (i = 0, l = els.length; i < l; i++) if (item = interpret.apply(els[i], intr)) r[j++] = item - if (!tokens.length) return r - - // loop through all descendent tokens - for (j = 0, l = r.length, k = 0; j < l; j++) { - p = r[j] - // loop through each token backwards crawling up tree - for (i = tokens.length; i--;) { - // loop through parent nodes - while (p = walker[dividedTokens[i]](p, r[j])) { - if (found = interpret.apply(p, q(tokens[i]))) break; - } - } - found && (ret[k++] = r[j]) - } - return ret - } - - function isNode(el) { - return (el && el.nodeType && (el.nodeType == 1 || el.nodeType == 9)) - } - - function uniq(ar) { - var a = [], i, j; - label: - for (i = 0; i < ar.length; i++) { - for (j = 0; j < a.length; j++) { - if (a[j] == ar[i]) { - continue label; - } - } - a[a.length] = ar[i] - } - return a - } - - function arrayLike(o) { - return (typeof o === 'object' && isFinite(o.length)) - } - - function normalizeRoot(root) { - if (!root) return doc - if (typeof root == 'string') return qwery(root)[0] - if (arrayLike(root)) return root[0] - return root - } - - function qwery(selector, _root) { - var root = normalizeRoot(_root) - - if (!root || !selector) return [] - if (selector === window || isNode(selector)) { - return !_root || (selector !== window && isNode(root) && isAncestor(selector, root)) ? [selector] : [] - } - if (selector && arrayLike(selector)) return flatten(selector) - if (m = selector.match(idOnly)) return (el = doc.getElementById(m[1])) ? [el] : [] - if (m = selector.match(tagOnly)) return flatten(root.getElementsByTagName(m[1])) - return select(selector, root) - } - - var isAncestor = 'compareDocumentPosition' in html ? - function (element, container) { - return (container.compareDocumentPosition(element) & 16) == 16; - } : 'contains' in html ? - function (element, container) { - container = container == doc || container == window ? html : container - return container !== element && container.contains(element) - } : - function (element, container) { - while (element = element.parentNode) if (element === container) return 1 - return 0 - }, - - supportsCSS3 = function () { - if (!doc.querySelector || !doc.querySelectorAll) return false - - try { return (doc.querySelectorAll(':nth-of-type(1)').length > 0) } - catch (e) { return false } - }(), - - select = supportsCSS3 ? - function (selector, root) { - if (doc.getElementsByClassName && (m = selector.match(classOnly))) { - return flatten((root).getElementsByClassName(m[1])); - } - return flatten((root).querySelectorAll(selector)) - } : - function (selector, root) { - selector = selector.replace(normalizr, '$1') - var result = [], element, collection, collections = [], i - if (m = selector.match(tagAndOrClass)) { - items = root.getElementsByTagName(m[1] || '*'); - r = classCache.g(m[2]) || classCache.s(m[2], new RegExp('(^|\\s+)' + m[2] + '(\\s+|$)')); - for (i = 0, l = items.length, j = 0; i < l; i++) { - r.test(items[i].className) && (result[j++] = items[i]); - } - return result - } - for (i = 0, items = selector.split(','), l = items.length; i < l; i++) { - collections[i] = _qwery(items[i]) - } - for (i = 0, l = collections.length; i < l && (collection = collections[i]); i++) { - var ret = collection - if (root !== doc) { - ret = [] - for (j = 0, m = collection.length; j < m && (element = collection[j]); j++) { - // make sure element is a descendent of root - isAncestor(element, root) && ret.push(element) - } - } - result = result.concat(ret) - } - return uniq(result) - } - - qwery.uniq = uniq - qwery.pseudos = {} - - var old = context.qwery - qwery.noConflict = function () { - context.qwery = old - return this - } - - return qwery - }) - - provide("qwery", module.exports); - - !function (doc, $) { - var q = require('qwery') - , table = 'table' - , nodeMap = { - thead: table - , tbody: table - , tfoot: table - , tr: 'tbody' - , th: 'tr' - , td: 'tr' - , fieldset: 'form' - , option: 'select' - } - function create(node, root) { - var tag = /^<([^\s>]+)/.exec(node)[1] - , el = (root || doc).createElement(nodeMap[tag] || 'div'), els = [] - el.innerHTML = node - var nodes = el.childNodes - el = el.firstChild - els.push(el) - while (el = el.nextSibling) (el.nodeType == 1) && els.push(el) - return els - } - - $._select = function (s, r) { - return /^\s* that[dir + 'ScrollbarMaxScroll']) { - if (!that.options.fixedScrollbar) { - size = that[dir + 'ScrollbarIndicatorSize'] - m.round((pos - that[dir + 'ScrollbarMaxScroll']) * 3); - if (size < 8) size = 8; - that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px'; - pos = that[dir + 'ScrollbarMaxScroll'] + (that[dir + 'ScrollbarIndicatorSize'] - size); - } else { - pos = that[dir + 'ScrollbarMaxScroll']; - } - } - - that[dir + 'ScrollbarWrapper'].style[vendor + 'TransitionDelay'] = '0'; - that[dir + 'ScrollbarWrapper'].style.opacity = hidden && that.options.hideScrollbar ? '0' : '1'; - that[dir + 'ScrollbarIndicator'].style[vendor + 'Transform'] = trnOpen + (dir == 'h' ? pos + 'px,0' : '0,' + pos + 'px') + trnClose; - }, - - _start: function (e) { - var that = this, - point = hasTouch ? e.touches[0] : e, - matrix, x, y, - c1, c2; - - if (!that.enabled) return; - - if (that.options.onBeforeScrollStart) that.options.onBeforeScrollStart.call(that, e); - - if (that.options.useTransition || that.options.zoom) that._transitionTime(0); - - that.moved = false; - that.animating = false; - that.zoomed = false; - that.distX = 0; - that.distY = 0; - that.absDistX = 0; - that.absDistY = 0; - that.dirX = 0; - that.dirY = 0; - - // Gesture start - if (that.options.zoom && hasTouch && e.touches.length > 1) { - c1 = m.abs(e.touches[0].pageX-e.touches[1].pageX); - c2 = m.abs(e.touches[0].pageY-e.touches[1].pageY); - that.touchesDistStart = m.sqrt(c1 * c1 + c2 * c2); - - that.originX = m.abs(e.touches[0].pageX + e.touches[1].pageX - that.wrapperOffsetLeft * 2) / 2 - that.x; - that.originY = m.abs(e.touches[0].pageY + e.touches[1].pageY - that.wrapperOffsetTop * 2) / 2 - that.y; - - if (that.options.onZoomStart) that.options.onZoomStart.call(that, e); - } - - if (that.options.momentum) { - if (that.options.useTransform) { - // Very lame general purpose alternative to CSSMatrix - matrix = getComputedStyle(that.scroller, null)[vendor + 'Transform'].replace(/[^0-9-.,]/g, '').split(','); - x = matrix[4] * 1; - y = matrix[5] * 1; - } else { - x = getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, '') * 1; - y = getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, '') * 1; - } - - if (x != that.x || y != that.y) { - if (that.options.useTransition) that._unbind('webkitTransitionEnd'); - else cancelFrame(that.aniTime); - that.steps = []; - that._pos(x, y); - } - } - - that.absStartX = that.x; // Needed by snap threshold - that.absStartY = that.y; - - that.startX = that.x; - that.startY = that.y; - that.pointX = point.pageX; - that.pointY = point.pageY; - - that.startTime = e.timeStamp || Date.now(); - - if (that.options.onScrollStart) that.options.onScrollStart.call(that, e); - - that._bind(MOVE_EV); - that._bind(END_EV); - that._bind(CANCEL_EV); - }, - - _move: function (e) { - var that = this, - point = hasTouch ? e.touches[0] : e, - deltaX = point.pageX - that.pointX, - deltaY = point.pageY - that.pointY, - newX = that.x + deltaX, - newY = that.y + deltaY, - c1, c2, scale, - timestamp = e.timeStamp || Date.now(); - - if (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e); - - // Zoom - if (that.options.zoom && hasTouch && e.touches.length > 1) { - c1 = m.abs(e.touches[0].pageX - e.touches[1].pageX); - c2 = m.abs(e.touches[0].pageY - e.touches[1].pageY); - that.touchesDist = m.sqrt(c1*c1+c2*c2); - - that.zoomed = true; - - scale = 1 / that.touchesDistStart * that.touchesDist * this.scale; - - if (scale < that.options.zoomMin) scale = 0.5 * that.options.zoomMin * Math.pow(2.0, scale / that.options.zoomMin); - else if (scale > that.options.zoomMax) scale = 2.0 * that.options.zoomMax * Math.pow(0.5, that.options.zoomMax / scale); - - that.lastScale = scale / this.scale; - - newX = this.originX - this.originX * that.lastScale + this.x, - newY = this.originY - this.originY * that.lastScale + this.y; - - this.scroller.style[vendor + 'Transform'] = trnOpen + newX + 'px,' + newY + 'px' + trnClose + ' scale(' + scale + ')'; - - if (that.options.onZoom) that.options.onZoom.call(that, e); - return; - } - - that.pointX = point.pageX; - that.pointY = point.pageY; - - // Slow down if outside of the boundaries - if (newX > 0 || newX < that.maxScrollX) { - newX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX; - } - if (newY > that.minScrollY || newY < that.maxScrollY) { - newY = that.options.bounce ? that.y + (deltaY / 2) : newY >= that.minScrollY || that.maxScrollY >= 0 ? that.minScrollY : that.maxScrollY; - } - - if (that.absDistX < 6 && that.absDistY < 6) { - that.distX += deltaX; - that.distY += deltaY; - that.absDistX = m.abs(that.distX); - that.absDistY = m.abs(that.distY); - - return; - } - - // Lock direction - if (that.options.lockDirection) { - if (that.absDistX > that.absDistY + 5) { - newY = that.y; - deltaY = 0; - } else if (that.absDistY > that.absDistX + 5) { - newX = that.x; - deltaX = 0; - } - } - - that.moved = true; - that._pos(newX, newY); - that.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; - that.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; - - if (timestamp - that.startTime > 300) { - that.startTime = timestamp; - that.startX = that.x; - that.startY = that.y; - } - - if (that.options.onScrollMove) that.options.onScrollMove.call(that, e); - }, - - _end: function (e) { - if (hasTouch && e.touches.length != 0) return; - - var that = this, - point = hasTouch ? e.changedTouches[0] : e, - target, ev, - momentumX = { dist:0, time:0 }, - momentumY = { dist:0, time:0 }, - duration = (e.timeStamp || Date.now()) - that.startTime, - newPosX = that.x, - newPosY = that.y, - distX, distY, - newDuration, - snap, - scale; - - that._unbind(MOVE_EV); - that._unbind(END_EV); - that._unbind(CANCEL_EV); - - if (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e); - - if (that.zoomed) { - scale = that.scale * that.lastScale; - scale = Math.max(that.options.zoomMin, scale); - scale = Math.min(that.options.zoomMax, scale); - that.lastScale = scale / that.scale; - that.scale = scale; - - that.x = that.originX - that.originX * that.lastScale + that.x; - that.y = that.originY - that.originY * that.lastScale + that.y; - - that.scroller.style[vendor + 'TransitionDuration'] = '200ms'; - that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose + ' scale(' + that.scale + ')'; - - that.zoomed = false; - that.refresh(); - - if (that.options.onZoomEnd) that.options.onZoomEnd.call(that, e); - return; - } - - if (!that.moved) { - if (hasTouch) { - if (that.doubleTapTimer && that.options.zoom) { - // Double tapped - clearTimeout(that.doubleTapTimer); - that.doubleTapTimer = null; - if (that.options.onZoomStart) that.options.onZoomStart.call(that, e); - that.zoom(that.pointX, that.pointY, that.scale == 1 ? that.options.doubleTapZoom : 1); - if (that.options.onZoomEnd) { - setTimeout(function() { - that.options.onZoomEnd.call(that, e); - }, 200); // 200 is default zoom duration - } - } else { - that.doubleTapTimer = setTimeout(function () { - that.doubleTapTimer = null; - - // Find the last touched element - target = point.target; - while (target.nodeType != 1) target = target.parentNode; - - if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') { - ev = document.createEvent('MouseEvents'); - ev.initMouseEvent('click', true, true, e.view, 1, - point.screenX, point.screenY, point.clientX, point.clientY, - e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, - 0, null); - ev._fake = true; - target.dispatchEvent(ev); - } - }, that.options.zoom ? 250 : 0); - } - } - - that._resetPos(200); - - if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); - return; - } - - if (duration < 300 && that.options.momentum) { - momentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX; - momentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y - that.minScrollY : 0), that.options.bounce ? that.wrapperH : 0) : momentumY; - - newPosX = that.x + momentumX.dist; - newPosY = that.y + momentumY.dist; - - if ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 }; - if ((that.y > that.minScrollY && newPosY > that.minScrollY) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 }; - } - - if (momentumX.dist || momentumY.dist) { - newDuration = m.max(m.max(momentumX.time, momentumY.time), 10); - - // Do we need to snap? - if (that.options.snap) { - distX = newPosX - that.absStartX; - distY = newPosY - that.absStartY; - if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) { that.scrollTo(that.absStartX, that.absStartY, 200); } - else { - snap = that._snap(newPosX, newPosY); - newPosX = snap.x; - newPosY = snap.y; - newDuration = m.max(snap.time, newDuration); - } - } - - that.scrollTo(m.round(newPosX), m.round(newPosY), newDuration); - - if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); - return; - } - - // Do we need to snap? - if (that.options.snap) { - distX = newPosX - that.absStartX; - distY = newPosY - that.absStartY; - if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) that.scrollTo(that.absStartX, that.absStartY, 200); - else { - snap = that._snap(that.x, that.y); - if (snap.x != that.x || snap.y != that.y) that.scrollTo(snap.x, snap.y, snap.time); - } - - if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); - return; - } - - that._resetPos(200); - if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); - }, - - _resetPos: function (time) { - var that = this, - resetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x, - resetY = that.y >= that.minScrollY || that.maxScrollY > 0 ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y; - - if (resetX == that.x && resetY == that.y) { - if (that.moved) { - that.moved = false; - if (that.options.onScrollEnd) that.options.onScrollEnd.call(that); // Execute custom code on scroll end - } - - if (that.hScrollbar && that.options.hideScrollbar) { - if (vendor == 'webkit') that.hScrollbarWrapper.style[vendor + 'TransitionDelay'] = '300ms'; - that.hScrollbarWrapper.style.opacity = '0'; - } - if (that.vScrollbar && that.options.hideScrollbar) { - if (vendor == 'webkit') that.vScrollbarWrapper.style[vendor + 'TransitionDelay'] = '300ms'; - that.vScrollbarWrapper.style.opacity = '0'; - } - - return; - } - - that.scrollTo(resetX, resetY, time || 0); - }, - - _wheel: function (e) { - var that = this, - wheelDeltaX, wheelDeltaY, - deltaX, deltaY, - deltaScale; - - if ('wheelDeltaX' in e) { - wheelDeltaX = e.wheelDeltaX / 12; - wheelDeltaY = e.wheelDeltaY / 12; - } else if ('detail' in e) { - wheelDeltaX = wheelDeltaY = -e.detail * 3; - } else { - wheelDeltaX = wheelDeltaY = -e.wheelDelta; - } - - if (that.options.wheelAction == 'zoom') { - deltaScale = that.scale * Math.pow(2, 1/3 * (wheelDeltaY ? wheelDeltaY / Math.abs(wheelDeltaY) : 0)); - if (deltaScale < that.options.zoomMin) deltaScale = that.options.zoomMin; - if (deltaScale > that.options.zoomMax) deltaScale = that.options.zoomMax; - - if (deltaScale != that.scale) { - if (!that.wheelZoomCount && that.options.onZoomStart) that.options.onZoomStart.call(that, e); - that.wheelZoomCount++; - - that.zoom(e.pageX, e.pageY, deltaScale, 400); - - setTimeout(function() { - that.wheelZoomCount--; - if (!that.wheelZoomCount && that.options.onZoomEnd) that.options.onZoomEnd.call(that, e); - }, 400); - } - - return; - } - - deltaX = that.x + wheelDeltaX; - deltaY = that.y + wheelDeltaY; - - if (deltaX > 0) deltaX = 0; - else if (deltaX < that.maxScrollX) deltaX = that.maxScrollX; - - if (deltaY > that.minScrollY) deltaY = that.minScrollY; - else if (deltaY < that.maxScrollY) deltaY = that.maxScrollY; - - that.scrollTo(deltaX, deltaY, 0); - }, - - _mouseout: function (e) { - var t = e.relatedTarget; - - if (!t) { - this._end(e); - return; - } - - while (t = t.parentNode) if (t == this.wrapper) return; - - this._end(e); - }, - - _transitionEnd: function (e) { - var that = this; - - if (e.target != that.scroller) return; - - that._unbind('webkitTransitionEnd'); - - that._startAni(); - }, - - - /** - * - * Utilities - * - */ - _startAni: function () { - var that = this, - startX = that.x, startY = that.y, - startTime = Date.now(), - step, easeOut, - animate; - - if (that.animating) return; - - if (!that.steps.length) { - that._resetPos(400); - return; - } - - step = that.steps.shift(); - - if (step.x == startX && step.y == startY) step.time = 0; - - that.animating = true; - that.moved = true; - - if (that.options.useTransition) { - that._transitionTime(step.time); - that._pos(step.x, step.y); - that.animating = false; - if (step.time) that._bind('webkitTransitionEnd'); - else that._resetPos(0); - return; - } - - animate = function () { - var now = Date.now(), - newX, newY; - - if (now >= startTime + step.time) { - that._pos(step.x, step.y); - that.animating = false; - if (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that); // Execute custom code on animation end - that._startAni(); - return; - } - - now = (now - startTime) / step.time - 1; - easeOut = m.sqrt(1 - now * now); - newX = (step.x - startX) * easeOut + startX; - newY = (step.y - startY) * easeOut + startY; - that._pos(newX, newY); - if (that.animating) that.aniTime = nextFrame(animate); - }; - - animate(); - }, - - _transitionTime: function (time) { - time += 'ms'; - this.scroller.style[vendor + 'TransitionDuration'] = time; - if (this.hScrollbar) this.hScrollbarIndicator.style[vendor + 'TransitionDuration'] = time; - if (this.vScrollbar) this.vScrollbarIndicator.style[vendor + 'TransitionDuration'] = time; - }, - - _momentum: function (dist, time, maxDistUpper, maxDistLower, size) { - var deceleration = 0.0006, - speed = m.abs(dist) / time, - newDist = (speed * speed) / (2 * deceleration), - newTime = 0, outsideDist = 0; - - // Proportinally reduce speed if we are outside of the boundaries - if (dist > 0 && newDist > maxDistUpper) { - outsideDist = size / (6 / (newDist / speed * deceleration)); - maxDistUpper = maxDistUpper + outsideDist; - speed = speed * maxDistUpper / newDist; - newDist = maxDistUpper; - } else if (dist < 0 && newDist > maxDistLower) { - outsideDist = size / (6 / (newDist / speed * deceleration)); - maxDistLower = maxDistLower + outsideDist; - speed = speed * maxDistLower / newDist; - newDist = maxDistLower; - } - - newDist = newDist * (dist < 0 ? -1 : 1); - newTime = speed / deceleration; - - return { dist: newDist, time: m.round(newTime) }; - }, - - _offset: function (el) { - var left = -el.offsetLeft, - top = -el.offsetTop; - - while (el = el.offsetParent) { - left -= el.offsetLeft; - top -= el.offsetTop; - } - - if (el != this.wrapper) { - left *= this.scale; - top *= this.scale; - } - - return { left: left, top: top }; - }, - - _snap: function (x, y) { - var that = this, - i, l, - page, time, - sizeX, sizeY; - - // Check page X - page = that.pagesX.length - 1; - for (i=0, l=that.pagesX.length; i= that.pagesX[i]) { - page = i; - break; - } - } - if (page == that.currPageX && page > 0 && that.dirX < 0) page--; - x = that.pagesX[page]; - sizeX = m.abs(x - that.pagesX[that.currPageX]); - sizeX = sizeX ? m.abs(that.x - x) / sizeX * 500 : 0; - that.currPageX = page; - - // Check page Y - page = that.pagesY.length-1; - for (i=0; i= that.pagesY[i]) { - page = i; - break; - } - } - if (page == that.currPageY && page > 0 && that.dirY < 0) page--; - y = that.pagesY[page]; - sizeY = m.abs(y - that.pagesY[that.currPageY]); - sizeY = sizeY ? m.abs(that.y - y) / sizeY * 500 : 0; - that.currPageY = page; - - // Snap with constant speed (proportional duration) - time = m.round(m.max(sizeX, sizeY)) || 200; - - return { x: x, y: y, time: time }; - }, - - _bind: function (type, el, bubble) { - (el || this.scroller).addEventListener(type, this, !!bubble); - }, - - _unbind: function (type, el, bubble) { - (el || this.scroller).removeEventListener(type, this, !!bubble); - }, - - - /** - * - * Public methods - * - */ - destroy: function () { - var that = this; - - that.scroller.style[vendor + 'Transform'] = ''; - - // Remove the scrollbars - that.hScrollbar = false; - that.vScrollbar = false; - that._scrollbar('h'); - that._scrollbar('v'); - - // Remove the event listeners - that._unbind(RESIZE_EV, window); - that._unbind(START_EV); - that._unbind(MOVE_EV); - that._unbind(END_EV); - that._unbind(CANCEL_EV); - - if (that.options.hasTouch) { - that._unbind('mouseout', that.wrapper); - that._unbind(WHEEL_EV); - } - - if (that.options.useTransition) that._unbind('webkitTransitionEnd'); - - if (that.options.checkDOMChanges) clearInterval(that.checkDOMTime); - - if (that.options.onDestroy) that.options.onDestroy.call(that); - }, - - refresh: function () { - var that = this, - offset, - i, l, - els, - pos = 0, - page = 0; - - if (that.scale < that.options.zoomMin) that.scale = that.options.zoomMin; - that.wrapperW = that.wrapper.clientWidth || 1; - that.wrapperH = that.wrapper.clientHeight || 1; - - that.minScrollY = -that.options.topOffset || 0; - that.scrollerW = m.round(that.scroller.offsetWidth * that.scale); - that.scrollerH = m.round((that.scroller.offsetHeight + that.minScrollY) * that.scale); - that.maxScrollX = that.wrapperW - that.scrollerW; - that.maxScrollY = that.wrapperH - that.scrollerH + that.minScrollY; - that.dirX = 0; - that.dirY = 0; - - if (that.options.onRefresh) that.options.onRefresh.call(that); - - that.hScroll = that.options.hScroll && that.maxScrollX < 0; - that.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH); - - that.hScrollbar = that.hScroll && that.options.hScrollbar; - that.vScrollbar = that.vScroll && that.options.vScrollbar && that.scrollerH > that.wrapperH; - - offset = that._offset(that.wrapper); - that.wrapperOffsetLeft = -offset.left; - that.wrapperOffsetTop = -offset.top; - - // Prepare snap - if (typeof that.options.snap == 'string') { - that.pagesX = []; - that.pagesY = []; - els = that.scroller.querySelectorAll(that.options.snap); - for (i=0, l=els.length; i= that.maxScrollX) { - that.pagesX[page] = pos; - pos = pos - that.wrapperW; - page++; - } - if (that.maxScrollX%that.wrapperW) that.pagesX[that.pagesX.length] = that.maxScrollX - that.pagesX[that.pagesX.length-1] + that.pagesX[that.pagesX.length-1]; - - pos = 0; - page = 0; - that.pagesY = []; - while (pos >= that.maxScrollY) { - that.pagesY[page] = pos; - pos = pos - that.wrapperH; - page++; - } - if (that.maxScrollY%that.wrapperH) that.pagesY[that.pagesY.length] = that.maxScrollY - that.pagesY[that.pagesY.length-1] + that.pagesY[that.pagesY.length-1]; - } - - // Prepare the scrollbars - that._scrollbar('h'); - that._scrollbar('v'); - - if (!that.zoomed) { - that.scroller.style[vendor + 'TransitionDuration'] = '0'; - that._resetPos(200); - } - }, - - scrollTo: function (x, y, time, relative) { - var that = this, - step = x, - i, l; - - that.stop(); - - if (!step.length) step = [{ x: x, y: y, time: time, relative: relative }]; - - for (i=0, l=step.length; i 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left; - pos.top = pos.top > that.minScrollY ? that.minScrollY : pos.top < that.maxScrollY ? that.maxScrollY : pos.top; - time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time; - - that.scrollTo(pos.left, pos.top, time); - }, - - scrollToPage: function (pageX, pageY, time) { - var that = this, x, y; - - if (that.options.onScrollStart) that.options.onScrollStart.call(that); - - if (that.options.snap) { - pageX = pageX == 'next' ? that.currPageX+1 : pageX == 'prev' ? that.currPageX-1 : pageX; - pageY = pageY == 'next' ? that.currPageY+1 : pageY == 'prev' ? that.currPageY-1 : pageY; - - pageX = pageX < 0 ? 0 : pageX > that.pagesX.length-1 ? that.pagesX.length-1 : pageX; - pageY = pageY < 0 ? 0 : pageY > that.pagesY.length-1 ? that.pagesY.length-1 : pageY; - - that.currPageX = pageX; - that.currPageY = pageY; - x = that.pagesX[pageX]; - y = that.pagesY[pageY]; - } else { - x = -that.wrapperW * pageX; - y = -that.wrapperH * pageY; - if (x < that.maxScrollX) x = that.maxScrollX; - if (y < that.maxScrollY) y = that.maxScrollY; - } - - that.scrollTo(x, y, time || 400); - }, - - disable: function () { - this.stop(); - this._resetPos(0); - this.enabled = false; - - // If disabled after touchstart we make sure that there are no left over events - this._unbind(MOVE_EV); - this._unbind(END_EV); - this._unbind(CANCEL_EV); - }, - - enable: function () { - this.enabled = true; - }, - - stop: function () { - if (this.options.useTransition) this._unbind('webkitTransitionEnd'); - else cancelFrame(this.aniTime); - this.steps = []; - this.moved = false; - this.animating = false; - }, - - zoom: function (x, y, scale, time) { - var that = this, - relScale = scale / that.scale; - - if (!that.options.useTransform) return; - - that.zoomed = true; - time = time === undefined ? 200 : time; - x = x - that.wrapperOffsetLeft - that.x; - y = y - that.wrapperOffsetTop - that.y; - that.x = x - x * relScale + that.x; - that.y = y - y * relScale + that.y; - - that.scale = scale; - that.refresh(); - - that.x = that.x > 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x; - that.y = that.y > that.minScrollY ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y; - - that.scroller.style[vendor + 'TransitionDuration'] = time + 'ms'; - that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose + ' scale(' + scale + ')'; - that.zoomed = false; - }, - - isReady: function () { - return !this.moved && !this.zoomed && !this.animating; - } - }; - - if (typeof exports !== 'undefined') exports.iScroll = iScroll; - else window.iScroll = iScroll; - - })(); - - - provide("iscroll", module.exports); - - !function ($, iScroll) { - $.ender({ - iScroll: function (options) { - return new iScroll(this[0], options) - } - }, true) - }(ender, require('iscroll').iScroll) - -}(); \ No newline at end of file diff --git a/components/iscroll/examples/ender/ender.min.js b/components/iscroll/examples/ender/ender.min.js deleted file mode 100644 index c7fcaff..0000000 --- a/components/iscroll/examples/ender/ender.min.js +++ /dev/null @@ -1,27 +0,0 @@ -/*! - * ============================================================= - * Ender: open module JavaScript framework (https://ender.no.de) - * Build: ender build qwery domready ../../ - * ============================================================= - */ - - -/*! - * Ender-JS: open module JavaScript framework (client-lib) - * copyright Dustin Diaz & Jacob Thornton 2011 (@ded @fat) - * https://ender.no.de - * License MIT - */ -!function(a){function c(a){var c=b[a]||window[a];if(!c)throw new Error("Requested module '"+a+"' has not been defined.");return c}function d(a,c){return b[a]=c}function e(a,b){for(var c in b)c!="noConflict"&&c!="_VERSION"&&(a[c]=b[c]);return a}function f(a,b,c){return g._select&&(typeof a=="string"||a.nodeName||a.length&&"item"in a||a==window)?(c=g._select(a,b),c.selector=a):c=isFinite(a.length)?a:[a],e(c,f)}function g(a,b){return f(a,b)}a.global=a;var b={};a.provide=d,a.require=c,e(g,{_VERSION:"0.2.5",ender:function(a,b){e(b?f:g,a)},fn:a.$&&a.$.fn||{}}),e(f,{forEach:function(a,b,c){for(c=0,l=this.length;c])\s*/g,B=/[\s\>\+\~]/,C=/(?![\s\w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^'"]*\]|[\s\w\+\-]*\))/,D=/([.*+?\^=!:${}()|\[\]\/\\])/g,E=/^([a-z0-9]+)?(?:([\.\#]+[\w\-\.#]+)?)/,F=/\[([\w\-]+)(?:([\|\^\$\*\~]?\=)['"]?([ \w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^]+)["']?)?\]/,G=/:([\w\-]+)(\(['"]?([\s\w\+\-]+)['"]?\))?/,H=new RegExp("("+B.source+")"+C.source,"g"),I=new RegExp(B.source+C.source),J=new RegExp(E.source+"("+F.source+")?"+"("+G.source+")?"),K={" ":function(a){return a&&a!==t&&a.parentNode},">":function(a,b){return a&&a.parentNode==b.parentNode&&a.parentNode},"~":function(a){return a&&a.previousSibling},"+":function(a,b,c,d){return a?(c=R(a),d=R(b),c&&d&&c==d&&c):!1}};L.prototype={g:function(a){return this.c[a]||undefined},s:function(a,b){return this.c[a]=b,b}};var M=new L,N=new L,O=new L,P=new L,ba="compareDocumentPosition"in t?function(a,b){return(b.compareDocumentPosition(a)&16)==16}:"contains"in t?function(a,c){return c=c==b||c==window?t:c,c!==a&&c.contains(a)}:function(a,b){while(a=a.parentNode)if(a===b)return 1;return 0},bb=function(){if(!b.querySelector||!b.querySelectorAll)return!1;try{return b.querySelectorAll(":nth-of-type(1)").length>0}catch(a){return!1}}(),bc=bb?function(a,c){return b.getElementsByClassName&&(h=a.match(x))?Q(c.getElementsByClassName(h[1])):Q(c.querySelectorAll(a))}:function(a,c){a=a.replace(A,"$1");var d=[],f,i,j=[],l;if(h=a.match(z)){r=c.getElementsByTagName(h[1]||"*"),k=M.g(h[2])||M.s(h[2],new RegExp("(^|\\s+)"+h[2]+"(\\s+|$)"));for(l=0,g=r.length,e=0;l]+)/.exec(b)[1],f=(c||a).createElement(e[d]||"div"),g=[];f.innerHTML=b;var h=f.childNodes;f=f.firstChild,g.push(f);while(f=f.nextSibling)f.nodeType==1&&g.push(f);return g}var c=require("qwery"),d="table",e={thead:d,tbody:d,tfoot:d,tr:"tbody",th:"tr",td:"tr",fieldset:"form",option:"select"};b._select=function(a,b){return/^\s*e[b+"ScrollbarMaxScroll"]&&(e.options.fixedScrollbar?f=e[b+"ScrollbarMaxScroll"]:(g=e[b+"ScrollbarIndicatorSize"]-a.round((f-e[b+"ScrollbarMaxScroll"])*3),g<8&&(g=8),e[b+"ScrollbarIndicator"].style[b=="h"?"width":"height"]=g+"px",f=e[b+"ScrollbarMaxScroll"]+(e[b+"ScrollbarIndicatorSize"]-g))),e[b+"ScrollbarWrapper"].style[c+"TransitionDelay"]="0",e[b+"ScrollbarWrapper"].style.opacity=d&&e.options.hideScrollbar?"0":"1",e[b+"ScrollbarIndicator"].style[c+"Transform"]=s+(b=="h"?f+"px,0":"0,"+f+"px")+t},_start:function(b){var d=this,f=e?b.touches[0]:b,g,h,i,j,k;if(!d.enabled)return;d.options.onBeforeScrollStart&&d.options.onBeforeScrollStart.call(d,b),(d.options.useTransition||d.options.zoom)&&d._transitionTime(0),d.moved=!1,d.animating=!1,d.zoomed=!1,d.distX=0,d.distY=0,d.absDistX=0,d.absDistY=0,d.dirX=0,d.dirY=0,d.options.zoom&&e&&b.touches.length>1&&(j=a.abs(b.touches[0].pageX-b.touches[1].pageX),k=a.abs(b.touches[0].pageY-b.touches[1].pageY),d.touchesDistStart=a.sqrt(j*j+k*k),d.originX=a.abs(b.touches[0].pageX+b.touches[1].pageX-d.wrapperOffsetLeft*2)/2-d.x,d.originY=a.abs(b.touches[0].pageY+b.touches[1].pageY-d.wrapperOffsetTop*2)/2-d.y,d.options.onZoomStart&&d.options.onZoomStart.call(d,b));if(d.options.momentum){d.options.useTransform?(g=getComputedStyle(d.scroller,null)[c+"Transform"].replace(/[^0-9-.,]/g,"").split(","),h=g[4]*1,i=g[5]*1):(h=getComputedStyle(d.scroller,null).left.replace(/[^0-9-]/g,"")*1,i=getComputedStyle(d.scroller,null).top.replace(/[^0-9-]/g,"")*1);if(h!=d.x||i!=d.y)d.options.useTransition?d._unbind("webkitTransitionEnd"):l(d.aniTime),d.steps=[],d._pos(h,i)}d.absStartX=d.x,d.absStartY=d.y,d.startX=d.x,d.startY=d.y,d.pointX=f.pageX,d.pointY=f.pageY,d.startTime=b.timeStamp||Date.now(),d.options.onScrollStart&&d.options.onScrollStart.call(d,b),d._bind(o),d._bind(p),d._bind(q)},_move:function(b){var d=this,f=e?b.touches[0]:b,g=f.pageX-d.pointX,h=f.pageY-d.pointY,i=d.x+g,j=d.y+h,k,l,m,n=b.timeStamp||Date.now();d.options.onBeforeScrollMove&&d.options.onBeforeScrollMove.call(d,b);if(d.options.zoom&&e&&b.touches.length>1){k=a.abs(b.touches[0].pageX-b.touches[1].pageX),l=a.abs(b.touches[0].pageY-b.touches[1].pageY),d.touchesDist=a.sqrt(k*k+l*l),d.zoomed=!0,m=1/d.touchesDistStart*d.touchesDist*this.scale,md.options.zoomMax&&(m=2*d.options.zoomMax*Math.pow(.5,d.options.zoomMax/m)),d.lastScale=m/this.scale,i=this.originX-this.originX*d.lastScale+this.x,j=this.originY-this.originY*d.lastScale+this.y,this.scroller.style[c+"Transform"]=s+i+"px,"+j+"px"+t+" scale("+m+")",d.options.onZoom&&d.options.onZoom.call(d,b);return}d.pointX=f.pageX,d.pointY=f.pageY;if(i>0||i=0||d.maxScrollX>=0?0:d.maxScrollX;if(j>d.minScrollY||j=d.minScrollY||d.maxScrollY>=0?d.minScrollY:d.maxScrollY;if(d.absDistX<6&&d.absDistY<6){d.distX+=g,d.distY+=h,d.absDistX=a.abs(d.distX),d.absDistY=a.abs(d.distY);return}d.options.lockDirection&&(d.absDistX>d.absDistY+5?(j=d.y,h=0):d.absDistY>d.absDistX+5&&(i=d.x,g=0)),d.moved=!0,d._pos(i,j),d.dirX=g>0?-1:g<0?1:0,d.dirY=h>0?-1:h<0?1:0,n-d.startTime>300&&(d.startTime=n,d.startX=d.x,d.startY=d.y),d.options.onScrollMove&&d.options.onScrollMove.call(d,b)},_end:function(b){if(e&&b.touches.length!=0)return;var d=this,f=e?b.changedTouches[0]:b,g,h,i={dist:0,time:0},j={dist:0,time:0},k=(b.timeStamp||Date.now())-d.startTime,l=d.x,m=d.y,n,r,u,v,w;d._unbind(o),d._unbind(p),d._unbind(q),d.options.onBeforeScrollEnd&&d.options.onBeforeScrollEnd.call(d,b);if(d.zoomed){w=d.scale*d.lastScale,w=Math.max(d.options.zoomMin,w),w=Math.min(d.options.zoomMax,w),d.lastScale=w/d.scale,d.scale=w,d.x=d.originX-d.originX*d.lastScale+d.x,d.y=d.originY-d.originY*d.lastScale+d.y,d.scroller.style[c+"TransitionDuration"]="200ms",d.scroller.style[c+"Transform"]=s+d.x+"px,"+d.y+"px"+t+" scale("+d.scale+")",d.zoomed=!1,d.refresh(),d.options.onZoomEnd&&d.options.onZoomEnd.call(d,b);return}if(!d.moved){e&&(d.doubleTapTimer&&d.options.zoom?(clearTimeout(d.doubleTapTimer),d.doubleTapTimer=null,d.options.onZoomStart&&d.options.onZoomStart.call(d,b),d.zoom(d.pointX,d.pointY,d.scale==1?d.options.doubleTapZoom:1),d.options.onZoomEnd&&setTimeout(function(){d.options.onZoomEnd.call(d,b)},200)):d.doubleTapTimer=setTimeout(function(){d.doubleTapTimer=null,g=f.target;while(g.nodeType!=1)g=g.parentNode;g.tagName!="SELECT"&&g.tagName!="INPUT"&&g.tagName!="TEXTAREA"&&(h=document.createEvent("MouseEvents"),h.initMouseEvent("click",!0,!0,b.view,1,f.screenX,f.screenY,f.clientX,f.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,0,null),h._fake=!0,g.dispatchEvent(h))},d.options.zoom?250:0)),d._resetPos(200),d.options.onTouchEnd&&d.options.onTouchEnd.call(d,b);return}if(k<300&&d.options.momentum){i=l?d._momentum(l-d.startX,k,-d.x,d.scrollerW-d.wrapperW+d.x,d.options.bounce?d.wrapperW:0):i,j=m?d._momentum(m-d.startY,k,-d.y,d.maxScrollY<0?d.scrollerH-d.wrapperH+d.y-d.minScrollY:0,d.options.bounce?d.wrapperH:0):j,l=d.x+i.dist,m=d.y+j.dist;if(d.x>0&&l>0||d.xd.minScrollY&&m>d.minScrollY||d.y=0?0:b.x=b.minScrollY||b.maxScrollY>0?b.minScrollY:b.yb.options.zoomMax&&(g=b.options.zoomMax),g!=b.scale&&(!b.wheelZoomCount&&b.options.onZoomStart&&b.options.onZoomStart.call(b,a),b.wheelZoomCount++,b.zoom(a.pageX,a.pageY,g,400),setTimeout(function(){b.wheelZoomCount--,!b.wheelZoomCount&&b.options.onZoomEnd&&b.options.onZoomEnd.call(b,a)},400));return}e=b.x+c,f=b.y+d,e>0?e=0:eb.minScrollY?f=b.minScrollY:f=e+f.time){b._pos(f.x,f.y),b.animating=!1,b.options.onAnimationEnd&&b.options.onAnimationEnd.call(b),b._startAni();return}i=(i-e)/f.time-1,g=a.sqrt(1-i*i),j=(f.x-c)*g+c,l=(f.y-d)*g+d,b._pos(j,l),b.animating&&(b.aniTime=k(h))},h()},_transitionTime:function(a){a+="ms",this.scroller.style[c+"TransitionDuration"]=a,this.hScrollbar&&(this.hScrollbarIndicator.style[c+"TransitionDuration"]=a),this.vScrollbar&&(this.vScrollbarIndicator.style[c+"TransitionDuration"]=a)},_momentum:function(b,c,d,e,f){var g=6e-4,h=a.abs(b)/c,i=h*h/(2*g),j=0,k=0;return b>0&&i>d?(k=f/(6/(i/h*g)),d=d+k,h=h*d/i,i=d):b<0&&i>e&&(k=f/(6/(i/h*g)),e=e+k,h=h*e/i,i=e),i=i*(b<0?-1:1),j=h/g,{dist:i,time:a.round(j)}},_offset:function(a){var b=-a.offsetLeft,c=-a.offsetTop;while(a=a.offsetParent)b-=a.offsetLeft,c-=a.offsetTop;return a!=this.wrapper&&(b*=this.scale,c*=this.scale),{left:b,top:c}},_snap:function(b,c){var d=this,e,f,g,h,i,j;g=d.pagesX.length-1;for(e=0,f=d.pagesX.length;e=d.pagesX[e]){g=e;break}g==d.currPageX&&g>0&&d.dirX<0&&g--,b=d.pagesX[g],i=a.abs(b-d.pagesX[d.currPageX]),i=i?a.abs(d.x-b)/i*500:0,d.currPageX=g,g=d.pagesY.length-1;for(e=0;e=d.pagesY[e]){g=e;break}return g==d.currPageY&&g>0&&d.dirY<0&&g--,c=d.pagesY[g],j=a.abs(c-d.pagesY[d.currPageY]),j=j?a.abs(d.y-c)/j*500:0,d.currPageY=g,h=a.round(a.max(i,j))||200,{x:b,y:c,time:h}},_bind:function(a,b,c){(b||this.scroller).addEventListener(a,this,!!c)},_unbind:function(a,b,c){(b||this.scroller).removeEventListener(a,this,!!c)},destroy:function(){var a=this;a.scroller.style[c+"Transform"]="",a.hScrollbar=!1,a.vScrollbar=!1,a._scrollbar("h"),a._scrollbar("v"),a._unbind(m,window),a._unbind(n),a._unbind(o),a._unbind(p),a._unbind(q),a.options.hasTouch&&(a._unbind("mouseout",a.wrapper),a._unbind(r)),a.options.useTransition&&a._unbind("webkitTransitionEnd"),a.options.checkDOMChanges&&clearInterval(a.checkDOMTime),a.options.onDestroy&&a.options.onDestroy.call(a)},refresh:function(){var b=this,d,e,f,g,h=0,i=0;b.scaleb.wrapperH),b.hScrollbar=b.hScroll&&b.options.hScrollbar,b.vScrollbar=b.vScroll&&b.options.vScrollbar&&b.scrollerH>b.wrapperH,d=b._offset(b.wrapper),b.wrapperOffsetLeft=-d.left,b.wrapperOffsetTop=-d.top;if(typeof b.options.snap=="string"){b.pagesX=[],b.pagesY=[],g=b.scroller.querySelectorAll(b.options.snap);for(e=0,f=g.length;e=b.maxScrollX)b.pagesX[i]=h,h=h-b.wrapperW,i++;b.maxScrollX%b.wrapperW&&(b.pagesX[b.pagesX.length]=b.maxScrollX-b.pagesX[b.pagesX.length-1]+b.pagesX[b.pagesX.length-1]),h=0,i=0,b.pagesY=[];while(h>=b.maxScrollY)b.pagesY[i]=h,h=h-b.wrapperH,i++;b.maxScrollY%b.wrapperH&&(b.pagesY[b.pagesY.length]=b.maxScrollY-b.pagesY[b.pagesY.length-1]+b.pagesY[b.pagesY.length-1])}b._scrollbar("h"),b._scrollbar("v"),b.zoomed||(b.scroller.style[c+"TransitionDuration"]="0",b._resetPos(200))},scrollTo:function(a,b,c,d){var e=this,f=a,g,h;e.stop(),f.length||(f=[{x:a,y:b,time:c,relative:d}]);for(g=0,h=f.length;g0?0:e.leftd.minScrollY?d.minScrollY:e.topd.pagesX.length-1?d.pagesX.length-1:a,b=b<0?0:b>d.pagesY.length-1?d.pagesY.length-1:b,d.currPageX=a,d.currPageY=b,e=d.pagesX[a],f=d.pagesY[b]):(e=-d.wrapperW*a,f=-d.wrapperH*b,e0?0:f.xf.minScrollY?f.minScrollY:f.y - - - - - - -iScroll demo: Carousel - - - - - - - -
-
-
    -
  • 1. A robot may not injure a human being or, through inaction, allow a human being to come to harm.
  • -
  • 2. A robot must obey any orders given to it by human beings, except where such orders would conflict with the First Law.
  • -
  • 3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.
  • -
  • Zeroth Law: A robot may not harm humanity, or, by inaction, allow humanity to come to harm.
  • -
  • Lyuben Dilov's Forth law: A robot must establish its identity as a robot in all cases.
  • -
  • Harry Harrison's Forth law: A robot must reproduce. As long as such reproduction does not interfere with the First or Second or Third Law.
  • -
  • Nikola Kesarovski's Fifth law: A robot must know it is a robot.
  • -
-
-
- - - \ No newline at end of file diff --git a/components/iscroll/examples/form-fields/index.html b/components/iscroll/examples/form-fields/index.html deleted file mode 100644 index 8d45641..0000000 --- a/components/iscroll/examples/form-fields/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -iScroll demo: simple - - - - - - - - - - -
-
-
    -
  • -
  • Pretty row 2
  • -
  • -
  • Pretty row 4
  • -
  • -
  • Pretty row 6
  • -
  • -
  • Pretty row 8
  • -
  • Pretty row 9
  • -
  • Pretty row 10
  • -
  • Pretty row 11
  • -
  • Pretty row 12
  • -
  • Pretty row 13
  • -
  • Pretty row 14
  • -
  • Pretty row 15
  • -
  • Pretty row 16
  • -
  • Pretty row 17
  • -
  • Pretty row 18
  • -
  • Pretty row 19
  • -
  • Pretty row 20
  • -
  • Pretty row 21
  • -
  • Pretty row 22
  • -
  • Pretty row 23
  • -
  • Pretty row 24
  • -
  • Pretty row 25
  • -
  • Pretty row 26
  • -
  • Pretty row 27
  • -
  • Pretty row 28
  • -
  • Pretty row 29
  • -
  • Pretty row 30
  • -
  • Pretty row 31
  • -
  • Pretty row 32
  • -
  • Pretty row 33
  • -
  • Pretty row 34
  • -
  • Pretty row 35
  • -
  • Pretty row 36
  • -
  • Pretty row 37
  • -
  • Pretty row 38
  • -
  • Pretty row 39
  • -
  • Pretty row 40
  • -
-
-
- - - - diff --git a/components/iscroll/examples/horizontal-scroll/index.html b/components/iscroll/examples/horizontal-scroll/index.html deleted file mode 100644 index 269500d..0000000 --- a/components/iscroll/examples/horizontal-scroll/index.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -iScroll demo: horizontal scroll - - - - - - - - - - -
-
-
    -
  • Pretty col 1
  • -
  • Pretty col 2
  • -
  • Pretty col 3
  • -
  • Pretty col 4
  • -
  • Pretty col 5
  • -
  • Pretty col 6
  • -
  • Pretty col 7
  • -
  • Pretty col 8
  • -
  • Pretty col 9
  • -
  • Pretty col 10
  • -
  • Pretty col 11
  • -
  • Pretty col 12
  • -
  • Pretty col 13
  • -
  • Pretty col 14
  • -
  • Pretty col 15
  • -
  • Pretty col 16
  • -
  • Pretty col 17
  • -
  • Pretty col 18
  • -
  • Pretty col 19
  • -
  • Pretty col 20
  • -
-
-
- - - \ No newline at end of file diff --git a/components/iscroll/examples/hover/index.html b/components/iscroll/examples/hover/index.html deleted file mode 100644 index 8969623..0000000 --- a/components/iscroll/examples/hover/index.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - -iScroll demo: Hover Example - - - - - - - - - - -
-
-
    -
  • Pretty row 1
  • -
  • Pretty row 2
  • -
  • Pretty row 3
  • -
  • Pretty row 4
  • -
  • Pretty row 5
  • -
  • Pretty row 6
  • -
  • Pretty row 7
  • -
  • Pretty row 8
  • -
  • Pretty row 9
  • -
  • Pretty row 10
  • -
  • Pretty row 11
  • -
  • Pretty row 12
  • -
  • Pretty row 13
  • -
  • Pretty row 14
  • -
  • Pretty row 15
  • -
  • Pretty row 16
  • -
  • Pretty row 17
  • -
  • Pretty row 18
  • -
  • Pretty row 19
  • -
  • Pretty row 20
  • -
  • Pretty row 21
  • -
  • Pretty row 22
  • -
  • Pretty row 23
  • -
  • Pretty row 24
  • -
  • Pretty row 25
  • -
  • Pretty row 26
  • -
  • Pretty row 27
  • -
  • Pretty row 28
  • -
  • Pretty row 29
  • -
  • Pretty row 30
  • -
  • Pretty row 31
  • -
  • Pretty row 32
  • -
  • Pretty row 33
  • -
  • Pretty row 34
  • -
  • Pretty row 35
  • -
  • Pretty row 36
  • -
  • Pretty row 37
  • -
  • Pretty row 38
  • -
  • Pretty row 39
  • -
  • Pretty row 40
  • -
-
-
- - - - diff --git a/components/iscroll/examples/ios-perfect-scrollbar/index.html b/components/iscroll/examples/ios-perfect-scrollbar/index.html deleted file mode 100644 index b3f73e7..0000000 --- a/components/iscroll/examples/ios-perfect-scrollbar/index.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - -iScroll demo: iOS Perfect Scrollbar - - - - - - - - - - - -
-
-
    -
  • Pretty row 1
  • -
  • Pretty row 2
  • -
  • Pretty row 3
  • -
  • Pretty row 4
  • -
  • Pretty row 5
  • -
  • Pretty row 6
  • -
  • Pretty row 7
  • -
  • Pretty row 8
  • -
  • Pretty row 9
  • -
  • Pretty row 10
  • -
  • Pretty row 11
  • -
  • Pretty row 12
  • -
  • Pretty row 13
  • -
  • Pretty row 14
  • -
  • Pretty row 15
  • -
  • Pretty row 16
  • -
  • Pretty row 17
  • -
  • Pretty row 18
  • -
  • Pretty row 19
  • -
  • Pretty row 20
  • -
  • Pretty row 21
  • -
  • Pretty row 22
  • -
  • Pretty row 23
  • -
  • Pretty row 24
  • -
  • Pretty row 25
  • -
  • Pretty row 26
  • -
  • Pretty row 27
  • -
  • Pretty row 28
  • -
  • Pretty row 29
  • -
  • Pretty row 30
  • -
  • Pretty row 31
  • -
  • Pretty row 32
  • -
  • Pretty row 33
  • -
  • Pretty row 34
  • -
  • Pretty row 35
  • -
  • Pretty row 36
  • -
  • Pretty row 37
  • -
  • Pretty row 38
  • -
  • Pretty row 39
  • -
  • Pretty row 40
  • -
-
-
- - - - - \ No newline at end of file diff --git a/components/iscroll/examples/ios-perfect-scrollbar/scrollbar.css b/components/iscroll/examples/ios-perfect-scrollbar/scrollbar.css deleted file mode 100644 index 36579cf..0000000 --- a/components/iscroll/examples/ios-perfect-scrollbar/scrollbar.css +++ /dev/null @@ -1,57 +0,0 @@ -/** - * - * Horizontal Scrollbar - * - */ -.myScrollbarH { - position:absolute; - z-index:100; - height:7px; - bottom:1px; - left:2px; - right:7px -} - -.myScrollbarH > div { - height:100%; -} - - -/** - * - * Vertical Scrollbar - * - */ -.myScrollbarV { - position:absolute; - z-index:100; - width:7px;bottom:7px;top:2px;right:1px -} - -.myScrollbarV > div { - width:100%; -} - - -/** - * - * Both Scrollbars - * - */ -.myScrollbarH > div, -.myScrollbarV > div { - position:absolute; - z-index:100; - - /* The following is probably what you want to customize */ - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - -o-box-sizing:border-box; - box-sizing:border-box; - - border-width:3px; - -webkit-border-image:url(scrollbar.png) 6 6 6 6; - -moz-border-image:url(scrollbar.png) 6 6 6 6; - -o-border-image:url(scrollbar.png) 6 6 6 6; - border-image:url(scrollbar.png) 6 6 6 6; -} diff --git a/components/iscroll/examples/ios-perfect-scrollbar/scrollbar.png b/components/iscroll/examples/ios-perfect-scrollbar/scrollbar.png deleted file mode 100644 index 08fb99719e12ea7af6d15a0201e4a2ea5bcc404e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0y_K2I0NkcwM#C)sixP~dShPW!}i zF7}Sh+&wKNZ|`w?ERTy>6Yr_m8l-rbxqe@Jp!42xUj9D{Jd*@cdP~E+Pb>IG+*{ - - - - - - -iScroll demo: iPad - - - - - - - - - -
- - -
-
Main Content Area
-
-
-

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

-

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

-

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

-

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

-
-
-
-
- - - \ No newline at end of file diff --git a/components/iscroll/examples/lite/index.html b/components/iscroll/examples/lite/index.html deleted file mode 100644 index ddc1606..0000000 --- a/components/iscroll/examples/lite/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -iScroll demo: lite edition - - - - - - - - -
-
-
-
    -
  • Pretty row 1
  • -
  • Pretty row 2
  • -
  • Pretty row 3
  • -
  • Pretty row 4
  • -
  • Pretty row 5
  • -
  • Pretty row 6
  • -
  • Pretty row 7
  • -
  • Pretty row 8
  • -
  • Pretty row 9
  • -
  • Pretty row 10
  • -
  • Pretty row 11
  • -
  • Pretty row 12
  • -
  • Pretty row 13
  • -
  • Pretty row 14
  • -
  • Pretty row 15
  • -
  • Pretty row 16
  • -
  • Pretty row 17
  • -
  • Pretty row 18
  • -
  • Pretty row 19
  • -
  • Pretty row 20
  • -
  • Pretty row 21
  • -
  • Pretty row 22
  • -
  • Pretty row 23
  • -
  • Pretty row 24
  • -
  • Pretty row 25
  • -
  • Pretty row 26
  • -
  • Pretty row 27
  • -
  • Pretty row 28
  • -
  • Pretty row 29
  • -
  • Pretty row 30
  • -
  • Pretty row 31
  • -
  • Pretty row 32
  • -
  • Pretty row 33
  • -
  • Pretty row 34
  • -
  • Pretty row 35
  • -
  • Pretty row 36
  • -
  • Pretty row 37
  • -
  • Pretty row 38
  • -
  • Pretty row 39
  • -
  • Pretty row 40
  • -
-
-
- - - - - \ No newline at end of file diff --git a/components/iscroll/examples/pull-to-refresh/index.html b/components/iscroll/examples/pull-to-refresh/index.html deleted file mode 100644 index a624efe..0000000 --- a/components/iscroll/examples/pull-to-refresh/index.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - -iScroll demo: simple - - - - - - - - - - -
-
-
- Pull down to refresh... -
- -
    -
  • Pretty row 1
  • -
  • Pretty row 2
  • -
  • Pretty row 3
  • -
  • Pretty row 4
  • -
  • Pretty row 5
  • -
  • Pretty row 6
  • -
  • Pretty row 7
  • -
  • Pretty row 8
  • -
  • Pretty row 9
  • -
  • Pretty row 10
  • -
  • Pretty row 11
  • -
  • Pretty row 12
  • -
  • Pretty row 13
  • -
  • Pretty row 14
  • -
  • Pretty row 15
  • -
  • Pretty row 16
  • -
  • Pretty row 17
  • -
  • Pretty row 18
  • -
  • Pretty row 19
  • -
  • Pretty row 20
  • -
  • Pretty row 21
  • -
  • Pretty row 22
  • -
  • Pretty row 23
  • -
  • Pretty row 24
  • -
  • Pretty row 25
  • -
  • Pretty row 26
  • -
  • Pretty row 27
  • -
  • Pretty row 28
  • -
  • Pretty row 29
  • -
  • Pretty row 30
  • -
  • Pretty row 31
  • -
  • Pretty row 32
  • -
  • Pretty row 33
  • -
  • Pretty row 34
  • -
  • Pretty row 35
  • -
  • Pretty row 36
  • -
  • Pretty row 37
  • -
  • Pretty row 38
  • -
  • Pretty row 39
  • -
  • Pretty row 40
  • -
-
- Pull up to refresh... -
-
-
- - - - \ No newline at end of file diff --git a/components/iscroll/examples/pull-to-refresh/pull-icon@2x.png b/components/iscroll/examples/pull-to-refresh/pull-icon@2x.png deleted file mode 100644 index 97c8bda3987158498ac50863eb6b3aae24f7383c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 850 zcmeAS@N?(olHy`uVBq!ia0vp^0YJQfgBeJ!iIr{xQriQ3LR|m<|9^A{0&CBxCqOUQ zlmz(&GcbJaJ+9E>_F=Jc=Fe|D_xS(hY>cwJ!D-OGntADy+eJ>^X}h%QMAcniJr9?d zFMaiJEakt5%+e+^*kd-o>t@AieH4H>Nu8spSS<* zZ~O2Tr$b7@ImeSZ73XW~@y*|IeBPs*pA{#c6rHj@bmxN`yb5~EdHGY<@~_S1$#7tn zy3oKj=bipmIg1FXb({zCRF`Laoh)#A&YK~*ZRMVJLEalHE>}!1zoIog(=hJB?PabH zZ7=m2)r^8Y7So9|(`Te*Q_!<+0qZ)+H$|2=#9+%o^gAI56^O1pKQ4F<=u z?!OmyOn)}RVe-ioqldq9rQ9OLT3`Oz&Ymzwr|+UdXD!3ypnpq)-Z0L1!m3)7ASKf1 zsKwUyv&*T_cX4O}i|v_NX{!(LR7IG!I=o1{DpF_kWkVKM_n|e`|H{MeddhRy&Tg5` zP&LD0&%_z?d$wC`*4WX0(`-lk^&30dcYi79FF4#T_i!SMt##GEM|FW$cF5H&Q+Cvq+;;hU%i*Vbwz%s(vs1mg@m0TOH`n~WmGx3S=u>jY{{_?I zUBBpie|kOVUu$rk>b3n_P9Nv`d(ho(*2#AFzaPWw8eZEAdWbLnXUx6)-7o*pU;UZ8 eEB?*$c^~9cTESU9TLYNF7(8A5T-G@yGywoyz{IWq diff --git a/components/iscroll/examples/simple/index.html b/components/iscroll/examples/simple/index.html deleted file mode 100644 index 3dc2c6a..0000000 --- a/components/iscroll/examples/simple/index.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - -iScroll demo: simple - - - - - - - - - - -
-
-
    -
  • Pretty row 1
  • -
  • Pretty row 2
  • -
  • Pretty row 3
  • -
  • Pretty row 4
  • -
  • Pretty row 5
  • -
  • Pretty row 6
  • -
  • Pretty row 7
  • -
  • Pretty row 8
  • -
  • Pretty row 9
  • -
  • Pretty row 10
  • -
  • Pretty row 11
  • -
  • Pretty row 12
  • -
  • Pretty row 13
  • -
  • Pretty row 14
  • -
  • Pretty row 15
  • -
  • Pretty row 16
  • -
  • Pretty row 17
  • -
  • Pretty row 18
  • -
  • Pretty row 19
  • -
  • Pretty row 20
  • -
  • Pretty row 21
  • -
  • Pretty row 22
  • -
  • Pretty row 23
  • -
  • Pretty row 24
  • -
  • Pretty row 25
  • -
  • Pretty row 26
  • -
  • Pretty row 27
  • -
  • Pretty row 28
  • -
  • Pretty row 29
  • -
  • Pretty row 30
  • -
  • Pretty row 31
  • -
  • Pretty row 32
  • -
  • Pretty row 33
  • -
  • Pretty row 34
  • -
  • Pretty row 35
  • -
  • Pretty row 36
  • -
  • Pretty row 37
  • -
  • Pretty row 38
  • -
  • Pretty row 39
  • -
  • Pretty row 40
  • -
-
-
- - - - diff --git a/components/iscroll/examples/snap-to-element/index.html b/components/iscroll/examples/snap-to-element/index.html deleted file mode 100644 index ef8a2f4..0000000 --- a/components/iscroll/examples/snap-to-element/index.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -iScroll demo: Snap to element - - - - - - - - - - -
-
-
    -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • - -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • - -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • - -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • - -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
  • cell
  • cell
  • cell
  • cell
  • cell
  • -
-
-
- - - \ No newline at end of file diff --git a/components/iscroll/examples/use-transition/index.html b/components/iscroll/examples/use-transition/index.html deleted file mode 100644 index cd93e44..0000000 --- a/components/iscroll/examples/use-transition/index.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - -iScroll demo: Use transition - - - - - - - - -

Open this page on iPad to test the difference between standard iScroll and iScroll in "transition mode"

- -
-
-
    -
  • Standard iScroll
  • -
  • Pretty row 2
  • -
  • Pretty row 3
  • -
  • Pretty row 4
  • -
  • Pretty row 5
  • -
  • Pretty row 6
  • -
  • Pretty row 7
  • -
  • Pretty row 8
  • -
  • Pretty row 9
  • -
  • Pretty row 10
  • -
  • Standard iScroll
  • -
  • Pretty row 12
  • -
  • Pretty row 13
  • -
  • Pretty row 14
  • -
  • Pretty row 15
  • -
  • Pretty row 16
  • -
  • Pretty row 17
  • -
  • Pretty row 18
  • -
  • Pretty row 19
  • -
  • Pretty row 20
  • -
  • Standard iScroll
  • -
  • Pretty row 22
  • -
  • Pretty row 23
  • -
  • Pretty row 24
  • -
  • Pretty row 25
  • -
  • Pretty row 26
  • -
  • Pretty row 27
  • -
  • Pretty row 28
  • -
  • Pretty row 29
  • -
  • Pretty row 30
  • -
  • Standard iScroll
  • -
  • Pretty row 32
  • -
  • Pretty row 33
  • -
  • Pretty row 34
  • -
  • Pretty row 35
  • -
  • Pretty row 36
  • -
  • Pretty row 37
  • -
  • Pretty row 38
  • -
  • Pretty row 39
  • -
  • Pretty row 40
  • -
-
-
- - -
-
-
    -
  • Transition mode
  • -
  • Pretty row 2
  • -
  • Pretty row 3
  • -
  • Pretty row 4
  • -
  • Pretty row 5
  • -
  • Pretty row 6
  • -
  • Pretty row 7
  • -
  • Pretty row 8
  • -
  • Pretty row 9
  • -
  • Pretty row 10
  • -
  • Transition mode
  • -
  • Pretty row 12
  • -
  • Pretty row 13
  • -
  • Pretty row 14
  • -
  • Pretty row 15
  • -
  • Pretty row 16
  • -
  • Pretty row 17
  • -
  • Pretty row 18
  • -
  • Pretty row 19
  • -
  • Pretty row 20
  • -
  • Transition mode
  • -
  • Pretty row 22
  • -
  • Pretty row 23
  • -
  • Pretty row 24
  • -
  • Pretty row 25
  • -
  • Pretty row 26
  • -
  • Pretty row 27
  • -
  • Pretty row 28
  • -
  • Pretty row 29
  • -
  • Pretty row 30
  • -
  • Transition mode
  • -
  • Pretty row 32
  • -
  • Pretty row 33
  • -
  • Pretty row 34
  • -
  • Pretty row 35
  • -
  • Pretty row 36
  • -
  • Pretty row 37
  • -
  • Pretty row 38
  • -
  • Pretty row 39
  • -
  • Pretty row 40
  • -
-
-
- - - - diff --git a/components/iscroll/examples/zoom/index.html b/components/iscroll/examples/zoom/index.html deleted file mode 100644 index 11d682c..0000000 --- a/components/iscroll/examples/zoom/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -iScroll demo: zoom - - - - - - - - - -
-
-

iscrollLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

-

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

-

iscrollAt vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.

-
-
- - - - - \ No newline at end of file diff --git a/components/iscroll/examples/zoom/iscroll.jpg b/components/iscroll/examples/zoom/iscroll.jpg deleted file mode 100644 index 9ed0d7ea85024fdee9fe21502e67aad97acec1e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10018 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 diff --git a/components/iscroll/license.txt b/components/iscroll/license.txt deleted file mode 100644 index 1c54a54..0000000 --- a/components/iscroll/license.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 Matteo Spinelli, http://cubiq.org/ - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/components/iscroll/package.json b/components/iscroll/package.json deleted file mode 100644 index 0ed2e70..0000000 --- a/components/iscroll/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "iscroll" - , "description": "smooth scrolling for mobile webkit" - , "version": "4.2.5" - , "homepage": "http://cubiq.org/iscroll-4" - , "author": "Matteo Spinelli (http://cubiq.org)" - , "keywords": ["ender", "iscroll", "scrolling", "webkit", "iphone", "android"] - , "main": "./src/iscroll.js" - , "ender": "./src/ender.js" - , "repository": { - "type": "git" - , "url": "https://github.com/cubiq/iscroll.git" - } -} diff --git a/components/iscroll/src/ender.js b/components/iscroll/src/ender.js deleted file mode 100644 index 4c64f8a..0000000 --- a/components/iscroll/src/ender.js +++ /dev/null @@ -1,7 +0,0 @@ -!function ($, iScroll) { - $.ender({ - iScroll: function (options) { - return new iScroll(this[0], options) - } - }, true) -}(ender, require('iscroll').iScroll) \ No newline at end of file diff --git a/components/iscroll/src/iscroll-lite.js b/components/iscroll/src/iscroll-lite.js deleted file mode 100644 index 3a6cab7..0000000 --- a/components/iscroll/src/iscroll-lite.js +++ /dev/null @@ -1,594 +0,0 @@ -/*! - * iScroll Lite base on iScroll v4.1.6 ~ Copyright (c) 2011 Matteo Spinelli, http://cubiq.org - * Released under MIT license, http://cubiq.org/license - */ - -(function(){ -var m = Math, - mround = function (r) { return r >> 0; }, - vendor = (/webkit/i).test(navigator.appVersion) ? 'webkit' : - (/firefox/i).test(navigator.userAgent) ? 'Moz' : - 'opera' in window ? 'O' : '', - - // Browser capabilities - isAndroid = (/android/gi).test(navigator.appVersion), - isIDevice = (/iphone|ipad/gi).test(navigator.appVersion), - isPlaybook = (/playbook/gi).test(navigator.appVersion), - isTouchPad = (/hp-tablet/gi).test(navigator.appVersion), - - has3d = 'WebKitCSSMatrix' in window && 'm11' in new WebKitCSSMatrix(), - hasTouch = 'ontouchstart' in window && !isTouchPad, - hasTransform = vendor + 'Transform' in document.documentElement.style, - hasTransitionEnd = isIDevice || isPlaybook, - - nextFrame = (function() { - return window.requestAnimationFrame - || window.webkitRequestAnimationFrame - || window.mozRequestAnimationFrame - || window.oRequestAnimationFrame - || window.msRequestAnimationFrame - || function(callback) { return setTimeout(callback, 17); } - })(), - cancelFrame = (function () { - return window.cancelRequestAnimationFrame - || window.webkitCancelAnimationFrame - || window.webkitCancelRequestAnimationFrame - || window.mozCancelRequestAnimationFrame - || window.oCancelRequestAnimationFrame - || window.msCancelRequestAnimationFrame - || clearTimeout - })(), - - // Events - RESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize', - START_EV = hasTouch ? 'touchstart' : 'mousedown', - MOVE_EV = hasTouch ? 'touchmove' : 'mousemove', - END_EV = hasTouch ? 'touchend' : 'mouseup', - CANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup', - - // Helpers - trnOpen = 'translate' + (has3d ? '3d(' : '('), - trnClose = has3d ? ',0)' : ')', - - // Constructor - iScroll = function (el, options) { - var that = this, - doc = document, - i; - - that.wrapper = typeof el == 'object' ? el : doc.getElementById(el); - that.wrapper.style.overflow = 'hidden'; - that.scroller = that.wrapper.children[0]; - - // Default options - that.options = { - hScroll: true, - vScroll: true, - x: 0, - y: 0, - bounce: true, - bounceLock: false, - momentum: true, - lockDirection: true, - useTransform: true, - useTransition: false, - - // Events - onRefresh: null, - onBeforeScrollStart: function (e) { e.preventDefault(); }, - onScrollStart: null, - onBeforeScrollMove: null, - onScrollMove: null, - onBeforeScrollEnd: null, - onScrollEnd: null, - onTouchEnd: null, - onDestroy: null - }; - - // User defined options - for (i in options) that.options[i] = options[i]; - - // Set starting position - that.x = that.options.x; - that.y = that.options.y; - - // Normalize options - that.options.useTransform = hasTransform ? that.options.useTransform : false; - that.options.hScrollbar = that.options.hScroll && that.options.hScrollbar; - that.options.vScrollbar = that.options.vScroll && that.options.vScrollbar; - that.options.useTransition = hasTransitionEnd && that.options.useTransition; - - // Set some default styles - that.scroller.style[vendor + 'TransitionProperty'] = that.options.useTransform ? '-' + vendor.toLowerCase() + '-transform' : 'top left'; - that.scroller.style[vendor + 'TransitionDuration'] = '0'; - that.scroller.style[vendor + 'TransformOrigin'] = '0 0'; - if (that.options.useTransition) that.scroller.style[vendor + 'TransitionTimingFunction'] = 'cubic-bezier(0.33,0.66,0.66,1)'; - - if (that.options.useTransform) that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose; - else that.scroller.style.cssText += ';position:absolute;top:' + that.y + 'px;left:' + that.x + 'px'; - - that.refresh(); - - that._bind(RESIZE_EV, window); - that._bind(START_EV); - if (!hasTouch) that._bind('mouseout', that.wrapper); - }; - -// Prototype -iScroll.prototype = { - enabled: true, - x: 0, - y: 0, - steps: [], - scale: 1, - - handleEvent: function (e) { - var that = this; - switch(e.type) { - case START_EV: - if (!hasTouch && e.button !== 0) return; - that._start(e); - break; - case MOVE_EV: that._move(e); break; - case END_EV: - case CANCEL_EV: that._end(e); break; - case RESIZE_EV: that._resize(); break; - case 'mouseout': that._mouseout(e); break; - case 'webkitTransitionEnd': that._transitionEnd(e); break; - } - }, - - _resize: function () { - this.refresh(); - }, - - _pos: function (x, y) { - x = this.hScroll ? x : 0; - y = this.vScroll ? y : 0; - - if (this.options.useTransform) { - this.scroller.style[vendor + 'Transform'] = trnOpen + x + 'px,' + y + 'px' + trnClose + ' scale(' + this.scale + ')'; - } else { - x = mround(x); - y = mround(y); - this.scroller.style.left = x + 'px'; - this.scroller.style.top = y + 'px'; - } - - this.x = x; - this.y = y; - }, - - _start: function (e) { - var that = this, - point = hasTouch ? e.touches[0] : e, - matrix, x, y; - - if (!that.enabled) return; - - if (that.options.onBeforeScrollStart) that.options.onBeforeScrollStart.call(that, e); - - if (that.options.useTransition) that._transitionTime(0); - - that.moved = false; - that.animating = false; - that.zoomed = false; - that.distX = 0; - that.distY = 0; - that.absDistX = 0; - that.absDistY = 0; - that.dirX = 0; - that.dirY = 0; - - if (that.options.momentum) { - if (that.options.useTransform) { - // Very lame general purpose alternative to CSSMatrix - matrix = getComputedStyle(that.scroller, null)[vendor + 'Transform'].replace(/[^0-9-.,]/g, '').split(','); - x = matrix[4] * 1; - y = matrix[5] * 1; - } else { - x = getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, '') * 1; - y = getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, '') * 1; - } - - if (x != that.x || y != that.y) { - if (that.options.useTransition) that._unbind('webkitTransitionEnd'); - else cancelFrame(that.aniTime); - that.steps = []; - that._pos(x, y); - } - } - - that.startX = that.x; - that.startY = that.y; - that.pointX = point.pageX; - that.pointY = point.pageY; - - that.startTime = e.timeStamp || Date.now(); - - if (that.options.onScrollStart) that.options.onScrollStart.call(that, e); - - that._bind(MOVE_EV); - that._bind(END_EV); - that._bind(CANCEL_EV); - }, - - _move: function (e) { - var that = this, - point = hasTouch ? e.touches[0] : e, - deltaX = point.pageX - that.pointX, - deltaY = point.pageY - that.pointY, - newX = that.x + deltaX, - newY = that.y + deltaY, - timestamp = e.timeStamp || Date.now(); - - if (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e); - - that.pointX = point.pageX; - that.pointY = point.pageY; - - // Slow down if outside of the boundaries - if (newX > 0 || newX < that.maxScrollX) { - newX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX; - } - if (newY > 0 || newY < that.maxScrollY) { - newY = that.options.bounce ? that.y + (deltaY / 2) : newY >= 0 || that.maxScrollY >= 0 ? 0 : that.maxScrollY; - } - - that.distX += deltaX; - that.distY += deltaY; - that.absDistX = m.abs(that.distX); - that.absDistY = m.abs(that.distY); - - if (that.absDistX < 6 && that.absDistY < 6) { - return; - } - - // Lock direction - if (that.options.lockDirection) { - if (that.absDistX > that.absDistY + 5) { - newY = that.y; - deltaY = 0; - } else if (that.absDistY > that.absDistX + 5) { - newX = that.x; - deltaX = 0; - } - } - - that.moved = true; - that._pos(newX, newY); - that.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; - that.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; - - if (timestamp - that.startTime > 300) { - that.startTime = timestamp; - that.startX = that.x; - that.startY = that.y; - } - - if (that.options.onScrollMove) that.options.onScrollMove.call(that, e); - }, - - _end: function (e) { - if (hasTouch && e.touches.length != 0) return; - - var that = this, - point = hasTouch ? e.changedTouches[0] : e, - target, ev, - momentumX = { dist:0, time:0 }, - momentumY = { dist:0, time:0 }, - duration = (e.timeStamp || Date.now()) - that.startTime, - newPosX = that.x, - newPosY = that.y, - newDuration; - - that._unbind(MOVE_EV); - that._unbind(END_EV); - that._unbind(CANCEL_EV); - - if (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e); - - if (!that.moved) { - if (hasTouch) { - // Find the last touched element - target = point.target; - while (target.nodeType != 1) target = target.parentNode; - - if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') { - ev = document.createEvent('MouseEvents'); - ev.initMouseEvent('click', true, true, e.view, 1, - point.screenX, point.screenY, point.clientX, point.clientY, - e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, - 0, null); - ev._fake = true; - target.dispatchEvent(ev); - } - } - - that._resetPos(200); - - if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); - return; - } - - if (duration < 300 && that.options.momentum) { - momentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX; - momentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y : 0), that.options.bounce ? that.wrapperH : 0) : momentumY; - - newPosX = that.x + momentumX.dist; - newPosY = that.y + momentumY.dist; - - if ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 }; - if ((that.y > 0 && newPosY > 0) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 }; - } - - if (momentumX.dist || momentumY.dist) { - newDuration = m.max(m.max(momentumX.time, momentumY.time), 10); - - that.scrollTo(mround(newPosX), mround(newPosY), newDuration); - - if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); - return; - } - - that._resetPos(200); - if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); - }, - - _resetPos: function (time) { - var that = this, - resetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x, - resetY = that.y >= 0 || that.maxScrollY > 0 ? 0 : that.y < that.maxScrollY ? that.maxScrollY : that.y; - - if (resetX == that.x && resetY == that.y) { - if (that.moved) { - if (that.options.onScrollEnd) that.options.onScrollEnd.call(that); // Execute custom code on scroll end - that.moved = false; - } - - return; - } - - that.scrollTo(resetX, resetY, time || 0); - }, - - _mouseout: function (e) { - var t = e.relatedTarget; - - if (!t) { - this._end(e); - return; - } - - while (t = t.parentNode) if (t == this.wrapper) return; - - this._end(e); - }, - - _transitionEnd: function (e) { - var that = this; - - if (e.target != that.scroller) return; - - that._unbind('webkitTransitionEnd'); - - that._startAni(); - }, - - /** - * - * Utilities - * - */ - _startAni: function () { - var that = this, - startX = that.x, startY = that.y, - startTime = Date.now(), - step, easeOut, - animate; - - if (that.animating) return; - - if (!that.steps.length) { - that._resetPos(400); - return; - } - - step = that.steps.shift(); - - if (step.x == startX && step.y == startY) step.time = 0; - - that.animating = true; - that.moved = true; - - if (that.options.useTransition) { - that._transitionTime(step.time); - that._pos(step.x, step.y); - that.animating = false; - if (step.time) that._bind('webkitTransitionEnd'); - else that._resetPos(0); - return; - } - - animate = function () { - var now = Date.now(), - newX, newY; - - if (now >= startTime + step.time) { - that._pos(step.x, step.y); - that.animating = false; - if (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that); // Execute custom code on animation end - that._startAni(); - return; - } - - now = (now - startTime) / step.time - 1; - easeOut = m.sqrt(1 - now * now); - newX = (step.x - startX) * easeOut + startX; - newY = (step.y - startY) * easeOut + startY; - that._pos(newX, newY); - if (that.animating) that.aniTime = nextFrame(animate); - }; - - animate(); - }, - - _transitionTime: function (time) { - this.scroller.style[vendor + 'TransitionDuration'] = time + 'ms'; - }, - - _momentum: function (dist, time, maxDistUpper, maxDistLower, size) { - var deceleration = 0.0006, - speed = m.abs(dist) / time, - newDist = (speed * speed) / (2 * deceleration), - newTime = 0, outsideDist = 0; - - // Proportinally reduce speed if we are outside of the boundaries - if (dist > 0 && newDist > maxDistUpper) { - outsideDist = size / (6 / (newDist / speed * deceleration)); - maxDistUpper = maxDistUpper + outsideDist; - speed = speed * maxDistUpper / newDist; - newDist = maxDistUpper; - } else if (dist < 0 && newDist > maxDistLower) { - outsideDist = size / (6 / (newDist / speed * deceleration)); - maxDistLower = maxDistLower + outsideDist; - speed = speed * maxDistLower / newDist; - newDist = maxDistLower; - } - - newDist = newDist * (dist < 0 ? -1 : 1); - newTime = speed / deceleration; - - return { dist: newDist, time: mround(newTime) }; - }, - - _offset: function (el) { - var left = -el.offsetLeft, - top = -el.offsetTop; - - while (el = el.offsetParent) { - left -= el.offsetLeft; - top -= el.offsetTop; - } - - return { left: left, top: top }; - }, - - _bind: function (type, el, bubble) { - (el || this.scroller).addEventListener(type, this, !!bubble); - }, - - _unbind: function (type, el, bubble) { - (el || this.scroller).removeEventListener(type, this, !!bubble); - }, - - - /** - * - * Public methods - * - */ - destroy: function () { - var that = this; - - that.scroller.style[vendor + 'Transform'] = ''; - - // Remove the event listeners - that._unbind(RESIZE_EV, window); - that._unbind(START_EV); - that._unbind(MOVE_EV); - that._unbind(END_EV); - that._unbind(CANCEL_EV); - that._unbind('mouseout', that.wrapper); - if (that.options.useTransition) that._unbind('webkitTransitionEnd'); - - if (that.options.onDestroy) that.options.onDestroy.call(that); - }, - - refresh: function () { - var that = this, - offset; - - that.wrapperW = that.wrapper.clientWidth; - that.wrapperH = that.wrapper.clientHeight; - - that.scrollerW = that.scroller.offsetWidth; - that.scrollerH = that.scroller.offsetHeight; - that.maxScrollX = that.wrapperW - that.scrollerW; - that.maxScrollY = that.wrapperH - that.scrollerH; - that.dirX = 0; - that.dirY = 0; - - that.hScroll = that.options.hScroll && that.maxScrollX < 0; - that.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH); - - offset = that._offset(that.wrapper); - that.wrapperOffsetLeft = -offset.left; - that.wrapperOffsetTop = -offset.top; - - - that.scroller.style[vendor + 'TransitionDuration'] = '0'; - - that._resetPos(200); - }, - - scrollTo: function (x, y, time, relative) { - var that = this, - step = x, - i, l; - - that.stop(); - - if (!step.length) step = [{ x: x, y: y, time: time, relative: relative }]; - - for (i=0, l=step.length; i 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left; - pos.top = pos.top > 0 ? 0 : pos.top < that.maxScrollY ? that.maxScrollY : pos.top; - time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time; - - that.scrollTo(pos.left, pos.top, time); - }, - - disable: function () { - this.stop(); - this._resetPos(0); - this.enabled = false; - - // If disabled after touchstart we make sure that there are no left over events - this._unbind(MOVE_EV); - this._unbind(END_EV); - this._unbind(CANCEL_EV); - }, - - enable: function () { - this.enabled = true; - }, - - stop: function () { - cancelFrame(this.aniTime); - this.steps = []; - this.moved = false; - this.animating = false; - } -}; - -if (typeof exports !== 'undefined') exports.iScroll = iScroll; -else window.iScroll = iScroll; - -})(); diff --git a/components/iscroll/src/iscroll.js b/components/iscroll/src/iscroll.js deleted file mode 100644 index 8222de0..0000000 --- a/components/iscroll/src/iscroll.js +++ /dev/null @@ -1,1104 +0,0 @@ -/*! - * iScroll v4.2.5 ~ Copyright (c) 2012 Matteo Spinelli, http://cubiq.org - * Released under MIT license, http://cubiq.org/license - */ -(function(window, doc){ -var m = Math, - dummyStyle = doc.createElement('div').style, - vendor = (function () { - var vendors = 't,webkitT,MozT,msT,OT'.split(','), - t, - i = 0, - l = vendors.length; - - for ( ; i < l; i++ ) { - t = vendors[i] + 'ransform'; - if ( t in dummyStyle ) { - return vendors[i].substr(0, vendors[i].length - 1); - } - } - - return false; - })(), - cssVendor = vendor ? '-' + vendor.toLowerCase() + '-' : '', - - // Style properties - transform = prefixStyle('transform'), - transitionProperty = prefixStyle('transitionProperty'), - transitionDuration = prefixStyle('transitionDuration'), - transformOrigin = prefixStyle('transformOrigin'), - transitionTimingFunction = prefixStyle('transitionTimingFunction'), - transitionDelay = prefixStyle('transitionDelay'), - - // Browser capabilities - isAndroid = (/android/gi).test(navigator.appVersion), - isIDevice = (/iphone|ipad/gi).test(navigator.appVersion), - isTouchPad = (/hp-tablet/gi).test(navigator.appVersion), - - has3d = prefixStyle('perspective') in dummyStyle, - hasTouch = 'ontouchstart' in window && !isTouchPad, - hasTransform = vendor !== false, - hasTransitionEnd = prefixStyle('transition') in dummyStyle, - - RESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize', - START_EV = hasTouch ? 'touchstart' : 'mousedown', - MOVE_EV = hasTouch ? 'touchmove' : 'mousemove', - END_EV = hasTouch ? 'touchend' : 'mouseup', - CANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup', - TRNEND_EV = (function () { - if ( vendor === false ) return false; - - var transitionEnd = { - '' : 'transitionend', - 'webkit' : 'webkitTransitionEnd', - 'Moz' : 'transitionend', - 'O' : 'otransitionend', - 'ms' : 'MSTransitionEnd' - }; - - return transitionEnd[vendor]; - })(), - - nextFrame = (function() { - return window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - window.msRequestAnimationFrame || - function(callback) { return setTimeout(callback, 1); }; - })(), - cancelFrame = (function () { - return window.cancelRequestAnimationFrame || - window.webkitCancelAnimationFrame || - window.webkitCancelRequestAnimationFrame || - window.mozCancelRequestAnimationFrame || - window.oCancelRequestAnimationFrame || - window.msCancelRequestAnimationFrame || - clearTimeout; - })(), - - // Helpers - translateZ = has3d ? ' translateZ(0)' : '', - - // Constructor - iScroll = function (el, options) { - var that = this, - i; - - that.wrapper = typeof el == 'object' ? el : doc.getElementById(el); - that.wrapper.style.overflow = 'hidden'; - that.scroller = that.wrapper.children[0]; - - // Default options - that.options = { - hScroll: true, - vScroll: true, - x: 0, - y: 0, - bounce: true, - bounceLock: false, - momentum: true, - lockDirection: true, - useTransform: true, - useTransition: false, - topOffset: 0, - checkDOMChanges: false, // Experimental - handleClick: true, - - // Scrollbar - hScrollbar: true, - vScrollbar: true, - fixedScrollbar: isAndroid, - hideScrollbar: isIDevice, - fadeScrollbar: isIDevice && has3d, - scrollbarClass: '', - - // Zoom - zoom: false, - zoomMin: 1, - zoomMax: 4, - doubleTapZoom: 2, - wheelAction: 'scroll', - - // Snap - snap: false, - snapThreshold: 1, - - // Events - onRefresh: null, - onBeforeScrollStart: function (e) { e.preventDefault(); }, - onScrollStart: null, - onBeforeScrollMove: null, - onScrollMove: null, - onBeforeScrollEnd: null, - onScrollEnd: null, - onTouchEnd: null, - onDestroy: null, - onZoomStart: null, - onZoom: null, - onZoomEnd: null - }; - - // User defined options - for (i in options) that.options[i] = options[i]; - - // Set starting position - that.x = that.options.x; - that.y = that.options.y; - - // Normalize options - that.options.useTransform = hasTransform && that.options.useTransform; - that.options.hScrollbar = that.options.hScroll && that.options.hScrollbar; - that.options.vScrollbar = that.options.vScroll && that.options.vScrollbar; - that.options.zoom = that.options.useTransform && that.options.zoom; - that.options.useTransition = hasTransitionEnd && that.options.useTransition; - - // Helpers FIX ANDROID BUG! - // translate3d and scale doesn't work together! - // Ignoring 3d ONLY WHEN YOU SET that.options.zoom - if ( that.options.zoom && isAndroid ){ - translateZ = ''; - } - - // Set some default styles - that.scroller.style[transitionProperty] = that.options.useTransform ? cssVendor + 'transform' : 'top left'; - that.scroller.style[transitionDuration] = '0'; - that.scroller.style[transformOrigin] = '0 0'; - if (that.options.useTransition) that.scroller.style[transitionTimingFunction] = 'cubic-bezier(0.33,0.66,0.66,1)'; - - if (that.options.useTransform) that.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px)' + translateZ; - else that.scroller.style.cssText += ';position:absolute;top:' + that.y + 'px;left:' + that.x + 'px'; - - if (that.options.useTransition) that.options.fixedScrollbar = true; - - that.refresh(); - - that._bind(RESIZE_EV, window); - that._bind(START_EV); - if (!hasTouch) { - if (that.options.wheelAction != 'none') { - that._bind('DOMMouseScroll'); - that._bind('mousewheel'); - } - } - - if (that.options.checkDOMChanges) that.checkDOMTime = setInterval(function () { - that._checkDOMChanges(); - }, 500); - }; - -// Prototype -iScroll.prototype = { - enabled: true, - x: 0, - y: 0, - steps: [], - scale: 1, - currPageX: 0, currPageY: 0, - pagesX: [], pagesY: [], - aniTime: null, - wheelZoomCount: 0, - - handleEvent: function (e) { - var that = this; - switch(e.type) { - case START_EV: - if (!hasTouch && e.button !== 0) return; - that._start(e); - break; - case MOVE_EV: that._move(e); break; - case END_EV: - case CANCEL_EV: that._end(e); break; - case RESIZE_EV: that._resize(); break; - case 'DOMMouseScroll': case 'mousewheel': that._wheel(e); break; - case TRNEND_EV: that._transitionEnd(e); break; - } - }, - - _checkDOMChanges: function () { - if (this.moved || this.zoomed || this.animating || - (this.scrollerW == this.scroller.offsetWidth * this.scale && this.scrollerH == this.scroller.offsetHeight * this.scale)) return; - - this.refresh(); - }, - - _scrollbar: function (dir) { - var that = this, - bar; - - if (!that[dir + 'Scrollbar']) { - if (that[dir + 'ScrollbarWrapper']) { - if (hasTransform) that[dir + 'ScrollbarIndicator'].style[transform] = ''; - that[dir + 'ScrollbarWrapper'].parentNode.removeChild(that[dir + 'ScrollbarWrapper']); - that[dir + 'ScrollbarWrapper'] = null; - that[dir + 'ScrollbarIndicator'] = null; - } - - return; - } - - if (!that[dir + 'ScrollbarWrapper']) { - // Create the scrollbar wrapper - bar = doc.createElement('div'); - - if (that.options.scrollbarClass) bar.className = that.options.scrollbarClass + dir.toUpperCase(); - else bar.style.cssText = 'position:absolute;z-index:100;' + (dir == 'h' ? 'height:7px;bottom:1px;left:2px;right:' + (that.vScrollbar ? '7' : '2') + 'px' : 'width:7px;bottom:' + (that.hScrollbar ? '7' : '2') + 'px;top:2px;right:1px'); - - bar.style.cssText += ';pointer-events:none;' + cssVendor + 'transition-property:opacity;' + cssVendor + 'transition-duration:' + (that.options.fadeScrollbar ? '350ms' : '0') + ';overflow:hidden;opacity:' + (that.options.hideScrollbar ? '0' : '1'); - - that.wrapper.appendChild(bar); - that[dir + 'ScrollbarWrapper'] = bar; - - // Create the scrollbar indicator - bar = doc.createElement('div'); - if (!that.options.scrollbarClass) { - bar.style.cssText = 'position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);' + cssVendor + 'background-clip:padding-box;' + cssVendor + 'box-sizing:border-box;' + (dir == 'h' ? 'height:100%' : 'width:100%') + ';' + cssVendor + 'border-radius:3px;border-radius:3px'; - } - bar.style.cssText += ';pointer-events:none;' + cssVendor + 'transition-property:' + cssVendor + 'transform;' + cssVendor + 'transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);' + cssVendor + 'transition-duration:0;' + cssVendor + 'transform: translate(0,0)' + translateZ; - if (that.options.useTransition) bar.style.cssText += ';' + cssVendor + 'transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)'; - - that[dir + 'ScrollbarWrapper'].appendChild(bar); - that[dir + 'ScrollbarIndicator'] = bar; - } - - if (dir == 'h') { - that.hScrollbarSize = that.hScrollbarWrapper.clientWidth; - that.hScrollbarIndicatorSize = m.max(m.round(that.hScrollbarSize * that.hScrollbarSize / that.scrollerW), 8); - that.hScrollbarIndicator.style.width = that.hScrollbarIndicatorSize + 'px'; - that.hScrollbarMaxScroll = that.hScrollbarSize - that.hScrollbarIndicatorSize; - that.hScrollbarProp = that.hScrollbarMaxScroll / that.maxScrollX; - } else { - that.vScrollbarSize = that.vScrollbarWrapper.clientHeight; - that.vScrollbarIndicatorSize = m.max(m.round(that.vScrollbarSize * that.vScrollbarSize / that.scrollerH), 8); - that.vScrollbarIndicator.style.height = that.vScrollbarIndicatorSize + 'px'; - that.vScrollbarMaxScroll = that.vScrollbarSize - that.vScrollbarIndicatorSize; - that.vScrollbarProp = that.vScrollbarMaxScroll / that.maxScrollY; - } - - // Reset position - that._scrollbarPos(dir, true); - }, - - _resize: function () { - var that = this; - setTimeout(function () { that.refresh(); }, isAndroid ? 200 : 0); - }, - - _pos: function (x, y) { - if (this.zoomed) return; - - x = this.hScroll ? x : 0; - y = this.vScroll ? y : 0; - - if (this.options.useTransform) { - this.scroller.style[transform] = 'translate(' + x + 'px,' + y + 'px) scale(' + this.scale + ')' + translateZ; - } else { - x = m.round(x); - y = m.round(y); - this.scroller.style.left = x + 'px'; - this.scroller.style.top = y + 'px'; - } - - this.x = x; - this.y = y; - - this._scrollbarPos('h'); - this._scrollbarPos('v'); - }, - - _scrollbarPos: function (dir, hidden) { - var that = this, - pos = dir == 'h' ? that.x : that.y, - size; - - if (!that[dir + 'Scrollbar']) return; - - pos = that[dir + 'ScrollbarProp'] * pos; - - if (pos < 0) { - if (!that.options.fixedScrollbar) { - size = that[dir + 'ScrollbarIndicatorSize'] + m.round(pos * 3); - if (size < 8) size = 8; - that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px'; - } - pos = 0; - } else if (pos > that[dir + 'ScrollbarMaxScroll']) { - if (!that.options.fixedScrollbar) { - size = that[dir + 'ScrollbarIndicatorSize'] - m.round((pos - that[dir + 'ScrollbarMaxScroll']) * 3); - if (size < 8) size = 8; - that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px'; - pos = that[dir + 'ScrollbarMaxScroll'] + (that[dir + 'ScrollbarIndicatorSize'] - size); - } else { - pos = that[dir + 'ScrollbarMaxScroll']; - } - } - - that[dir + 'ScrollbarWrapper'].style[transitionDelay] = '0'; - that[dir + 'ScrollbarWrapper'].style.opacity = hidden && that.options.hideScrollbar ? '0' : '1'; - that[dir + 'ScrollbarIndicator'].style[transform] = 'translate(' + (dir == 'h' ? pos + 'px,0)' : '0,' + pos + 'px)') + translateZ; - }, - - _start: function (e) { - var that = this, - point = hasTouch ? e.touches[0] : e, - matrix, x, y, - c1, c2; - - if (!that.enabled) return; - - if (that.options.onBeforeScrollStart) that.options.onBeforeScrollStart.call(that, e); - - if (that.options.useTransition || that.options.zoom) that._transitionTime(0); - - that.moved = false; - that.animating = false; - that.zoomed = false; - that.distX = 0; - that.distY = 0; - that.absDistX = 0; - that.absDistY = 0; - that.dirX = 0; - that.dirY = 0; - - // Gesture start - if (that.options.zoom && hasTouch && e.touches.length > 1) { - c1 = m.abs(e.touches[0].pageX-e.touches[1].pageX); - c2 = m.abs(e.touches[0].pageY-e.touches[1].pageY); - that.touchesDistStart = m.sqrt(c1 * c1 + c2 * c2); - - that.originX = m.abs(e.touches[0].pageX + e.touches[1].pageX - that.wrapperOffsetLeft * 2) / 2 - that.x; - that.originY = m.abs(e.touches[0].pageY + e.touches[1].pageY - that.wrapperOffsetTop * 2) / 2 - that.y; - - if (that.options.onZoomStart) that.options.onZoomStart.call(that, e); - } - - if (that.options.momentum) { - if (that.options.useTransform) { - // Very lame general purpose alternative to CSSMatrix - matrix = getComputedStyle(that.scroller, null)[transform].replace(/[^0-9\-.,]/g, '').split(','); - x = +(matrix[12] || matrix[4]); - y = +(matrix[13] || matrix[5]); - } else { - x = +getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, ''); - y = +getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, ''); - } - - if (x != that.x || y != that.y) { - if (that.options.useTransition) that._unbind(TRNEND_EV); - else cancelFrame(that.aniTime); - that.steps = []; - that._pos(x, y); - if (that.options.onScrollEnd) that.options.onScrollEnd.call(that); - } - } - - that.absStartX = that.x; // Needed by snap threshold - that.absStartY = that.y; - - that.startX = that.x; - that.startY = that.y; - that.pointX = point.pageX; - that.pointY = point.pageY; - - that.startTime = e.timeStamp || Date.now(); - - if (that.options.onScrollStart) that.options.onScrollStart.call(that, e); - - that._bind(MOVE_EV, window); - that._bind(END_EV, window); - that._bind(CANCEL_EV, window); - }, - - _move: function (e) { - var that = this, - point = hasTouch ? e.touches[0] : e, - deltaX = point.pageX - that.pointX, - deltaY = point.pageY - that.pointY, - newX = that.x + deltaX, - newY = that.y + deltaY, - c1, c2, scale, - timestamp = e.timeStamp || Date.now(); - - if (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e); - - // Zoom - if (that.options.zoom && hasTouch && e.touches.length > 1) { - c1 = m.abs(e.touches[0].pageX - e.touches[1].pageX); - c2 = m.abs(e.touches[0].pageY - e.touches[1].pageY); - that.touchesDist = m.sqrt(c1*c1+c2*c2); - - that.zoomed = true; - - scale = 1 / that.touchesDistStart * that.touchesDist * this.scale; - - if (scale < that.options.zoomMin) scale = 0.5 * that.options.zoomMin * Math.pow(2.0, scale / that.options.zoomMin); - else if (scale > that.options.zoomMax) scale = 2.0 * that.options.zoomMax * Math.pow(0.5, that.options.zoomMax / scale); - - that.lastScale = scale / this.scale; - - newX = this.originX - this.originX * that.lastScale + this.x; - newY = this.originY - this.originY * that.lastScale + this.y; - - this.scroller.style[transform] = 'translate(' + newX + 'px,' + newY + 'px) scale(' + scale + ')' + translateZ; - - if (that.options.onZoom) that.options.onZoom.call(that, e); - return; - } - - that.pointX = point.pageX; - that.pointY = point.pageY; - - // Slow down if outside of the boundaries - if (newX > 0 || newX < that.maxScrollX) { - newX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX; - } - if (newY > that.minScrollY || newY < that.maxScrollY) { - newY = that.options.bounce ? that.y + (deltaY / 2) : newY >= that.minScrollY || that.maxScrollY >= 0 ? that.minScrollY : that.maxScrollY; - } - - that.distX += deltaX; - that.distY += deltaY; - that.absDistX = m.abs(that.distX); - that.absDistY = m.abs(that.distY); - - if (that.absDistX < 6 && that.absDistY < 6) { - return; - } - - // Lock direction - if (that.options.lockDirection) { - if (that.absDistX > that.absDistY + 5) { - newY = that.y; - deltaY = 0; - } else if (that.absDistY > that.absDistX + 5) { - newX = that.x; - deltaX = 0; - } - } - - that.moved = true; - that._pos(newX, newY); - that.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; - that.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; - - if (timestamp - that.startTime > 300) { - that.startTime = timestamp; - that.startX = that.x; - that.startY = that.y; - } - - if (that.options.onScrollMove) that.options.onScrollMove.call(that, e); - }, - - _end: function (e) { - if (hasTouch && e.touches.length !== 0) return; - - var that = this, - point = hasTouch ? e.changedTouches[0] : e, - target, ev, - momentumX = { dist:0, time:0 }, - momentumY = { dist:0, time:0 }, - duration = (e.timeStamp || Date.now()) - that.startTime, - newPosX = that.x, - newPosY = that.y, - distX, distY, - newDuration, - snap, - scale; - - that._unbind(MOVE_EV, window); - that._unbind(END_EV, window); - that._unbind(CANCEL_EV, window); - - if (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e); - - if (that.zoomed) { - scale = that.scale * that.lastScale; - scale = Math.max(that.options.zoomMin, scale); - scale = Math.min(that.options.zoomMax, scale); - that.lastScale = scale / that.scale; - that.scale = scale; - - that.x = that.originX - that.originX * that.lastScale + that.x; - that.y = that.originY - that.originY * that.lastScale + that.y; - - that.scroller.style[transitionDuration] = '200ms'; - that.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px) scale(' + that.scale + ')' + translateZ; - - that.zoomed = false; - that.refresh(); - - if (that.options.onZoomEnd) that.options.onZoomEnd.call(that, e); - return; - } - - if (!that.moved) { - if (hasTouch) { - if (that.doubleTapTimer && that.options.zoom) { - // Double tapped - clearTimeout(that.doubleTapTimer); - that.doubleTapTimer = null; - if (that.options.onZoomStart) that.options.onZoomStart.call(that, e); - that.zoom(that.pointX, that.pointY, that.scale == 1 ? that.options.doubleTapZoom : 1); - if (that.options.onZoomEnd) { - setTimeout(function() { - that.options.onZoomEnd.call(that, e); - }, 200); // 200 is default zoom duration - } - } else if (this.options.handleClick) { - that.doubleTapTimer = setTimeout(function () { - that.doubleTapTimer = null; - - // Find the last touched element - target = point.target; - while (target.nodeType != 1) target = target.parentNode; - - if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') { - ev = doc.createEvent('MouseEvents'); - ev.initMouseEvent('click', true, true, e.view, 1, - point.screenX, point.screenY, point.clientX, point.clientY, - e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, - 0, null); - ev._fake = true; - target.dispatchEvent(ev); - } - }, that.options.zoom ? 250 : 0); - } - } - - that._resetPos(400); - - if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); - return; - } - - if (duration < 300 && that.options.momentum) { - momentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX; - momentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y - that.minScrollY : 0), that.options.bounce ? that.wrapperH : 0) : momentumY; - - newPosX = that.x + momentumX.dist; - newPosY = that.y + momentumY.dist; - - if ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 }; - if ((that.y > that.minScrollY && newPosY > that.minScrollY) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 }; - } - - if (momentumX.dist || momentumY.dist) { - newDuration = m.max(m.max(momentumX.time, momentumY.time), 10); - - // Do we need to snap? - if (that.options.snap) { - distX = newPosX - that.absStartX; - distY = newPosY - that.absStartY; - if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) { that.scrollTo(that.absStartX, that.absStartY, 200); } - else { - snap = that._snap(newPosX, newPosY); - newPosX = snap.x; - newPosY = snap.y; - newDuration = m.max(snap.time, newDuration); - } - } - - that.scrollTo(m.round(newPosX), m.round(newPosY), newDuration); - - if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); - return; - } - - // Do we need to snap? - if (that.options.snap) { - distX = newPosX - that.absStartX; - distY = newPosY - that.absStartY; - if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) that.scrollTo(that.absStartX, that.absStartY, 200); - else { - snap = that._snap(that.x, that.y); - if (snap.x != that.x || snap.y != that.y) that.scrollTo(snap.x, snap.y, snap.time); - } - - if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); - return; - } - - that._resetPos(200); - if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); - }, - - _resetPos: function (time) { - var that = this, - resetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x, - resetY = that.y >= that.minScrollY || that.maxScrollY > 0 ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y; - - if (resetX == that.x && resetY == that.y) { - if (that.moved) { - that.moved = false; - if (that.options.onScrollEnd) that.options.onScrollEnd.call(that); // Execute custom code on scroll end - } - - if (that.hScrollbar && that.options.hideScrollbar) { - if (vendor == 'webkit') that.hScrollbarWrapper.style[transitionDelay] = '300ms'; - that.hScrollbarWrapper.style.opacity = '0'; - } - if (that.vScrollbar && that.options.hideScrollbar) { - if (vendor == 'webkit') that.vScrollbarWrapper.style[transitionDelay] = '300ms'; - that.vScrollbarWrapper.style.opacity = '0'; - } - - return; - } - - that.scrollTo(resetX, resetY, time || 0); - }, - - _wheel: function (e) { - var that = this, - wheelDeltaX, wheelDeltaY, - deltaX, deltaY, - deltaScale; - - if ('wheelDeltaX' in e) { - wheelDeltaX = e.wheelDeltaX / 12; - wheelDeltaY = e.wheelDeltaY / 12; - } else if('wheelDelta' in e) { - wheelDeltaX = wheelDeltaY = e.wheelDelta / 12; - } else if ('detail' in e) { - wheelDeltaX = wheelDeltaY = -e.detail * 3; - } else { - return; - } - - if (that.options.wheelAction == 'zoom') { - deltaScale = that.scale * Math.pow(2, 1/3 * (wheelDeltaY ? wheelDeltaY / Math.abs(wheelDeltaY) : 0)); - if (deltaScale < that.options.zoomMin) deltaScale = that.options.zoomMin; - if (deltaScale > that.options.zoomMax) deltaScale = that.options.zoomMax; - - if (deltaScale != that.scale) { - if (!that.wheelZoomCount && that.options.onZoomStart) that.options.onZoomStart.call(that, e); - that.wheelZoomCount++; - - that.zoom(e.pageX, e.pageY, deltaScale, 400); - - setTimeout(function() { - that.wheelZoomCount--; - if (!that.wheelZoomCount && that.options.onZoomEnd) that.options.onZoomEnd.call(that, e); - }, 400); - } - - return; - } - - deltaX = that.x + wheelDeltaX; - deltaY = that.y + wheelDeltaY; - - if (deltaX > 0) deltaX = 0; - else if (deltaX < that.maxScrollX) deltaX = that.maxScrollX; - - if (deltaY > that.minScrollY) deltaY = that.minScrollY; - else if (deltaY < that.maxScrollY) deltaY = that.maxScrollY; - - if (that.maxScrollY < 0) { - that.scrollTo(deltaX, deltaY, 0); - } - }, - - _transitionEnd: function (e) { - var that = this; - - if (e.target != that.scroller) return; - - that._unbind(TRNEND_EV); - - that._startAni(); - }, - - - /** - * - * Utilities - * - */ - _startAni: function () { - var that = this, - startX = that.x, startY = that.y, - startTime = Date.now(), - step, easeOut, - animate; - - if (that.animating) return; - - if (!that.steps.length) { - that._resetPos(400); - return; - } - - step = that.steps.shift(); - - if (step.x == startX && step.y == startY) step.time = 0; - - that.animating = true; - that.moved = true; - - if (that.options.useTransition) { - that._transitionTime(step.time); - that._pos(step.x, step.y); - that.animating = false; - if (step.time) that._bind(TRNEND_EV); - else that._resetPos(0); - return; - } - - animate = function () { - var now = Date.now(), - newX, newY; - - if (now >= startTime + step.time) { - that._pos(step.x, step.y); - that.animating = false; - if (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that); // Execute custom code on animation end - that._startAni(); - return; - } - - now = (now - startTime) / step.time - 1; - easeOut = m.sqrt(1 - now * now); - newX = (step.x - startX) * easeOut + startX; - newY = (step.y - startY) * easeOut + startY; - that._pos(newX, newY); - if (that.animating) that.aniTime = nextFrame(animate); - }; - - animate(); - }, - - _transitionTime: function (time) { - time += 'ms'; - this.scroller.style[transitionDuration] = time; - if (this.hScrollbar) this.hScrollbarIndicator.style[transitionDuration] = time; - if (this.vScrollbar) this.vScrollbarIndicator.style[transitionDuration] = time; - }, - - _momentum: function (dist, time, maxDistUpper, maxDistLower, size) { - var deceleration = 0.0006, - speed = m.abs(dist) / time, - newDist = (speed * speed) / (2 * deceleration), - newTime = 0, outsideDist = 0; - - // Proportinally reduce speed if we are outside of the boundaries - if (dist > 0 && newDist > maxDistUpper) { - outsideDist = size / (6 / (newDist / speed * deceleration)); - maxDistUpper = maxDistUpper + outsideDist; - speed = speed * maxDistUpper / newDist; - newDist = maxDistUpper; - } else if (dist < 0 && newDist > maxDistLower) { - outsideDist = size / (6 / (newDist / speed * deceleration)); - maxDistLower = maxDistLower + outsideDist; - speed = speed * maxDistLower / newDist; - newDist = maxDistLower; - } - - newDist = newDist * (dist < 0 ? -1 : 1); - newTime = speed / deceleration; - - return { dist: newDist, time: m.round(newTime) }; - }, - - _offset: function (el) { - var left = -el.offsetLeft, - top = -el.offsetTop; - - while (el = el.offsetParent) { - left -= el.offsetLeft; - top -= el.offsetTop; - } - - if (el != this.wrapper) { - left *= this.scale; - top *= this.scale; - } - - return { left: left, top: top }; - }, - - _snap: function (x, y) { - var that = this, - i, l, - page, time, - sizeX, sizeY; - - // Check page X - page = that.pagesX.length - 1; - for (i=0, l=that.pagesX.length; i= that.pagesX[i]) { - page = i; - break; - } - } - if (page == that.currPageX && page > 0 && that.dirX < 0) page--; - x = that.pagesX[page]; - sizeX = m.abs(x - that.pagesX[that.currPageX]); - sizeX = sizeX ? m.abs(that.x - x) / sizeX * 500 : 0; - that.currPageX = page; - - // Check page Y - page = that.pagesY.length-1; - for (i=0; i= that.pagesY[i]) { - page = i; - break; - } - } - if (page == that.currPageY && page > 0 && that.dirY < 0) page--; - y = that.pagesY[page]; - sizeY = m.abs(y - that.pagesY[that.currPageY]); - sizeY = sizeY ? m.abs(that.y - y) / sizeY * 500 : 0; - that.currPageY = page; - - // Snap with constant speed (proportional duration) - time = m.round(m.max(sizeX, sizeY)) || 200; - - return { x: x, y: y, time: time }; - }, - - _bind: function (type, el, bubble) { - (el || this.scroller).addEventListener(type, this, !!bubble); - }, - - _unbind: function (type, el, bubble) { - (el || this.scroller).removeEventListener(type, this, !!bubble); - }, - - - /** - * - * Public methods - * - */ - destroy: function () { - var that = this; - - that.scroller.style[transform] = ''; - - // Remove the scrollbars - that.hScrollbar = false; - that.vScrollbar = false; - that._scrollbar('h'); - that._scrollbar('v'); - - // Remove the event listeners - that._unbind(RESIZE_EV, window); - that._unbind(START_EV); - that._unbind(MOVE_EV, window); - that._unbind(END_EV, window); - that._unbind(CANCEL_EV, window); - - if (!that.options.hasTouch) { - that._unbind('DOMMouseScroll'); - that._unbind('mousewheel'); - } - - if (that.options.useTransition) that._unbind(TRNEND_EV); - - if (that.options.checkDOMChanges) clearInterval(that.checkDOMTime); - - if (that.options.onDestroy) that.options.onDestroy.call(that); - }, - - refresh: function () { - var that = this, - offset, - i, l, - els, - pos = 0, - page = 0; - - if (that.scale < that.options.zoomMin) that.scale = that.options.zoomMin; - that.wrapperW = that.wrapper.clientWidth || 1; - that.wrapperH = that.wrapper.clientHeight || 1; - - that.minScrollY = -that.options.topOffset || 0; - that.scrollerW = m.round(that.scroller.offsetWidth * that.scale); - that.scrollerH = m.round((that.scroller.offsetHeight + that.minScrollY) * that.scale); - that.maxScrollX = that.wrapperW - that.scrollerW; - that.maxScrollY = that.wrapperH - that.scrollerH + that.minScrollY; - that.dirX = 0; - that.dirY = 0; - - if (that.options.onRefresh) that.options.onRefresh.call(that); - - that.hScroll = that.options.hScroll && that.maxScrollX < 0; - that.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH); - - that.hScrollbar = that.hScroll && that.options.hScrollbar; - that.vScrollbar = that.vScroll && that.options.vScrollbar && that.scrollerH > that.wrapperH; - - offset = that._offset(that.wrapper); - that.wrapperOffsetLeft = -offset.left; - that.wrapperOffsetTop = -offset.top; - - // Prepare snap - if (typeof that.options.snap == 'string') { - that.pagesX = []; - that.pagesY = []; - els = that.scroller.querySelectorAll(that.options.snap); - for (i=0, l=els.length; i= that.maxScrollX) { - that.pagesX[page] = pos; - pos = pos - that.wrapperW; - page++; - } - if (that.maxScrollX%that.wrapperW) that.pagesX[that.pagesX.length] = that.maxScrollX - that.pagesX[that.pagesX.length-1] + that.pagesX[that.pagesX.length-1]; - - pos = 0; - page = 0; - that.pagesY = []; - while (pos >= that.maxScrollY) { - that.pagesY[page] = pos; - pos = pos - that.wrapperH; - page++; - } - if (that.maxScrollY%that.wrapperH) that.pagesY[that.pagesY.length] = that.maxScrollY - that.pagesY[that.pagesY.length-1] + that.pagesY[that.pagesY.length-1]; - } - - // Prepare the scrollbars - that._scrollbar('h'); - that._scrollbar('v'); - - if (!that.zoomed) { - that.scroller.style[transitionDuration] = '0'; - that._resetPos(400); - } - }, - - scrollTo: function (x, y, time, relative) { - var that = this, - step = x, - i, l; - - that.stop(); - - if (!step.length) step = [{ x: x, y: y, time: time, relative: relative }]; - - for (i=0, l=step.length; i 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left; - pos.top = pos.top > that.minScrollY ? that.minScrollY : pos.top < that.maxScrollY ? that.maxScrollY : pos.top; - time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time; - - that.scrollTo(pos.left, pos.top, time); - }, - - scrollToPage: function (pageX, pageY, time) { - var that = this, x, y; - - time = time === undefined ? 400 : time; - - if (that.options.onScrollStart) that.options.onScrollStart.call(that); - - if (that.options.snap) { - pageX = pageX == 'next' ? that.currPageX+1 : pageX == 'prev' ? that.currPageX-1 : pageX; - pageY = pageY == 'next' ? that.currPageY+1 : pageY == 'prev' ? that.currPageY-1 : pageY; - - pageX = pageX < 0 ? 0 : pageX > that.pagesX.length-1 ? that.pagesX.length-1 : pageX; - pageY = pageY < 0 ? 0 : pageY > that.pagesY.length-1 ? that.pagesY.length-1 : pageY; - - that.currPageX = pageX; - that.currPageY = pageY; - x = that.pagesX[pageX]; - y = that.pagesY[pageY]; - } else { - x = -that.wrapperW * pageX; - y = -that.wrapperH * pageY; - if (x < that.maxScrollX) x = that.maxScrollX; - if (y < that.maxScrollY) y = that.maxScrollY; - } - - that.scrollTo(x, y, time); - }, - - disable: function () { - this.stop(); - this._resetPos(0); - this.enabled = false; - - // If disabled after touchstart we make sure that there are no left over events - this._unbind(MOVE_EV, window); - this._unbind(END_EV, window); - this._unbind(CANCEL_EV, window); - }, - - enable: function () { - this.enabled = true; - }, - - stop: function () { - if (this.options.useTransition) this._unbind(TRNEND_EV); - else cancelFrame(this.aniTime); - this.steps = []; - this.moved = false; - this.animating = false; - }, - - zoom: function (x, y, scale, time) { - var that = this, - relScale = scale / that.scale; - - if (!that.options.useTransform) return; - - that.zoomed = true; - time = time === undefined ? 200 : time; - x = x - that.wrapperOffsetLeft - that.x; - y = y - that.wrapperOffsetTop - that.y; - that.x = x - x * relScale + that.x; - that.y = y - y * relScale + that.y; - - that.scale = scale; - that.refresh(); - - that.x = that.x > 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x; - that.y = that.y > that.minScrollY ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y; - - that.scroller.style[transitionDuration] = time + 'ms'; - that.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px) scale(' + scale + ')' + translateZ; - that.zoomed = false; - }, - - isReady: function () { - return !this.moved && !this.zoomed && !this.animating; - } -}; - -function prefixStyle (style) { - if ( vendor === '' ) return style; - - style = style.charAt(0).toUpperCase() + style.substr(1); - return vendor + style; -} - -dummyStyle = null; // for the sake of it - -if (typeof exports !== 'undefined') exports.iScroll = iScroll; -else window.iScroll = iScroll; - -})(window, document);