epuber 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +6 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +46 -0
  5. data/bin/epuber +10 -0
  6. data/epuber.gemspec +51 -0
  7. data/lib/epuber.rb +14 -0
  8. data/lib/epuber/book.rb +267 -0
  9. data/lib/epuber/book/contributor.rb +90 -0
  10. data/lib/epuber/book/file_request.rb +68 -0
  11. data/lib/epuber/book/target.rb +284 -0
  12. data/lib/epuber/book/toc_item.rb +130 -0
  13. data/lib/epuber/checker.rb +19 -0
  14. data/lib/epuber/checker/text_checker.rb +129 -0
  15. data/lib/epuber/checker_transformer_base.rb +71 -0
  16. data/lib/epuber/command.rb +65 -0
  17. data/lib/epuber/command/compile.rb +142 -0
  18. data/lib/epuber/command/init.rb +145 -0
  19. data/lib/epuber/command/server.rb +59 -0
  20. data/lib/epuber/compiler.rb +255 -0
  21. data/lib/epuber/compiler/compilation_context.rb +86 -0
  22. data/lib/epuber/compiler/file_finders/abstract.rb +270 -0
  23. data/lib/epuber/compiler/file_finders/imaginary.rb +167 -0
  24. data/lib/epuber/compiler/file_finders/normal.rb +22 -0
  25. data/lib/epuber/compiler/file_resolver.rb +316 -0
  26. data/lib/epuber/compiler/file_types/abstract_file.rb +119 -0
  27. data/lib/epuber/compiler/file_types/bade_file.rb +39 -0
  28. data/lib/epuber/compiler/file_types/container_xml_file.rb +26 -0
  29. data/lib/epuber/compiler/file_types/generated_file.rb +29 -0
  30. data/lib/epuber/compiler/file_types/ibooks_display_options_file.rb +31 -0
  31. data/lib/epuber/compiler/file_types/image_file.rb +42 -0
  32. data/lib/epuber/compiler/file_types/mime_type_file.rb +20 -0
  33. data/lib/epuber/compiler/file_types/nav_file.rb +42 -0
  34. data/lib/epuber/compiler/file_types/opf_file.rb +27 -0
  35. data/lib/epuber/compiler/file_types/source_file.rb +52 -0
  36. data/lib/epuber/compiler/file_types/static_file.rb +18 -0
  37. data/lib/epuber/compiler/file_types/stylus_file.rb +20 -0
  38. data/lib/epuber/compiler/file_types/xhtml_file.rb +102 -0
  39. data/lib/epuber/compiler/generator.rb +67 -0
  40. data/lib/epuber/compiler/meta_inf_generator.rb +41 -0
  41. data/lib/epuber/compiler/nav_generator.rb +201 -0
  42. data/lib/epuber/compiler/opf_generator.rb +284 -0
  43. data/lib/epuber/compiler/xhtml_processor.rb +254 -0
  44. data/lib/epuber/config.rb +133 -0
  45. data/lib/epuber/dsl/attribute.rb +248 -0
  46. data/lib/epuber/dsl/attribute_support.rb +130 -0
  47. data/lib/epuber/dsl/object.rb +145 -0
  48. data/lib/epuber/dsl/tree_object.rb +101 -0
  49. data/lib/epuber/helper.rb +19 -0
  50. data/lib/epuber/lockfile.rb +55 -0
  51. data/lib/epuber/plugin.rb +108 -0
  52. data/lib/epuber/ruby_extensions/match_data.rb +40 -0
  53. data/lib/epuber/ruby_extensions/thread.rb +13 -0
  54. data/lib/epuber/server.rb +614 -0
  55. data/lib/epuber/server/auto_refresh/auto_refresh.coffee +97 -0
  56. data/lib/epuber/server/auto_refresh/connector.coffee +125 -0
  57. data/lib/epuber/server/auto_refresh/protocol.coffee +41 -0
  58. data/lib/epuber/server/auto_refresh/reloader.coffee +261 -0
  59. data/lib/epuber/server/base.styl +3 -0
  60. data/lib/epuber/server/basic.styl +211 -0
  61. data/lib/epuber/server/book_content.styl +39 -0
  62. data/lib/epuber/server/default_cover.png +0 -0
  63. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Bold.ttf +0 -0
  64. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-BoldItalic.ttf +0 -0
  65. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Italic.ttf +0 -0
  66. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Regular.ttf +0 -0
  67. data/lib/epuber/server/handlers.rb +67 -0
  68. data/lib/epuber/server/keyboard_control.coffee +6 -0
  69. data/lib/epuber/server/pages/book.bade +75 -0
  70. data/lib/epuber/server/pages/common.bade +59 -0
  71. data/lib/epuber/server/pages/files.bade +17 -0
  72. data/lib/epuber/server/pages/toc.bade +29 -0
  73. data/lib/epuber/server/support.coffee +10 -0
  74. data/lib/epuber/templates/template.bookspec +143 -0
  75. data/lib/epuber/third_party/bower.rb +22 -0
  76. data/lib/epuber/third_party/bower/bower.json +10 -0
  77. data/lib/epuber/third_party/bower/bower_components/cookies-js/bower.json +10 -0
  78. data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.d.ts +33 -0
  79. data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.js +173 -0
  80. data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.min.js +6 -0
  81. data/lib/epuber/third_party/bower/bower_components/jquery/MIT-LICENSE.txt +21 -0
  82. data/lib/epuber/third_party/bower/bower_components/jquery/bower.json +28 -0
  83. data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.js +9210 -0
  84. data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.js +5 -0
  85. data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.map +1 -0
  86. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax.js +786 -0
  87. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/jsonp.js +89 -0
  88. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/load.js +75 -0
  89. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  90. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseXML.js +28 -0
  91. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/script.js +64 -0
  92. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  93. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  94. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/xhr.js +136 -0
  95. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes.js +11 -0
  96. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/attr.js +141 -0
  97. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/classes.js +158 -0
  98. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/prop.js +94 -0
  99. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/support.js +35 -0
  100. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/val.js +161 -0
  101. data/lib/epuber/third_party/bower/bower_components/jquery/src/callbacks.js +205 -0
  102. data/lib/epuber/third_party/bower/bower_components/jquery/src/core.js +502 -0
  103. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/access.js +60 -0
  104. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/init.js +123 -0
  105. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/parseHTML.js +39 -0
  106. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/ready.js +97 -0
  107. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
  108. data/lib/epuber/third_party/bower/bower_components/jquery/src/css.js +450 -0
  109. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/addGetHookIf.js +22 -0
  110. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/curCSS.js +57 -0
  111. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/defaultDisplay.js +70 -0
  112. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  113. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/support.js +96 -0
  114. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/swap.js +28 -0
  115. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  116. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/getStyles.js +12 -0
  117. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/isHidden.js +13 -0
  118. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rmargin.js +3 -0
  119. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  120. data/lib/epuber/third_party/bower/bower_components/jquery/src/data.js +178 -0
  121. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/Data.js +181 -0
  122. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/accepts.js +20 -0
  123. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/data_priv.js +5 -0
  124. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/data_user.js +5 -0
  125. data/lib/epuber/third_party/bower/bower_components/jquery/src/deferred.js +149 -0
  126. data/lib/epuber/third_party/bower/bower_components/jquery/src/deprecated.js +13 -0
  127. data/lib/epuber/third_party/bower/bower_components/jquery/src/dimensions.js +50 -0
  128. data/lib/epuber/third_party/bower/bower_components/jquery/src/effects.js +648 -0
  129. data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/Tween.js +114 -0
  130. data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  131. data/lib/epuber/third_party/bower/bower_components/jquery/src/event.js +868 -0
  132. data/lib/epuber/third_party/bower/bower_components/jquery/src/event/ajax.js +13 -0
  133. data/lib/epuber/third_party/bower/bower_components/jquery/src/event/alias.js +39 -0
  134. data/lib/epuber/third_party/bower/bower_components/jquery/src/event/support.js +9 -0
  135. data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/amd.js +24 -0
  136. data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/global.js +32 -0
  137. data/lib/epuber/third_party/bower/bower_components/jquery/src/intro.js +44 -0
  138. data/lib/epuber/third_party/bower/bower_components/jquery/src/jquery.js +37 -0
  139. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation.js +580 -0
  140. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
  141. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/support.js +32 -0
  142. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  143. data/lib/epuber/third_party/bower/bower_components/jquery/src/offset.js +207 -0
  144. data/lib/epuber/third_party/bower/bower_components/jquery/src/outro.js +1 -0
  145. data/lib/epuber/third_party/bower/bower_components/jquery/src/queue.js +142 -0
  146. data/lib/epuber/third_party/bower/bower_components/jquery/src/queue/delay.js +22 -0
  147. data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-native.js +172 -0
  148. data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-sizzle.js +14 -0
  149. data/lib/epuber/third_party/bower/bower_components/jquery/src/selector.js +1 -0
  150. data/lib/epuber/third_party/bower/bower_components/jquery/src/serialize.js +111 -0
  151. data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.js +2067 -0
  152. data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  153. data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  154. data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing.js +199 -0
  155. data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/findFilter.js +100 -0
  156. data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  157. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/arr.js +3 -0
  158. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/class2type.js +4 -0
  159. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/concat.js +5 -0
  160. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/hasOwn.js +5 -0
  161. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/indexOf.js +5 -0
  162. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/pnum.js +3 -0
  163. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/push.js +5 -0
  164. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/rnotwhite.js +3 -0
  165. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/slice.js +5 -0
  166. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/strundefined.js +3 -0
  167. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/support.js +4 -0
  168. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/toString.js +5 -0
  169. data/lib/epuber/third_party/bower/bower_components/jquery/src/wrap.js +79 -0
  170. data/lib/epuber/third_party/bower/bower_components/keymaster/MIT-LICENSE +20 -0
  171. data/lib/epuber/third_party/bower/bower_components/keymaster/Makefile +4 -0
  172. data/lib/epuber/third_party/bower/bower_components/keymaster/README.markdown +212 -0
  173. data/lib/epuber/third_party/bower/bower_components/keymaster/bower.json +27 -0
  174. data/lib/epuber/third_party/bower/bower_components/keymaster/keymaster.js +296 -0
  175. data/lib/epuber/third_party/bower/bower_components/keymaster/package.json +11 -0
  176. data/lib/epuber/third_party/bower/bower_components/keymaster/test.html +93 -0
  177. data/lib/epuber/third_party/bower/bower_components/spin.js/LICENSE.txt +21 -0
  178. data/lib/epuber/third_party/bower/bower_components/spin.js/README.md +21 -0
  179. data/lib/epuber/third_party/bower/bower_components/spin.js/bower.json +18 -0
  180. data/lib/epuber/third_party/bower/bower_components/spin.js/jquery.spin.js +80 -0
  181. data/lib/epuber/third_party/bower/bower_components/spin.js/spin.js +337 -0
  182. data/lib/epuber/third_party/bower/bower_components/uri.js/LICENSE.txt +21 -0
  183. data/lib/epuber/third_party/bower/bower_components/uri.js/README.md +534 -0
  184. data/lib/epuber/third_party/bower/bower_components/uri.js/bower.json +16 -0
  185. data/lib/epuber/third_party/bower/bower_components/uri.js/contributing.md +19 -0
  186. data/lib/epuber/third_party/bower/bower_components/uri.js/src/IPv6.js +188 -0
  187. data/lib/epuber/third_party/bower/bower_components/uri.js/src/SecondLevelDomains.js +241 -0
  188. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentQuery.js +104 -0
  189. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentURI.js +97 -0
  190. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.js +2115 -0
  191. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.min.js +86 -0
  192. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URITemplate.js +499 -0
  193. data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.js +235 -0
  194. data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.min.js +7 -0
  195. data/lib/epuber/third_party/bower/bower_components/uri.js/src/punycode.js +508 -0
  196. data/lib/epuber/transformer.rb +19 -0
  197. data/lib/epuber/transformer/text_transformer.rb +60 -0
  198. data/lib/epuber/user_interface.rb +186 -0
  199. data/lib/epuber/vendor/globals_context.rb +26 -0
  200. data/lib/epuber/vendor/hash_binding.rb +26 -0
  201. data/lib/epuber/vendor/nokogiri_extensions.rb +30 -0
  202. data/lib/epuber/vendor/ruby_templater.rb +71 -0
  203. data/lib/epuber/vendor/size.rb +20 -0
  204. data/lib/epuber/vendor/version.rb +83 -0
  205. data/lib/epuber/version.rb +4 -0
  206. metadata +556 -0
