node-poweredup 7.0.0 → 8.0.2

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 (294) hide show
  1. package/.drone.yml +1 -0
  2. package/.gitmodules +3 -0
  3. package/{jsdoc.conf.json → .jsdoc.json} +14 -1
  4. package/README.md +47 -42
  5. package/dist/browser/poweredup.js +1 -1
  6. package/dist/browser/poweredup.js.map +1 -1
  7. package/dist/node/color.d.ts +6 -0
  8. package/dist/node/color.js +38 -0
  9. package/dist/node/color.js.map +1 -0
  10. package/dist/node/consts.d.ts +47 -26
  11. package/dist/node/consts.js +46 -25
  12. package/dist/node/consts.js.map +1 -1
  13. package/dist/node/devices/colordistancesensor.d.ts +11 -0
  14. package/dist/node/devices/colordistancesensor.js +93 -1
  15. package/dist/node/devices/colordistancesensor.js.map +1 -1
  16. package/dist/node/devices/device.js +2 -0
  17. package/dist/node/devices/device.js.map +1 -1
  18. package/dist/node/devices/technic3x3colorlightmatrix.d.ts +22 -0
  19. package/dist/node/devices/technic3x3colorlightmatrix.js +77 -0
  20. package/dist/node/devices/technic3x3colorlightmatrix.js.map +1 -0
  21. package/dist/node/devices/technicmediumhubtiltsensor.d.ts +25 -1
  22. package/dist/node/devices/technicmediumhubtiltsensor.js +70 -2
  23. package/dist/node/devices/technicmediumhubtiltsensor.js.map +1 -1
  24. package/dist/node/devices/technicsmallangularmotor.d.ts +12 -0
  25. package/dist/node/devices/technicsmallangularmotor.js +35 -0
  26. package/dist/node/devices/technicsmallangularmotor.js.map +1 -0
  27. package/dist/node/hubs/basehub.js +4 -0
  28. package/dist/node/hubs/basehub.js.map +1 -1
  29. package/dist/node/hubs/lpf2hub.js +5 -4
  30. package/dist/node/hubs/lpf2hub.js.map +1 -1
  31. package/dist/node/hubs/technicmediumhub.js +1 -1
  32. package/dist/node/hubs/technicmediumhub.js.map +1 -1
  33. package/dist/node/hubs/technicsmallhub.d.ts +18 -0
  34. package/dist/node/hubs/technicsmallhub.js +64 -0
  35. package/dist/node/hubs/technicsmallhub.js.map +1 -0
  36. package/dist/node/index-browser.js +6 -0
  37. package/dist/node/index-browser.js.map +1 -1
  38. package/dist/node/index-node.d.ts +4 -1
  39. package/dist/node/index-node.js +7 -1
  40. package/dist/node/index-node.js.map +1 -1
  41. package/dist/node/nobleabstraction.js +2 -0
  42. package/dist/node/nobleabstraction.js.map +1 -1
  43. package/dist/node/poweredup-browser.js +8 -1
  44. package/dist/node/poweredup-browser.js.map +1 -1
  45. package/dist/node/poweredup-node.js +30 -1
  46. package/dist/node/poweredup-node.js.map +1 -1
  47. package/dist/node/webbleabstraction.js +1 -0
  48. package/dist/node/webbleabstraction.js.map +1 -1
  49. package/docs/AbsoluteMotor.html +1220 -1405
  50. package/docs/BaseHub.html +787 -872
  51. package/docs/BasicMotor.html +923 -1078
  52. package/docs/ColorDistanceSensor.html +2188 -1540
  53. package/docs/CurrentSensor.html +711 -800
  54. package/docs/Device.html +574 -665
  55. package/docs/DuploTrainBase.html +1255 -1375
  56. package/docs/DuploTrainBaseColorSensor.html +1009 -1082
  57. package/docs/DuploTrainBaseMotor.html +958 -1113
  58. package/docs/DuploTrainBaseSpeaker.html +793 -916
  59. package/docs/DuploTraniBaseSpeedometer.html +628 -719
  60. package/docs/Hub.html +5621 -2397
  61. package/docs/HubLED.html +831 -944
  62. package/docs/LPF2Hub.html +1215 -1335
  63. package/docs/Light.html +831 -944
  64. package/docs/Mario.html +1255 -1420
  65. package/docs/MarioAccelerometer.html +834 -911
  66. package/docs/MarioBarcodeSensor.html +834 -911
  67. package/docs/MarioPantsSensor.html +711 -800
  68. package/docs/MediumLinearMotor.html +861 -1000
  69. package/docs/MotionSensor.html +711 -800
  70. package/docs/MoveHub.html +1255 -1420
  71. package/docs/MoveHubMediumLinearMotor.html +861 -1000
  72. package/docs/MoveHubTiltSensor.html +730 -814
  73. package/docs/PiezoBuzzer.html +732 -834
  74. package/docs/PoweredUP.html +4322 -0
  75. package/docs/RemoteControl.html +1255 -1420
  76. package/docs/RemoteControlButton.html +711 -800
  77. package/docs/SimpleMediumLinearMotor.html +628 -719
  78. package/docs/TachoMotor.html +1644 -1835
  79. package/docs/Technic3x3ColorLightMatrix.html +1181 -0
  80. package/docs/TechnicColorSensor.html +1008 -1099
  81. package/docs/TechnicDistanceSensor.html +939 -1027
  82. package/docs/TechnicForceSensor.html +883 -968
  83. package/docs/TechnicLargeAngularMotor.html +1254 -1439
  84. package/docs/TechnicLargeLinearMotor.html +1254 -1439
  85. package/docs/TechnicMediumAngularMotor.html +1254 -1439
  86. package/docs/TechnicMediumHub.html +1255 -1420
  87. package/docs/TechnicMediumHubAccelerometerSensor.html +749 -828
  88. package/docs/TechnicMediumHubGyroSensor.html +749 -828
  89. package/docs/TechnicMediumHubTiltSensor.html +1340 -831
  90. package/docs/TechnicSmallAngularMotor.html +2073 -0
  91. package/docs/TechnicXLargeLinearMotor.html +1254 -1439
  92. package/docs/TiltSensor.html +730 -814
  93. package/docs/TrainMotor.html +958 -1113
  94. package/docs/VoltageSensor.html +711 -800
  95. package/docs/WeDo2SmartHub.html +1112 -1221
  96. package/docs/consts.js.html +791 -0
  97. package/docs/devices_absolutemotor.js.html +89 -191
  98. package/docs/devices_basicmotor.js.html +89 -191
  99. package/docs/devices_colordistancesensor.js.html +182 -192
  100. package/docs/devices_currentsensor.js.html +89 -191
  101. package/docs/devices_device.js.html +91 -191
  102. package/docs/devices_duplotrainbasecolorsensor.js.html +89 -191
  103. package/docs/devices_duplotrainbasemotor.js.html +92 -194
  104. package/docs/devices_duplotrainbasespeaker.js.html +89 -191
  105. package/docs/devices_duplotrainbasespeedometer.js.html +89 -191
  106. package/docs/devices_hubled.js.html +89 -191
  107. package/docs/devices_light.js.html +89 -191
  108. package/docs/devices_marioaccelerometer.js.html +89 -191
  109. package/docs/devices_mariobarcodesensor.js.html +89 -191
  110. package/docs/devices_mariopantssensor.js.html +89 -191
  111. package/docs/devices_mediumlinearmotor.js.html +92 -194
  112. package/docs/devices_motionsensor.js.html +89 -191
  113. package/docs/devices_movehubmediumlinearmotor.js.html +92 -194
  114. package/docs/devices_movehubtiltsensor.js.html +89 -191
  115. package/docs/devices_piezobuzzer.js.html +89 -191
  116. package/docs/devices_remotecontrolbutton.js.html +89 -191
  117. package/docs/devices_simplemediumlinearmotor.js.html +92 -194
  118. package/docs/devices_tachomotor.js.html +89 -191
  119. package/docs/devices_technic3x3colorlightmatrix.js.html +190 -0
  120. package/docs/devices_techniccolorsensor.js.html +89 -191
  121. package/docs/devices_technicdistancesensor.js.html +89 -191
  122. package/docs/devices_technicforcesensor.js.html +89 -191
  123. package/docs/devices_techniclargeangularmotor.js.html +92 -194
  124. package/docs/devices_techniclargelinearmotor.js.html +92 -194
  125. package/docs/devices_technicmediumangularmotor.js.html +92 -194
  126. package/docs/devices_technicmediumhubaccelerometersensor.js.html +89 -191
  127. package/docs/devices_technicmediumhubgyrosensor.js.html +89 -191
  128. package/docs/devices_technicmediumhubtiltsensor.js.html +159 -193
  129. package/docs/devices_technicsmallangularmotor.js.html +148 -0
  130. package/docs/devices_technicxlargelinearmotor.js.html +92 -194
  131. package/docs/devices_tiltsensor.js.html +89 -191
  132. package/docs/devices_trainmotor.js.html +92 -194
  133. package/docs/devices_voltagesensor.js.html +89 -191
  134. package/docs/fonts/OpenSans-Bold-webfont.eot +0 -0
  135. package/docs/fonts/OpenSans-Bold-webfont.svg +1830 -0
  136. package/docs/fonts/OpenSans-Bold-webfont.woff +0 -0
  137. package/docs/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  138. package/docs/fonts/OpenSans-BoldItalic-webfont.svg +1830 -0
  139. package/docs/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  140. package/docs/fonts/OpenSans-Italic-webfont.eot +0 -0
  141. package/docs/fonts/OpenSans-Italic-webfont.svg +1830 -0
  142. package/docs/fonts/OpenSans-Italic-webfont.woff +0 -0
  143. package/docs/fonts/OpenSans-Light-webfont.eot +0 -0
  144. package/docs/fonts/OpenSans-Light-webfont.svg +1831 -0
  145. package/docs/fonts/OpenSans-Light-webfont.woff +0 -0
  146. package/docs/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  147. package/docs/fonts/OpenSans-LightItalic-webfont.svg +1835 -0
  148. package/docs/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  149. package/docs/fonts/OpenSans-Regular-webfont.eot +0 -0
  150. package/docs/fonts/OpenSans-Regular-webfont.svg +1831 -0
  151. package/docs/fonts/OpenSans-Regular-webfont.woff +0 -0
  152. package/docs/fonts/OpenSans-Semibold-webfont.eot +0 -0
  153. package/docs/fonts/OpenSans-Semibold-webfont.svg +1830 -0
  154. package/docs/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  155. package/docs/fonts/OpenSans-Semibold-webfont.woff +0 -0
  156. package/docs/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  157. package/docs/fonts/OpenSans-SemiboldItalic-webfont.svg +1830 -0
  158. package/docs/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  159. package/docs/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  160. package/docs/global.html +9829 -0
  161. package/docs/hubs_basehub.js.html +93 -191
  162. package/docs/hubs_duplotrainbase.js.html +89 -191
  163. package/docs/hubs_hub.js.html +89 -191
  164. package/docs/hubs_lpf2hub.js.html +94 -195
  165. package/docs/hubs_mario.js.html +89 -191
  166. package/docs/hubs_movehub.js.html +89 -191
  167. package/docs/hubs_remotecontrol.js.html +89 -191
  168. package/docs/hubs_technicmediumhub.js.html +90 -192
  169. package/docs/hubs_technicsmallhub.js.html +177 -0
  170. package/docs/hubs_wedo2smarthub.js.html +89 -191
  171. package/docs/icons/home.svg +4 -0
  172. package/docs/icons/search.svg +4 -0
  173. package/docs/index.html +143 -236
  174. package/docs/poweredup-browser.js.html +348 -0
  175. package/docs/poweredup-node.js.html +314 -0
  176. package/docs/scripts/linenumber.js +23 -0
  177. package/docs/scripts/pagelocation.js +89 -0
  178. package/docs/styles/collapse.css +27 -0
  179. package/docs/styles/jsdoc-default.css +953 -0
  180. package/docs/styles/prettify-jsdoc.css +111 -0
  181. package/docs/styles/prettify-tomorrow.css +15 -9
  182. package/jsdoc-template/braintree/CHANGELOG.md +31 -0
  183. package/jsdoc-template/braintree/LICENSE +27 -0
  184. package/jsdoc-template/braintree/README.md +90 -0
  185. package/jsdoc-template/braintree/package.json +39 -0
  186. package/jsdoc-template/braintree/publish.js +675 -0
  187. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.eot +0 -0
  188. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.svg +1830 -0
  189. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.woff +0 -0
  190. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  191. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.svg +1830 -0
  192. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  193. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.eot +0 -0
  194. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.svg +1830 -0
  195. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.woff +0 -0
  196. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.eot +0 -0
  197. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.svg +1831 -0
  198. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.woff +0 -0
  199. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  200. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.svg +1835 -0
  201. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  202. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.eot +0 -0
  203. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.svg +1831 -0
  204. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.woff +0 -0
  205. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.eot +0 -0
  206. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.svg +1830 -0
  207. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  208. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.woff +0 -0
  209. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  210. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.svg +1830 -0
  211. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  212. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  213. package/jsdoc-template/braintree/static/icons/home.svg +4 -0
  214. package/jsdoc-template/braintree/static/icons/search.svg +4 -0
  215. package/jsdoc-template/braintree/static/scripts/linenumber.js +23 -0
  216. package/jsdoc-template/braintree/static/scripts/pagelocation.js +89 -0
  217. package/jsdoc-template/braintree/static/styles/collapse.css +27 -0
  218. package/jsdoc-template/braintree/static/styles/jsdoc-default.css +953 -0
  219. package/jsdoc-template/braintree/static/styles/prettify-jsdoc.css +111 -0
  220. package/jsdoc-template/braintree/static/styles/prettify-tomorrow.css +138 -0
  221. package/jsdoc-template/braintree/tmpl/augments.tmpl +10 -0
  222. package/jsdoc-template/braintree/tmpl/container.tmpl +213 -0
  223. package/jsdoc-template/braintree/tmpl/details.tmpl +223 -0
  224. package/jsdoc-template/braintree/tmpl/example.tmpl +2 -0
  225. package/jsdoc-template/braintree/tmpl/examples.tmpl +14 -0
  226. package/jsdoc-template/braintree/tmpl/exceptions.tmpl +28 -0
  227. package/jsdoc-template/braintree/tmpl/layout.tmpl +150 -0
  228. package/jsdoc-template/braintree/tmpl/mainpage.tmpl +9 -0
  229. package/jsdoc-template/braintree/tmpl/members.tmpl +38 -0
  230. package/jsdoc-template/braintree/tmpl/method.tmpl +128 -0
  231. package/jsdoc-template/braintree/tmpl/params.tmpl +125 -0
  232. package/jsdoc-template/braintree/tmpl/properties.tmpl +111 -0
  233. package/jsdoc-template/braintree/tmpl/returns.tmpl +17 -0
  234. package/jsdoc-template/braintree/tmpl/source.tmpl +9 -0
  235. package/jsdoc-template/braintree/tmpl/tutorial.tmpl +23 -0
  236. package/jsdoc-template/braintree/tmpl/type.tmpl +11 -0
  237. package/package.json +13 -14
  238. package/src/color.ts +20 -0
  239. package/src/consts.ts +46 -25
  240. package/src/devices/colordistancesensor.ts +96 -2
  241. package/src/devices/device.ts +1 -0
  242. package/src/devices/technic3x3colorlightmatrix.ts +64 -0
  243. package/src/devices/technicmediumhubtiltsensor.ts +75 -3
  244. package/src/devices/technicsmallangularmotor.ts +17 -0
  245. package/src/hubs/basehub.ts +4 -0
  246. package/src/hubs/lpf2hub.ts +5 -6
  247. package/src/hubs/technicmediumhub.ts +1 -1
  248. package/src/hubs/technicsmallhub.ts +60 -0
  249. package/src/index-browser.ts +6 -0
  250. package/src/index-node.ts +6 -0
  251. package/src/nobleabstraction.ts +2 -0
  252. package/src/poweredup-browser.ts +8 -1
  253. package/src/poweredup-node.ts +9 -1
  254. package/src/webbleabstraction.ts +1 -0
  255. package/docs/classes.list.html +0 -8798
  256. package/docs/fonts/glyphicons-halflings-regular.eot +0 -0
  257. package/docs/fonts/glyphicons-halflings-regular.svg +0 -288
  258. package/docs/fonts/glyphicons-halflings-regular.ttf +0 -0
  259. package/docs/fonts/glyphicons-halflings-regular.woff +0 -0
  260. package/docs/fonts/glyphicons-halflings-regular.woff2 +0 -0
  261. package/docs/img/glyphicons-halflings-white.png +0 -0
  262. package/docs/img/glyphicons-halflings.png +0 -0
  263. package/docs/quicksearch.html +0 -31
  264. package/docs/scripts/docstrap.lib.js +0 -11
  265. package/docs/scripts/fulltext-search-ui.js +0 -89
  266. package/docs/scripts/fulltext-search.js +0 -36
  267. package/docs/scripts/lunr.min.js +0 -6
  268. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
  269. package/docs/scripts/prettify/jquery.min.js +0 -6
  270. package/docs/scripts/prettify/lang-css.js +0 -21
  271. package/docs/scripts/prettify/prettify.js +0 -496
  272. package/docs/scripts/sunlight.js +0 -1157
  273. package/docs/scripts/toc.js +0 -203
  274. package/docs/styles/darkstrap.css +0 -960
  275. package/docs/styles/site.cerulean.css +0 -7008
  276. package/docs/styles/site.cosmo.css +0 -7061
  277. package/docs/styles/site.cyborg.css +0 -7048
  278. package/docs/styles/site.darkly.css +0 -7171
  279. package/docs/styles/site.darkstrap.css +0 -5638
  280. package/docs/styles/site.dibs-bootstrap.css +0 -5899
  281. package/docs/styles/site.flatly.css +0 -7147
  282. package/docs/styles/site.journal.css +0 -6973
  283. package/docs/styles/site.lumen.css +0 -7298
  284. package/docs/styles/site.paper.css +0 -7623
  285. package/docs/styles/site.readable.css +0 -6997
  286. package/docs/styles/site.sandstone.css +0 -7035
  287. package/docs/styles/site.simplex.css +0 -7023
  288. package/docs/styles/site.slate.css +0 -7343
  289. package/docs/styles/site.spacelab.css +0 -7055
  290. package/docs/styles/site.superhero.css +0 -7131
  291. package/docs/styles/site.united.css +0 -6895
  292. package/docs/styles/site.yeti.css +0 -7195
  293. package/docs/styles/sunlight.dark.css +0 -345
  294. package/docs/styles/sunlight.default.css +0 -344
