staple 0.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 (141) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/Gemfile +13 -0
  4. data/LICENSE.md +23 -0
  5. data/README.md +51 -0
  6. data/Rakefile +0 -0
  7. data/config.rb +24 -0
  8. data/lib/snippet_helpers.rb +69 -0
  9. data/lib/staple/import_generator.rb +50 -0
  10. data/lib/staple/list_generator.rb +22 -0
  11. data/lib/staple.rb +2 -0
  12. data/source/CNAME +1 -0
  13. data/source/_accordion.html.erb +24 -0
  14. data/source/_accordion_tabs.html.erb +26 -0
  15. data/source/_accordion_tabs_minimal.html.erb +26 -0
  16. data/source/_badges.html.erb +7 -0
  17. data/source/_breadcrumbs.html.erb +7 -0
  18. data/source/_browser.html.erb +29 -0
  19. data/source/_button_group.html.erb +18 -0
  20. data/source/_cards.html.erb +59 -0
  21. data/source/_centered_navigation.html.erb +38 -0
  22. data/source/_code.html.erb +10 -0
  23. data/source/_comment.html.erb +21 -0
  24. data/source/_device.html.erb +10 -0
  25. data/source/_dropdown.html.erb +12 -0
  26. data/source/_expander.html.erb +6 -0
  27. data/source/_flashes.html.erb +15 -0
  28. data/source/_footer.html.erb +28 -0
  29. data/source/_footer_2.html.erb +33 -0
  30. data/source/_grid_items.html.erb +37 -0
  31. data/source/_grid_items_lines.html.erb +44 -0
  32. data/source/_hero.html.erb +11 -0
  33. data/source/_hover_tile_animation.html.erb +11 -0
  34. data/source/_icon_bullet_points.html.erb +30 -0
  35. data/source/_image_gradient_dynamic.html.erb +7 -0
  36. data/source/_intro_text.html.erb +6 -0
  37. data/source/_label_alerts.html.erb +5 -0
  38. data/source/_modal.html.erb +14 -0
  39. data/source/_navigation.html.erb +44 -0
  40. data/source/_pagination.html.erb +17 -0
  41. data/source/_progress_bar.html.erb +3 -0
  42. data/source/_progress_bar_indication.html.erb +5 -0
  43. data/source/_search_bar.html.erb +8 -0
  44. data/source/_search_tools.html.erb +58 -0
  45. data/source/_side_image.html.erb +10 -0
  46. data/source/_sliding_menu.html.erb +13 -0
  47. data/source/_snippet.html.erb +4 -0
  48. data/source/_switch.html.erb +4 -0
  49. data/source/_tables.html.erb +31 -0
  50. data/source/_tables_minimal.html.erb +31 -0
  51. data/source/_texture-legend.html.erb +24 -0
  52. data/source/_textures.html.erb +4 -0
  53. data/source/_tooltip.html.erb +6 -0
  54. data/source/_type_system_geometric.html.erb +18 -0
  55. data/source/_type_system_rounded.html.erb +18 -0
  56. data/source/_type_system_sans.html.erb +18 -0
  57. data/source/_type_system_serif.html.erb +19 -0
  58. data/source/_type_system_slab.html.erb +18 -0
  59. data/source/_type_system_traditional.html.erb +18 -0
  60. data/source/_vertical_tabs.html.erb +30 -0
  61. data/source/_video.html.erb +5 -0
  62. data/source/components.html.erb +174 -0
  63. data/source/index.html.erb +162 -0
  64. data/source/javascripts/all.js +11 -0
  65. data/source/javascripts/jquery.erToc.js +477 -0
  66. data/source/javascripts/jquery.glide.js +941 -0
  67. data/source/javascripts/staple/accordion.js +5 -0
  68. data/source/javascripts/staple/accordion_tabs.js +19 -0
  69. data/source/javascripts/staple/accordion_tabs_minimal.js +19 -0
  70. data/source/javascripts/staple/centered_navigation.js +14 -0
  71. data/source/javascripts/staple/dropdown.js +9 -0
  72. data/source/javascripts/staple/expander.js +53 -0
  73. data/source/javascripts/staple/navigation.js +23 -0
  74. data/source/javascripts/staple/search_tools.js +110 -0
  75. data/source/javascripts/staple/sliding_menu.js +13 -0
  76. data/source/javascripts/staple/vertical_tabs.js +32 -0
  77. data/source/layouts/layout.erb +1 -0
  78. data/source/refills-hero.html.erb +7 -0
  79. data/source/refills-menu.html.erb +5 -0
  80. data/source/refills-page-scripts.html.erb +66 -0
  81. data/source/stylesheets/_bourbon-nav.scss +86 -0
  82. data/source/stylesheets/_normalize.scss +425 -0
  83. data/source/stylesheets/_refills-nav.scss +102 -0
  84. data/source/stylesheets/_refills-styles.scss +543 -0
  85. data/source/stylesheets/all.scss +61 -0
  86. data/source/stylesheets/staple/_accordion-tabs-minimal.scss +60 -0
  87. data/source/stylesheets/staple/_accordion-tabs.scss +88 -0
  88. data/source/stylesheets/staple/_accordion.scss +55 -0
  89. data/source/stylesheets/staple/_badges.scss +44 -0
  90. data/source/stylesheets/staple/_breadcrumbs.scss +84 -0
  91. data/source/stylesheets/staple/_browser.scss +141 -0
  92. data/source/stylesheets/staple/_button-group.scss +81 -0
  93. data/source/stylesheets/staple/_cards.scss +132 -0
  94. data/source/stylesheets/staple/_centered-navigation.scss +251 -0
  95. data/source/stylesheets/staple/_comment.scss +60 -0
  96. data/source/stylesheets/staple/_device.scss +83 -0
  97. data/source/stylesheets/staple/_dropdown.scss +127 -0
  98. data/source/stylesheets/staple/_expander.scss +30 -0
  99. data/source/stylesheets/staple/_flashes.scss +29 -0
  100. data/source/stylesheets/staple/_footer-2.scss +117 -0
  101. data/source/stylesheets/staple/_footer.scss +76 -0
  102. data/source/stylesheets/staple/_grid-items-lines.scss +86 -0
  103. data/source/stylesheets/staple/_grid-items.scss +97 -0
  104. data/source/stylesheets/staple/_hero.scss +54 -0
  105. data/source/stylesheets/staple/_hover-tile-animation.scss +52 -0
  106. data/source/stylesheets/staple/_icon-bullet-points.scss +63 -0
  107. data/source/stylesheets/staple/_image-gradient-dynamic.scss +59 -0
  108. data/source/stylesheets/staple/_intro-text.scss +67 -0
  109. data/source/stylesheets/staple/_label-alerts.scss +11 -0
  110. data/source/stylesheets/staple/_modal.scss +147 -0
  111. data/source/stylesheets/staple/_navigation.scss +329 -0
  112. data/source/stylesheets/staple/_pagination.scss +51 -0
  113. data/source/stylesheets/staple/_progress-bar-indication.scss +39 -0
  114. data/source/stylesheets/staple/_progress-bar.scss +83 -0
  115. data/source/stylesheets/staple/_search-bar.scss +40 -0
  116. data/source/stylesheets/staple/_search-tools.scss +67 -0
  117. data/source/stylesheets/staple/_side-image.scss +59 -0
  118. data/source/stylesheets/staple/_sliding-menu.scss +63 -0
  119. data/source/stylesheets/staple/_switch.scss +77 -0
  120. data/source/stylesheets/staple/_tables-minimal.scss +60 -0
  121. data/source/stylesheets/staple/_tables.scss +88 -0
  122. data/source/stylesheets/staple/_texture-legend.scss +182 -0
  123. data/source/stylesheets/staple/_textures.scss +119 -0
  124. data/source/stylesheets/staple/_tooltip.scss +57 -0
  125. data/source/stylesheets/staple/_type-system-geometric.scss +103 -0
  126. data/source/stylesheets/staple/_type-system-rounded.scss +107 -0
  127. data/source/stylesheets/staple/_type-system-sans.scss +110 -0
  128. data/source/stylesheets/staple/_type-system-serif.scss +111 -0
  129. data/source/stylesheets/staple/_type-system-slab.scss +107 -0
  130. data/source/stylesheets/staple/_type-system-traditional.scss +114 -0
  131. data/source/stylesheets/staple/_vertical-tabs.scss +105 -0
  132. data/source/stylesheets/staple/_video.scss +21 -0
  133. data/source/type-systems.html.erb +67 -0
  134. data/source/vendor/javascripts/ZeroClipboard.min.js +9 -0
  135. data/source/vendor/javascripts/fixedsticky.js +185 -0
  136. data/source/vendor/javascripts/prism.js +13 -0
  137. data/source/vendor/javascripts/smooth-scroll.js +125 -0
  138. data/source/vendor/stylesheets/fixedsticky.css +22 -0
  139. data/source/vendor/stylesheets/prism.css +126 -0
  140. data/staple.gemspec +19 -0
  141. metadata +184 -0