@@ -0,0 +1,18 @@
1
+ define([
2
+ "../ajax"
3
+ ], function( jQuery ) {
4
+
5
+ jQuery._evalUrl = function( url ) {
6
+ return jQuery.ajax({
7
+ url: url,
8
+ type: "GET",
9
+ dataType: "script",
10
+ async: false,
11
+ global: false,
12
+ "throws": true
13
+ });
14
+ };
15
+
16
+ return jQuery._evalUrl;
17
+
18
+ });
@@ -0,0 +1,32 @@
1
+ define([
2
+ "../var/support"
3
+ ], function( support ) {
4
+
5
+ (function() {
6
+ var fragment = document.createDocumentFragment(),
7
+ div = fragment.appendChild( document.createElement( "div" ) ),
8
+ input = document.createElement( "input" );
9
+
10
+ // Support: Safari<=5.1
11
+ // Check state lost if the name is set (#11217)
12
+ // Support: Windows Web Apps (WWA)
13
+ // `name` and `type` must use .setAttribute for WWA (#14901)
14
+ input.setAttribute( "type", "radio" );
15
+ input.setAttribute( "checked", "checked" );
16
+ input.setAttribute( "name", "t" );
17
+
18
+ div.appendChild( input );
19
+
20
+ // Support: Safari<=5.1, Android<4.2
21
+ // Older WebKit doesn't clone checked state correctly in fragments
22
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
23
+
24
+ // Support: IE<=11+
25
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
26
+ div.innerHTML = "<textarea>x</textarea>";
27
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
28
+ })();
29
+
30
+ return support;
31
+
32
+ });
@@ -0,0 +1,3 @@
1
+ define(function() {
2
+ return (/^(?:checkbox|radio)$/i);
3
+ });
@@ -0,0 +1,207 @@
1
+ define([
2
+ "./core",
3
+ "./var/strundefined",
4
+ "./core/access",
5
+ "./css/var/rnumnonpx",
6
+ "./css/curCSS",
7
+ "./css/addGetHookIf",
8
+ "./css/support",
9
+
10
+ "./core/init",
11
+ "./css",
12
+ "./selector" // contains
13
+ ], function( jQuery, strundefined, access, rnumnonpx, curCSS, addGetHookIf, support ) {
14
+
15
+ var docElem = window.document.documentElement;
16
+
17
+ /**
18
+ * Gets a window from an element
19
+ */
20
+ function getWindow( elem ) {
21
+ return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
22
+ }
23
+
24
+ jQuery.offset = {
25
+ setOffset: function( elem, options, i ) {
26
+ var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
27
+ position = jQuery.css( elem, "position" ),
28
+ curElem = jQuery( elem ),
29
+ props = {};
30
+
31
+ // Set position first, in-case top/left are set even on static elem
32
+ if ( position === "static" ) {
33
+ elem.style.position = "relative";
34
+ }
35
+
36
+ curOffset = curElem.offset();
37
+ curCSSTop = jQuery.css( elem, "top" );
38
+ curCSSLeft = jQuery.css( elem, "left" );
39
+ calculatePosition = ( position === "absolute" || position === "fixed" ) &&
40
+ ( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
41
+
42
+ // Need to be able to calculate position if either
43
+ // top or left is auto and position is either absolute or fixed
44
+ if ( calculatePosition ) {
45
+ curPosition = curElem.position();
46
+ curTop = curPosition.top;
47
+ curLeft = curPosition.left;
48
+
49
+ } else {
50
+ curTop = parseFloat( curCSSTop ) || 0;
51
+ curLeft = parseFloat( curCSSLeft ) || 0;
52
+ }
53
+
54
+ if ( jQuery.isFunction( options ) ) {
55
+ options = options.call( elem, i, curOffset );
56
+ }
57
+
58
+ if ( options.top != null ) {
59
+ props.top = ( options.top - curOffset.top ) + curTop;
60
+ }
61
+ if ( options.left != null ) {
62
+ props.left = ( options.left - curOffset.left ) + curLeft;
63
+ }
64
+
65
+ if ( "using" in options ) {
66
+ options.using.call( elem, props );
67
+
68
+ } else {
69
+ curElem.css( props );
70
+ }
71
+ }
72
+ };
73
+
74
+ jQuery.fn.extend({
75
+ offset: function( options ) {
76
+ if ( arguments.length ) {
77
+ return options === undefined ?
78
+ this :
79
+ this.each(function( i ) {
80
+ jQuery.offset.setOffset( this, options, i );
81
+ });
82
+ }
83
+
84
+ var docElem, win,
85
+ elem = this[ 0 ],
86
+ box = { top: 0, left: 0 },
87
+ doc = elem && elem.ownerDocument;
88
+
89
+ if ( !doc ) {
90
+ return;
91
+ }
92
+
93
+ docElem = doc.documentElement;
94
+
95
+ // Make sure it's not a disconnected DOM node
96
+ if ( !jQuery.contains( docElem, elem ) ) {
97
+ return box;
98
+ }
99
+
100
+ // Support: BlackBerry 5, iOS 3 (original iPhone)
101
+ // If we don't have gBCR, just use 0,0 rather than error
102
+ if ( typeof elem.getBoundingClientRect !== strundefined ) {
103
+ box = elem.getBoundingClientRect();
104
+ }
105
+ win = getWindow( doc );
106
+ return {
107
+ top: box.top + win.pageYOffset - docElem.clientTop,
108
+ left: box.left + win.pageXOffset - docElem.clientLeft
109
+ };
110
+ },
111
+
112
+ position: function() {
113
+ if ( !this[ 0 ] ) {
114
+ return;
115
+ }
116
+
117
+ var offsetParent, offset,
118
+ elem = this[ 0 ],
119
+ parentOffset = { top: 0, left: 0 };
120
+
121
+ // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
122
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
123
+ // Assume getBoundingClientRect is there when computed position is fixed
124
+ offset = elem.getBoundingClientRect();
125
+
126
+ } else {
127
+ // Get *real* offsetParent
128
+ offsetParent = this.offsetParent();
129
+
130
+ // Get correct offsets
131
+ offset = this.offset();
132
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
133
+ parentOffset = offsetParent.offset();
134
+ }
135
+
136
+ // Add offsetParent borders
137
+ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
138
+ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
139
+ }
140
+
141
+ // Subtract parent offsets and element margins
142
+ return {
143
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
144
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
145
+ };
146
+ },
147
+
148
+ offsetParent: function() {
149
+ return this.map(function() {
150
+ var offsetParent = this.offsetParent || docElem;
151
+
152
+ while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
153
+ offsetParent = offsetParent.offsetParent;
154
+ }
155
+
156
+ return offsetParent || docElem;
157
+ });
158
+ }
159
+ });
160
+
161
+ // Create scrollLeft and scrollTop methods
162
+ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
163
+ var top = "pageYOffset" === prop;
164
+
165
+ jQuery.fn[ method ] = function( val ) {
166
+ return access( this, function( elem, method, val ) {
167
+ var win = getWindow( elem );
168
+
169
+ if ( val === undefined ) {
170
+ return win ? win[ prop ] : elem[ method ];
171
+ }
172
+
173
+ if ( win ) {
174
+ win.scrollTo(
175
+ !top ? val : window.pageXOffset,
176
+ top ? val : window.pageYOffset
177
+ );
178
+
179
+ } else {
180
+ elem[ method ] = val;
181
+ }
182
+ }, method, val, arguments.length, null );
183
+ };
184
+ });
185
+
186
+ // Support: Safari<7+, Chrome<37+
187
+ // Add the top/left cssHooks using jQuery.fn.position
188
+ // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
189
+ // Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
190
+ // getComputedStyle returns percent when specified for top/left/bottom/right;
191
+ // rather than make the css module depend on the offset module, just check for it here
192
+ jQuery.each( [ "top", "left" ], function( i, prop ) {
193
+ jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
194
+ function( elem, computed ) {
195
+ if ( computed ) {
196
+ computed = curCSS( elem, prop );
197
+ // If curCSS returns percentage, fallback to offset
198
+ return rnumnonpx.test( computed ) ?
199
+ jQuery( elem ).position()[ prop ] + "px" :
200
+ computed;
201
+ }
202
+ }
203
+ );
204
+ });
205
+
206
+ return jQuery;
207
+ });
@@ -0,0 +1,142 @@
1
+ define([
2
+ "./core",
3
+ "./data/var/data_priv",
4
+ "./deferred",
5
+ "./callbacks"
6
+ ], function( jQuery, data_priv ) {
7
+
8
+ jQuery.extend({
9
+ queue: function( elem, type, data ) {
10
+ var queue;
11
+
12
+ if ( elem ) {
13
+ type = ( type || "fx" ) + "queue";
14
+ queue = data_priv.get( elem, type );
15
+
16
+ // Speed up dequeue by getting out quickly if this is just a lookup
17
+ if ( data ) {
18
+ if ( !queue || jQuery.isArray( data ) ) {
19
+ queue = data_priv.access( elem, type, jQuery.makeArray(data) );
20
+ } else {
21
+ queue.push( data );
22
+ }
23
+ }
24
+ return queue || [];
25
+ }
26
+ },
27
+
28
+ dequeue: function( elem, type ) {
29
+ type = type || "fx";
30
+
31
+ var queue = jQuery.queue( elem, type ),
32
+ startLength = queue.length,
33
+ fn = queue.shift(),
34
+ hooks = jQuery._queueHooks( elem, type ),
35
+ next = function() {
36
+ jQuery.dequeue( elem, type );
37
+ };
38
+
39
+ // If the fx queue is dequeued, always remove the progress sentinel
40
+ if ( fn === "inprogress" ) {
41
+ fn = queue.shift();
42
+ startLength--;
43
+ }
44
+
45
+ if ( fn ) {
46
+
47
+ // Add a progress sentinel to prevent the fx queue from being
48
+ // automatically dequeued
49
+ if ( type === "fx" ) {
50
+ queue.unshift( "inprogress" );
51
+ }
52
+
53
+ // Clear up the last queue stop function
54
+ delete hooks.stop;
55
+ fn.call( elem, next, hooks );
56
+ }
57
+
58
+ if ( !startLength && hooks ) {
59
+ hooks.empty.fire();
60
+ }
61
+ },
62
+
63
+ // Not public - generate a queueHooks object, or return the current one
64
+ _queueHooks: function( elem, type ) {
65
+ var key = type + "queueHooks";
66
+ return data_priv.get( elem, key ) || data_priv.access( elem, key, {
67
+ empty: jQuery.Callbacks("once memory").add(function() {
68
+ data_priv.remove( elem, [ type + "queue", key ] );
69
+ })
70
+ });
71
+ }
72
+ });
73
+
74
+ jQuery.fn.extend({
75
+ queue: function( type, data ) {
76
+ var setter = 2;
77
+
78
+ if ( typeof type !== "string" ) {
79
+ data = type;
80
+ type = "fx";
81
+ setter--;
82
+ }
83
+
84
+ if ( arguments.length < setter ) {
85
+ return jQuery.queue( this[0], type );
86
+ }
87
+
88
+ return data === undefined ?
89
+ this :
90
+ this.each(function() {
91
+ var queue = jQuery.queue( this, type, data );
92
+
93
+ // Ensure a hooks for this queue
94
+ jQuery._queueHooks( this, type );
95
+
96
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
97
+ jQuery.dequeue( this, type );
98
+ }
99
+ });
100
+ },
101
+ dequeue: function( type ) {
102
+ return this.each(function() {
103
+ jQuery.dequeue( this, type );
104
+ });
105
+ },
106
+ clearQueue: function( type ) {
107
+ return this.queue( type || "fx", [] );
108
+ },
109
+ // Get a promise resolved when queues of a certain type
110
+ // are emptied (fx is the type by default)
111
+ promise: function( type, obj ) {
112
+ var tmp,
113
+ count = 1,
114
+ defer = jQuery.Deferred(),
115
+ elements = this,
116
+ i = this.length,
117
+ resolve = function() {
118
+ if ( !( --count ) ) {
119
+ defer.resolveWith( elements, [ elements ] );
120
+ }
121
+ };
122
+
123
+ if ( typeof type !== "string" ) {
124
+ obj = type;
125
+ type = undefined;
126
+ }
127
+ type = type || "fx";
128
+
129
+ while ( i-- ) {
130
+ tmp = data_priv.get( elements[ i ], type + "queueHooks" );
131
+ if ( tmp && tmp.empty ) {
132
+ count++;
133
+ tmp.empty.add( resolve );
134
+ }
135
+ }
136
+ resolve();
137
+ return defer.promise( obj );
138
+ }
139
+ });
140
+
141
+ return jQuery;
142
+ });
@@ -0,0 +1,22 @@
1
+ define([
2
+ "../core",
3
+ "../queue",
4
+ "../effects" // Delay is optional because of this dependency
5
+ ], function( jQuery ) {
6
+
7
+ // Based off of the plugin by Clint Helfers, with permission.
8
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
9
+ jQuery.fn.delay = function( time, type ) {
10
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
11
+ type = type || "fx";
12
+
13
+ return this.queue( type, function( next, hooks ) {
14
+ var timeout = setTimeout( next, time );
15
+ hooks.stop = function() {
16
+ clearTimeout( timeout );
17
+ };
18
+ });
19
+ };
20
+
21
+ return jQuery.fn.delay;
22
+ });
@@ -0,0 +1,172 @@
1
+ define([
2
+ "./core"
3
+ ], function( jQuery ) {
4
+
5
+ /*
6
+ * Optional (non-Sizzle) selector module for custom builds.
7
+ *
8
+ * Note that this DOES NOT SUPPORT many documented jQuery
9
+ * features in exchange for its smaller size:
10
+ *
11
+ * Attribute not equal selector
12
+ * Positional selectors (:first; :eq(n); :odd; etc.)
13
+ * Type selectors (:input; :checkbox; :button; etc.)
14
+ * State-based selectors (:animated; :visible; :hidden; etc.)
15
+ * :has(selector)
16
+ * :not(complex selector)
17
+ * custom selectors via Sizzle extensions
18
+ * Leading combinators (e.g., $collection.find("> *"))
19
+ * Reliable functionality on XML fragments
20
+ * Requiring all parts of a selector to match elements under context
21
+ * (e.g., $div.find("div > *") now matches children of $div)
22
+ * Matching against non-elements
23
+ * Reliable sorting of disconnected nodes
24
+ * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
25
+ *
26
+ * If any of these are unacceptable tradeoffs, either use Sizzle or
27
+ * customize this stub for the project's specific needs.
28
+ */
29
+
30
+ var docElem = window.document.documentElement,
31
+ selector_hasDuplicate,
32
+ matches = docElem.matches ||
33
+ docElem.webkitMatchesSelector ||
34
+ docElem.mozMatchesSelector ||
35
+ docElem.oMatchesSelector ||
36
+ docElem.msMatchesSelector,
37
+ selector_sortOrder = function( a, b ) {
38
+ // Flag for duplicate removal
39
+ if ( a === b ) {
40
+ selector_hasDuplicate = true;
41
+ return 0;
42
+ }
43
+
44
+ var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
45
+
46
+ if ( compare ) {
47
+ // Disconnected nodes
48
+ if ( compare & 1 ) {
49
+
50
+ // Choose the first element that is related to our document
51
+ if ( a === document || jQuery.contains(document, a) ) {
52
+ return -1;
53
+ }
54
+ if ( b === document || jQuery.contains(document, b) ) {
55
+ return 1;
56
+ }
57
+
58
+ // Maintain original order
59
+ return 0;
60
+ }
61
+
62
+ return compare & 4 ? -1 : 1;
63
+ }
64
+
65
+ // Not directly comparable, sort on existence of method
66
+ return a.compareDocumentPosition ? -1 : 1;
67
+ };
68
+
69
+ jQuery.extend({
70
+ find: function( selector, context, results, seed ) {
71
+ var elem, nodeType,
72
+ i = 0;
73
+
74
+ results = results || [];
75
+ context = context || document;
76
+
77
+ // Same basic safeguard as Sizzle
78
+ if ( !selector || typeof selector !== "string" ) {
79
+ return results;
80
+ }
81
+
82
+ // Early return if context is not an element or document
83
+ if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
84
+ return [];
85
+ }
86
+
87
+ if ( seed ) {
88
+ while ( (elem = seed[i++]) ) {
89
+ if ( jQuery.find.matchesSelector(elem, selector) ) {
90
+ results.push( elem );
91
+ }
92
+ }
93
+ } else {
94
+ jQuery.merge( results, context.querySelectorAll(selector) );
95
+ }
96
+
97
+ return results;
98
+ },
99
+ unique: function( results ) {
100
+ var elem,
101
+ duplicates = [],
102
+ i = 0,
103
+ j = 0;
104
+
105
+ selector_hasDuplicate = false;
106
+ results.sort( selector_sortOrder );
107
+
108
+ if ( selector_hasDuplicate ) {
109
+ while ( (elem = results[i++]) ) {
110
+ if ( elem === results[ i ] ) {
111
+ j = duplicates.push( i );
112
+ }
113
+ }
114
+ while ( j-- ) {
115
+ results.splice( duplicates[ j ], 1 );
116
+ }
117
+ }
118
+
119
+ return results;
120
+ },
121
+ text: function( elem ) {
122
+ var node,
123
+ ret = "",
124
+ i = 0,
125
+ nodeType = elem.nodeType;
126
+
127
+ if ( !nodeType ) {
128
+ // If no nodeType, this is expected to be an array
129
+ while ( (node = elem[i++]) ) {
130
+ // Do not traverse comment nodes
131
+ ret += jQuery.text( node );
132
+ }
133
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
134
+ // Use textContent for elements
135
+ return elem.textContent;
136
+ } else if ( nodeType === 3 || nodeType === 4 ) {
137
+ return elem.nodeValue;
138
+ }
139
+ // Do not include comment or processing instruction nodes
140
+
141
+ return ret;
142
+ },
143
+ contains: function( a, b ) {
144
+ var adown = a.nodeType === 9 ? a.documentElement : a,
145
+ bup = b && b.parentNode;
146
+ return a === bup || !!( bup && bup.nodeType === 1 && adown.contains(bup) );
147
+ },
148
+ isXMLDoc: function( elem ) {
149
+ return (elem.ownerDocument || elem).documentElement.nodeName !== "HTML";
150
+ },
151
+ expr: {
152
+ attrHandle: {},
153
+ match: {
154
+ bool: /^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,
155
+ needsContext: /^[\x20\t\r\n\f]*[>+~]/
156
+ }
157
+ }
158
+ });
159
+
160
+ jQuery.extend( jQuery.find, {
161
+ matches: function( expr, elements ) {
162
+ return jQuery.find( expr, null, null, elements );
163
+ },
164
+ matchesSelector: function( elem, expr ) {
165
+ return matches.call( elem, expr );
166
+ },
167
+ attr: function( elem, name ) {
168
+ return elem.getAttribute( name );
169
+ }
170
+ });
171
+
172
+ });