@@ -1,203 +0,0 @@
1
- (function($) {
2
- var navbarHeight;
3
- var initialised = false;
4
- var navbarOffset;
5
-
6
- function elOffset($el) {
7
- return $el.offset().top - (navbarHeight + navbarOffset);
8
- }
9
-
10
- function scrollToHash(duringPageLoad) {
11
- var elScrollToId = location.hash.replace(/^#/, '');
12
- var $el;
13
-
14
- function doScroll() {
15
- var offsetTop = elOffset($el);
16
- window.scrollTo(window.pageXOffset || window.scrollX, offsetTop);
17
- }
18
-
19
- if (elScrollToId) {
20
- $el = $(document.getElementById(elScrollToId));
21
-
22
- if (!$el.length) {
23
- $el = $(document.getElementsByName(elScrollToId));
24
- }
25
-
26
- if ($el.length) {
27
- if (duringPageLoad) {
28
- $(window).one('scroll', function() {
29
- setTimeout(doScroll, 100);
30
- });
31
- } else {
32
- setTimeout(doScroll, 0);
33
- }
34
- }
35
- }
36
- }
37
-
38
- function init(opts) {
39
- if (initialised) {
40
- return;
41
- }
42
- initialised = true;
43
- navbarHeight = $('.navbar').height();
44
- navbarOffset = opts.navbarOffset;
45
-
46
- // some browsers move the offset after changing location.
47
- // also catch external links coming in
48
- $(window).on("hashchange", scrollToHash.bind(null, false));
49
- $(scrollToHash.bind(null, true));
50
- }
51
-
52
- $.catchAnchorLinks = function(options) {
53
- var opts = $.extend({}, jQuery.fn.toc.defaults, options);
54
- init(opts);
55
- };
56
-
57
- $.fn.toc = function(options) {
58
- var self = this;
59
- var opts = $.extend({}, jQuery.fn.toc.defaults, options);
60
-
61
- var container = $(opts.container);
62
- var tocs = [];
63
- var headings = $(opts.selectors, container);
64
- var headingOffsets = [];
65
- var activeClassName = 'active';
66
- var ANCHOR_PREFIX = "__anchor";
67
- var maxScrollTo;
68
- var visibleHeight;
69
- var headerHeight = 10; // so if the header is readable, its counted as shown
70
- init();
71
-
72
- var scrollTo = function(e) {
73
- e.preventDefault();
74
- var target = $(e.target);
75
- if (target.prop('tagName').toLowerCase() !== "a") {
76
- target = target.parent();
77
- }
78
- var elScrollToId = target.attr('href').replace(/^#/, '') + ANCHOR_PREFIX;
79
- var $el = $(document.getElementById(elScrollToId));
80
-
81
- var offsetTop = Math.min(maxScrollTo, elOffset($el));
82
-
83
- $('body,html').animate({ scrollTop: offsetTop }, 400, 'swing', function() {
84
- location.hash = '#' + elScrollToId;
85
- });
86
-
87
- $('a', self).removeClass(activeClassName);
88
- target.addClass(activeClassName);
89
- };
90
-
91
- var calcHadingOffsets = function() {
92
- maxScrollTo = $("body").height() - $(window).height();
93
- visibleHeight = $(window).height() - navbarHeight;
94
- headingOffsets = [];
95
- headings.each(function(i, heading) {
96
- var anchorSpan = $(heading).prev("span");
97
- var top = 0;
98
- if (anchorSpan.length) {
99
- top = elOffset(anchorSpan);
100
- }
101
- headingOffsets.push(top > 0 ? top : 0);
102
- });
103
- }
104
-
105
- //highlight on scroll
106
- var timeout;
107
- var highlightOnScroll = function(e) {
108
- if (!tocs.length) {
109
- return;
110
- }
111
- if (timeout) {
112
- clearTimeout(timeout);
113
- }
114
- timeout = setTimeout(function() {
115
- var top = $(window).scrollTop(),
116
- highlighted;
117
- for (var i = headingOffsets.length - 1; i >= 0; i--) {
118
- var isActive = tocs[i].hasClass(activeClassName);
119
- // at the end of the page, allow any shown header
120
- if (isActive && headingOffsets[i] >= maxScrollTo && top >= maxScrollTo) {
121
- return;
122
- }
123
- // if we have got to the first heading or the heading is the first one visible
124
- if (i === 0 || (headingOffsets[i] + headerHeight >= top && (headingOffsets[i - 1] + headerHeight <= top))) {
125
- // in the case that a heading takes up more than the visible height e.g. we are showing
126
- // only the one above, highlight the one above
127
- if (i > 0 && headingOffsets[i] - visibleHeight >= top) {
128
- i--;
129
- }
130
- $('a', self).removeClass(activeClassName);
131
- if (i >= 0) {
132
- highlighted = tocs[i].addClass(activeClassName);
133
- opts.onHighlight(highlighted);
134
- }
135
- break;
136
- }
137
- }
138
- }, 50);
139
- };
140
- if (opts.highlightOnScroll) {
141
- $(window).bind('scroll', highlightOnScroll);
142
- $(window).bind('load resize', function() {
143
- calcHadingOffsets();
144
- highlightOnScroll();
145
- });
146
- }
147
-
148
- return this.each(function() {
149
- //build TOC
150
- var el = $(this);
151
- var ul = $('<div class="list-group">');
152
-
153
- headings.each(function(i, heading) {
154
- var $h = $(heading);
155
-
156
- var anchor = $('<span/>').attr('id', opts.anchorName(i, heading, opts.prefix) + ANCHOR_PREFIX).insertBefore($h);
157
-
158
- var span = $('<span/>')
159
- .text(opts.headerText(i, heading, $h));
160
-
161
- //build TOC item
162
- var a = $('<a class="list-group-item"/>')
163
- .append(span)
164
- .attr('href', '#' + opts.anchorName(i, heading, opts.prefix))
165
- .bind('click', function(e) {
166
- scrollTo(e);
167
- el.trigger('selected', $(this).attr('href'));
168
- });
169
-
170
- span.addClass(opts.itemClass(i, heading, $h, opts.prefix));
171
-
172
- tocs.push(a);
173
-
174
- ul.append(a);
175
- });
176
- el.html(ul);
177
-
178
- calcHadingOffsets();
179
- });
180
- };
181
-
182
-
183
- jQuery.fn.toc.defaults = {
184
- container: 'body',
185
- selectors: 'h1,h2,h3',
186
- smoothScrolling: true,
187
- prefix: 'toc',
188
- onHighlight: function() {},
189
- highlightOnScroll: true,
190
- navbarOffset: 0,
191
- anchorName: function(i, heading, prefix) {
192
- return prefix+i;
193
- },
194
- headerText: function(i, heading, $heading) {
195
- return $heading.text();
196
- },
197
- itemClass: function(i, heading, $heading, prefix) {
198
- return prefix + '-' + $heading[0].tagName.toLowerCase();
199
- }
200
-
201
- };
202
-
203
- })(jQuery);