@@ -0,0 +1,105 @@
1
+ .vertical-tabs-container { // small screens: accordion
2
+ $tab-border-color: $base-border-color;
3
+ $tab-border: 1px solid $tab-border-color;
4
+ $tab-border-radius: $base-border-radius;
5
+ $tab-content-background: lighten($tab-border-color, 10);
6
+ $tab-active-color: $tab-content-background;
7
+ $tab-inactive-color: $base-background-color;
8
+ $vertical-tabs-height: em(300);
9
+ $vertical-tab-mode: $medium-screen;
10
+
11
+ @include clearfix;
12
+ border-radius: $tab-border-radius;
13
+ border: $tab-border;
14
+ margin-bottom: $base-spacing;
15
+ overflow: hidden;
16
+
17
+ .vertical-tabs {
18
+ display: none;
19
+
20
+ @include media($vertical-tab-mode) {
21
+ background-color: $tab-inactive-color;
22
+ display: inline;
23
+ float: left;
24
+ height: $vertical-tabs-height;
25
+ width: 20%;
26
+ }
27
+ }
28
+
29
+ .vertical-tab {
30
+ @include media($vertical-tab-mode) {
31
+ border-bottom: $tab-border;
32
+ display: block;
33
+ font-weight: bold;
34
+ margin-right: -1px;
35
+ padding: $base-spacing/2 $gutter/2;
36
+
37
+ &.is-active {
38
+ background-color: $tab-content-background;
39
+ margin-right: -1px;
40
+ }
41
+ }
42
+ }
43
+
44
+ a.vertical-tab-accordion-heading,
45
+ a.vertical-tab {
46
+ color: $dark-gray;
47
+ }
48
+
49
+ .vertical-tab:focus {
50
+ outline: none;
51
+ }
52
+
53
+ .vertical-tab-content-container {
54
+ display: block;
55
+ margin: 0 auto;
56
+
57
+ & a:focus {
58
+ outline: none;
59
+ }
60
+
61
+ @include media($vertical-tab-mode) {
62
+ @include inline-block;
63
+ @include size(80% $vertical-tabs-height);
64
+ background-color: $tab-content-background;
65
+ }
66
+ }
67
+
68
+ .vertical-tab-content {
69
+ background-color: $tab-content-background;
70
+ padding: $base-spacing $gutter;
71
+
72
+ @include media($vertical-tab-mode) {
73
+ border: none;
74
+ display: none;
75
+ }
76
+ }
77
+
78
+ .vertical-tab-accordion-heading {
79
+ background-color: $tab-inactive-color;
80
+ border-top: $tab-border;
81
+ cursor: pointer;
82
+ display: block;
83
+ font-weight: bold;
84
+ padding: $base-spacing/2 $gutter/2;
85
+
86
+ &:hover {
87
+ color: $base-accent-color;
88
+ }
89
+
90
+ &:first-child {
91
+ border-top: none;
92
+ }
93
+
94
+ &.is-active {
95
+ background: $tab-active-color;
96
+ border-bottom: none;
97
+ }
98
+
99
+ @include media($vertical-tab-mode) {
100
+ display: none;
101
+ }
102
+ }
103
+ }
104
+
105
+ // Based on code by Jett Miller jettmiller.net
@@ -0,0 +1,21 @@
1
+ .video {
2
+ margin: auto;
3
+
4
+ @include media($large-screen) {
5
+ width: 50%;
6
+ }
7
+ }
8
+
9
+ .video-wrapper {
10
+ position: relative;
11
+ padding-bottom: 56.25%; // For ratio 16:9. 75% if ratio is 4:3
12
+ height: 0;
13
+ }
14
+
15
+ iframe {
16
+ position: absolute;
17
+ top: 0;
18
+ left: 0;
19
+ width: 100%;
20
+ height: 100%;
21
+ }
@@ -0,0 +1,67 @@
1
+ <div class="refills-type-systems">
2
+
3
+ <a class="js-menu-trigger-refills refills-menu-anchor fixedsticky">
4
+ <img src="/images/menu.png" alt="Menu icon">
5
+ </a>
6
+ <div class="js-menu-screen-refills refills-menu-screen"></div>
7
+
8
+ <%= partial "refills-hero" %>
9
+ <%= partial "refills-menu" %>
10
+
11
+ <div id="example">
12
+
13
+ <div id="type-systems" class="refill">
14
+
15
+ <div class="refills-wrapper">
16
+ <div class="line-behind-text"><h6>Geometric</h6></div>
17
+ <div class="refill-smaller">
18
+ <div class="refill-centering"><%= partial "type_system_geometric" %></div>
19
+ </div>
20
+ <div class="refill-snippet"><%= code_for('type_system_geometric') %></div>
21
+ </div>
22
+
23
+ <div class="refills-wrapper">
24
+ <div class="line-behind-text"><h6>Rounded Sans Serif</h6></div>
25
+ <div class="refill-smaller">
26
+ <div class="refill-centering"><%= partial "type_system_rounded" %></div>
27
+ </div>
28
+ <div class="refill-snippet"><%= code_for('type_system_rounded') %></div>
29
+ </div>
30
+
31
+ <div class="refills-wrapper">
32
+ <div class="line-behind-text"><h6>Sans Serif</h6></div>
33
+ <div class="refill-smaller">
34
+ <div class="refill-centering"><%= partial "type_system_sans" %></div>
35
+ </div>
36
+ <div class="refill-snippet"><%= code_for('type_system_sans') %></div>
37
+ </div>
38
+
39
+ <div class="refills-wrapper">
40
+ <div class="line-behind-text"><h6>Serif</h6></div>
41
+ <div class="refill-smaller">
42
+ <div class="refill-centering"><%= partial "type_system_serif" %></div>
43
+ </div>
44
+ <div class="refill-snippet"><%= code_for('type_system_serif') %></div>
45
+ </div>
46
+
47
+ <div class="refills-wrapper">
48
+ <div class="line-behind-text"><h6>Slab Serif</h6></div>
49
+ <div class="refill-smaller">
50
+ <div class="refill-centering"><%= partial "type_system_slab" %></div>
51
+ </div>
52
+ <div class="refill-snippet"><%= code_for('type_system_slab') %></div>
53
+ </div>
54
+
55
+ <div class="refills-wrapper">
56
+ <div class="line-behind-text"><h6>Traditional</h6></div>
57
+ <div class="refill-smaller">
58
+ <div class="refill-centering"><%= partial "type_system_traditional" %></div>
59
+ </div>
60
+ <div class="refill-snippet"><%= code_for('type_system_traditional') %></div>
61
+ </div>
62
+
63
+ </div>
64
+ </div>
65
+ </div>
66
+
67
+ <%= partial "refills-page-scripts" %>
@@ -0,0 +1,9 @@
1
+ /*!
2
+ * ZeroClipboard
3
+ * The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.
4
+ * Copyright (c) 2013 Jon Rohan, James M. Greene
5
+ * Licensed MIT
6
+ * http://zeroclipboard.org/
7
+ * v1.2.3
8
+ */
9
+ !function(){"use strict";var a,b=function(){var a=/\-([a-z])/g,b=function(a,b){return b.toUpperCase()};return function(c){return c.replace(a,b)}}(),c=function(a,c){var d,e,f,g,h,i;if(window.getComputedStyle?d=window.getComputedStyle(a,null).getPropertyValue(c):(e=b(c),d=a.currentStyle?a.currentStyle[e]:a.style[e]),"cursor"===c&&(!d||"auto"===d))for(f=a.tagName.toLowerCase(),g=["a"],h=0,i=g.length;i>h;h++)if(f===g[h])return"pointer";return d},d=function(a){if(p.prototype._singleton){a||(a=window.event);var b;this!==window?b=this:a.target?b=a.target:a.srcElement&&(b=a.srcElement),p.prototype._singleton.setCurrent(b)}},e=function(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)},f=function(a,b,c){a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent&&a.detachEvent("on"+b,c)},g=function(a,b){if(a.addClass)return a.addClass(b),a;if(b&&"string"==typeof b){var c=(b||"").split(/\s+/);if(1===a.nodeType)if(a.className){for(var d=" "+a.className+" ",e=a.className,f=0,g=c.length;g>f;f++)d.indexOf(" "+c[f]+" ")<0&&(e+=" "+c[f]);a.className=e.replace(/^\s+|\s+$/g,"")}else a.className=b}return a},h=function(a,b){if(a.removeClass)return a.removeClass(b),a;if(b&&"string"==typeof b||void 0===b){var c=(b||"").split(/\s+/);if(1===a.nodeType&&a.className)if(b){for(var d=(" "+a.className+" ").replace(/[\n\t]/g," "),e=0,f=c.length;f>e;e++)d=d.replace(" "+c[e]+" "," ");a.className=d.replace(/^\s+|\s+$/g,"")}else a.className=""}return a},i=function(){var a,b,c,d=1;return"function"==typeof document.body.getBoundingClientRect&&(a=document.body.getBoundingClientRect(),b=a.right-a.left,c=document.body.offsetWidth,d=Math.round(100*(b/c))/100),d},j=function(a){var b={left:0,top:0,width:0,height:0,zIndex:999999999},d=c(a,"z-index");if(d&&"auto"!==d&&(b.zIndex=parseInt(d,10)),a.getBoundingClientRect){var e,f,g,h=a.getBoundingClientRect();"pageXOffset"in window&&"pageYOffset"in window?(e=window.pageXOffset,f=window.pageYOffset):(g=i(),e=Math.round(document.documentElement.scrollLeft/g),f=Math.round(document.documentElement.scrollTop/g));var j=document.documentElement.clientLeft||0,k=document.documentElement.clientTop||0;b.left=h.left+e-j,b.top=h.top+f-k,b.width="width"in h?h.width:h.right-h.left,b.height="height"in h?h.height:h.bottom-h.top}return b},k=function(a,b){var c=!(b&&b.useNoCache===!1);return c?(-1===a.indexOf("?")?"?":"&")+"nocache="+(new Date).getTime():""},l=function(a){var b=[],c=[];return a.trustedOrigins&&("string"==typeof a.trustedOrigins?c.push(a.trustedOrigins):"object"==typeof a.trustedOrigins&&"length"in a.trustedOrigins&&(c=c.concat(a.trustedOrigins))),a.trustedDomains&&("string"==typeof a.trustedDomains?c.push(a.trustedDomains):"object"==typeof a.trustedDomains&&"length"in a.trustedDomains&&(c=c.concat(a.trustedDomains))),c.length&&b.push("trustedOrigins="+encodeURIComponent(c.join(","))),"string"==typeof a.amdModuleId&&a.amdModuleId&&b.push("amdModuleId="+encodeURIComponent(a.amdModuleId)),"string"==typeof a.cjsModuleId&&a.cjsModuleId&&b.push("cjsModuleId="+encodeURIComponent(a.cjsModuleId)),b.join("&")},m=function(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;d>c;c++)if(b[c]===a)return c;return-1},n=function(a){if("string"==typeof a)throw new TypeError("ZeroClipboard doesn't accept query strings.");return a.length?a:[a]},o=function(a,b,c,d,e){e?window.setTimeout(function(){a.call(b,c,d)},0):a.call(b,c,d)},p=function(a,b){if(a&&(p.prototype._singleton||this).glue(a),p.prototype._singleton)return p.prototype._singleton;p.prototype._singleton=this,this.options={};for(var c in s)this.options[c]=s[c];for(var d in b)this.options[d]=b[d];this.handlers={},p.detectFlashSupport()&&v()},q=[];p.prototype.setCurrent=function(b){a=b,this.reposition();var d=b.getAttribute("title");d&&this.setTitle(d);var e=this.options.forceHandCursor===!0||"pointer"===c(b,"cursor");return r.call(this,e),this},p.prototype.setText=function(a){return a&&""!==a&&(this.options.text=a,this.ready()&&this.flashBridge.setText(a)),this},p.prototype.setTitle=function(a){return a&&""!==a&&this.htmlBridge.setAttribute("title",a),this},p.prototype.setSize=function(a,b){return this.ready()&&this.flashBridge.setSize(a,b),this},p.prototype.setHandCursor=function(a){return a="boolean"==typeof a?a:!!a,r.call(this,a),this.options.forceHandCursor=a,this};var r=function(a){this.ready()&&this.flashBridge.setHandCursor(a)};p.version="1.2.3";var s={moviePath:"ZeroClipboard.swf",trustedOrigins:null,text:null,hoverClass:"zeroclipboard-is-hover",activeClass:"zeroclipboard-is-active",allowScriptAccess:"sameDomain",useNoCache:!0,forceHandCursor:!1};p.setDefaults=function(a){for(var b in a)s[b]=a[b]},p.destroy=function(){p.prototype._singleton.unglue(q);var a=p.prototype._singleton.htmlBridge;a.parentNode.removeChild(a),delete p.prototype._singleton},p.detectFlashSupport=function(){var a=!1;if("function"==typeof ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash")&&(a=!0)}catch(b){}return!a&&navigator.mimeTypes["application/x-shockwave-flash"]&&(a=!0),a};var t=null,u=null,v=function(){var a,b,c=p.prototype._singleton,d=document.getElementById("global-zeroclipboard-html-bridge");if(!d){var e={};for(var f in c.options)e[f]=c.options[f];e.amdModuleId=t,e.cjsModuleId=u;var g=l(e),h=' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%"> <param name="movie" value="'+c.options.moviePath+k(c.options.moviePath,c.options)+'"/> <param name="allowScriptAccess" value="'+c.options.allowScriptAccess+'"/> <param name="scale" value="exactfit"/> <param name="loop" value="false"/> <param name="menu" value="false"/> <param name="quality" value="best" /> <param name="bgcolor" value="#ffffff"/> <param name="wmode" value="transparent"/> <param name="flashvars" value="'+g+'"/> <embed src="'+c.options.moviePath+k(c.options.moviePath,c.options)+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="100%" height="100%" name="global-zeroclipboard-flash-bridge" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+g+'" scale="exactfit"> </embed> </object>';d=document.createElement("div"),d.id="global-zeroclipboard-html-bridge",d.setAttribute("class","global-zeroclipboard-container"),d.setAttribute("data-clipboard-ready",!1),d.style.position="absolute",d.style.left="-9999px",d.style.top="-9999px",d.style.width="15px",d.style.height="15px",d.style.zIndex="9999",d.innerHTML=h,document.body.appendChild(d)}c.htmlBridge=d,a=document["global-zeroclipboard-flash-bridge"],a&&(b=a.length)&&(a=a[b-1]),c.flashBridge=a||d.children[0].lastElementChild};p.prototype.resetBridge=function(){return this.htmlBridge.style.left="-9999px",this.htmlBridge.style.top="-9999px",this.htmlBridge.removeAttribute("title"),this.htmlBridge.removeAttribute("data-clipboard-text"),h(a,this.options.activeClass),a=null,this.options.text=null,this},p.prototype.ready=function(){var a=this.htmlBridge.getAttribute("data-clipboard-ready");return"true"===a||a===!0},p.prototype.reposition=function(){if(!a)return!1;var b=j(a);return this.htmlBridge.style.top=b.top+"px",this.htmlBridge.style.left=b.left+"px",this.htmlBridge.style.width=b.width+"px",this.htmlBridge.style.height=b.height+"px",this.htmlBridge.style.zIndex=b.zIndex+1,this.setSize(b.width,b.height),this},p.dispatch=function(a,b){p.prototype._singleton.receiveEvent(a,b)},p.prototype.on=function(a,b){for(var c=a.toString().split(/\s/g),d=0;d<c.length;d++)a=c[d].toLowerCase().replace(/^on/,""),this.handlers[a]||(this.handlers[a]=b);return this.handlers.noflash&&!p.detectFlashSupport()&&this.receiveEvent("onNoFlash",null),this},p.prototype.addEventListener=p.prototype.on,p.prototype.off=function(a,b){for(var c=a.toString().split(/\s/g),d=0;d<c.length;d++){a=c[d].toLowerCase().replace(/^on/,"");for(var e in this.handlers)e===a&&this.handlers[e]===b&&delete this.handlers[e]}return this},p.prototype.removeEventListener=p.prototype.off,p.prototype.receiveEvent=function(b,c){b=b.toString().toLowerCase().replace(/^on/,"");var d=a,e=!0;switch(b){case"load":if(c&&parseFloat(c.flashVersion.replace(",",".").replace(/[^0-9\.]/gi,""))<10)return this.receiveEvent("onWrongFlash",{flashVersion:c.flashVersion}),void 0;this.htmlBridge.setAttribute("data-clipboard-ready",!0);break;case"mouseover":g(d,this.options.hoverClass);break;case"mouseout":h(d,this.options.hoverClass),this.resetBridge();break;case"mousedown":g(d,this.options.activeClass);break;case"mouseup":h(d,this.options.activeClass);break;case"datarequested":var f=d.getAttribute("data-clipboard-target"),i=f?document.getElementById(f):null;if(i){var j=i.value||i.textContent||i.innerText;j&&this.setText(j)}else{var k=d.getAttribute("data-clipboard-text");k&&this.setText(k)}e=!1;break;case"complete":this.options.text=null}if(this.handlers[b]){var l=this.handlers[b];"string"==typeof l&&"function"==typeof window[l]&&(l=window[l]),"function"==typeof l&&o(l,d,this,c,e)}},p.prototype.glue=function(a){a=n(a);for(var b=0;b<a.length;b++)-1==m(a[b],q)&&(q.push(a[b]),e(a[b],"mouseover",d));return this},p.prototype.unglue=function(a){a=n(a);for(var b=0;b<a.length;b++){f(a[b],"mouseover",d);var c=m(a[b],q);-1!=c&&q.splice(c,1)}return this},"function"==typeof define&&define.amd?define(["require","exports","module"],function(a,b,c){return t=c&&c.id||null,p}):"object"==typeof module&&module&&"object"==typeof module.exports&&module.exports?(u=module.id||null,module.exports=p):window.ZeroClipboard=p}();
@@ -0,0 +1,185 @@
1
+ ;(function( win, $ ) {
2
+
3
+ function featureTest( property, value, noPrefixes ) {
4
+ // Thanks Modernizr! https://github.com/phistuck/Modernizr/commit/3fb7217f5f8274e2f11fe6cfeda7cfaf9948a1f5
5
+ var prop = property + ':',
6
+ el = document.createElement( 'test' ),
7
+ mStyle = el.style;
8
+
9
+ if( !noPrefixes ) {
10
+ mStyle.cssText = prop + [ '-webkit-', '-moz-', '-ms-', '-o-', '' ].join( value + ';' + prop ) + value + ';';
11
+ } else {
12
+ mStyle.cssText = prop + value;
13
+ }
14
+ return mStyle[ property ].indexOf( value ) !== -1;
15
+ }
16
+
17
+ function getPx( unit ) {
18
+ return parseInt( unit, 10 ) || 0;
19
+ }
20
+
21
+ var S = {
22
+ classes: {
23
+ plugin: 'fixedsticky',
24
+ active: 'fixedsticky-on',
25
+ inactive: 'fixedsticky-off',
26
+ clone: 'fixedsticky-dummy',
27
+ withoutFixedFixed: 'fixedsticky-withoutfixedfixed'
28
+ },
29
+ keys: {
30
+ offset: 'fixedStickyOffset',
31
+ position: 'fixedStickyPosition'
32
+ },
33
+ tests: {
34
+ sticky: featureTest( 'position', 'sticky' ),
35
+ fixed: featureTest( 'position', 'fixed', true )
36
+ },
37
+ // Thanks jQuery!
38
+ getScrollTop: function() {
39
+ var prop = 'pageYOffset',
40
+ method = 'scrollTop';
41
+ return win ? (prop in win) ? win[ prop ] :
42
+ win.document.documentElement[ method ] :
43
+ win.document.body[ method ];
44
+ },
45
+ bypass: function() {
46
+ // Check native sticky, check fixed and if fixed-fixed is also included on the page and is supported
47
+ return ( S.tests.sticky && !S.optOut ) ||
48
+ !S.tests.fixed ||
49
+ win.FixedFixed && !$( win.document.documentElement ).hasClass( 'fixed-supported' );
50
+ },
51
+ update: function( el ) {
52
+ if( !el.offsetWidth ) { return; }
53
+
54
+ var $el = $( el ),
55
+ height = $el.outerHeight(),
56
+ initialOffset = $el.data( S.keys.offset ),
57
+ scroll = S.getScrollTop(),
58
+ isAlreadyOn = $el.is( '.' + S.classes.active ),
59
+ toggle = function( turnOn ) {
60
+ $el[ turnOn ? 'addClass' : 'removeClass' ]( S.classes.active )
61
+ [ !turnOn ? 'addClass' : 'removeClass' ]( S.classes.inactive );
62
+ },
63
+ viewportHeight = $( window ).height(),
64
+ position = $el.data( S.keys.position ),
65
+ skipSettingToFixed,
66
+ elTop,
67
+ elBottom,
68
+ $parent = $el.parent(),
69
+ parentOffset = $parent.offset().top,
70
+ parentHeight = $parent.outerHeight();
71
+
72
+ if( initialOffset === undefined ) {
73
+ initialOffset = $el.offset().top;
74
+ $el.data( S.keys.offset, initialOffset );
75
+ $el.after( $( '<div>' ).addClass( S.classes.clone ).height( height ) );
76
+ }
77
+
78
+ if( !position ) {
79
+ // Some browsers require fixed/absolute to report accurate top/left values.
80
+ skipSettingToFixed = $el.css( 'top' ) !== 'auto' || $el.css( 'bottom' ) !== 'auto';
81
+
82
+ if( !skipSettingToFixed ) {
83
+ $el.css( 'position', 'fixed' );
84
+ }
85
+
86
+ position = {
87
+ top: $el.css( 'top' ) !== 'auto',
88
+ bottom: $el.css( 'bottom' ) !== 'auto'
89
+ };
90
+
91
+ if( !skipSettingToFixed ) {
92
+ $el.css( 'position', '' );
93
+ }
94
+
95
+ $el.data( S.keys.position, position );
96
+ }
97
+
98
+ function isFixedToTop() {
99
+ var offsetTop = scroll + elTop;
100
+
101
+ // Initial Offset Top
102
+ return initialOffset < offsetTop &&
103
+ // Container Bottom
104
+ offsetTop + height <= parentOffset + parentHeight;
105
+ }
106
+
107
+ function isFixedToBottom() {
108
+ // Initial Offset Top + Height
109
+ return initialOffset + ( height || 0 ) > scroll + viewportHeight - elBottom &&
110
+ // Container Top
111
+ scroll + viewportHeight - elBottom >= parentOffset + ( height || 0 );
112
+ }
113
+
114
+ elTop = getPx( $el.css( 'top' ) );
115
+ elBottom = getPx( $el.css( 'bottom' ) );
116
+
117
+ if( position.top && isFixedToTop() || position.bottom && isFixedToBottom() ) {
118
+ if( !isAlreadyOn ) {
119
+ toggle( true );
120
+ }
121
+ } else {
122
+ if( isAlreadyOn ) {
123
+ toggle( false );
124
+ }
125
+ }
126
+ },
127
+ destroy: function( el ) {
128
+ var $el = $( el );
129
+ if (S.bypass()) {
130
+ return;
131
+ }
132
+
133
+ $( win ).unbind( '.fixedsticky' );
134
+
135
+ return $el.each(function() {
136
+ $( this )
137
+ .removeData( [ S.keys.offset, S.keys.position ] )
138
+ .removeClass( S.classes.active )
139
+ .removeClass( S.classes.inactive )
140
+ .next( '.' + S.classes.clone ).remove();
141
+ });
142
+ },
143
+ init: function( el ) {
144
+ var $el = $( el );
145
+
146
+ if( S.bypass() ) {
147
+ return;
148
+ }
149
+
150
+ return $el.each(function() {
151
+ var _this = this;
152
+ $( win ).bind( 'scroll.fixedsticky', function() {
153
+ S.update( _this );
154
+ });
155
+
156
+ S.update( this );
157
+
158
+ $( win ).bind( 'resize.fixedsticky', function() {
159
+ if( $el.is( '.' + S.classes.active ) ) {
160
+ S.update( _this );
161
+ }
162
+ });
163
+ });
164
+ }
165
+ };
166
+
167
+ win.FixedSticky = S;
168
+
169
+ // Plugin
170
+ $.fn.fixedsticky = function( method ) {
171
+ if ( typeof S[ method ] === 'function') {
172
+ return S[ method ].call( S, this);
173
+ } else if ( typeof method === 'object' || ! method ) {
174
+ return S.init.call( S, this );
175
+ } else {
176
+ throw new Error( 'Method `' + method + '` does not exist on jQuery.fixedsticky' );
177
+ }
178
+ };
179
+
180
+ // Add fallback when fixed-fixed is not available.
181
+ if( !win.FixedFixed ) {
182
+ $( win.document.documentElement ).addClass( S.classes.withoutFixedFixed );
183
+ }
184
+
185
+ })( this, jQuery );
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Prism: Lightweight, robust, elegant syntax highlighting
3
+ * MIT license http://www.opensource.org/licenses/mit-license.php/
4
+ * @author Lea Verou http://lea.verou.me
5
+ */(function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){var n=t.util.type(e);switch(n){case"Object":var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=t.util.clone(e[i]));return r;case"Array":return e.slice()}return e}},languages:{extend:function(e,n){var r=t.util.clone(t.languages[e]);for(var i in n)r[i]=n[i];return r},insertBefore:function(e,n,r,i){i=i||t.languages;var s=i[e],o={};for(var u in s)if(s.hasOwnProperty(u)){if(u==n)for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);o[u]=s[u]}return i[e]=o},DFS:function(e,n){for(var r in e){n.call(e,r,e[r]);t.util.type(e)==="Object"&&t.languages.DFS(e[r],n)}}},highlightAll:function(e,n){var r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');for(var i=0,s;s=r[i++];)t.highlightElement(s,e===!0,n)},highlightElement:function(r,i,s){var o,u,a=r;while(a&&!e.test(a.className))a=a.parentNode;if(a){o=(a.className.match(e)||[,""])[1];u=t.languages[o]}if(!u)return;r.className=r.className.replace(e,"").replace(/\s+/g," ")+" language-"+o;a=r.parentNode;/pre/i.test(a.nodeName)&&(a.className=a.className.replace(e,"").replace(/\s+/g," ")+" language-"+o);var f=r.textContent;if(!f)return;f=f.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ");var l={element:r,language:o,grammar:u,code:f};t.hooks.run("before-highlight",l);if(i&&self.Worker){var c=new Worker(t.filename);c.onmessage=function(e){l.highlightedCode=n.stringify(JSON.parse(e.data),o);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(l.element);t.hooks.run("after-highlight",l)};c.postMessage(JSON.stringify({language:l.language,code:l.code}))}else{l.highlightedCode=t.highlight(l.code,l.grammar,l.language);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(r);t.hooks.run("after-highlight",l)}},highlight:function(e,r,i){return n.stringify(t.tokenize(e,r),i)},tokenize:function(e,n,r){var i=t.Token,s=[e],o=n.rest;if(o){for(var u in o)n[u]=o[u];delete n.rest}e:for(var u in n){if(!n.hasOwnProperty(u)||!n[u])continue;var a=n[u],f=a.inside,l=!!a.lookbehind,c=0;a=a.pattern||a;for(var h=0;h<s.length;h++){var p=s[h];if(s.length>e.length)break e;if(p instanceof i)continue;a.lastIndex=0;var d=a.exec(p);if(d){l&&(c=d[1].length);var v=d.index-1+c,d=d[0].slice(c),m=d.length,g=v+m,y=p.slice(0,v+1),b=p.slice(g+1),w=[h,1];y&&w.push(y);var E=new i(u,f?t.tokenize(d,f):d);w.push(E);b&&w.push(b);Array.prototype.splice.apply(s,w)}}}return s},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[];r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(!r||!r.length)return;for(var i=0,s;s=r[i++];)s(n)}}},n=t.Token=function(e,t){this.type=e;this.content=t};n.stringify=function(e,r,i){if(typeof e=="string")return e;if(Object.prototype.toString.call(e)=="[object Array]")return e.map(function(t){return n.stringify(t,r,e)}).join("");var s={type:e.type,content:n.stringify(e.content,r,i),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:i};s.type=="comment"&&(s.attributes.spellcheck="true");t.hooks.run("wrap",s);var o="";for(var u in s.attributes)o+=u+'="'+(s.attributes[u]||"")+'"';return"<"+s.tag+' class="'+s.classes.join(" ")+'" '+o+">"+s.content+"</"+s.tag+">"};if(!self.document){self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.tokenize(i,t.languages[r])));self.close()},!1);return}var r=document.getElementsByTagName("script");r=r[r.length-1];if(r){t.filename=r.src;document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)}})();;
6
+ Prism.languages.markup={comment:/&lt;!--[\w\W]*?-->/g,prolog:/&lt;\?.+?\?>/,doctype:/&lt;!DOCTYPE.+?>/,cdata:/&lt;!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/&lt;\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^&lt;\/?[\w:-]+/i,inside:{punctuation:/^&lt;\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/&amp;#?[\da-z]{1,8};/gi};Prism.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&amp;/,"&"))});;
7
+ Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/ig,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,ignore:/&(lt|gt|amp);/gi,punctuation:/[\{\};:]/g};Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/(&lt;|<)style[\w\W]*?(>|&gt;)[\w\W]*?(&lt;|<)\/style(>|&gt;)/ig,inside:{tag:{pattern:/(&lt;|<)style[\w\W]*?(>|&gt;)|(&lt;|<)\/style(>|&gt;)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css}}});;
8
+ Prism.languages.clike={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|(^|[^:])\/\/.*?(\r?\n|$))/g,lookbehind:!0},string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/ig,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/ig,inside:{punctuation:/\(/}}, number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|&lt;=?|>=?|={1,3}|(&amp;){1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g};
9
+ ;
10
+ Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(var|let|if|else|while|do|for|return|in|instanceof|function|new|with|typeof|try|throw|catch|finally|null|break|continue)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g});Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}});Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(&lt;|<)script[\w\W]*?(>|&gt;)[\w\W]*?(&lt;|<)\/script(>|&gt;)/ig,inside:{tag:{pattern:/(&lt;|<)script[\w\W]*?(>|&gt;)|(&lt;|<)\/script(>|&gt;)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}});
11
+ ;
12
+ Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/g,lookbehind:!0},atrule:/@[\w-]+(?=\s+(\(|\{|;))/gi,url:/([-a-z]+-)*url(?=\()/gi,selector:/([^@;\{\}\(\)]?([^@;\{\}\(\)]|&amp;|\#\{\$[-_\w]+\})+)(?=\s*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/gm});Prism.languages.insertBefore("scss","atrule",{keyword:/@(if|else if|else|for|each|while|import|extend|debug|warn|mixin|include|function|return)|(?=@for\s+\$[-_\w]+\s)+from/i});Prism.languages.insertBefore("scss","property",{variable:/((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i});Prism.languages.insertBefore("scss","ignore",{placeholder:/%[-_\w]+/i,statement:/\B!(default|optional)\b/gi,"boolean":/\b(true|false)\b/g,"null":/\b(null)\b/g,operator:/\s+([-+]{1,2}|={1,2}|!=|\|?\||\?|\*|\/|\%)\s+/g});
13
+ ;
@@ -0,0 +1,125 @@
1
+ /* =============================================================
2
+
3
+ Smooth Scroll 2.9
4
+ Animate scrolling to anchor links, by Chris Ferdinandi.
5
+ http://gomakethings.com
6
+
7
+ Easing support contributed by Willem Liu.
8
+ https://github.com/willemliu
9
+
10
+ Easing functions forked from Gaëtan Renaudeau.
11
+ https://gist.github.com/gre/1650294
12
+
13
+ Free to use under the MIT License.
14
+ http://gomakethings.com/mit/
15
+
16
+ * ============================================================= */
17
+
18
+ (function() {
19
+
20
+ 'use strict';
21
+
22
+ // Feature Test
23
+ if ( 'querySelector' in document && 'addEventListener' in window && Array.prototype.forEach ) {
24
+
25
+ // Function to animate the scroll
26
+ var smoothScroll = function (anchor, duration, easing) {
27
+
28
+ // Functions to control easing
29
+ var easingPattern = function (type, time) {
30
+ if ( type == 'easeInQuad' ) return time * time; // accelerating from zero velocity
31
+ if ( type == 'easeOutQuad' ) return time * (2 - time); // decelerating to zero velocity
32
+ if ( type == 'easeInOutQuad' ) return time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration
33
+ if ( type == 'easeInCubic' ) return time * time * time; // accelerating from zero velocity
34
+ if ( type == 'easeOutCubic' ) return (--time) * time * time + 1; // decelerating to zero velocity
35
+ if ( type == 'easeInOutCubic' ) return time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration
36
+ if ( type == 'easeInQuart' ) return time * time * time * time; // accelerating from zero velocity
37
+ if ( type == 'easeOutQuart' ) return 1 - (--time) * time * time * time; // decelerating to zero velocity
38
+ if ( type == 'easeInOutQuart' ) return time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration
39
+ if ( type == 'easeInQuint' ) return time * time * time * time * time; // accelerating from zero velocity
40
+ if ( type == 'easeOutQuint' ) return 1 + (--time) * time * time * time * time; // decelerating to zero velocity
41
+ if ( type == 'easeInOutQuint' ) return time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration
42
+ return time; // no easing, no acceleration
43
+ };
44
+
45
+ // Calculate how far and how fast to scroll
46
+ // http://www.quirksmode.org/blog/archives/2008/01/using_the_assig.html
47
+ var startLocation = window.pageYOffset;
48
+ var endLocation = function (anchor) {
49
+ var distance = 0;
50
+ if (anchor.offsetParent) {
51
+ do {
52
+ distance += anchor.offsetTop;
53
+ anchor = anchor.offsetParent;
54
+ } while (anchor);
55
+ }
56
+ return distance;
57
+ };
58
+ var distance = endLocation(anchor) - startLocation;
59
+ var increments = distance / (duration / 16);
60
+ var timeLapsed = 0;
61
+ var percentage, position, stopAnimation;
62
+
63
+ // Scroll the page by an increment, and check if it's time to stop
64
+ var animateScroll = function () {
65
+ timeLapsed += 16;
66
+ percentage = ( timeLapsed / duration );
67
+ percentage = ( percentage > 1 ) ? 1 : percentage;
68
+ position = startLocation + ( distance * easingPattern(easing, percentage) );
69
+ window.scrollTo(0, position);
70
+ stopAnimation();
71
+ };
72
+
73
+ // Stop the animation
74
+ if ( increments >= 0 ) { // If scrolling down
75
+ // Stop animation when you reach the anchor OR the bottom of the page
76
+ stopAnimation = function () {
77
+ var travelled = window.pageYOffset;
78
+ if ( (travelled >= (endLocation(anchor) - increments)) || ((window.innerHeight + travelled) >= document.body.offsetHeight) ) {
79
+ clearInterval(runAnimation);
80
+ }
81
+ };
82
+ } else { // If scrolling up
83
+ // Stop animation when you reach the anchor OR the top of the page
84
+ stopAnimation = function () {
85
+ var travelled = window.pageYOffset;
86
+ if ( travelled <= endLocation(anchor) || travelled <= 0 ) {
87
+ clearInterval(runAnimation);
88
+ }
89
+ };
90
+ }
91
+
92
+ // Loop the animation function
93
+ var runAnimation = setInterval(animateScroll, 16);
94
+
95
+ };
96
+
97
+ // For each smooth scroll link
98
+ var scrollToggle = document.querySelectorAll('.scroll');
99
+ [].forEach.call(scrollToggle, function (toggle) {
100
+
101
+ // When the smooth scroll link is clicked
102
+ toggle.addEventListener('click', function(e) {
103
+
104
+ // Prevent the default link behavior
105
+ e.preventDefault();
106
+
107
+ // Get anchor link and calculate distance from the top
108
+ var dataID = toggle.getAttribute('href');
109
+ var dataTarget = document.querySelector(dataID);
110
+ var dataSpeed = toggle.getAttribute('data-speed');
111
+ var dataEasing = toggle.getAttribute('data-easing'); // WL: Added easing attribute support.
112
+
113
+ // If the anchor exists
114
+ if (dataTarget) {
115
+ // Scroll to the anchor
116
+ smoothScroll(dataTarget, dataSpeed || 500, dataEasing || 'easeInOutCubic');
117
+ }
118
+
119
+ }, false);
120
+
121
+ });
122
+
123
+ }
124
+
125
+ })();
@@ -0,0 +1,22 @@
1
+ .fixedsticky {
2
+ position: -webkit-sticky;
3
+ position: -moz-sticky;
4
+ position: -ms-sticky;
5
+ position: -o-sticky;
6
+ position: sticky;
7
+ }
8
+ /* When position: sticky is supported but native behavior is ignored */
9
+ .fixedsticky-withoutfixedfixed .fixedsticky-off,
10
+ .fixed-supported .fixedsticky-off {
11
+ position: static;
12
+ }
13
+ .fixedsticky-withoutfixedfixed .fixedsticky-on,
14
+ .fixed-supported .fixedsticky-on {
15
+ position: fixed;
16
+ }
17
+ .fixedsticky-dummy {
18
+ display: none;
19
+ }
20
+ .fixedsticky-on + .fixedsticky-dummy {
21
+ display: block;
22
+ }