jekyll-chalk 0.1.0 → 0.1.1
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.
- checksums.yaml +4 -4
- data/LICENSE.txt +21 -0
- data/README.md +89 -0
- data/_includes/footer.html +7 -0
- data/_includes/head.html +33 -0
- data/_includes/image.html +3 -0
- data/_includes/javascripts.html +21 -0
- data/_includes/navigation.html +75 -0
- data/_layouts/articles_by_tag.html +38 -0
- data/_layouts/default.html +16 -0
- data/_layouts/page.html +5 -0
- data/_layouts/post.html +71 -0
- data/assets/bower/fluidbox/.bower.json +44 -0
- data/assets/bower/fluidbox/Gruntfile.js +8 -0
- data/assets/bower/fluidbox/LICENSE.md +23 -0
- data/assets/bower/fluidbox/README.md +396 -0
- data/assets/bower/fluidbox/bower.json +35 -0
- data/assets/bower/fluidbox/demo/css/styles.min.css +2 -0
- data/assets/bower/fluidbox/demo/css/styles.min.css.map +1 -0
- data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.eot +0 -0
- data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.svg +233 -0
- data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.ttf +0 -0
- data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.woff +0 -0
- data/assets/bower/fluidbox/demo/fonts/fontello.eot +0 -0
- data/assets/bower/fluidbox/demo/fonts/fontello.svg +13 -0
- data/assets/bower/fluidbox/demo/fonts/fontello.ttf +0 -0
- data/assets/bower/fluidbox/demo/fonts/fontello.woff +0 -0
- data/assets/bower/fluidbox/demo/index.html +758 -0
- data/assets/bower/fluidbox/demo/src/css/styles.scss +1131 -0
- data/assets/bower/fluidbox/dist/css/fluidbox.min.css +2 -0
- data/assets/bower/fluidbox/dist/css/fluidbox.min.css.map +1 -0
- data/assets/bower/fluidbox/dist/js/jquery.fluidbox.min.js +1 -0
- data/assets/bower/fluidbox/grunt/aliases.yaml +20 -0
- data/assets/bower/fluidbox/grunt/clean.js +5 -0
- data/assets/bower/fluidbox/grunt/concurrent.js +33 -0
- data/assets/bower/fluidbox/grunt/jshint.js +10 -0
- data/assets/bower/fluidbox/grunt/postcss.js +47 -0
- data/assets/bower/fluidbox/grunt/sass.js +42 -0
- data/assets/bower/fluidbox/grunt/uglify.js +7 -0
- data/assets/bower/fluidbox/grunt/watch.js +28 -0
- data/assets/bower/fluidbox/index.html +8 -0
- data/assets/bower/fluidbox/license.txt +21 -0
- data/assets/bower/fluidbox/src/css/_fluidbox.scss +95 -0
- data/assets/bower/fluidbox/src/css/fluidbox.scss +2 -0
- data/assets/bower/fluidbox/src/js/jquery.fluidbox.js +722 -0
- data/assets/bower/jquery/.bower.json +25 -0
- data/assets/bower/jquery/AUTHORS.txt +295 -0
- data/assets/bower/jquery/LICENSE.txt +36 -0
- data/assets/bower/jquery/README.md +65 -0
- data/assets/bower/jquery/bower.json +14 -0
- data/assets/bower/jquery/dist/core.js +482 -0
- data/assets/bower/jquery/dist/jquery.js +10220 -0
- data/assets/bower/jquery/dist/jquery.min.js +4 -0
- data/assets/bower/jquery/dist/jquery.min.map +1 -0
- data/assets/bower/jquery/dist/jquery.slim.js +8107 -0
- data/assets/bower/jquery/dist/jquery.slim.min.js +4 -0
- data/assets/bower/jquery/dist/jquery.slim.min.map +1 -0
- data/assets/bower/jquery/external/sizzle/LICENSE.txt +36 -0
- data/assets/bower/jquery/external/sizzle/dist/sizzle.js +2272 -0
- data/assets/bower/jquery/external/sizzle/dist/sizzle.min.js +3 -0
- data/assets/bower/jquery/external/sizzle/dist/sizzle.min.map +1 -0
- data/assets/bower/jquery/src/.eslintrc.json +18 -0
- data/assets/bower/jquery/src/ajax.js +855 -0
- data/assets/bower/jquery/src/ajax/jsonp.js +102 -0
- data/assets/bower/jquery/src/ajax/load.js +76 -0
- data/assets/bower/jquery/src/ajax/parseXML.js +30 -0
- data/assets/bower/jquery/src/ajax/script.js +77 -0
- data/assets/bower/jquery/src/ajax/var/location.js +5 -0
- data/assets/bower/jquery/src/ajax/var/nonce.js +7 -0
- data/assets/bower/jquery/src/ajax/var/rquery.js +5 -0
- data/assets/bower/jquery/src/ajax/xhr.js +169 -0
- data/assets/bower/jquery/src/attributes.js +13 -0
- data/assets/bower/jquery/src/attributes/attr.js +140 -0
- data/assets/bower/jquery/src/attributes/classes.js +174 -0
- data/assets/bower/jquery/src/attributes/prop.js +143 -0
- data/assets/bower/jquery/src/attributes/support.js +33 -0
- data/assets/bower/jquery/src/attributes/val.js +188 -0
- data/assets/bower/jquery/src/callbacks.js +234 -0
- data/assets/bower/jquery/src/core.js +482 -0
- data/assets/bower/jquery/src/core/DOMEval.js +16 -0
- data/assets/bower/jquery/src/core/access.js +70 -0
- data/assets/bower/jquery/src/core/init.js +127 -0
- data/assets/bower/jquery/src/core/parseHTML.js +65 -0
- data/assets/bower/jquery/src/core/ready-no-deferred.js +105 -0
- data/assets/bower/jquery/src/core/ready.js +95 -0
- data/assets/bower/jquery/src/core/readyException.js +13 -0
- data/assets/bower/jquery/src/core/stripAndCollapse.js +14 -0
- data/assets/bower/jquery/src/core/support.js +20 -0
- data/assets/bower/jquery/src/core/var/rsingleTag.js +6 -0
- data/assets/bower/jquery/src/css.js +426 -0
- data/assets/bower/jquery/src/css/addGetHookIf.js +26 -0
- data/assets/bower/jquery/src/css/adjustCSS.js +71 -0
- data/assets/bower/jquery/src/css/curCSS.js +59 -0
- data/assets/bower/jquery/src/css/hiddenVisibleSelectors.js +15 -0
- data/assets/bower/jquery/src/css/showHide.js +105 -0
- data/assets/bower/jquery/src/css/support.js +89 -0
- data/assets/bower/jquery/src/css/var/cssExpand.js +5 -0
- data/assets/bower/jquery/src/css/var/getStyles.js +17 -0
- data/assets/bower/jquery/src/css/var/isHiddenWithinTree.js +34 -0
- data/assets/bower/jquery/src/css/var/rmargin.js +5 -0
- data/assets/bower/jquery/src/css/var/rnumnonpx.js +7 -0
- data/assets/bower/jquery/src/css/var/swap.js +26 -0
- data/assets/bower/jquery/src/data.js +179 -0
- data/assets/bower/jquery/src/data/Data.js +161 -0
- data/assets/bower/jquery/src/data/var/acceptData.js +19 -0
- data/assets/bower/jquery/src/data/var/dataPriv.js +7 -0
- data/assets/bower/jquery/src/data/var/dataUser.js +7 -0
- data/assets/bower/jquery/src/deferred.js +389 -0
- data/assets/bower/jquery/src/deferred/exceptionHook.js +21 -0
- data/assets/bower/jquery/src/deprecated.js +30 -0
- data/assets/bower/jquery/src/dimensions.js +56 -0
- data/assets/bower/jquery/src/effects.js +693 -0
- data/assets/bower/jquery/src/effects/Tween.js +123 -0
- data/assets/bower/jquery/src/effects/animatedSelector.js +15 -0
- data/assets/bower/jquery/src/event.js +745 -0
- data/assets/bower/jquery/src/event/ajax.js +22 -0
- data/assets/bower/jquery/src/event/alias.js +29 -0
- data/assets/bower/jquery/src/event/focusin.js +55 -0
- data/assets/bower/jquery/src/event/support.js +11 -0
- data/assets/bower/jquery/src/event/trigger.js +185 -0
- data/assets/bower/jquery/src/exports/amd.js +26 -0
- data/assets/bower/jquery/src/exports/global.js +34 -0
- data/assets/bower/jquery/src/jquery.js +41 -0
- data/assets/bower/jquery/src/manipulation.js +486 -0
- data/assets/bower/jquery/src/manipulation/_evalUrl.js +23 -0
- data/assets/bower/jquery/src/manipulation/buildFragment.js +104 -0
- data/assets/bower/jquery/src/manipulation/getAll.js +31 -0
- data/assets/bower/jquery/src/manipulation/setGlobalEval.js +22 -0
- data/assets/bower/jquery/src/manipulation/support.js +35 -0
- data/assets/bower/jquery/src/manipulation/var/rcheckableType.js +5 -0
- data/assets/bower/jquery/src/manipulation/var/rscriptType.js +5 -0
- data/assets/bower/jquery/src/manipulation/var/rtagName.js +5 -0
- data/assets/bower/jquery/src/manipulation/wrapMap.js +29 -0
- data/assets/bower/jquery/src/offset.js +232 -0
- data/assets/bower/jquery/src/queue.js +145 -0
- data/assets/bower/jquery/src/queue/delay.js +24 -0
- data/assets/bower/jquery/src/selector-native.js +237 -0
- data/assets/bower/jquery/src/selector-sizzle.js +19 -0
- data/assets/bower/jquery/src/selector.js +3 -0
- data/assets/bower/jquery/src/serialize.js +130 -0
- data/assets/bower/jquery/src/traversing.js +178 -0
- data/assets/bower/jquery/src/traversing/findFilter.js +106 -0
- data/assets/bower/jquery/src/traversing/var/dir.js +22 -0
- data/assets/bower/jquery/src/traversing/var/rneedsContext.js +8 -0
- data/assets/bower/jquery/src/traversing/var/siblings.js +17 -0
- data/assets/bower/jquery/src/var/ObjectFunctionString.js +7 -0
- data/assets/bower/jquery/src/var/arr.js +5 -0
- data/assets/bower/jquery/src/var/class2type.js +6 -0
- data/assets/bower/jquery/src/var/concat.js +7 -0
- data/assets/bower/jquery/src/var/document.js +5 -0
- data/assets/bower/jquery/src/var/documentElement.js +7 -0
- data/assets/bower/jquery/src/var/fnToString.js +7 -0
- data/assets/bower/jquery/src/var/getProto.js +5 -0
- data/assets/bower/jquery/src/var/hasOwn.js +7 -0
- data/assets/bower/jquery/src/var/indexOf.js +7 -0
- data/assets/bower/jquery/src/var/pnum.js +5 -0
- data/assets/bower/jquery/src/var/push.js +7 -0
- data/assets/bower/jquery/src/var/rcssNum.js +9 -0
- data/assets/bower/jquery/src/var/rnothtmlwhite.js +8 -0
- data/assets/bower/jquery/src/var/slice.js +7 -0
- data/assets/bower/jquery/src/var/support.js +6 -0
- data/assets/bower/jquery/src/var/toString.js +7 -0
- data/assets/bower/jquery/src/wrap.js +77 -0
- data/assets/bower/scrollreveal/.bower.json +36 -0
- data/assets/bower/scrollreveal/CHANGELOG.md +268 -0
- data/assets/bower/scrollreveal/LICENSE.md +12 -0
- data/assets/bower/scrollreveal/README.md +413 -0
- data/assets/bower/scrollreveal/bower.json +24 -0
- data/assets/bower/scrollreveal/dist/scrollreveal.js +860 -0
- data/assets/bower/scrollreveal/dist/scrollreveal.min.js +1 -0
- data/assets/bower/turbolinks5/.blade.yml +15 -0
- data/assets/bower/turbolinks5/.bower.json +14 -0
- data/assets/bower/turbolinks5/.gitignore +2 -0
- data/assets/bower/turbolinks5/CONDUCT.md +79 -0
- data/assets/bower/turbolinks5/Gemfile +9 -0
- data/assets/bower/turbolinks5/LICENSE +20 -0
- data/assets/bower/turbolinks5/README.md +435 -0
- data/assets/bower/turbolinks5/bin/blade +16 -0
- data/assets/bower/turbolinks5/bin/rackup +16 -0
- data/assets/bower/turbolinks5/config.ru +8 -0
- data/assets/bower/turbolinks5/dist/turbolinks.js +6 -0
- data/assets/bower/turbolinks5/package.json +31 -0
- data/assets/bower/turbolinks5/src/turbolinks/BANNER.js.erb +4 -0
- data/assets/bower/turbolinks5/src/turbolinks/VERSION +1 -0
- data/assets/bower/turbolinks5/src/turbolinks/browser_adapter.coffee +61 -0
- data/assets/bower/turbolinks5/src/turbolinks/compatibility.coffee +30 -0
- data/assets/bower/turbolinks5/src/turbolinks/controller.coffee +239 -0
- data/assets/bower/turbolinks5/src/turbolinks/error_renderer.coffee +21 -0
- data/assets/bower/turbolinks5/src/turbolinks/head_details.coffee +51 -0
- data/assets/bower/turbolinks5/src/turbolinks/helpers.coffee +51 -0
- data/assets/bower/turbolinks5/src/turbolinks/history.coffee +46 -0
- data/assets/bower/turbolinks5/src/turbolinks/http_request.coffee +88 -0
- data/assets/bower/turbolinks5/src/turbolinks/index.coffee +16 -0
- data/assets/bower/turbolinks5/src/turbolinks/location.coffee +70 -0
- data/assets/bower/turbolinks5/src/turbolinks/progress_bar.coffee +83 -0
- data/assets/bower/turbolinks5/src/turbolinks/renderer.coffee +27 -0
- data/assets/bower/turbolinks5/src/turbolinks/scroll_manager.coffee +27 -0
- data/assets/bower/turbolinks5/src/turbolinks/snapshot.coffee +47 -0
- data/assets/bower/turbolinks5/src/turbolinks/snapshot_cache.coffee +43 -0
- data/assets/bower/turbolinks5/src/turbolinks/snapshot_renderer.coffee +88 -0
- data/assets/bower/turbolinks5/src/turbolinks/start.coffee +18 -0
- data/assets/bower/turbolinks5/src/turbolinks/view.coffee +34 -0
- data/assets/bower/turbolinks5/src/turbolinks/visit.coffee +162 -0
- data/assets/bower/turbolinks5/test/src/fixtures/additional_assets.html +12 -0
- data/assets/bower/turbolinks5/test/src/fixtures/body_script.html +18 -0
- data/assets/bower/turbolinks5/test/src/fixtures/eval_false_script.html +18 -0
- data/assets/bower/turbolinks5/test/src/fixtures/head_script.html +18 -0
- data/assets/bower/turbolinks5/test/src/fixtures/navigation.html +21 -0
- data/assets/bower/turbolinks5/test/src/fixtures/one.html +12 -0
- data/assets/bower/turbolinks5/test/src/fixtures/rendering.html +20 -0
- data/assets/bower/turbolinks5/test/src/fixtures/tracked_asset_change.html +11 -0
- data/assets/bower/turbolinks5/test/src/fixtures/visit.html +14 -0
- data/assets/bower/turbolinks5/test/src/head.html.erb +1 -0
- data/assets/bower/turbolinks5/test/src/helpers/replicant_helpers.coffee +18 -0
- data/assets/bower/turbolinks5/test/src/modules/navigation_tests.coffee +75 -0
- data/assets/bower/turbolinks5/test/src/modules/rendering_tests.coffee +123 -0
- data/assets/bower/turbolinks5/test/src/modules/visit_tests.coffee +49 -0
- data/assets/bower/turbolinks5/test/src/test.coffee +4 -0
- data/assets/bower/turbolinks5/test/src/test.css +20 -0
- data/assets/bower/turbolinks5/test/vendor/replicant.js +10 -0
- data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.eot +0 -0
- data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.ttf +0 -0
- data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.woff +0 -0
- data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.woff2 +0 -0
- data/assets/fonts/ionicons/ionicons.eot +0 -0
- data/assets/fonts/ionicons/ionicons.svg +2232 -0
- data/assets/fonts/ionicons/ionicons.ttf +0 -0
- data/assets/fonts/ionicons/ionicons.woff +0 -0
- data/assets/fonts/lato/Lato-300.eot +0 -0
- data/assets/fonts/lato/Lato-300.ttf +0 -0
- data/assets/fonts/lato/Lato-300.woff +0 -0
- data/assets/fonts/lato/Lato-300.woff2 +0 -0
- data/assets/fonts/lato/Lato-700.eot +0 -0
- data/assets/fonts/lato/Lato-700.ttf +0 -0
- data/assets/fonts/lato/Lato-700.woff +0 -0
- data/assets/fonts/lato/Lato-700.woff2 +0 -0
- data/assets/fonts/lato/Lato-regular.eot +0 -0
- data/assets/fonts/lato/Lato-regular.ttf +0 -0
- data/assets/fonts/lato/Lato-regular.woff +0 -0
- data/assets/fonts/lato/Lato-regular.woff2 +0 -0
- data/assets/images/about.jpg +0 -0
- data/assets/images/about@2x.jpg +0 -0
- data/assets/images/apple-touch-icon.png +0 -0
- data/assets/images/documentation/chalk-intro.png +0 -0
- data/assets/images/documentation/chalk-intro@2x.png +0 -0
- data/assets/images/documentation/enlarge.gif +0 -0
- data/assets/images/documentation/enlarge@2x.gif +0 -0
- data/assets/images/documentation/sample-image.jpg +0 -0
- data/assets/images/documentation/sample-image@2x.jpg +0 -0
- data/assets/images/og-image.jpg +0 -0
- data/assets/javascripts/application.js +24 -0
- data/assets/javascripts/vendor.js +6 -0
- data/assets/javascripts/vendor/jquery-throttle-debounce.js +9 -0
- data/assets/javascripts/vendor/retina.js +182 -0
- data/assets/stylesheets/.csscomb.json +197 -0
- data/assets/stylesheets/.scss-lint.yml +33 -0
- data/assets/stylesheets/_base.scss +151 -0
- data/assets/stylesheets/_mixins.scss +28 -0
- data/assets/stylesheets/_variables.scss +47 -0
- data/assets/stylesheets/dark.scss +70 -0
- data/assets/stylesheets/fonts.scss +63 -0
- data/assets/stylesheets/layouts/_footer.scss +17 -0
- data/assets/stylesheets/layouts/_grid.scss +102 -0
- data/assets/stylesheets/light.scss +70 -0
- data/assets/stylesheets/modules/_about.scss +10 -0
- data/assets/stylesheets/modules/_articles.scss +211 -0
- data/assets/stylesheets/modules/_embed.scss +31 -0
- data/assets/stylesheets/modules/_header.scss +57 -0
- data/assets/stylesheets/modules/_highlights-dark.scss +415 -0
- data/assets/stylesheets/modules/_highlights-light.scss +409 -0
- data/assets/stylesheets/modules/_icons.scss +2967 -0
- data/assets/stylesheets/notfound-dark.scss +90 -0
- data/assets/stylesheets/notfound-light.scss +90 -0
- data/assets/stylesheets/vendor/_normalize.scss +461 -0
- metadata +276 -3
@@ -0,0 +1,47 @@
|
|
1
|
+
class Turbolinks.Snapshot
|
2
|
+
@wrap: (value) ->
|
3
|
+
if value instanceof this
|
4
|
+
value
|
5
|
+
else
|
6
|
+
@fromHTML(value)
|
7
|
+
|
8
|
+
@fromHTML: (html) ->
|
9
|
+
element = document.createElement("html")
|
10
|
+
element.innerHTML = html
|
11
|
+
@fromElement(element)
|
12
|
+
|
13
|
+
@fromElement: (element) ->
|
14
|
+
new this
|
15
|
+
head: element.querySelector("head")
|
16
|
+
body: element.querySelector("body")
|
17
|
+
|
18
|
+
constructor: ({head, body}) ->
|
19
|
+
@head = head ? document.createElement("head")
|
20
|
+
@body = body ? document.createElement("body")
|
21
|
+
|
22
|
+
clone: ->
|
23
|
+
new Snapshot
|
24
|
+
head: @head.cloneNode(true)
|
25
|
+
body: @body.cloneNode(true)
|
26
|
+
|
27
|
+
getRootLocation: ->
|
28
|
+
root = @getSetting("root") ? "/"
|
29
|
+
new Turbolinks.Location root
|
30
|
+
|
31
|
+
getCacheControlValue: ->
|
32
|
+
@getSetting("cache-control")
|
33
|
+
|
34
|
+
hasAnchor: (anchor) ->
|
35
|
+
try @body.querySelector("[id='#{anchor}']")?
|
36
|
+
|
37
|
+
isPreviewable: ->
|
38
|
+
@getCacheControlValue() isnt "no-preview"
|
39
|
+
|
40
|
+
isCacheable: ->
|
41
|
+
@getCacheControlValue() isnt "no-cache"
|
42
|
+
|
43
|
+
# Private
|
44
|
+
|
45
|
+
getSetting: (name) ->
|
46
|
+
[..., element] = @head.querySelectorAll("meta[name='turbolinks-#{name}']")
|
47
|
+
element?.getAttribute("content")
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class Turbolinks.SnapshotCache
|
2
|
+
constructor: (@size) ->
|
3
|
+
@keys = []
|
4
|
+
@snapshots = {}
|
5
|
+
|
6
|
+
has: (location) ->
|
7
|
+
key = keyForLocation(location)
|
8
|
+
key of @snapshots
|
9
|
+
|
10
|
+
get: (location) ->
|
11
|
+
return unless @has(location)
|
12
|
+
snapshot = @read(location)
|
13
|
+
@touch(location)
|
14
|
+
snapshot
|
15
|
+
|
16
|
+
put: (location, snapshot) ->
|
17
|
+
@write(location, snapshot)
|
18
|
+
@touch(location)
|
19
|
+
snapshot
|
20
|
+
|
21
|
+
# Private
|
22
|
+
|
23
|
+
read: (location) ->
|
24
|
+
key = keyForLocation(location)
|
25
|
+
@snapshots[key]
|
26
|
+
|
27
|
+
write: (location, snapshot) ->
|
28
|
+
key = keyForLocation(location)
|
29
|
+
@snapshots[key] = snapshot
|
30
|
+
|
31
|
+
touch: (location) ->
|
32
|
+
key = keyForLocation(location)
|
33
|
+
index = @keys.indexOf(key)
|
34
|
+
@keys.splice(index, 1) if index > -1
|
35
|
+
@keys.unshift(key)
|
36
|
+
@trim()
|
37
|
+
|
38
|
+
trim: ->
|
39
|
+
for key in @keys.splice(@size)
|
40
|
+
delete @snapshots[key]
|
41
|
+
|
42
|
+
keyForLocation = (location) ->
|
43
|
+
Turbolinks.Location.wrap(location).toCacheKey()
|
@@ -0,0 +1,88 @@
|
|
1
|
+
#= require ./renderer
|
2
|
+
#= require ./head_details
|
3
|
+
|
4
|
+
class Turbolinks.SnapshotRenderer extends Turbolinks.Renderer
|
5
|
+
constructor: (@currentSnapshot, @newSnapshot) ->
|
6
|
+
@currentHeadDetails = new Turbolinks.HeadDetails @currentSnapshot.head
|
7
|
+
@newHeadDetails = new Turbolinks.HeadDetails @newSnapshot.head
|
8
|
+
@newBody = @newSnapshot.body
|
9
|
+
|
10
|
+
render: (callback) ->
|
11
|
+
if @trackedElementsAreIdentical()
|
12
|
+
@mergeHead()
|
13
|
+
@renderView =>
|
14
|
+
@replaceBody()
|
15
|
+
@focusFirstAutofocusableElement()
|
16
|
+
callback()
|
17
|
+
else
|
18
|
+
@invalidateView()
|
19
|
+
|
20
|
+
mergeHead: ->
|
21
|
+
@copyNewHeadStylesheetElements()
|
22
|
+
@copyNewHeadScriptElements()
|
23
|
+
@removeCurrentHeadProvisionalElements()
|
24
|
+
@copyNewHeadProvisionalElements()
|
25
|
+
|
26
|
+
replaceBody: ->
|
27
|
+
@activateBodyScriptElements()
|
28
|
+
@importBodyPermanentElements()
|
29
|
+
@assignNewBody()
|
30
|
+
|
31
|
+
trackedElementsAreIdentical: ->
|
32
|
+
@currentHeadDetails.getTrackedElementSignature() is @newHeadDetails.getTrackedElementSignature()
|
33
|
+
|
34
|
+
copyNewHeadStylesheetElements: ->
|
35
|
+
for element in @getNewHeadStylesheetElements()
|
36
|
+
document.head.appendChild(element)
|
37
|
+
|
38
|
+
copyNewHeadScriptElements: ->
|
39
|
+
for element in @getNewHeadScriptElements()
|
40
|
+
document.head.appendChild(@createScriptElement(element))
|
41
|
+
|
42
|
+
removeCurrentHeadProvisionalElements: ->
|
43
|
+
for element in @getCurrentHeadProvisionalElements()
|
44
|
+
document.head.removeChild(element)
|
45
|
+
|
46
|
+
copyNewHeadProvisionalElements: ->
|
47
|
+
for element in @getNewHeadProvisionalElements()
|
48
|
+
document.head.appendChild(element)
|
49
|
+
|
50
|
+
importBodyPermanentElements: ->
|
51
|
+
for replaceableElement in @getNewBodyPermanentElements()
|
52
|
+
if element = @findCurrentBodyPermanentElement(replaceableElement)
|
53
|
+
replaceableElement.parentNode.replaceChild(element, replaceableElement)
|
54
|
+
|
55
|
+
activateBodyScriptElements: ->
|
56
|
+
for replaceableElement in @getNewBodyScriptElements()
|
57
|
+
element = @createScriptElement(replaceableElement)
|
58
|
+
replaceableElement.parentNode.replaceChild(element, replaceableElement)
|
59
|
+
|
60
|
+
assignNewBody: ->
|
61
|
+
document.body = @newBody
|
62
|
+
|
63
|
+
focusFirstAutofocusableElement: ->
|
64
|
+
@findFirstAutofocusableElement()?.focus()
|
65
|
+
|
66
|
+
getNewHeadStylesheetElements: ->
|
67
|
+
@newHeadDetails.getStylesheetElementsNotInDetails(@currentHeadDetails)
|
68
|
+
|
69
|
+
getNewHeadScriptElements: ->
|
70
|
+
@newHeadDetails.getScriptElementsNotInDetails(@currentHeadDetails)
|
71
|
+
|
72
|
+
getCurrentHeadProvisionalElements: ->
|
73
|
+
@currentHeadDetails.getProvisionalElements()
|
74
|
+
|
75
|
+
getNewHeadProvisionalElements: ->
|
76
|
+
@newHeadDetails.getProvisionalElements()
|
77
|
+
|
78
|
+
getNewBodyPermanentElements: ->
|
79
|
+
@newBody.querySelectorAll("[id][data-turbolinks-permanent]")
|
80
|
+
|
81
|
+
findCurrentBodyPermanentElement: (element) ->
|
82
|
+
document.body.querySelector("##{element.id}[data-turbolinks-permanent]")
|
83
|
+
|
84
|
+
getNewBodyScriptElements: ->
|
85
|
+
@newBody.querySelectorAll("script")
|
86
|
+
|
87
|
+
findFirstAutofocusableElement: ->
|
88
|
+
document.body.querySelector("[autofocus]")
|
@@ -0,0 +1,18 @@
|
|
1
|
+
Turbolinks.start = ->
|
2
|
+
if installTurbolinks()
|
3
|
+
Turbolinks.controller ?= createController()
|
4
|
+
Turbolinks.controller.start()
|
5
|
+
|
6
|
+
installTurbolinks = ->
|
7
|
+
window.Turbolinks ?= Turbolinks
|
8
|
+
moduleIsInstalled()
|
9
|
+
|
10
|
+
createController = ->
|
11
|
+
controller = new Turbolinks.Controller
|
12
|
+
controller.adapter = new Turbolinks.BrowserAdapter(controller)
|
13
|
+
controller
|
14
|
+
|
15
|
+
moduleIsInstalled = ->
|
16
|
+
window.Turbolinks is Turbolinks
|
17
|
+
|
18
|
+
Turbolinks.start() if moduleIsInstalled()
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#= require ./snapshot
|
2
|
+
#= require ./snapshot_renderer
|
3
|
+
#= require ./error_renderer
|
4
|
+
|
5
|
+
class Turbolinks.View
|
6
|
+
constructor: (@delegate) ->
|
7
|
+
@element = document.documentElement
|
8
|
+
|
9
|
+
getRootLocation: ->
|
10
|
+
@getSnapshot().getRootLocation()
|
11
|
+
|
12
|
+
getSnapshot: ->
|
13
|
+
Turbolinks.Snapshot.fromElement(@element)
|
14
|
+
|
15
|
+
render: ({snapshot, error, isPreview}, callback) ->
|
16
|
+
@markAsPreview(isPreview)
|
17
|
+
if snapshot?
|
18
|
+
@renderSnapshot(snapshot, callback)
|
19
|
+
else
|
20
|
+
@renderError(error, callback)
|
21
|
+
|
22
|
+
# Private
|
23
|
+
|
24
|
+
markAsPreview: (isPreview) ->
|
25
|
+
if isPreview
|
26
|
+
@element.setAttribute("data-turbolinks-preview", "")
|
27
|
+
else
|
28
|
+
@element.removeAttribute("data-turbolinks-preview")
|
29
|
+
|
30
|
+
renderSnapshot: (snapshot, callback) ->
|
31
|
+
Turbolinks.SnapshotRenderer.render(@delegate, callback, @getSnapshot(), Turbolinks.Snapshot.wrap(snapshot))
|
32
|
+
|
33
|
+
renderError: (error, callback) ->
|
34
|
+
Turbolinks.ErrorRenderer.render(@delegate, callback, error)
|
@@ -0,0 +1,162 @@
|
|
1
|
+
#= require ./http_request
|
2
|
+
|
3
|
+
class Turbolinks.Visit
|
4
|
+
constructor: (@controller, location, @action) ->
|
5
|
+
@identifier = Turbolinks.uuid()
|
6
|
+
@location = Turbolinks.Location.wrap(location)
|
7
|
+
@adapter = @controller.adapter
|
8
|
+
@state = "initialized"
|
9
|
+
@timingMetrics = {}
|
10
|
+
|
11
|
+
start: ->
|
12
|
+
if @state is "initialized"
|
13
|
+
@recordTimingMetric("visitStart")
|
14
|
+
@state = "started"
|
15
|
+
@adapter.visitStarted(this)
|
16
|
+
|
17
|
+
cancel: ->
|
18
|
+
if @state is "started"
|
19
|
+
@request?.cancel()
|
20
|
+
@cancelRender()
|
21
|
+
@state = "canceled"
|
22
|
+
|
23
|
+
complete: ->
|
24
|
+
if @state is "started"
|
25
|
+
@recordTimingMetric("visitEnd")
|
26
|
+
@state = "completed"
|
27
|
+
@adapter.visitCompleted?(this)
|
28
|
+
@controller.visitCompleted(this)
|
29
|
+
|
30
|
+
fail: ->
|
31
|
+
if @state is "started"
|
32
|
+
@state = "failed"
|
33
|
+
@adapter.visitFailed?(this)
|
34
|
+
|
35
|
+
changeHistory: ->
|
36
|
+
unless @historyChanged
|
37
|
+
actionForHistory = if @location.isEqualTo(@referrer) then "replace" else @action
|
38
|
+
method = getHistoryMethodForAction(actionForHistory)
|
39
|
+
@controller[method](@location, @restorationIdentifier)
|
40
|
+
@historyChanged = true
|
41
|
+
|
42
|
+
issueRequest: ->
|
43
|
+
if @shouldIssueRequest() and not @request?
|
44
|
+
@progress = 0
|
45
|
+
@request = new Turbolinks.HttpRequest this, @location, @referrer
|
46
|
+
@request.send()
|
47
|
+
|
48
|
+
getCachedSnapshot: ->
|
49
|
+
if snapshot = @controller.getCachedSnapshotForLocation(@location)
|
50
|
+
if not @location.anchor? or snapshot.hasAnchor(@location.anchor)
|
51
|
+
if @action is "restore" or snapshot.isPreviewable()
|
52
|
+
snapshot
|
53
|
+
|
54
|
+
hasCachedSnapshot: ->
|
55
|
+
@getCachedSnapshot()?
|
56
|
+
|
57
|
+
loadCachedSnapshot: ->
|
58
|
+
if snapshot = @getCachedSnapshot()
|
59
|
+
isPreview = @shouldIssueRequest()
|
60
|
+
@render ->
|
61
|
+
@cacheSnapshot()
|
62
|
+
@controller.render({snapshot, isPreview}, @performScroll)
|
63
|
+
@adapter.visitRendered?(this)
|
64
|
+
@complete() unless isPreview
|
65
|
+
|
66
|
+
loadResponse: ->
|
67
|
+
if @response?
|
68
|
+
@render ->
|
69
|
+
@cacheSnapshot()
|
70
|
+
if @request.failed
|
71
|
+
@controller.render(error: @response, @performScroll)
|
72
|
+
@adapter.visitRendered?(this)
|
73
|
+
@fail()
|
74
|
+
else
|
75
|
+
@controller.render(snapshot: @response, @performScroll)
|
76
|
+
@adapter.visitRendered?(this)
|
77
|
+
@complete()
|
78
|
+
|
79
|
+
followRedirect: ->
|
80
|
+
if @redirectedToLocation and not @followedRedirect
|
81
|
+
@location = @redirectedToLocation
|
82
|
+
@controller.replaceHistoryWithLocationAndRestorationIdentifier(@redirectedToLocation, @restorationIdentifier)
|
83
|
+
@followedRedirect = true
|
84
|
+
|
85
|
+
# HTTP Request delegate
|
86
|
+
|
87
|
+
requestStarted: ->
|
88
|
+
@recordTimingMetric("requestStart")
|
89
|
+
@adapter.visitRequestStarted?(this)
|
90
|
+
|
91
|
+
requestProgressed: (@progress) ->
|
92
|
+
@adapter.visitRequestProgressed?(this)
|
93
|
+
|
94
|
+
requestCompletedWithResponse: (@response, redirectedToLocation) ->
|
95
|
+
@redirectedToLocation = Turbolinks.Location.wrap(redirectedToLocation) if redirectedToLocation?
|
96
|
+
@adapter.visitRequestCompleted(this)
|
97
|
+
|
98
|
+
requestFailedWithStatusCode: (statusCode, @response) ->
|
99
|
+
@adapter.visitRequestFailedWithStatusCode(this, statusCode)
|
100
|
+
|
101
|
+
requestFinished: ->
|
102
|
+
@recordTimingMetric("requestEnd")
|
103
|
+
@adapter.visitRequestFinished?(this)
|
104
|
+
|
105
|
+
# Scrolling
|
106
|
+
|
107
|
+
performScroll: =>
|
108
|
+
unless @scrolled
|
109
|
+
if @action is "restore"
|
110
|
+
@scrollToRestoredPosition() or @scrollToTop()
|
111
|
+
else
|
112
|
+
@scrollToAnchor() or @scrollToTop()
|
113
|
+
@scrolled = true
|
114
|
+
|
115
|
+
scrollToRestoredPosition: ->
|
116
|
+
position = @restorationData?.scrollPosition
|
117
|
+
if position?
|
118
|
+
@controller.scrollToPosition(position)
|
119
|
+
true
|
120
|
+
|
121
|
+
scrollToAnchor: ->
|
122
|
+
if @location.anchor?
|
123
|
+
@controller.scrollToAnchor(@location.anchor)
|
124
|
+
true
|
125
|
+
|
126
|
+
scrollToTop: ->
|
127
|
+
@controller.scrollToPosition(x: 0, y: 0)
|
128
|
+
|
129
|
+
# Instrumentation
|
130
|
+
|
131
|
+
recordTimingMetric: (name) ->
|
132
|
+
@timingMetrics[name] ?= new Date().getTime()
|
133
|
+
|
134
|
+
getTimingMetrics: ->
|
135
|
+
Turbolinks.copyObject(@timingMetrics)
|
136
|
+
|
137
|
+
# Private
|
138
|
+
|
139
|
+
getHistoryMethodForAction = (action) ->
|
140
|
+
switch action
|
141
|
+
when "replace" then "replaceHistoryWithLocationAndRestorationIdentifier"
|
142
|
+
when "advance", "restore" then "pushHistoryWithLocationAndRestorationIdentifier"
|
143
|
+
|
144
|
+
shouldIssueRequest: ->
|
145
|
+
if @action is "restore"
|
146
|
+
not @hasCachedSnapshot()
|
147
|
+
else
|
148
|
+
true
|
149
|
+
|
150
|
+
cacheSnapshot: ->
|
151
|
+
unless @snapshotCached
|
152
|
+
@controller.cacheSnapshot()
|
153
|
+
@snapshotCached = true
|
154
|
+
|
155
|
+
render: (callback) ->
|
156
|
+
@cancelRender()
|
157
|
+
@frame = requestAnimationFrame =>
|
158
|
+
@frame = null
|
159
|
+
callback.call(this)
|
160
|
+
|
161
|
+
cancelRender: ->
|
162
|
+
cancelAnimationFrame(@frame) if @frame
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Additional assets</title>
|
6
|
+
<link rel="stylesheet" type="text/css" href="/test.css">
|
7
|
+
<script src="/turbolinks.js" data-turbolinks-track="reload"></script>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<h1>Additional assets</h1>
|
11
|
+
</body>
|
12
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Body script</title>
|
6
|
+
<script src="/turbolinks.js" data-turbolinks-track="reload"></script>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<h1>Body script</h1>
|
10
|
+
<script>
|
11
|
+
if ("bodyScriptEvaluationCount" in window) {
|
12
|
+
window.bodyScriptEvaluationCount++
|
13
|
+
} else {
|
14
|
+
window.bodyScriptEvaluationCount = 1
|
15
|
+
}
|
16
|
+
</script>
|
17
|
+
</body>
|
18
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>data-turbolinks-eval=false script</title>
|
6
|
+
<script src="/turbolinks.js" data-turbolinks-track="reload"></script>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<h1>data-turbolinks-eval=false script</h1>
|
10
|
+
<script data-turbolinks-eval="false">
|
11
|
+
if ("bodyScriptEvaluationCount" in window) {
|
12
|
+
window.bodyScriptEvaluationCount++
|
13
|
+
} else {
|
14
|
+
window.bodyScriptEvaluationCount = 1
|
15
|
+
}
|
16
|
+
</script>
|
17
|
+
</body>
|
18
|
+
</html>
|