Showing preview only (320K chars total). Download the full file or copy to clipboard to get everything.
Repository: HubSpot/offline
Branch: master
Commit: a17291864212
Files: 136
Total size: 289.5 KB
Directory structure:
gitextract_8akg9yce/
├── .github/
│ ├── ISSUE_TEMPLATE
│ └── PULL_REQUEST_TEMPLATE
├── .gitignore
├── .hsdoc
├── Gruntfile.coffee
├── LICENSE
├── README.md
├── bower.json
├── coffee/
│ ├── offline.coffee
│ ├── reconnect.coffee
│ ├── requests.coffee
│ ├── simulate.coffee
│ ├── snake.coffee
│ └── ui.coffee
├── docs/
│ └── welcome/
│ ├── app.js
│ ├── images/
│ │ ├── ethernet-cable.sketch/
│ │ │ ├── Data
│ │ │ ├── fonts
│ │ │ └── version
│ │ ├── macbook-pro-top.sketch/
│ │ │ ├── Data
│ │ │ ├── fonts
│ │ │ └── version
│ │ └── macbook-pro.sketch/
│ │ ├── Data
│ │ ├── fonts
│ │ └── version
│ └── index.html
├── install.json
├── js/
│ ├── offline.js
│ ├── reconnect.js
│ ├── requests.js
│ ├── simulate.js
│ ├── snake.js
│ └── ui.js
├── offline.js
├── package.json
├── sass/
│ ├── _arabic.sass
│ ├── _chinese-simplified.sass
│ ├── _chinese-traditional.sass
│ ├── _content.sass
│ ├── _czech.sass
│ ├── _dutch.sass
│ ├── _english.sass
│ ├── _french.sass
│ ├── _german.sass
│ ├── _italian.sass
│ ├── _keyframes.sass
│ ├── _mixins.sass
│ ├── _offline-theme-base-indicator.sass
│ ├── _offline-theme-base.sass
│ ├── _pashto.sass
│ ├── _persian.sass
│ ├── _polish.sass
│ ├── _portuguese-brazil.sass
│ ├── _spanish.sass
│ ├── _turkish.sass
│ ├── offline-language-arabic-indicator.sass
│ ├── offline-language-arabic.sass
│ ├── offline-language-chinese-simplified-indicator.sass
│ ├── offline-language-chinese-simplified.sass
│ ├── offline-language-chinese-traditional-indicator.sass
│ ├── offline-language-chinese-traditional.sass
│ ├── offline-language-czech-indicator.sass
│ ├── offline-language-czech.sass
│ ├── offline-language-dutch-indicator.sass
│ ├── offline-language-dutch.sass
│ ├── offline-language-english-indicator.sass
│ ├── offline-language-english.sass
│ ├── offline-language-french-indicator.sass
│ ├── offline-language-french.sass
│ ├── offline-language-german-indicator.sass
│ ├── offline-language-german.sass
│ ├── offline-language-italian-indicator.sass
│ ├── offline-language-italian.sass
│ ├── offline-language-pashto-indicator.sass
│ ├── offline-language-pashto.sass
│ ├── offline-language-polish-indicator.sass
│ ├── offline-language-polish.sass
│ ├── offline-language-portuguese-brazil-indicator.sass
│ ├── offline-language-portuguese-brazil.sass
│ ├── offline-language-simplified-chinese-indicator.sass
│ ├── offline-language-spanish-indicator.sass
│ ├── offline-language-spanish.sass
│ ├── offline-language-turkish-indicator.sass
│ ├── offline-language-turkish.sass
│ ├── offline-theme-chrome-indicator.sass
│ ├── offline-theme-chrome.sass
│ ├── offline-theme-dark-indicator.sass
│ ├── offline-theme-dark.sass
│ ├── offline-theme-default-indicator.sass
│ ├── offline-theme-default.sass
│ ├── offline-theme-hubspot.sass
│ ├── offline-theme-slide-indicator.sass
│ └── offline-theme-slide.sass
├── test/
│ ├── index.html
│ └── snake.html
└── themes/
├── offline-language-arabic-indicator.css
├── offline-language-arabic.css
├── offline-language-chinese-simplified-indicator.css
├── offline-language-chinese-simplified.css
├── offline-language-chinese-traditional-indicator.css
├── offline-language-chinese-traditional.css
├── offline-language-czech-indicator.css
├── offline-language-czech.css
├── offline-language-dutch-indicator.css
├── offline-language-dutch.css
├── offline-language-english-indicator.css
├── offline-language-english.css
├── offline-language-french-indicator.css
├── offline-language-french.css
├── offline-language-german-indicator.css
├── offline-language-german.css
├── offline-language-hebrew-indicator.css
├── offline-language-hebrew.css
├── offline-language-italian-indicator.css
├── offline-language-italian.css
├── offline-language-pashto-indicator.css
├── offline-language-pashto.css
├── offline-language-persian-indicator.css
├── offline-language-persian.css
├── offline-language-polish-indicator.css
├── offline-language-polish.css
├── offline-language-portuguese-brazil-indicator.css
├── offline-language-portuguese-brazil.css
├── offline-language-simplified-chinese-indicator.css
├── offline-language-spanish-indicator.css
├── offline-language-spanish.css
├── offline-language-turkish-indicator.css
├── offline-language-turkish.css
├── offline-theme-chrome-indicator.css
├── offline-theme-chrome.css
├── offline-theme-dark-indicator.css
├── offline-theme-dark.css
├── offline-theme-default-indicator.css
├── offline-theme-default.css
├── offline-theme-hubspot.css
├── offline-theme-slide-indicator.css
└── offline-theme-slide.css
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE
================================================
<!--
This project isn't actively maintained.
Issues and pull requests will likely not receive a response.
-->
================================================
FILE: .github/PULL_REQUEST_TEMPLATE
================================================
<!--
This project isn't actively maintained.
Issues and pull requests will likely not receive a response.
-->
================================================
FILE: .gitignore
================================================
node_modules/
.sass-cache/
================================================
FILE: .hsdoc
================================================
title: "Offline"
source: "{coffee/*,sass/*}"
assets: "{js/*,themes/*,offline.min.js,docs/welcome/*,test/*}"
================================================
FILE: Gruntfile.coffee
================================================
module.exports = (grunt) ->
grunt.initConfig
pkg: grunt.file.readJSON('package.json')
coffee:
compile:
expand: true
flatten: true
src: ['coffee/*.coffee']
dest: 'js/'
ext: '.js'
watch:
options:
atBegin:
true
coffee:
files: ['coffee/*', 'sass/*']
tasks: ['coffee', 'uglify', 'compass']
uglify:
options:
banner: '/*! <%= pkg.name %> <%= pkg.version %> */\n'
minified:
src: ['js/*', '!js/snake.js']
dest: 'offline.min.js'
original:
src: ['js/*', '!js/snake.js']
dest: 'offline.js'
options:
mangle: false
beautify:
beautify: true
indent_level: 2
space_colon: false
compass:
dist:
options:
sassDir: 'sass'
cssDir: 'themes'
grunt.loadNpmTasks 'grunt-contrib-watch'
grunt.loadNpmTasks 'grunt-contrib-uglify'
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-compass'
grunt.registerTask 'default', ['coffee', 'uglify', 'compass']
================================================
FILE: LICENSE
================================================
Copyright (c) 2014 HubSpot, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: README.md
================================================
___
**This project isn't actively maintained.**
___
Offline
======
**Note to users pre-0.6.0: Offline previously used a cloudfront hosted file as one of it's methods of detecting the connection status. This method is now deprecated and the image has been removed. Please upgrade to Offline 0.7.0+.**
Improve the experience of your app when your users lose connection.
- Monitors ajax requests looking for failure
- Confirms the connection status by requesting an image or fake resource
- Automatically grabs ajax requests made while the connection is down and remakes them
after the connection is restored.
- Simple UI with beautiful themes
- 3kb minified and compressed
Installation
-------------------
Include [the javascript](https://raw.github.com/HubSpot/offline/v0.7.14/offline.min.js), one of [the themes](http://github.hubspot.com/offline/docs/welcome/), and one of [the
languages](https://github.com/HubSpot/offline/tree/master/themes) on your site. You're done!
To use only the JavaScript API without a UI indicator, simply leave out the CSS file.
If you'd like to get a peek at how it looks on your site, disconnect your internet, or try out the [simulator](http://craigshoemaker.github.io/offlinejs-simulate-ui/).
Advanced
--------
Optionally, you can provide some configuration by setting `Offline.options` after
bringing in the script.
Options (any can be provided as a function), with their defaults:
```javascript
{
// Should we check the connection status immediatly on page load.
checkOnLoad: false,
// Should we monitor AJAX requests to help decide if we have a connection.
interceptRequests: true,
// Should we automatically retest periodically when the connection is down (set to false to disable).
reconnect: {
// How many seconds should we wait before rechecking.
initialDelay: 3,
// How long should we wait between retries.
delay: (1.5 * last delay, capped at 1 hour)
},
// Should we store and attempt to remake requests which fail while the connection is down.
requests: true,
// Should we show a snake game while the connection is down to keep the user entertained?
// It's not included in the normal build, you should bring in js/snake.js in addition to
// offline.min.js.
game: false
}
```
Properties
----------
`Offline.check()`: Check the current status of the connection.
`Offline.state`: The current state of the connection 'up' or 'down'
`Offline.on(event, handler, context)`: Bind an event. Events:
- up: The connection has gone from down to up
- down: The connection has gone from up to down
- confirmed-up: A connection test has succeeded, fired even if the connection was already up
- confirmed-down: A connection test has failed, fired even if the connection was already down
- checking: We are testing the connection
- reconnect:started: We are beginning the reconnect process
- reconnect:stopped: We are done attempting to reconnect
- reconnect:tick: Fired every second during a reconnect attempt, when a check is not happening
- reconnect:connecting: We are reconnecting now
- reconnect:failure: A reconnect check attempt failed
- requests:flush: Any pending requests have been remade
- requests:capture: A new request is being held
`Offline.off(event, handler)`: Unbind an event
Checking
--------
By default, Offline makes an XHR request to load your `/favicon.ico` to check the connection. If you don't
have such a file, it will 404 in the console, but otherwise work fine (even a 404 means the connection is up).
You can change the URL it hits (an endpoint which will respond with a quick 204 is perfect):
```javascript
Offline.options = {checks: {xhr: {url: '/connection-test'}}};
```
Make sure that the URL you check has the same origin as your page (the connection method, domain and port all must be the same), or you
will run into CORS issues. You can add `Access-Control` headers to the endpoint to fix it on modern browsers, but it will still cause issues on
IE9 and below.
If you do want to run tests on a different domain, try the image method. It loads an image, which are allowed to cross domains.
```javascript
Offline.options = {checks: {image: {url: 'my-image.gif'}, active: 'image'}}
```
The one caveat is that with the image method, we can't distinguish a 404 from a genuine connection issue, so any error at all will
appear to Offline as a connection issue.
Offline also includes a check called `'up'` and another called `'down'` which will always report being up or down respectively for
testing. You can activate them by setting the `active` option, adding a data attribute to your script tag with the name
`data-simulate` and value `'up'` or `'down'`, or by setting `localStorage.OFFLINE_SIMULATE` to `'up'` or `'down'`.
Reconnect
---------
The reconnect module automatically retests the connection periodically when it is down.
A successful AJAX request will also trigger a silent recheck (if `interceptRequests` is not false).
You can disable the reconnect module by setting the `reconnect` to false. Reconnect can be
configured by setting options on the reconnect setting.
Requests
--------
The requests module holds any failed AJAX requests and, after deduping them, remakes them when the connection
is restored.
You can disable it by setting the `requests` setting to false.
You can also set deDupBody to be true if you want deduping to also take into account the content of the request.
Dependencies
------------
None!
Browser Support
---------------
Modern Chrome, Firefox, Safari and IE8+
Note that not all browsers (including Safari and old IE) support the offline events, forcing Offline to use less accurate methods of detection.
================================================
FILE: bower.json
================================================
{
"name": "offline",
"homepage": "http://github.hubspot.com/offline/docs/welcome",
"authors": [
"Zack Bloom <zackbloom@gmail.com>",
"Adam Schwartz <adam.flynn.schwartz@gmail.com>"
],
"repository": {
"type": "git",
"url": "git://github.com/HubSpot/offline.git"
},
"description": "Automatically detect when a browser is offline",
"main": "offline.js",
"license": "MIT",
"keywords": [
"offline",
"online",
"internet",
"network",
"ajax",
"notification",
"javascript",
"client-side"
],
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"coffee",
"docs",
"js",
"test",
"bower.json",
"package.json"
]
}
================================================
FILE: coffee/offline.coffee
================================================
# We get a clue that the browser might be offline from suspicious requests or
# the HTML5 offline api. If we suspect it's offline, we make a request for any random path
# which (probably) doesn't exist. If we get a response, we're still online, if not,
# we trigger an event and update our status.
extendNative = (to, from) ->
for key of from::
try
val = from::[key]
if not to[key]? and typeof val isnt 'function'
to[key] = val
catch e
Offline = {}
Offline.options = if window.Offline then window.Offline.options or {} else {}
defaultOptions =
checks:
xhr:
url: ->
# This can be any endpoint, even one that will 404.
"/favicon.ico?_=#{ (new Date()).getTime() }"
timeout: 5000
type: 'HEAD'
image:
url: ->
# This can be any image, this is the better option if your image is on a different domain, otherwise just use XHR
"/favicon.ico?_=#{ (new Date()).getTime() }"
active: 'xhr'
checkOnLoad: false
interceptRequests: true
reconnect: true
deDupBody: false
grab = (obj, key) ->
cur = obj
parts = key.split('.')
for part, i in parts
cur = cur[part]
break if typeof cur isnt 'object'
if i is parts.length - 1
cur
else
undefined
Offline.getOption = (key) ->
val = grab(Offline.options, key) ? grab(defaultOptions, key)
if typeof val is 'function'
val()
else
val
# These events are available in modern browsers, but they mean different things.
# In FF and IE they mean the user has explicitly entered "Offline Mode"
# In Chrome they mean that the internet connection was lost or restored
window.addEventListener? 'online', ->
# The event fires slightly before the browser is ready to make a request
setTimeout Offline.confirmUp, 100
, false
window.addEventListener? 'offline', ->
Offline.confirmDown()
, false
Offline.state = 'up'
Offline.markUp = ->
Offline.trigger 'confirmed-up'
return if Offline.state is 'up'
Offline.state = 'up'
Offline.trigger 'up'
Offline.markDown = ->
Offline.trigger 'confirmed-down'
return if Offline.state is 'down'
Offline.state = 'down'
Offline.trigger 'down'
handlers = {}
Offline.on = (event, handler, ctx) ->
events = event.split(' ')
if events.length > 1
Offline.on(e, handler, ctx) for e in events
else
handlers[event] ?= []
handlers[event].push [ctx, handler]
Offline.off = (event, handler) ->
return unless handlers[event]?
if not handler
handlers[event] = []
else
i = 0
while i < handlers[event].length
[ctx, _handler] = handlers[event][i]
if _handler is handler
handlers[event].splice i, 1
else
i++
Offline.trigger = (event) ->
if handlers[event]?
# we have to make a copy of the handlers since its possible that the called functions will modify the handlers array by calling off/on
for [ctx, handler] in handlers[event][..]
handler.call(ctx)
checkXHR = (xhr, onUp, onDown) ->
checkStatus = ->
if xhr.status and xhr.status < 12000
onUp()
else
onDown()
if xhr.onprogress is null
# onprogress would be undefined on older browsers
# XDomainRequest doesn't implement addEventListener
_onerror = xhr.onerror
xhr.onerror = ->
onDown()
_onerror?(arguments...)
_ontimeout = xhr.ontimeout
xhr.ontimeout = ->
onDown()
_ontimeout?(arguments...)
_onload = xhr.onload
xhr.onload = ->
checkStatus()
_onload?(arguments...)
else
_onreadystatechange = xhr.onreadystatechange
xhr.onreadystatechange = ->
if xhr.readyState is 4
checkStatus()
else if xhr.readyState is 0
onDown()
_onreadystatechange?(arguments...)
Offline.checks = {}
Offline.checks.xhr = ->
xhr = new XMLHttpRequest
xhr.offline = false
# It doesn't matter what this hits, even a 404 is considered up. It is important however that
# it's on the same domain and port, so CORS issues don't come into play.
xhr.open(Offline.getOption('checks.xhr.type'), Offline.getOption('checks.xhr.url'), true)
if xhr.timeout?
xhr.timeout = Offline.getOption('checks.xhr.timeout')
checkXHR xhr, Offline.markUp, Offline.markDown
try
xhr.send()
catch e
# Catch NETWORK_ERRORS
Offline.markDown()
xhr
Offline.checks.image = ->
img = document.createElement 'img'
img.onerror = Offline.markDown
img.onload = Offline.markUp
img.src = Offline.getOption('checks.image.url')
undefined
Offline.checks.down = Offline.markDown
Offline.checks.up = Offline.markUp
Offline.check = ->
Offline.trigger 'checking'
Offline.checks[Offline.getOption('checks.active')]()
Offline.confirmUp = Offline.confirmDown = Offline.check
Offline.onXHR = (cb) ->
monitorXHR = (req, flags) ->
_open = req.open
req.open = (type, url, async, user, password) ->
cb {type, url, async, flags, user, password, xhr: req}
_open.apply req, arguments
_XMLHttpRequest = window.XMLHttpRequest
window.XMLHttpRequest = (flags) ->
req = new _XMLHttpRequest(flags)
monitorXHR req, flags
_setRequestHeader = req.setRequestHeader
req.headers = {}
req.setRequestHeader = (name, value) ->
req.headers[name] = value
_setRequestHeader.call req, name, value
_overrideMimeType = req.overrideMimeType
req.overrideMimeType = (type) ->
req.mimeType = type
_overrideMimeType.call req, type
req
extendNative window.XMLHttpRequest, _XMLHttpRequest
if window.XDomainRequest?
_XDomainRequest = window.XDomainRequest
window.XDomainRequest = ->
req = new _XDomainRequest
monitorXHR req
req
extendNative window.XDomainRequest, _XDomainRequest
init = ->
if Offline.getOption 'interceptRequests'
Offline.onXHR ({xhr}) ->
unless xhr.offline is false
checkXHR xhr, Offline.markUp, Offline.confirmDown
if Offline.getOption 'checkOnLoad'
Offline.check()
# We call init in a setTimeout to give time for options to be set
setTimeout init, 0
window.Offline = Offline
================================================
FILE: coffee/reconnect.coffee
================================================
unless window.Offline
throw new Error "Offline Reconnect brought in without offline.js"
rc = Offline.reconnect = {}
retryIntv = null
reset = ->
if rc.state? and rc.state isnt 'inactive'
Offline.trigger 'reconnect:stopped'
rc.state = 'inactive'
rc.remaining = rc.delay = Offline.getOption('reconnect.initialDelay') ? 3
next = ->
delay = Offline.getOption('reconnect.delay') ? Math.min(Math.ceil(rc.delay * 1.5), 3600)
rc.remaining = rc.delay = delay
tick = ->
return if rc.state is 'connecting'
rc.remaining -= 1
Offline.trigger 'reconnect:tick'
if rc.remaining is 0
tryNow()
tryNow = ->
return if rc.state isnt 'waiting'
Offline.trigger 'reconnect:connecting'
rc.state = 'connecting'
Offline.check()
down = ->
return unless Offline.getOption('reconnect')
reset()
rc.state = 'waiting'
Offline.trigger 'reconnect:started'
retryIntv = setInterval tick, 1000
up = ->
if retryIntv?
clearInterval retryIntv
reset()
nope = ->
return unless Offline.getOption('reconnect')
if rc.state is 'connecting'
Offline.trigger 'reconnect:failure'
rc.state = 'waiting'
next()
rc.tryNow = tryNow
reset()
Offline.on 'down', down
Offline.on 'confirmed-down', nope
Offline.on 'up', up
================================================
FILE: coffee/requests.coffee
================================================
unless window.Offline
throw new Error "Requests module brought in without offline.js"
held = []
waitingOnConfirm = false
holdRequest = (req) ->
return if Offline.getOption('requests') is false
Offline.trigger 'requests:capture'
if Offline.state isnt 'down'
waitingOnConfirm = true
held.push req
makeRequest = ({xhr, url, type, user, password, body}) ->
return if Offline.getOption('requests') is false
xhr.abort()
xhr.open(type, url, true, user, password)
xhr.setRequestHeader(name, val) for name, val of xhr.headers
if xhr.mimeType
xhr.overrideMimeType xhr.mimeType
xhr.send(body)
clear = ->
held = []
flush = ->
return if Offline.getOption('requests') is false
Offline.trigger 'requests:flush'
requests = {}
# Dedup requests, favoring the later request
# TODO: Throw out PUT/POST/DELETE requests after too much time?
for request in held
# Break cache breaking
url = request.url.replace /(\?|&)_=[0-9]+/, (match, chr) ->
if chr is '?' then chr else ''
if Offline.getOption('deDupBody')
body = request.body
if body.toString() is '[object Object]'
body = JSON.stringify(body)
else
body = body.toString()
requests["#{ request.type.toUpperCase() } - #{ url } - #{ body }"] = request;
else
requests["#{ request.type.toUpperCase() } - #{ url }"] = request
for key, request of requests
makeRequest request
clear()
setTimeout ->
unless Offline.getOption('requests') is false
Offline.on 'confirmed-up', ->
if waitingOnConfirm
waitingOnConfirm = false
clear()
Offline.on 'up', flush
Offline.on 'down', ->
waitingOnConfirm = false
Offline.onXHR (request) ->
{xhr, async} = request
return if xhr.offline is false
hold = -> holdRequest request
_send = xhr.send
xhr.send = (body) ->
request.body = body
_send.apply xhr, arguments
return unless async
if xhr.onprogress is null
xhr.addEventListener 'error', hold, false
xhr.addEventListener 'timeout', hold, false
else
_onreadystatechange = xhr.onreadystatechange
xhr.onreadystatechange = ->
if xhr.readyState is 0
hold()
else if xhr.readyState is 4 and (xhr.status is 0 or xhr.status >= 12000)
hold()
_onreadystatechange?(arguments...)
Offline.requests = {
flush,
clear
}
, 0
================================================
FILE: coffee/simulate.coffee
================================================
unless Offline
throw new Error("Offline simulate brought in without offline.js")
for state in ['up', 'down']
try
simulate = document.querySelector("script[data-simulate='#{ state }']") or localStorage?.OFFLINE_SIMULATE is state
catch e
simulate = false
if simulate
Offline.options ?= {}
Offline.options.checks ?= {}
Offline.options.checks.active = state
================================================
FILE: coffee/snake.coffee
================================================
canvas = dot = score = speed = stop = snake = randDot = fill = null
render = ->
canvas = document.createElementNS('http://www.w3.org/2000/svg', 'svg')
canvas.setAttribute 'style', 'width: 100%; height: 100%; margin: -8px; position: absolute; top: 0; left: 0; z-index: 1000'
canvas.setAttribute 'viewBox', '0 0 1000 1000'
document.body.appendChild canvas
dot = document.createElementNS('http://www.w3.org/2000/svg', 'circle')
dot.setAttribute 'r', 20
do randDot = ->
dot.setAttribute 'cx', (Math.random() * 960)|0 + 20
dot.setAttribute 'cy', (Math.random() * 960)|0 + 20
canvas.appendChild dot
snake =
direction: 0
nodes: []
score = 0
speed = 10
stop = false
move()
move = ->
return if stop
lastNode = snake.nodes[snake.nodes.length - 1]
if lastNode
lastX = +lastNode.getAttribute('cx')
lastY = +lastNode.getAttribute('cy')
else
lastX = 500
lastY = 500
if snake.nodes.length > score
old = snake.nodes.shift()
canvas.removeChild old
nX = lastX + Math.cos(snake.direction) * speed
nY = lastY + Math.sin(snake.direction) * speed
node = document.createElementNS('http://www.w3.org/2000/svg', 'circle')
node.setAttribute 'r', 20
node.setAttribute 'cx', nX
node.setAttribute 'cy', nY
if fill
node.style.fill = fill
dotX = +dot.getAttribute('cx')
dotY = +dot.getAttribute('cy')
if dotX - 20 < nX < dotX + 20 and dotY - 20 < nY < dotY + 20
score++
speed++
randDot()
canvas.appendChild node
snake.nodes.push node
requestAnimationFrame move
keyHandler = (e) ->
if 37 <= e.keyCode <= 40
snake.direction = Math.PI/2 * ((e.keyCode - 35) % 4)
return false
show = ->
document.addEventListener 'keydown', keyHandler
render()
hide = ->
document.removeEventListener 'keydown', keyHandler
stop = true
document.removeChild canvas
setTimeout ->
if Offline.getOption('game') and document.addEventListener?
Offline.on 'down', show
Offline.on 'up', hide
Offline.on 'reconnect:failure', ->
fill = '#ec8787'
setTimeout ->
fill = 'black'
, 2000
, 0
================================================
FILE: coffee/ui.coffee
================================================
unless window.Offline
throw new Error "Offline UI brought in without offline.js"
TEMPLATE = '<div class="offline-ui"><div class="offline-ui-content"></div></div>'
RETRY_TEMPLATE = '<a href class="offline-ui-retry"></a>'
createFromHTML = (html) ->
el = document.createElement('div')
el.innerHTML = html
el.children[0]
el = content = null
addClass = (name) ->
removeClass name
el.className += " #{ name }"
removeClass = (name) ->
el.className = el.className.replace new RegExp("(^| )#{ name.split(' ').join('|') }( |$)", 'gi'), ' '
flashTimeouts = {}
flashClass = (name, time) ->
addClass name
if flashTimeouts[name]?
clearTimeout flashTimeouts[name]
flashTimeouts[name] = setTimeout ->
removeClass name
delete flashTimeouts[name]
, time * 1000
roundTime = (sec) ->
units =
'day': 86400
'hour': 3600
'minute': 60
'second': 1
for unit, mult of units
if sec >= mult
val = Math.floor(sec / mult)
return [val, unit]
return ['now', '']
render = ->
el = createFromHTML TEMPLATE
document.body.appendChild el
if Offline.reconnect? and Offline.getOption('reconnect')
el.appendChild createFromHTML RETRY_TEMPLATE
button = el.querySelector('.offline-ui-retry')
handler = (e) ->
e.preventDefault()
Offline.reconnect.tryNow()
if button.addEventListener?
button.addEventListener 'click', handler, false
else
button.attachEvent 'click', handler
addClass "offline-ui-#{ Offline.state }"
content = el.querySelector('.offline-ui-content')
init = ->
render()
Offline.on 'up', ->
removeClass 'offline-ui-down'
addClass 'offline-ui-up'
flashClass 'offline-ui-up-2s', 2
flashClass 'offline-ui-up-5s', 5
Offline.on 'down', ->
removeClass 'offline-ui-up'
addClass 'offline-ui-down'
flashClass 'offline-ui-down-2s', 2
flashClass 'offline-ui-down-5s', 5
Offline.on 'reconnect:connecting', ->
addClass 'offline-ui-connecting'
removeClass 'offline-ui-waiting'
Offline.on 'reconnect:tick', ->
addClass 'offline-ui-waiting'
removeClass 'offline-ui-connecting'
[time, unit] = roundTime Offline.reconnect.remaining
content.setAttribute 'data-retry-in-value', time
content.setAttribute 'data-retry-in-unit', unit
Offline.on 'reconnect:stopped', ->
removeClass 'offline-ui-connecting offline-ui-waiting'
content.setAttribute 'data-retry-in-value', null
content.setAttribute 'data-retry-in-unit', null
Offline.on 'reconnect:failure', ->
flashClass 'offline-ui-reconnect-failed-2s', 2
flashClass 'offline-ui-reconnect-failed-5s', 5
Offline.on 'reconnect:success', ->
flashClass 'offline-ui-reconnect-succeeded-2s', 2
flashClass 'offline-ui-reconnect-succeeded-5s', 5
if document.readyState is 'complete'
init()
else if document.addEventListener?
document.addEventListener 'DOMContentLoaded', init, false
else
# IE8
_onreadystatechange = document.onreadystatechange
document.onreadystatechange = ->
if document.readyState is 'complete'
init()
_onreadystatechange?(arguments...)
================================================
FILE: docs/welcome/app.js
================================================
$(function(){
var themes = [{
name: 'default',
title: 'Default'
}, {
name: 'slide',
title: 'Slide'
}, {
name: 'dark',
title: 'Dark'
}, {
name: 'chrome',
title: 'Chrome'
}];
var indicatorThemes = [{
name: 'default-indicator',
title: 'Default'
}, {
name: 'slide-indicator',
title: 'Slide'
}, {
name: 'dark-indicator',
title: 'Dark'
}, {
name: 'chrome-indicator',
title: 'Chrome'
}];
var addThemes = function(themes, selector) {
$.each(themes, function(i, theme){
$(selector).append('<div class="theme ' + (i % 2 === 0 ? 'even' : 'odd') + '">'+
'<h3>' + theme.title + '</h3>' +
'<p><a href="/offline/themes/offline-theme-' + theme.name + '.css" class="download-link">download</a></p>'+
'<div class="browser"><iframe data-theme="' + theme.name + '"></iframe></div>' +
'</div>');
});
};
addThemes(themes, '.full-themes');
addThemes(indicatorThemes, '.indicator-themes');
$('.browser iframe').each(function(){
var _this = this;
var themeName = $(this).data('theme');
doc = (this.contentWindow || this.documentWindow).document;
doc.open();
doc.write('' +
'<link rel="stylesheet" href="/offline/themes/offline-theme-' + themeName + '.css" />' +
'<link rel="stylesheet" href="/offline/themes/offline-language-english' + (themeName.match(/\-indicator$/) ? '-indicator' : '') + '.css" />' +
'<div data-phase="0" class="offline-ui offline-ui-down offline-ui-down-5s"><div class="offline-ui-content"></div><a class="offline-ui-retry"></a></div>' +
'');
doc.close();
});
var phases = [
[5, 'offline-ui offline-ui-down offline-ui-down-5s', '', ''],
[3, 'offline-ui offline-ui-down offline-ui-connecting offline-ui-waiting', '5 seconds', '5s'],
[1, 'offline-ui offline-ui-down offline-ui-connecting offline-ui-waiting', '4 seconds', '4s'],
[1, 'offline-ui offline-ui-down offline-ui-connecting offline-ui-waiting', '3 seconds', '3s'],
[1, 'offline-ui offline-ui-down offline-ui-connecting offline-ui-waiting', '2 seconds', '2s'],
[1, 'offline-ui offline-ui-down offline-ui-connecting offline-ui-waiting', '1 seconds', '1s'],
[1, 'offline-ui offline-ui-up offline-ui-up-5s', '', '']
];
var nextPhase = function() {
var phase;
$('.browser iframe').each(function(){
var $offline = $(this).contents().find('.offline-ui'),
$content = $offline.find('.offline-ui-content');
phase = parseInt($offline.attr('data-phase'), 10);
$offline.get(0).className = phases[phase][1];
$content.attr('data-retry-in', phases[phase][2]);
$content.attr('data-retry-in-abbr', phases[phase][3]);
phase = (phase + 1) % phases.length;
$offline.attr('data-phase', phase);
});
setTimeout(function(){
nextPhase();
}, phases[phase][0] * 1000);
};
nextPhase();
});
================================================
FILE: docs/welcome/images/ethernet-cable.sketch/fonts
================================================
================================================
FILE: docs/welcome/images/ethernet-cable.sketch/version
================================================
14
================================================
FILE: docs/welcome/images/macbook-pro-top.sketch/fonts
================================================
================================================
FILE: docs/welcome/images/macbook-pro-top.sketch/version
================================================
14
================================================
FILE: docs/welcome/images/macbook-pro.sketch/fonts
================================================
================================================
FILE: docs/welcome/images/macbook-pro.sketch/version
================================================
14
================================================
FILE: docs/welcome/index.html
================================================
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js ie6 ie9-and-less ie8-and-less ie7-and-less" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 ie9-and-less ie8-and-less ie7-and-less" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 ie9-and-less ie8-and-less" lang="en"> <![endif]-->
<!--[if IE 9]> <html class="no-js ie9 ie9-and-less" lang="en"> <![endif]-->
<!--[if gt IE 9]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<title>Offline.js – Handle your users losing their internet connection like a pro</title>
<meta name="description" content="Offline.js is a Javascript and CSS library to automatically alert your users when they've lost internet connectivity. It turns any app into an offline app.">
<link rel="icon" href="http://static.hubspot.com/favicon.ico">
<script type="text/javascript" src="//use.typekit.net/jbn8qxr.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script src="/offline/offline.min.js"></script>
<link rel="stylesheet" href="/offline/themes/offline-theme-default.css" />
<link rel="stylesheet" href="/offline/themes/offline-language-english.css" />
</head>
<body>
<style>
.section.colored {
background: #61A0FF;
-webkit-transition: background 1s 1.5s ease-in-out;
-moz-transition: background 1s 1.5s ease-in-out;
transition: background 1s 1.5s ease-in-out;
}
.header .button {
color: #61A0FF;
-webkit-transition: color 1s 1.5s ease-in-out;
-moz-transition: color 1s 1.5s ease-in-out;
transition: color 1s 1.5s ease-in-out;
}
.page-loaded .section.colored {
background: #F66;
}
.page-loaded .header .button {
color: #F66;
}
a.download-src-link, .button {
background: #444;
}
a, a:hover, a:active, .header .title .title2:before {
color: #F66;
}
</style>
<style>
html, body {
margin: 0;
height: 100%;
color: #444;
}
a, a:hover, a:active {
text-decoration: none
}
body {
font-family: "proxima-nova", "Helvetica Neue", sans-serif;
}
html .offline-ui {
font-size: 16px;
}
@media (min-width: 1700px) { html { font-size: 188%; } }
@media (max-width: 1700px) { html { font-size: 188%; } }
@media (max-width: 1680px) { html { font-size: 186%; } }
@media (max-width: 1660px) { html { font-size: 184%; } }
@media (max-width: 1640px) { html { font-size: 182%; } }
@media (max-width: 1620px) { html { font-size: 180%; } }
@media (max-width: 1600px) { html { font-size: 178%; } }
@media (max-width: 1580px) { html { font-size: 176%; } }
@media (max-width: 1560px) { html { font-size: 174%; } }
@media (max-width: 1540px) { html { font-size: 172%; } }
@media (max-width: 1520px) { html { font-size: 170%; } }
@media (max-width: 1500px) { html { font-size: 168%; } }
@media (max-width: 1480px) { html { font-size: 166%; } }
@media (max-width: 1460px) { html { font-size: 164%; } }
@media (max-width: 1440px) { html { font-size: 162%; } }
@media (max-width: 1420px) { html { font-size: 160%; } }
@media (max-width: 1400px) { html { font-size: 158%; } }
@media (max-width: 1380px) { html { font-size: 156%; } }
@media (max-width: 1360px) { html { font-size: 154%; } }
@media (max-width: 1340px) { html { font-size: 152%; } }
@media (max-width: 1320px) { html { font-size: 150%; } }
@media (max-width: 1300px) { html { font-size: 148%; } }
@media (max-width: 1280px) { html { font-size: 146%; } }
@media (max-width: 1260px) { html { font-size: 144%; } }
@media (max-width: 1240px) { html { font-size: 142%; } }
@media (max-width: 1220px) { html { font-size: 140%; } }
@media (max-width: 1200px) { html { font-size: 138%; } }
@media (max-width: 1180px) { html { font-size: 136%; } }
@media (max-width: 1160px) { html { font-size: 134%; } }
@media (max-width: 1140px) { html { font-size: 132%; } }
@media (max-width: 1120px) { html { font-size: 130%; } }
@media (max-width: 1100px) { html { font-size: 128%; } }
@media (max-width: 1080px) { html { font-size: 126%; } }
@media (max-width: 1060px) { html { font-size: 124%; } }
@media (max-width: 1040px) { html { font-size: 122%; } }
@media (max-width: 1020px) { html { font-size: 120%; } }
.page {
position: relative;
}
.section.colored .page {
height: 100%;
}
.header {
color: #fff;
height: 12rem;
max-width: 100%;
position: absolute;
margin: auto;
top: 0;
bottom: 0;
left: 2rem;
right: 2rem;
}
@media (max-width: 768px) {
.header {
height: 17rem;
}
}
.header h1 {
font-size: 2rem;
font-weight: 800;
margin: 0;
}
.header h3 {
font-size: 1.5rem;
font-weight: 800;
margin: 0;
}
.header .button {
background: #fff;
}
.section {
position: relative;
height: 100%;
padding-top: 1rem;
padding-bottom: 1rem;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.section.colored {
overflow: hidden;
color: #fff;
}
.section.colored .page {
text-align: left;
}
.up-arrow, .down-arrow {
width: 100%;
text-align: center;
font-size: 2rem;
}
.down-arrow {
position: absolute;
left: 0;
-webkit-transform: rotate(180deg);
-moz-transform: rotate(180deg);
-ms-transform: rotate(180deg);
-o-transform: rotate(180deg);
transform: rotate(180deg);
bottom: 30px;
}
.section.colored .down-arrow {
color: rgba(255, 255, 255, .5);
}
h2 {
text-align: center;
}
.themes {
text-align: center;
}
.browser {
background: #e0e0e0;
border: 4px solid #e0e0e0;
width: 100%;
height: 7rem;
padding-top: 20px;
margin: 0 0 10px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.browser iframe {
border: 0;
background: #fff;
height: 100%;
width: 100%;
}
input[type="color"] {
width: 15rem;
height: 2.3rem;
font-size: 1rem;
position: relative;
font-family: inherit;
cursor: pointer;
}
input[type="color"]::before {
content: " ";
display: block;
position: absolute;
top: 0;
left: 3px;
right: 3px;
height: 100%;
border: 6px solid #fff;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
input[type="color"]::after {
content: "Choose a color";
display: block;
text-align: center;
position: absolute;
top: 0;
left: -2px;
right: -2px;
height: 100%;
font-size: .7rem;
line-height: 2rem;
color: #fcfcfc;
color: rgba(255, 255, 255, 1);
font-weight: 800;
text-transform: uppercase;
letter-spacing: 2px;
border: 6px solid #fff;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
input[type="color"]:active::after {
color: rgba(255, 255, 255, 0.4);
}
.themes h3 {
margin-top: 1.5em;
margin-bottom: 0;
}
.themes h3 + p {
margin-top: 0;
}
.page {
text-align: center;
max-width: 32rem;
padding: 0 10px;
margin: 0 auto;
}
.themes a, .themes a:hover, .themes a:active {
text-decoration: none;
font-size: .7rem;
text-transform: uppercase;
letter-spacing: 2px;
}
a.button {
padding: 0.5rem 1rem;
color: #fff;
cursor: pointer;
font-size: 1rem;
text-transform: uppercase;
letter-spacing: .1em;
text-decoration: none;
}
.themes-pitch {
padding: 15px;
}
.block {
padding: 10px 0;
}
.color-label {
display: none;
}
.ethernet-cable {
width: 148rem;
height: 4rem;
margin-left: -148rem;
position: relative;
left: 200%;
-webkit-transition: left 1s .5s ease-in-out;
-moz-transition: left 1s .5s ease-in-out;
transition: left 1s .5s ease-in-out;
background: url("/offline/docs/welcome/images/ethernet-cable.png") no-repeat top left;
background-size: 148rem 4rem;
}
.page-loaded .ethernet-cable {
left: 110%;
}
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
.ethernet-cable {
background-image: url("/offline/docs/welcome/images/ethernet-cable@2x.png");
}
}
@media (max-width: 768px) {
.ethernet-cable {
margin-top: 2rem;
margin-bottom: 2rem;
}
.page-loaded .ethernet-cable {
left: 80%;
}
}
</style>
<div class="section colored">
<div class="page">
<div class="header">
<h1>Offline.js</h1>
<h3>Every app goes offline</h3>
<div class="ethernet-cable"></div>
<h3><a class="button" href="http://github.com/hubspot/offline">★ On GitHub</a></h3>
</div>
</div>
<div class="down-arrow">⇪</div>
</div>
<div class="section">
<div class="page">
<h2>What is Offline.js?</h2>
<p style="text-align: left">Offline.js is a library to automatically alert your users when they've lost internet connectivity, like Gmail.</p>
<p style="text-align: left">It captures AJAX requests which were made while the connection was down, and remakes them when it's back up, so your app reacts perfectly.</p>
<p style="text-align: left">It has a number of beautiful themes and requires no configuration.</p>
<br/>
<h2>Install</h2>
<p>The easiest way to add Offline to your site is with <a href="http://eager.io" style="color: #bf0c78">Eager</a>.
<p>Click Install to see a live preview of Offline on your website.</p>
<iframe style="height: 48px; width: 180px" src="//install.eager.io?appId=NnkeiqegQ2K4" allowtransparency="true" scroll="no" frameBorder="0"></iframe>
<br/>
<br/>
<h2>Download</h2>
<p><a class="button" href="https://raw.github.com/HubSpot/offline/v0.7.14/offline.min.js">Offline.js</a></p>
<br/>
<h2>Pick a Theme</h2>
<div class="themes full-themes"></div>
<h2>Indicator Themes</h2>
<div class="themes indicator-themes"></div>
<p class="block">Submit a theme! <a href="https://github.com/HubSpot/offline">Fork us on GitHub</a></p>
<p class="block"><a class="button" href="http://github.hubspot.com/offline/">Documentation</a></p>
<br/>
<p style="font-size: 0.6rem"><a href="http://dev.hubspot.com">HubSpot</a></p>
<br/>
<br/>
<script src="app.js"></script>
</div>
</div>
<script>setTimeout(function(){ document.body.className = 'page-loaded' }, 0);</script>
<!-- Share -->
<style>
#retweet_button {
position: fixed;
bottom: 30px;
left: 30px;
width: 100px;
-webkit-filter: grayscale(1) contrast(1.3);
z-index: 3;
}
#retweet_button:hover {
-webkit-filter: none;
}
#github_stars {
position: fixed;
bottom: 30px;
left: 130px;
width: 100px;
-webkit-filter: grayscale(1) contrast(1.3);
z-index: 3;
}
#github_stars:hover {
-webkit-filter: none;
}
.hn-share-button-wrapper {
position: fixed;
bottom: 29px;
left: 227px;
-webkit-filter: grayscale(1) contrast(1.3);
z-index: 3;
}
.hn-share-button-wrapper:hover {
-webkit-filter: none;
}
</style>
<div id="retweet_button">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://github.hubspot.com/offline/docs/welcome" data-text="Offline.js - Automatically alert your users when they've lost their internet connection." data-count="horizontal" data-via="HubSpotDev">Tweet</a>
<script>
if (Math.random() >= 0.5)
var recommends = ['hubspotdev', 'zackbloom', 'adamfschwartz'];
else
var recommends = ['hubspotdev', 'adamfschwartz', 'zackbloom'];
var $button = $('.twitter-share-button');
if ($button.length)
$button.data('related', recommends.join(','));
</script>
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</div>
<div id="github_stars">
<iframe src="http://ghbtns.com/github-btn.html?user=HubSpot&repo=offline&type=watch&count=true&size=small" allowtransparency="true" frameborder="0" scrolling="0" width="200" height="20"></iframe>
</div>
<!-- Start of Async HubSpot Analytics Code -->
<script type="text/javascript">
(function(d,s,i,r) {
if (d.getElementById(i)){return;}
var n=d.createElement(s),e=d.getElementsByTagName(s)[0];
n.id=i;n.src='//js.hubspot.com/analytics/'+(Math.ceil(new Date()/r)*r)+'/51294.js';
e.parentNode.insertBefore(n, e);
})(document,"script","hs-analytics",300000);
</script>
<!-- End of Async HubSpot Analytics Code -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-45159009-1', 'hubspot.com');
ga('send', 'pageview');
</script>
<!-- Force 3d acceleration always and forever :) -->
<div style="-webkit-transform: translateZ(0)"></div>
</body>
</html>
================================================
FILE: install.json
================================================
{
"resources": {
"head": [
{
"type": "script",
"src": "./offline.min.js"
},
{
"type": "style",
"src": "./themes/offline-language-{{ options.language }}.css",
"if": "!options.indicator"
},
{
"type": "style",
"src": "./themes/offline-language-{{ options.language }}-indicator.css",
"if": "options.indicator"
},
{
"type": "style",
"src": "./themes/offline-theme-{{ options.theme }}.css",
"if": "!options.indicator"
},
{
"type": "style",
"src": "./themes/offline-theme-{{ options.theme }}-indicator.css",
"if": "options.indicator"
}
]
},
"options": {
"properties": {
"indicator": {
"title": "Always on",
"description": "When checked, a connectivity indicator will always be present on the bottom-left corner of the page. When unchecked, Offline will only show a message when there are connectivity issues.",
"type": "boolean",
"default": false
},
"language": {
"title": "Language",
"description": "The language of the message displayed to the user when connectivity is lost or regained.",
"type": "string",
"enum": [
"arabic",
"chinese-simplified",
"chinese-traditional",
"dutch",
"english",
"french",
"german",
"italian",
"pashto",
"persian",
"polish",
"portuguese-brazil",
"spanish",
"turkish"
],
"enumNames": {
"arabic": "Arabic",
"chinese-simplified": "Simplified Chinese",
"chinese-traditional": "Traditional Chinese",
"czech": "Czech",
"dutch": "Dutch",
"english": "English",
"french": "French",
"german": "German",
"italian": "Italian",
"pashto": "Pashto",
"persian": "Persian",
"polish": "Polish",
"portuguese-brazil": "Brazilian Portuguese",
"spanish": "Spanish",
"turkish": "Turkish"
},
"default": "english"
},
"theme": {
"title": "Theme",
"description": "Describes the look and feel of the message.",
"type": "string",
"enum": [
"default",
"dark",
"chrome",
"slide"
],
"enumNames": {
"default": "Default",
"dark": "Dark",
"chrome": "Chrome",
"slide": "Slide"
},
"default": "default"
}
}
}
}
================================================
FILE: js/offline.js
================================================
(function() {
var Offline, checkXHR, defaultOptions, extendNative, grab, handlers, init;
extendNative = function(to, from) {
var e, key, results, val;
results = [];
for (key in from.prototype) {
try {
val = from.prototype[key];
if ((to[key] == null) && typeof val !== 'function') {
results.push(to[key] = val);
} else {
results.push(void 0);
}
} catch (_error) {
e = _error;
}
}
return results;
};
Offline = {};
Offline.options = window.Offline ? window.Offline.options || {} : {};
defaultOptions = {
checks: {
xhr: {
url: function() {
return "/favicon.ico?_=" + ((new Date()).getTime());
},
timeout: 5000,
type: 'HEAD'
},
image: {
url: function() {
return "/favicon.ico?_=" + ((new Date()).getTime());
}
},
active: 'xhr'
},
checkOnLoad: false,
interceptRequests: true,
reconnect: true,
deDupBody: false
};
grab = function(obj, key) {
var cur, i, j, len, part, parts;
cur = obj;
parts = key.split('.');
for (i = j = 0, len = parts.length; j < len; i = ++j) {
part = parts[i];
cur = cur[part];
if (typeof cur !== 'object') {
break;
}
}
if (i === parts.length - 1) {
return cur;
} else {
return void 0;
}
};
Offline.getOption = function(key) {
var ref, val;
val = (ref = grab(Offline.options, key)) != null ? ref : grab(defaultOptions, key);
if (typeof val === 'function') {
return val();
} else {
return val;
}
};
if (typeof window.addEventListener === "function") {
window.addEventListener('online', function() {
return setTimeout(Offline.confirmUp, 100);
}, false);
}
if (typeof window.addEventListener === "function") {
window.addEventListener('offline', function() {
return Offline.confirmDown();
}, false);
}
Offline.state = 'up';
Offline.markUp = function() {
Offline.trigger('confirmed-up');
if (Offline.state === 'up') {
return;
}
Offline.state = 'up';
return Offline.trigger('up');
};
Offline.markDown = function() {
Offline.trigger('confirmed-down');
if (Offline.state === 'down') {
return;
}
Offline.state = 'down';
return Offline.trigger('down');
};
handlers = {};
Offline.on = function(event, handler, ctx) {
var e, events, j, len, results;
events = event.split(' ');
if (events.length > 1) {
results = [];
for (j = 0, len = events.length; j < len; j++) {
e = events[j];
results.push(Offline.on(e, handler, ctx));
}
return results;
} else {
if (handlers[event] == null) {
handlers[event] = [];
}
return handlers[event].push([ctx, handler]);
}
};
Offline.off = function(event, handler) {
var _handler, ctx, i, ref, results;
if (handlers[event] == null) {
return;
}
if (!handler) {
return handlers[event] = [];
} else {
i = 0;
results = [];
while (i < handlers[event].length) {
ref = handlers[event][i], ctx = ref[0], _handler = ref[1];
if (_handler === handler) {
results.push(handlers[event].splice(i, 1));
} else {
results.push(i++);
}
}
return results;
}
};
Offline.trigger = function(event) {
var ctx, handler, j, len, ref, ref1, results;
if (handlers[event] != null) {
ref = handlers[event].slice(0);
results = [];
for (j = 0, len = ref.length; j < len; j++) {
ref1 = ref[j], ctx = ref1[0], handler = ref1[1];
results.push(handler.call(ctx));
}
return results;
}
};
checkXHR = function(xhr, onUp, onDown) {
var _onerror, _onload, _onreadystatechange, _ontimeout, checkStatus;
checkStatus = function() {
if (xhr.status && xhr.status < 12000) {
return onUp();
} else {
return onDown();
}
};
if (xhr.onprogress === null) {
_onerror = xhr.onerror;
xhr.onerror = function() {
onDown();
return typeof _onerror === "function" ? _onerror.apply(null, arguments) : void 0;
};
_ontimeout = xhr.ontimeout;
xhr.ontimeout = function() {
onDown();
return typeof _ontimeout === "function" ? _ontimeout.apply(null, arguments) : void 0;
};
_onload = xhr.onload;
return xhr.onload = function() {
checkStatus();
return typeof _onload === "function" ? _onload.apply(null, arguments) : void 0;
};
} else {
_onreadystatechange = xhr.onreadystatechange;
return xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
checkStatus();
} else if (xhr.readyState === 0) {
onDown();
}
return typeof _onreadystatechange === "function" ? _onreadystatechange.apply(null, arguments) : void 0;
};
}
};
Offline.checks = {};
Offline.checks.xhr = function() {
var e, xhr;
xhr = new XMLHttpRequest;
xhr.offline = false;
xhr.open(Offline.getOption('checks.xhr.type'), Offline.getOption('checks.xhr.url'), true);
if (xhr.timeout != null) {
xhr.timeout = Offline.getOption('checks.xhr.timeout');
}
checkXHR(xhr, Offline.markUp, Offline.markDown);
try {
xhr.send();
} catch (_error) {
e = _error;
Offline.markDown();
}
return xhr;
};
Offline.checks.image = function() {
var img;
img = document.createElement('img');
img.onerror = Offline.markDown;
img.onload = Offline.markUp;
img.src = Offline.getOption('checks.image.url');
return void 0;
};
Offline.checks.down = Offline.markDown;
Offline.checks.up = Offline.markUp;
Offline.check = function() {
Offline.trigger('checking');
return Offline.checks[Offline.getOption('checks.active')]();
};
Offline.confirmUp = Offline.confirmDown = Offline.check;
Offline.onXHR = function(cb) {
var _XDomainRequest, _XMLHttpRequest, monitorXHR;
monitorXHR = function(req, flags) {
var _open;
_open = req.open;
return req.open = function(type, url, async, user, password) {
cb({
type: type,
url: url,
async: async,
flags: flags,
user: user,
password: password,
xhr: req
});
return _open.apply(req, arguments);
};
};
_XMLHttpRequest = window.XMLHttpRequest;
window.XMLHttpRequest = function(flags) {
var _overrideMimeType, _setRequestHeader, req;
req = new _XMLHttpRequest(flags);
monitorXHR(req, flags);
_setRequestHeader = req.setRequestHeader;
req.headers = {};
req.setRequestHeader = function(name, value) {
req.headers[name] = value;
return _setRequestHeader.call(req, name, value);
};
_overrideMimeType = req.overrideMimeType;
req.overrideMimeType = function(type) {
req.mimeType = type;
return _overrideMimeType.call(req, type);
};
return req;
};
extendNative(window.XMLHttpRequest, _XMLHttpRequest);
if (window.XDomainRequest != null) {
_XDomainRequest = window.XDomainRequest;
window.XDomainRequest = function() {
var req;
req = new _XDomainRequest;
monitorXHR(req);
return req;
};
return extendNative(window.XDomainRequest, _XDomainRequest);
}
};
init = function() {
if (Offline.getOption('interceptRequests')) {
Offline.onXHR(function(arg) {
var xhr;
xhr = arg.xhr;
if (xhr.offline !== false) {
return checkXHR(xhr, Offline.markUp, Offline.confirmDown);
}
});
}
if (Offline.getOption('checkOnLoad')) {
return Offline.check();
}
};
setTimeout(init, 0);
window.Offline = Offline;
}).call(this);
================================================
FILE: js/reconnect.js
================================================
(function() {
var down, next, nope, rc, reset, retryIntv, tick, tryNow, up;
if (!window.Offline) {
throw new Error("Offline Reconnect brought in without offline.js");
}
rc = Offline.reconnect = {};
retryIntv = null;
reset = function() {
var ref;
if ((rc.state != null) && rc.state !== 'inactive') {
Offline.trigger('reconnect:stopped');
}
rc.state = 'inactive';
return rc.remaining = rc.delay = (ref = Offline.getOption('reconnect.initialDelay')) != null ? ref : 3;
};
next = function() {
var delay, ref;
delay = (ref = Offline.getOption('reconnect.delay')) != null ? ref : Math.min(Math.ceil(rc.delay * 1.5), 3600);
return rc.remaining = rc.delay = delay;
};
tick = function() {
if (rc.state === 'connecting') {
return;
}
rc.remaining -= 1;
Offline.trigger('reconnect:tick');
if (rc.remaining === 0) {
return tryNow();
}
};
tryNow = function() {
if (rc.state !== 'waiting') {
return;
}
Offline.trigger('reconnect:connecting');
rc.state = 'connecting';
return Offline.check();
};
down = function() {
if (!Offline.getOption('reconnect')) {
return;
}
reset();
rc.state = 'waiting';
Offline.trigger('reconnect:started');
return retryIntv = setInterval(tick, 1000);
};
up = function() {
if (retryIntv != null) {
clearInterval(retryIntv);
}
return reset();
};
nope = function() {
if (!Offline.getOption('reconnect')) {
return;
}
if (rc.state === 'connecting') {
Offline.trigger('reconnect:failure');
rc.state = 'waiting';
return next();
}
};
rc.tryNow = tryNow;
reset();
Offline.on('down', down);
Offline.on('confirmed-down', nope);
Offline.on('up', up);
}).call(this);
================================================
FILE: js/requests.js
================================================
(function() {
var clear, flush, held, holdRequest, makeRequest, waitingOnConfirm;
if (!window.Offline) {
throw new Error("Requests module brought in without offline.js");
}
held = [];
waitingOnConfirm = false;
holdRequest = function(req) {
if (Offline.getOption('requests') === false) {
return;
}
Offline.trigger('requests:capture');
if (Offline.state !== 'down') {
waitingOnConfirm = true;
}
return held.push(req);
};
makeRequest = function(arg) {
var body, name, password, ref, type, url, user, val, xhr;
xhr = arg.xhr, url = arg.url, type = arg.type, user = arg.user, password = arg.password, body = arg.body;
if (Offline.getOption('requests') === false) {
return;
}
xhr.abort();
xhr.open(type, url, true, user, password);
ref = xhr.headers;
for (name in ref) {
val = ref[name];
xhr.setRequestHeader(name, val);
}
if (xhr.mimeType) {
xhr.overrideMimeType(xhr.mimeType);
}
return xhr.send(body);
};
clear = function() {
return held = [];
};
flush = function() {
var body, i, key, len, request, requests, url;
if (Offline.getOption('requests') === false) {
return;
}
Offline.trigger('requests:flush');
requests = {};
for (i = 0, len = held.length; i < len; i++) {
request = held[i];
url = request.url.replace(/(\?|&)_=[0-9]+/, function(match, chr) {
if (chr === '?') {
return chr;
} else {
return '';
}
});
if (Offline.getOption('deDupBody')) {
body = request.body;
if (body.toString() === '[object Object]') {
body = JSON.stringify(body);
} else {
body = body.toString();
}
requests[(request.type.toUpperCase()) + " - " + url + " - " + body] = request;
} else {
requests[(request.type.toUpperCase()) + " - " + url] = request;
}
}
for (key in requests) {
request = requests[key];
makeRequest(request);
}
return clear();
};
setTimeout(function() {
if (Offline.getOption('requests') !== false) {
Offline.on('confirmed-up', function() {
if (waitingOnConfirm) {
waitingOnConfirm = false;
return clear();
}
});
Offline.on('up', flush);
Offline.on('down', function() {
return waitingOnConfirm = false;
});
Offline.onXHR(function(request) {
var _onreadystatechange, _send, async, hold, xhr;
xhr = request.xhr, async = request.async;
if (xhr.offline === false) {
return;
}
hold = function() {
return holdRequest(request);
};
_send = xhr.send;
xhr.send = function(body) {
request.body = body;
return _send.apply(xhr, arguments);
};
if (!async) {
return;
}
if (xhr.onprogress === null) {
xhr.addEventListener('error', hold, false);
return xhr.addEventListener('timeout', hold, false);
} else {
_onreadystatechange = xhr.onreadystatechange;
return xhr.onreadystatechange = function() {
if (xhr.readyState === 0) {
hold();
} else if (xhr.readyState === 4 && (xhr.status === 0 || xhr.status >= 12000)) {
hold();
}
return typeof _onreadystatechange === "function" ? _onreadystatechange.apply(null, arguments) : void 0;
};
}
});
return Offline.requests = {
flush: flush,
clear: clear
};
}
}, 0);
}).call(this);
================================================
FILE: js/simulate.js
================================================
(function() {
var base, e, i, len, ref, simulate, state;
if (!Offline) {
throw new Error("Offline simulate brought in without offline.js");
}
ref = ['up', 'down'];
for (i = 0, len = ref.length; i < len; i++) {
state = ref[i];
try {
simulate = document.querySelector("script[data-simulate='" + state + "']") || (typeof localStorage !== "undefined" && localStorage !== null ? localStorage.OFFLINE_SIMULATE : void 0) === state;
} catch (_error) {
e = _error;
simulate = false;
}
}
if (simulate) {
if (Offline.options == null) {
Offline.options = {};
}
if ((base = Offline.options).checks == null) {
base.checks = {};
}
Offline.options.checks.active = state;
}
}).call(this);
================================================
FILE: js/snake.js
================================================
(function() {
var canvas, dot, fill, hide, keyHandler, move, randDot, render, score, show, snake, speed, stop;
canvas = dot = score = speed = stop = snake = randDot = fill = null;
render = function() {
canvas = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
canvas.setAttribute('style', 'width: 100%; height: 100%; margin: -8px; position: absolute; top: 0; left: 0; z-index: 1000');
canvas.setAttribute('viewBox', '0 0 1000 1000');
document.body.appendChild(canvas);
dot = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
dot.setAttribute('r', 20);
(randDot = function() {
dot.setAttribute('cx', (Math.random() * 960) | 0 + 20);
return dot.setAttribute('cy', (Math.random() * 960) | 0 + 20);
})();
canvas.appendChild(dot);
snake = {
direction: 0,
nodes: []
};
score = 0;
speed = 10;
stop = false;
return move();
};
move = function() {
var dotX, dotY, lastNode, lastX, lastY, nX, nY, node, old;
if (stop) {
return;
}
lastNode = snake.nodes[snake.nodes.length - 1];
if (lastNode) {
lastX = +lastNode.getAttribute('cx');
lastY = +lastNode.getAttribute('cy');
} else {
lastX = 500;
lastY = 500;
}
if (snake.nodes.length > score) {
old = snake.nodes.shift();
canvas.removeChild(old);
}
nX = lastX + Math.cos(snake.direction) * speed;
nY = lastY + Math.sin(snake.direction) * speed;
node = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
node.setAttribute('r', 20);
node.setAttribute('cx', nX);
node.setAttribute('cy', nY);
if (fill) {
node.style.fill = fill;
}
dotX = +dot.getAttribute('cx');
dotY = +dot.getAttribute('cy');
if ((dotX - 20 < nX && nX < dotX + 20) && (dotY - 20 < nY && nY < dotY + 20)) {
score++;
speed++;
randDot();
}
canvas.appendChild(node);
snake.nodes.push(node);
return requestAnimationFrame(move);
};
keyHandler = function(e) {
var ref;
if ((37 <= (ref = e.keyCode) && ref <= 40)) {
snake.direction = Math.PI / 2 * ((e.keyCode - 35) % 4);
return false;
}
};
show = function() {
document.addEventListener('keydown', keyHandler);
return render();
};
hide = function() {
document.removeEventListener('keydown', keyHandler);
stop = true;
return document.removeChild(canvas);
};
setTimeout(function() {
if (Offline.getOption('game') && (document.addEventListener != null)) {
Offline.on('down', show);
Offline.on('up', hide);
return Offline.on('reconnect:failure', function() {
fill = '#ec8787';
return setTimeout(function() {
return fill = 'black';
}, 2000);
});
}
}, 0);
}).call(this);
================================================
FILE: js/ui.js
================================================
(function() {
var RETRY_TEMPLATE, TEMPLATE, _onreadystatechange, addClass, content, createFromHTML, el, flashClass, flashTimeouts, init, removeClass, render, roundTime;
if (!window.Offline) {
throw new Error("Offline UI brought in without offline.js");
}
TEMPLATE = '<div class="offline-ui"><div class="offline-ui-content"></div></div>';
RETRY_TEMPLATE = '<a href class="offline-ui-retry"></a>';
createFromHTML = function(html) {
var el;
el = document.createElement('div');
el.innerHTML = html;
return el.children[0];
};
el = content = null;
addClass = function(name) {
removeClass(name);
return el.className += " " + name;
};
removeClass = function(name) {
return el.className = el.className.replace(new RegExp("(^| )" + (name.split(' ').join('|')) + "( |$)", 'gi'), ' ');
};
flashTimeouts = {};
flashClass = function(name, time) {
addClass(name);
if (flashTimeouts[name] != null) {
clearTimeout(flashTimeouts[name]);
}
return flashTimeouts[name] = setTimeout(function() {
removeClass(name);
return delete flashTimeouts[name];
}, time * 1000);
};
roundTime = function(sec) {
var mult, unit, units, val;
units = {
'day': 86400,
'hour': 3600,
'minute': 60,
'second': 1
};
for (unit in units) {
mult = units[unit];
if (sec >= mult) {
val = Math.floor(sec / mult);
return [val, unit];
}
}
return ['now', ''];
};
render = function() {
var button, handler;
el = createFromHTML(TEMPLATE);
document.body.appendChild(el);
if ((Offline.reconnect != null) && Offline.getOption('reconnect')) {
el.appendChild(createFromHTML(RETRY_TEMPLATE));
button = el.querySelector('.offline-ui-retry');
handler = function(e) {
e.preventDefault();
return Offline.reconnect.tryNow();
};
if (button.addEventListener != null) {
button.addEventListener('click', handler, false);
} else {
button.attachEvent('click', handler);
}
}
addClass("offline-ui-" + Offline.state);
return content = el.querySelector('.offline-ui-content');
};
init = function() {
render();
Offline.on('up', function() {
removeClass('offline-ui-down');
addClass('offline-ui-up');
flashClass('offline-ui-up-2s', 2);
return flashClass('offline-ui-up-5s', 5);
});
Offline.on('down', function() {
removeClass('offline-ui-up');
addClass('offline-ui-down');
flashClass('offline-ui-down-2s', 2);
return flashClass('offline-ui-down-5s', 5);
});
Offline.on('reconnect:connecting', function() {
addClass('offline-ui-connecting');
return removeClass('offline-ui-waiting');
});
Offline.on('reconnect:tick', function() {
var ref, time, unit;
addClass('offline-ui-waiting');
removeClass('offline-ui-connecting');
ref = roundTime(Offline.reconnect.remaining), time = ref[0], unit = ref[1];
content.setAttribute('data-retry-in-value', time);
return content.setAttribute('data-retry-in-unit', unit);
});
Offline.on('reconnect:stopped', function() {
removeClass('offline-ui-connecting offline-ui-waiting');
content.setAttribute('data-retry-in-value', null);
return content.setAttribute('data-retry-in-unit', null);
});
Offline.on('reconnect:failure', function() {
flashClass('offline-ui-reconnect-failed-2s', 2);
return flashClass('offline-ui-reconnect-failed-5s', 5);
});
return Offline.on('reconnect:success', function() {
flashClass('offline-ui-reconnect-succeeded-2s', 2);
return flashClass('offline-ui-reconnect-succeeded-5s', 5);
});
};
if (document.readyState === 'complete') {
init();
} else if (document.addEventListener != null) {
document.addEventListener('DOMContentLoaded', init, false);
} else {
_onreadystatechange = document.onreadystatechange;
document.onreadystatechange = function() {
if (document.readyState === 'complete') {
init();
}
return typeof _onreadystatechange === "function" ? _onreadystatechange.apply(null, arguments) : void 0;
};
}
}).call(this);
================================================
FILE: offline.js
================================================
/*! offline-js 0.7.19 */
(function() {
var Offline, checkXHR, defaultOptions, extendNative, grab, handlers, init;
extendNative = function(to, from) {
var key, results, val;
results = [];
for (key in from.prototype) try {
val = from.prototype[key], null == to[key] && "function" != typeof val ? results.push(to[key] = val) :results.push(void 0);
} catch (_error) {
_error;
}
return results;
}, Offline = {}, Offline.options = window.Offline ? window.Offline.options || {} :{},
defaultOptions = {
checks:{
xhr:{
url:function() {
return "/favicon.ico?_=" + new Date().getTime();
},
timeout:5e3,
type:"HEAD"
},
image:{
url:function() {
return "/favicon.ico?_=" + new Date().getTime();
}
},
active:"xhr"
},
checkOnLoad:!1,
interceptRequests:!0,
reconnect:!0,
deDupBody:!1
}, grab = function(obj, key) {
var cur, i, j, len, part, parts;
for (cur = obj, parts = key.split("."), i = j = 0, len = parts.length; j < len && (part = parts[i],
"object" == typeof (cur = cur[part])); i = ++j) ;
return i === parts.length - 1 ? cur :void 0;
}, Offline.getOption = function(key) {
var ref, val;
return val = null != (ref = grab(Offline.options, key)) ? ref :grab(defaultOptions, key),
"function" == typeof val ? val() :val;
}, "function" == typeof window.addEventListener && window.addEventListener("online", function() {
return setTimeout(Offline.confirmUp, 100);
}, !1), "function" == typeof window.addEventListener && window.addEventListener("offline", function() {
return Offline.confirmDown();
}, !1), Offline.state = "up", Offline.markUp = function() {
if (Offline.trigger("confirmed-up"), "up" !== Offline.state) return Offline.state = "up",
Offline.trigger("up");
}, Offline.markDown = function() {
if (Offline.trigger("confirmed-down"), "down" !== Offline.state) return Offline.state = "down",
Offline.trigger("down");
}, handlers = {}, Offline.on = function(event, handler, ctx) {
var e, events, j, len, results;
if (events = event.split(" "), events.length > 1) {
for (results = [], j = 0, len = events.length; j < len; j++) e = events[j], results.push(Offline.on(e, handler, ctx));
return results;
}
return null == handlers[event] && (handlers[event] = []), handlers[event].push([ ctx, handler ]);
}, Offline.off = function(event, handler) {
var _handler, i, ref, results;
if (null != handlers[event]) {
if (handler) {
for (i = 0, results = []; i < handlers[event].length; ) ref = handlers[event][i],
ref[0], _handler = ref[1], _handler === handler ? results.push(handlers[event].splice(i, 1)) :results.push(i++);
return results;
}
return handlers[event] = [];
}
}, Offline.trigger = function(event) {
var ctx, handler, j, len, ref, ref1, results;
if (null != handlers[event]) {
for (ref = handlers[event].slice(0), results = [], j = 0, len = ref.length; j < len; j++) ref1 = ref[j],
ctx = ref1[0], handler = ref1[1], results.push(handler.call(ctx));
return results;
}
}, checkXHR = function(xhr, onUp, onDown) {
var _onerror, _onload, _onreadystatechange, _ontimeout, checkStatus;
return checkStatus = function() {
return xhr.status && xhr.status < 12e3 ? onUp() :onDown();
}, null === xhr.onprogress ? (_onerror = xhr.onerror, xhr.onerror = function() {
return onDown(), "function" == typeof _onerror ? _onerror.apply(null, arguments) :void 0;
}, _ontimeout = xhr.ontimeout, xhr.ontimeout = function() {
return onDown(), "function" == typeof _ontimeout ? _ontimeout.apply(null, arguments) :void 0;
}, _onload = xhr.onload, xhr.onload = function() {
return checkStatus(), "function" == typeof _onload ? _onload.apply(null, arguments) :void 0;
}) :(_onreadystatechange = xhr.onreadystatechange, xhr.onreadystatechange = function() {
return 4 === xhr.readyState ? checkStatus() :0 === xhr.readyState && onDown(), "function" == typeof _onreadystatechange ? _onreadystatechange.apply(null, arguments) :void 0;
});
}, Offline.checks = {}, Offline.checks.xhr = function() {
var xhr;
xhr = new XMLHttpRequest(), xhr.offline = !1, xhr.open(Offline.getOption("checks.xhr.type"), Offline.getOption("checks.xhr.url"), !0),
null != xhr.timeout && (xhr.timeout = Offline.getOption("checks.xhr.timeout")),
checkXHR(xhr, Offline.markUp, Offline.markDown);
try {
xhr.send();
} catch (_error) {
_error, Offline.markDown();
}
return xhr;
}, Offline.checks.image = function() {
var img;
img = document.createElement("img"), img.onerror = Offline.markDown, img.onload = Offline.markUp,
img.src = Offline.getOption("checks.image.url");
}, Offline.checks.down = Offline.markDown, Offline.checks.up = Offline.markUp, Offline.check = function() {
return Offline.trigger("checking"), Offline.checks[Offline.getOption("checks.active")]();
}, Offline.confirmUp = Offline.confirmDown = Offline.check, Offline.onXHR = function(cb) {
var _XDomainRequest, _XMLHttpRequest, monitorXHR;
if (monitorXHR = function(req, flags) {
var _open;
return _open = req.open, req.open = function(type, url, async, user, password) {
return cb({
type:type,
url:url,
async:async,
flags:flags,
user:user,
password:password,
xhr:req
}), _open.apply(req, arguments);
};
}, _XMLHttpRequest = window.XMLHttpRequest, window.XMLHttpRequest = function(flags) {
var _overrideMimeType, _setRequestHeader, req;
return req = new _XMLHttpRequest(flags), monitorXHR(req, flags), _setRequestHeader = req.setRequestHeader,
req.headers = {}, req.setRequestHeader = function(name, value) {
return req.headers[name] = value, _setRequestHeader.call(req, name, value);
}, _overrideMimeType = req.overrideMimeType, req.overrideMimeType = function(type) {
return req.mimeType = type, _overrideMimeType.call(req, type);
}, req;
}, extendNative(window.XMLHttpRequest, _XMLHttpRequest), null != window.XDomainRequest) return _XDomainRequest = window.XDomainRequest,
window.XDomainRequest = function() {
var req;
return req = new _XDomainRequest(), monitorXHR(req), req;
}, extendNative(window.XDomainRequest, _XDomainRequest);
}, init = function() {
if (Offline.getOption("interceptRequests") && Offline.onXHR(function(arg) {
var xhr;
if (xhr = arg.xhr, !1 !== xhr.offline) return checkXHR(xhr, Offline.markUp, Offline.confirmDown);
}), Offline.getOption("checkOnLoad")) return Offline.check();
}, setTimeout(init, 0), window.Offline = Offline;
}).call(this), function() {
var down, next, nope, rc, reset, retryIntv, tick, tryNow, up;
if (!window.Offline) throw new Error("Offline Reconnect brought in without offline.js");
rc = Offline.reconnect = {}, retryIntv = null, reset = function() {
var ref;
return null != rc.state && "inactive" !== rc.state && Offline.trigger("reconnect:stopped"),
rc.state = "inactive", rc.remaining = rc.delay = null != (ref = Offline.getOption("reconnect.initialDelay")) ? ref :3;
}, next = function() {
var delay, ref;
return delay = null != (ref = Offline.getOption("reconnect.delay")) ? ref :Math.min(Math.ceil(1.5 * rc.delay), 3600),
rc.remaining = rc.delay = delay;
}, tick = function() {
if ("connecting" !== rc.state) return rc.remaining -= 1, Offline.trigger("reconnect:tick"),
0 === rc.remaining ? tryNow() :void 0;
}, tryNow = function() {
if ("waiting" === rc.state) return Offline.trigger("reconnect:connecting"), rc.state = "connecting",
Offline.check();
}, down = function() {
if (Offline.getOption("reconnect")) return reset(), rc.state = "waiting", Offline.trigger("reconnect:started"),
retryIntv = setInterval(tick, 1e3);
}, up = function() {
return null != retryIntv && clearInterval(retryIntv), reset();
}, nope = function() {
if (Offline.getOption("reconnect")) return "connecting" === rc.state ? (Offline.trigger("reconnect:failure"),
rc.state = "waiting", next()) :void 0;
}, rc.tryNow = tryNow, reset(), Offline.on("down", down), Offline.on("confirmed-down", nope),
Offline.on("up", up);
}.call(this), function() {
var clear, flush, held, holdRequest, makeRequest, waitingOnConfirm;
if (!window.Offline) throw new Error("Requests module brought in without offline.js");
held = [], waitingOnConfirm = !1, holdRequest = function(req) {
if (!1 !== Offline.getOption("requests")) return Offline.trigger("requests:capture"),
"down" !== Offline.state && (waitingOnConfirm = !0), held.push(req);
}, makeRequest = function(arg) {
var body, name, password, ref, type, url, user, val, xhr;
if (xhr = arg.xhr, url = arg.url, type = arg.type, user = arg.user, password = arg.password,
body = arg.body, !1 !== Offline.getOption("requests")) {
xhr.abort(), xhr.open(type, url, !0, user, password), ref = xhr.headers;
for (name in ref) val = ref[name], xhr.setRequestHeader(name, val);
return xhr.mimeType && xhr.overrideMimeType(xhr.mimeType), xhr.send(body);
}
}, clear = function() {
return held = [];
}, flush = function() {
var body, i, key, len, request, requests, url;
if (!1 !== Offline.getOption("requests")) {
for (Offline.trigger("requests:flush"), requests = {}, i = 0, len = held.length; i < len; i++) request = held[i],
url = request.url.replace(/(\?|&)_=[0-9]+/, function(match, chr) {
return "?" === chr ? chr :"";
}), Offline.getOption("deDupBody") ? (body = request.body, body = "[object Object]" === body.toString() ? JSON.stringify(body) :body.toString(),
requests[request.type.toUpperCase() + " - " + url + " - " + body] = request) :requests[request.type.toUpperCase() + " - " + url] = request;
for (key in requests) request = requests[key], makeRequest(request);
return clear();
}
}, setTimeout(function() {
if (!1 !== Offline.getOption("requests")) return Offline.on("confirmed-up", function() {
if (waitingOnConfirm) return waitingOnConfirm = !1, clear();
}), Offline.on("up", flush), Offline.on("down", function() {
return waitingOnConfirm = !1;
}), Offline.onXHR(function(request) {
var _onreadystatechange, _send, async, hold, xhr;
if (xhr = request.xhr, async = request.async, !1 !== xhr.offline && (hold = function() {
return holdRequest(request);
}, _send = xhr.send, xhr.send = function(body) {
return request.body = body, _send.apply(xhr, arguments);
}, async)) return null === xhr.onprogress ? (xhr.addEventListener("error", hold, !1),
xhr.addEventListener("timeout", hold, !1)) :(_onreadystatechange = xhr.onreadystatechange,
xhr.onreadystatechange = function() {
return 0 === xhr.readyState ? hold() :4 === xhr.readyState && (0 === xhr.status || xhr.status >= 12e3) && hold(),
"function" == typeof _onreadystatechange ? _onreadystatechange.apply(null, arguments) :void 0;
});
}), Offline.requests = {
flush:flush,
clear:clear
};
}, 0);
}.call(this), function() {
var base, i, len, ref, simulate, state;
if (!Offline) throw new Error("Offline simulate brought in without offline.js");
for (ref = [ "up", "down" ], i = 0, len = ref.length; i < len; i++) {
state = ref[i];
try {
simulate = document.querySelector("script[data-simulate='" + state + "']") || ("undefined" != typeof localStorage && null !== localStorage ? localStorage.OFFLINE_SIMULATE :void 0) === state;
} catch (_error) {
_error, simulate = !1;
}
}
simulate && (null == Offline.options && (Offline.options = {}), null == (base = Offline.options).checks && (base.checks = {}),
Offline.options.checks.active = state);
}.call(this), function() {
var RETRY_TEMPLATE, TEMPLATE, _onreadystatechange, addClass, content, createFromHTML, el, flashClass, flashTimeouts, init, removeClass, render, roundTime;
if (!window.Offline) throw new Error("Offline UI brought in without offline.js");
TEMPLATE = '<div class="offline-ui"><div class="offline-ui-content"></div></div>',
RETRY_TEMPLATE = '<a href class="offline-ui-retry"></a>', createFromHTML = function(html) {
var el;
return el = document.createElement("div"), el.innerHTML = html, el.children[0];
}, el = content = null, addClass = function(name) {
return removeClass(name), el.className += " " + name;
}, removeClass = function(name) {
return el.className = el.className.replace(new RegExp("(^| )" + name.split(" ").join("|") + "( |$)", "gi"), " ");
}, flashTimeouts = {}, flashClass = function(name, time) {
return addClass(name), null != flashTimeouts[name] && clearTimeout(flashTimeouts[name]),
flashTimeouts[name] = setTimeout(function() {
return removeClass(name), delete flashTimeouts[name];
}, 1e3 * time);
}, roundTime = function(sec) {
var mult, unit, units, val;
units = {
day:86400,
hour:3600,
minute:60,
second:1
};
for (unit in units) if (mult = units[unit], sec >= mult) return val = Math.floor(sec / mult),
[ val, unit ];
return [ "now", "" ];
}, render = function() {
var button, handler;
return el = createFromHTML(TEMPLATE), document.body.appendChild(el), null != Offline.reconnect && Offline.getOption("reconnect") && (el.appendChild(createFromHTML(RETRY_TEMPLATE)),
button = el.querySelector(".offline-ui-retry"), handler = function(e) {
return e.preventDefault(), Offline.reconnect.tryNow();
}, null != button.addEventListener ? button.addEventListener("click", handler, !1) :button.attachEvent("click", handler)),
addClass("offline-ui-" + Offline.state), content = el.querySelector(".offline-ui-content");
}, init = function() {
return render(), Offline.on("up", function() {
return removeClass("offline-ui-down"), addClass("offline-ui-up"), flashClass("offline-ui-up-2s", 2),
flashClass("offline-ui-up-5s", 5);
}), Offline.on("down", function() {
return removeClass("offline-ui-up"), addClass("offline-ui-down"), flashClass("offline-ui-down-2s", 2),
flashClass("offline-ui-down-5s", 5);
}), Offline.on("reconnect:connecting", function() {
return addClass("offline-ui-connecting"), removeClass("offline-ui-waiting");
}), Offline.on("reconnect:tick", function() {
var ref, time, unit;
return addClass("offline-ui-waiting"), removeClass("offline-ui-connecting"), ref = roundTime(Offline.reconnect.remaining),
time = ref[0], unit = ref[1], content.setAttribute("data-retry-in-value", time),
content.setAttribute("data-retry-in-unit", unit);
}), Offline.on("reconnect:stopped", function() {
return removeClass("offline-ui-connecting offline-ui-waiting"), content.setAttribute("data-retry-in-value", null),
content.setAttribute("data-retry-in-unit", null);
}), Offline.on("reconnect:failure", function() {
return flashClass("offline-ui-reconnect-failed-2s", 2), flashClass("offline-ui-reconnect-failed-5s", 5);
}), Offline.on("reconnect:success", function() {
return flashClass("offline-ui-reconnect-succeeded-2s", 2), flashClass("offline-ui-reconnect-succeeded-5s", 5);
});
}, "complete" === document.readyState ? init() :null != document.addEventListener ? document.addEventListener("DOMContentLoaded", init, !1) :(_onreadystatechange = document.onreadystatechange,
document.onreadystatechange = function() {
return "complete" === document.readyState && init(), "function" == typeof _onreadystatechange ? _onreadystatechange.apply(null, arguments) :void 0;
});
}.call(this);
================================================
FILE: package.json
================================================
{
"name": "offline-js",
"version": "0.7.19",
"description": "Automatically detect when a browser is offline",
"authors": [
"Adam Schwartz <adam.flynn.schwartz@gmail.com>",
"Zack Bloom <zackbloom@gmail.com>"
],
"repository": {
"type": "git",
"url": "git://github.com/HubSpot/offline.git"
},
"main": "offline.js",
"license": "MIT",
"devDependencies": {
"coffee-script": "^1.9.3",
"color": "^0.9.0",
"grunt": "^0.4.1",
"grunt-cli": "^0.1.9",
"grunt-contrib-coffee": "^0.13.0",
"grunt-contrib-compass": "^1.0.3",
"grunt-contrib-uglify": "^0.9.1",
"grunt-contrib-watch": "^0.6.1"
},
"scripts": {
"build": "grunt"
}
}
================================================
FILE: sass/_arabic.sass
================================================
@charset "utf-8"
$upComputer: "الحاسوب متصل بالإنترنت."
$upDevice: "جهازك متصل بالإنترنت"
$upDeviceSmall: ".جهازك متصل"
$downComputer: ".الحاسوب فقد الاتصال بالإنترنت"
$downDevice: ".جهازك فقد الاتصال بالإنترنت"
$downDeviceSmall: ".جهازك غير متصل"
$connecting: "...محاولة إعادة الاتصال"
$retryButton: " إعادة الاتصال"
$reconnectFailed: ".فشلت محاولة الاتصال"
$retryingSecondBeforeValueSingularComputer: " الاتصال فقد إعادة الاتصال في"
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: " إعادة الاتصال في"
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " ...ثانية"
$retryingSecondAfterValuePluralComputer: " ...ثواني"
$retryingSecondAfterValueSingularDeviceSmall: "...ث"
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " ...دقيقة"
$retryingMinuteAfterValuePluralComputer: " ...دقائق"
$retryingMinuteAfterValueSingularDeviceSmall: "...د"
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " ...ساعه"
$retryingHourAfterValuePluralComputer: " ...ساعات"
$retryingHourAfterValueSingularDeviceSmall: "...س"
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_chinese-simplified.sass
================================================
@charset "utf-8"
$upComputer: "您的电脑已经连接到网络。"
$upDevice: "您的设备已经连接到网络。"
$upDeviceSmall: "您的设备已经连接到网络。"
$downComputer: "您的电脑失去了网络连接。"
$downDevice: "您的设备失去了网络连接。"
$downDeviceSmall: "您的设备失去了网络连接。"
$connecting: "正在尝试重连..."
$retryButton: "重连"
$reconnectFailed: "尝试连接网络失败。"
$retryingSecondBeforeValueSingularComputer: "失去网络连接。 即将重连:"
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "即将重连:"
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: "秒..."
$retryingSecondAfterValuePluralComputer: "秒..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: "分钟..."
$retryingMinuteAfterValuePluralComputer: "分钟..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: "小时..."
$retryingHourAfterValuePluralComputer: "小时..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_chinese-traditional.sass
================================================
@charset "utf-8"
$upComputer: "您的電腦已經連接到網絡。"
$upDevice: "您的設備已經連接到網絡。"
$upDeviceSmall: "您的設備已經連接到網絡。"
$downComputer: "您的電腦失去了網絡連接。"
$downDevice: "您的設備失去了網絡連接。"
$downDeviceSmall: "您的設備失去了網絡連接。"
$connecting: "正在嘗試重連..."
$retryButton: "重連"
$reconnectFailed: "嘗試連接網絡失敗。"
$retryingSecondBeforeValueSingularComputer: "失去網絡連接。即將重連:"
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "即將重連:"
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: "秒..."
$retryingSecondAfterValuePluralComputer: "秒..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: "分鐘..."
$retryingMinuteAfterValuePluralComputer: "分鐘..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: "小時..."
$retryingHourAfterValuePluralComputer: "小時..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_content.sass
================================================
=offline-content
.offline-ui
.offline-ui-retry
&:before
content: $retryButton
&.offline-ui-up
.offline-ui-content:before
content: $upComputer
@media (max-width: 1024px)
content: $upDevice
@media (max-width: 568px)
content: $upDeviceSmall
&.offline-ui-down
.offline-ui-content:before
content: $downComputer
@media (max-width: 1024px)
content: $downDevice
@media (max-width: 568px)
content: $downDeviceSmall
&.offline-ui-connecting, &.offline-ui-connecting-2s
.offline-ui-content:before
content: $connecting
&.offline-ui-waiting
.offline-ui-content
&[data-retry-in-unit="second"]
&:before
content: $retryingSecondBeforeValuePluralComputer attr(data-retry-in-value) $retryingSecondAfterValuePluralComputer
@media (max-width: 568px)
content: $retryingSecondBeforeValuePluralDeviceSmall attr(data-retry-in-value) $retryingSecondAfterValuePluralDeviceSmall
&[data-retry-in-value="1"]
&:before
content: $retryingSecondBeforeValueSingularComputer attr(data-retry-in-value) $retryingSecondAfterValueSingularComputer
@media (max-width: 568px)
content: $retryingSecondBeforeValueSingularDeviceSmall attr(data-retry-in-value) $retryingSecondAfterValueSingularDeviceSmall
&[data-retry-in-unit="minute"]
&:before
content: $retryingMinuteBeforeValuePluralComputer attr(data-retry-in-value) $retryingMinuteAfterValuePluralComputer
@media (max-width: 568px)
content: $retryingMinuteBeforeValuePluralDeviceSmall attr(data-retry-in-value) $retryingMinuteAfterValuePluralDeviceSmall
&[data-retry-in-value="1"]
&:before
content: $retryingMinuteBeforeValueSingularComputer attr(data-retry-in-value) $retryingMinuteAfterValueSingularComputer
@media (max-width: 568px)
content: $retryingMinuteBeforeValueSingularDeviceSmall attr(data-retry-in-value) $retryingMinuteAfterValueSingularDeviceSmall
&[data-retry-in-unit="hour"]
&:before
content: $retryingHourBeforeValuePluralComputer attr(data-retry-in-value) $retryingHourAfterValuePluralComputer
@media (max-width: 568px)
content: $retryingHourBeforeValuePluralDeviceSmall attr(data-retry-in-value) $retryingHourAfterValuePluralDeviceSmall
&[data-retry-in-value="1"]
&:before
content: $retryingHourBeforeValueSingularComputer attr(data-retry-in-value) $retryingHourAfterValueSingularComputer
@media (max-width: 568px)
content: $retryingHourBeforeValueSingularDeviceSmall attr(data-retry-in-value) $retryingHourAfterValueSingularDeviceSmall
&.offline-ui-reconnect-failed-2s
&.offline-ui-waiting .offline-ui-retry
display: none
.offline-ui-content:before
content: $reconnectFailed
================================================
FILE: sass/_czech.sass
================================================
@charset "utf-8"
$upComputer: "Váš počítač je připojen k internetu."
$upDevice: "Vaše zařízení je připojeno k internetu."
$upDeviceSmall: "Vaše zařízení je připojeno."
$downComputer: "Váš počítač ztratil připojení k internetu."
$downDevice: "Vaše zařízení ztratilo připojení k internetu."
$downDeviceSmall: "Vaše zařízení není připojeno."
$connecting: "Zkouším se znovu připojit..."
$retryButton: "Znovu připojit"
$reconnectFailed: "Pokus o připojení selhal."
$retryingSecondBeforeValueSingularComputer: "Připojení ztraceno. Znovu zkusím za "
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "Znovu zkusím za "
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " sekundu..."
$retryingSecondAfterValuePluralComputer: " sekund..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " minutu..."
$retryingMinuteAfterValuePluralComputer: " minut..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " hodinu..."
$retryingHourAfterValuePluralComputer: " hodin..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_dutch.sass
================================================
@charset "utf-8"
$upComputer: "Computer verbonden met internet."
$upDevice: "Apparaat verbonden met internet."
$upDeviceSmall: "Apparaat verbonden met internet."
$downComputer: "Computer niet verbonden met internet."
$downDevice: "Apparaat niet verbonden met internet."
$downDeviceSmall: "Apparaat niet verbonden met internet."
$connecting: "Opnieuw proberen..."
$retryButton: "Opnieuw"
$reconnectFailed: "Poging mislukt."
$retryingSecondBeforeValueSingularComputer: "Internetverbinding kwijt. Opnieuw proberen over "
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "Opnieuw proberen over "
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " seconde..."
$retryingSecondAfterValuePluralComputer: " seconden..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " minuut..."
$retryingMinuteAfterValuePluralComputer: " minuten..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " uur..."
$retryingHourAfterValuePluralComputer: " uren..."
$retryingHourAfterValueSingularDeviceSmall: "u..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_english.sass
================================================
@charset "utf-8"
$upComputer: "Your computer is connected to the internet."
$upDevice: "Your device is connected to the internet."
$upDeviceSmall: "Your device is connected."
$downComputer: "Your computer lost its internet connection."
$downDevice: "Your device lost its internet connection."
$downDeviceSmall: "Your device isn't connected."
$connecting: "Attempting to reconnect..."
$retryButton: "Reconnect"
$reconnectFailed: "Connection attempt failed."
$retryingSecondBeforeValueSingularComputer: "Connection lost. Reconnecting in "
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "Reconnecting in "
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " second..."
$retryingSecondAfterValuePluralComputer: " seconds..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " minute..."
$retryingMinuteAfterValuePluralComputer: " minutes..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " hour..."
$retryingHourAfterValuePluralComputer: " hours..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_french.sass
================================================
@charset "utf-8"
$upComputer: "Votre ordinateur est connecté à Internet."
$upDevice: "Votre appareil est connecté à Internet."
$upDeviceSmall: "Votre appareil est connecté."
$downComputer: "Votre ordinateur a perdu sa connexion Internet."
$downDevice: "Votre appareil a perdu sa connexion Internet."
$downDeviceSmall: "Votre appareil n'est pas branché."
$connecting: "Tentative de reconnexion..."
$retryButton: "Reconnecter"
$reconnectFailed: "La tentative de connexion a échoué."
$retryingSecondBeforeValueSingularComputer: "Connexion perdue. Reconnexion dans "
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "Reconnexion dans "
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " seconde..."
$retryingSecondAfterValuePluralComputer: " secondes..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " minute..."
$retryingMinuteAfterValuePluralComputer: " minutes..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " heure..."
$retryingHourAfterValuePluralComputer: " heures..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_german.sass
================================================
@charset "utf-8"
$upComputer: "Dein Computer ist mit dem Internet verbunden."
$upDevice: "Deing Gerät ist mit dem Internet verbunden."
$upDeviceSmall: "Dein Gerät ist online."
$downComputer: "Dein Computer wurde vom Internet getrennt."
$downDevice: "Dein Gerät wurde vom Internet getrennt."
$downDeviceSmall: "Keine Internetverbindung."
$connecting: "Versuche Verbindung wiederherzustellen..."
$retryButton: "Verbinden"
$reconnectFailed: "Verbindung Fehlgeschlagen."
$retryingSecondBeforeValueSingularComputer: "Keine Verbindung. Verbinde nochmal in "
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "Verbinde in "
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " Sekunde..."
$retryingSecondAfterValuePluralComputer: " Sekunden..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " Minute..."
$retryingMinuteAfterValuePluralComputer: " Minuten..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " Stunde..."
$retryingHourAfterValuePluralComputer: " Stunden..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_italian.sass
================================================
@charset "utf-8"
$upComputer: "Il tuo computer è connesso ad internet."
$upDevice: "Il tuo device è connesso ad internet."
$upDeviceSmall: "Il tuo device è connesso."
$downComputer: "Il tuo computer si è disconnesso da internet."
$downDevice: "Il tuo device si è disconnesso da internet."
$downDeviceSmall: "Il tuo device si è disconnesso."
$connecting: "Connessione in corso..."
$retryButton: "Riconnetti"
$reconnectFailed: "Tentativo di connessione fallito."
$retryingSecondBeforeValueSingularComputer: "Connessione persa. Riconnessione tra "
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "Riconnessione tra "
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " secondo..."
$retryingSecondAfterValuePluralComputer: " secondi..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " minuto..."
$retryingMinuteAfterValuePluralComputer: " minuti..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " ora..."
$retryingHourAfterValuePluralComputer: " ore..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_keyframes.sass
================================================
@import compass/css3
@import mixins
=keyframes-offline-fadein
+offline-keyframes("offline-fadein")
0%
opacity: 0
100%
opacity: 1
=keyframes-offline-fadeout
+offline-keyframes("offline-fadeout")
0%
opacity: 1
100%
opacity: 0
=keyframes-offline-fadeout-and-hide
+offline-keyframes("offline-fadeout-and-hide")
0%
opacity: 1
display: block
99%
opacity: 0
display: block
100%
opacity: 0
display: none
=keyframes-offline-dropin
+offline-keyframes("offline-dropin")
// We start at 0 first and, while hidden
// move to -800px, where the animation
// really begins. This was necessary because
// otherwise, when starting the animation
// at -800px, the browser scrolls up 800px
// to try to display this object positioned
// above the page.
// https://github.com/HubSpot/vex/issues/21
0%
+offline-transform(translateY(0))
opacity: 0
1%
+offline-transform(translateY(-800px))
opacity: 0
// Real animation begins here
2%
+offline-transform(translateY(-800px))
opacity: 1
100%
+offline-transform(translateY(0))
opacity: 1
=keyframes-offline-dropout
+offline-keyframes("offline-dropout")
0%
+offline-transform(translateY(0))
100%
+offline-transform(translateY(-800px))
=keyframes-offline-rotation
+offline-keyframes("offline-rotation")
0%
+offline-transform(rotate(0deg))
100%
+offline-transform(rotate(359deg))
================================================
FILE: sass/_mixins.sass
================================================
=offline-keyframes($name)
@-webkit-keyframes #{$name}
@content
@-moz-keyframes #{$name}
@content
@-ms-keyframes #{$name}
@content
@-o-keyframes #{$name}
@content
@keyframes #{$name}
@content
=offline-animation($animation)
-webkit-animation: $animation
-moz-animation: $animation
-ms-animation: $animation
-o-animation: $animation
animation: $animation
-webkit-backface-visibility: hidden
=offline-transform($transform)
transform: $transform
-webkit-transform: $transform
-moz-transform: $transform
-ms-transform: $transform
-o-transform: $transform
=offline-preserve-3d
-webkit-transform-style: preserve-3d
-moz-transform-style: preserve-3d
transform-style: preserve-3d
================================================
FILE: sass/_offline-theme-base-indicator.sass
================================================
@import compass/css3
.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after
+box-sizing(border-box)
.offline-ui
display: none
position: fixed
background: #fff
z-index: 2000
display: inline-block
.offline-ui-retry
display: none
&.offline-ui-up
display: block
&.offline-ui-down
display: block
================================================
FILE: sass/_offline-theme-base.sass
================================================
@import compass/css3
@import compass/css3/user-interface
.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-ui *:after
+box-sizing(border-box)
.offline-ui
display: none
position: fixed
background: #fff
z-index: 2000
margin: auto
top: 0
left: 0
right: 0
.offline-ui-content:before
display: inline
.offline-ui-retry
+user-select(none)
display: none
&:before
display: inline
&.offline-ui-up
&.offline-ui-up-5s
display: block
&.offline-ui-down
display: block
&.offline-ui-waiting
.offline-ui-retry
display: block
&.offline-ui-reconnect-failed-2s
&.offline-ui-waiting .offline-ui-retry
display: none
================================================
FILE: sass/_pashto.sass
================================================
@charset "utf-8"
$upComputer: "ستاسو د کمپيوټر له انټرنيټ سره وصل دی."
$upDevice: "ستاسو وسيله چې د انټرنټ سره نښلي."
$upDeviceSmall: "ستاسو آله سره نښلي."
$downComputer: "ستاسو د کمپيوټر د خپل د انټرنېټ پیوستون له لاسه ورکړ."
$downDevice: "ستاسو آله خپل د انټرنېټ پیوستون له لاسه ورکړ."
$downDeviceSmall: "ستاسو آله نه نښلي."
$connecting: "هڅه کوي تر څو یو ځل بیا سره نښلوي"
$retryButton: "بيا ونښلوي"
$reconnectFailed: "پیوستون هڅه ناکامه شوه."
$retryingSecondBeforeValueSingularComputer: "پیوستون له لاسه ورکړ. بيا په سره نښلوي"
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "بيا په سره نښلوي"
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: "دوهم..."
$retryingSecondAfterValuePluralComputer: "ثانيو ..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: "دقیقه ..."
$retryingMinuteAfterValuePluralComputer: "دقیقو ..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: "ساعت ..."
$retryingHourAfterValuePluralComputer: "ساعتونو کې ..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_persian.sass
================================================
@charset "utf-8"
$upComputer: "ارتباط کامپیوتر شما با اینترنت برقرار است."
$upDevice: "ارتباط دستگاه شما با اینترنت برقرار است."
$upDeviceSmall: "دستگاه شما متصل است."
$downComputer: "ازتباط کامپیوتر شما با اینترنت قطع شده است."
$downDevice: "ارتباط دستگاه شما با اینترنت قطع شده است."
$downDeviceSmall: "دستگاه شما متصل نیست."
$connecting: "تلاش برای اتصال مجدد..."
$retryButton: "اتصال مجدد"
$reconnectFailed: "تلاش برای اتصال مجدد بی نتیجه بود."
$retryingSecondBeforeValueSingularComputer: "اتصال قطع شد. اتصال مجدد در "
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "اتصال مجدد در "
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " ثانیه..."
$retryingSecondAfterValuePluralComputer: " ثانیه..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " دقیقه..."
$retryingMinuteAfterValuePluralComputer: " دقیقه..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " ساعت..."
$retryingHourAfterValuePluralComputer: " ساعت..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_polish.sass
================================================
@charset "utf-8"
$upComputer: "Twój komputer jest podłączony do internetu."
$upDevice: "Twoje urządzenie jest podłączone do internetu."
$upDeviceSmall: "Twoje urządzenie jest podłączone."
$downComputer: "Twój komputer stracił połączenie z internetem."
$downDevice: "Twoje urządzenie straciło połączenie z internetem."
$downDeviceSmall: "Twoje urządzenie nie jest podłączone."
$connecting: "Próbuję połączyć..."
$retryButton: "Połącz teraz"
$reconnectFailed: "Nieudana próba podłączenia."
$retryingSecondBeforeValueSingularComputer: "Połączenie utracone. Ponawiam za "
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "Ponawiam za "
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " sekundę..."
$retryingSecondAfterValuePluralComputer: " sekund..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " minutę..."
$retryingMinuteAfterValuePluralComputer: " minut..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " godzinę..."
$retryingHourAfterValuePluralComputer: " godzin..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_portuguese-brazil.sass
================================================
@charset "utf-8"
$upComputer: "Seu computador está conectado à internet."
$upDevice: "O dispositivo está conectado à internet."
$upDeviceSmall: "O dispositivo está conectado."
$downComputer: "O computador perdeu sua conexão com a internet."
$downDevice: "O dispositivo perdeu sua conexão com a internet."
$downDeviceSmall: "Seu dispositivo não está conectado."
$connecting: "Tentando reconectar..."
$retryButton: "Reconectar"
$reconnectFailed: "Tentativa de conexão falhou."
$retryingSecondBeforeValueSingularComputer: "Conexão perdida. Reconectando em "
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "Reconectando em "
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " segundo..."
$retryingSecondAfterValuePluralComputer: " segundos..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " minuto..."
$retryingMinuteAfterValuePluralComputer: " minutos..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " hora..."
$retryingHourAfterValuePluralComputer: " horas..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_spanish.sass
================================================
@charset "utf-8"
$upComputer: "Tu computador está conectado a internet."
$upDevice: "Tu dispositivo está conectado a internet."
$upDeviceSmall: "Tu dispositivo está conectado."
$downComputer: "Tu computador perdió su conexión a internet."
$downDevice: "Tu dispositivo perdió su conexión a internet."
$downDeviceSmall: "Tu dispositivo no está conectado."
$connecting: "Intentando reconectar..."
$retryButton: "Reconectar"
$reconnectFailed: "Intento fallido."
$retryingSecondBeforeValueSingularComputer: "Conexión perdida. Reconectando en "
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: "Reconectando en "
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " segundo..."
$retryingSecondAfterValuePluralComputer: " segundos..."
$retryingSecondAfterValueSingularDeviceSmall: "s..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " minuto..."
$retryingMinuteAfterValuePluralComputer: " minutos..."
$retryingMinuteAfterValueSingularDeviceSmall: "m..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " hora..."
$retryingHourAfterValuePluralComputer: " horas..."
$retryingHourAfterValueSingularDeviceSmall: "h..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/_turkish.sass
================================================
@charset "utf-8"
$upComputer: "Bilgisayarınız internete bağlı."
$upDevice: "Cihazınız internete bağlı."
$upDeviceSmall: "Cihazınız bağlı."
$downComputer: "Bilgisayarınız internet bağlantısı kesildi."
$downDevice: "Cihazınızın internet bağlantısı kesildi."
$downDeviceSmall: "Cihazınız internete bağlı değil."
$connecting: "Yeniden bağlanmaya çalışıyor..."
$retryButton: "Yeniden bağlan"
$reconnectFailed: "Bağlantı denemesi başarısız oldu."
$retryingSecondBeforeValueSingularComputer: "Bağlantı kesildi. "
$retryingSecondBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingMinuteBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValueSingularComputer: $retryingSecondBeforeValueSingularComputer
$retryingHourBeforeValuePluralComputer: $retryingSecondBeforeValueSingularComputer
$retryingSecondBeforeValueSingularDeviceSmall: " "
$retryingSecondBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingMinuteBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValueSingularDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingHourBeforeValuePluralDeviceSmall: $retryingSecondBeforeValueSingularDeviceSmall
$retryingSecondAfterValueSingularComputer: " saniye içinde tekrar bağlanmayı deneyecek..."
$retryingSecondAfterValuePluralComputer: " saniye içinde tekrar bağlanmayı deneyecek..."
$retryingSecondAfterValueSingularDeviceSmall: "saniye içinde tekrar bağlanmayı deneyecek..."
$retryingSecondAfterValuePluralDeviceSmall: $retryingSecondAfterValueSingularDeviceSmall
$retryingMinuteAfterValueSingularComputer: " dakika içersinde tekrar bağlanmayı deneyecek..."
$retryingMinuteAfterValuePluralComputer: " dakika içersinde tekrar bağlanmayı deneyecek..."
$retryingMinuteAfterValueSingularDeviceSmall: "dakika içersinde tekrar bağlanmayı deneyecek..."
$retryingMinuteAfterValuePluralDeviceSmall: $retryingMinuteAfterValueSingularDeviceSmall
$retryingHourAfterValueSingularComputer: " saat içersinde tekrar bağlanmayı deneyecek..."
$retryingHourAfterValuePluralComputer: " saat içersinde tekrar bağlanmayı deneyecek..."
$retryingHourAfterValueSingularDeviceSmall: "saat içersinde tekrar bağlanmayı deneyecek..."
$retryingHourAfterValuePluralDeviceSmall: $retryingHourAfterValueSingularDeviceSmall
================================================
FILE: sass/offline-language-arabic-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "متصل."
&.offline-ui-down
.offline-ui-content:before
content: "غير متصل."
================================================
FILE: sass/offline-language-arabic.sass
================================================
@import content
@import arabic
+offline-content
================================================
FILE: sass/offline-language-chinese-simplified-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "在线"
&.offline-ui-down
.offline-ui-content:before
content: "离线"
================================================
FILE: sass/offline-language-chinese-simplified.sass
================================================
@import content
@import chinese-simplified
+offline-content
================================================
FILE: sass/offline-language-chinese-traditional-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "在線"
&.offline-ui-down
.offline-ui-content:before
content: "離線"
================================================
FILE: sass/offline-language-chinese-traditional.sass
================================================
@import content
@import chinese-traditional
+offline-content
================================================
FILE: sass/offline-language-czech-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "Online"
&.offline-ui-down
.offline-ui-content:before
content: "Offline"
================================================
FILE: sass/offline-language-czech.sass
================================================
@import content
@import czech
+offline-content
================================================
FILE: sass/offline-language-dutch-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "Online"
&.offline-ui-down
.offline-ui-content:before
content: "Offline"
================================================
FILE: sass/offline-language-dutch.sass
================================================
@import content
@import dutch
+offline-content
================================================
FILE: sass/offline-language-english-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "Online"
&.offline-ui-down
.offline-ui-content:before
content: "Offline"
================================================
FILE: sass/offline-language-english.sass
================================================
@import content
@import english
+offline-content
================================================
FILE: sass/offline-language-french-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "Connecté"
&.offline-ui-down
.offline-ui-content:before
content: "Pas connecté"
================================================
FILE: sass/offline-language-french.sass
================================================
@import content
@import french
+offline-content
================================================
FILE: sass/offline-language-german-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "Online"
&.offline-ui-down
.offline-ui-content:before
content: "Offline"
================================================
FILE: sass/offline-language-german.sass
================================================
@import content
@import german
+offline-content
================================================
FILE: sass/offline-language-italian-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "Online"
&.offline-ui-down
.offline-ui-content:before
content: "Offline"
================================================
FILE: sass/offline-language-italian.sass
================================================
@import content
@import italian
+offline-content
================================================
FILE: sass/offline-language-pashto-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "Online"
&.offline-ui-down
.offline-ui-content:before
content: "Offline"
================================================
FILE: sass/offline-language-pashto.sass
================================================
@import content
@import pashto
+offline-content
================================================
FILE: sass/offline-language-polish-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "Połączony"
&.offline-ui-down
.offline-ui-content:before
content: "Rozłączony"
================================================
FILE: sass/offline-language-polish.sass
================================================
@import content
@import polish
+offline-content
================================================
FILE: sass/offline-language-portuguese-brazil-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "Conectado"
&.offline-ui-down
.offline-ui-content:before
content: "Desconectado"
================================================
FILE: sass/offline-language-portuguese-brazil.sass
================================================
@import content
@import portuguese-brazil
+offline-content
================================================
FILE: sass/offline-language-simplified-chinese-indicator.sass
================================================
@charset "utf-8"
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "在线"
&.offline-ui-down
.offline-ui-content:before
content: "离线"
================================================
FILE: sass/offline-language-spanish-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "En línea"
&.offline-ui-down
.offline-ui-content:before
content: "Fuera de línea"
================================================
FILE: sass/offline-language-spanish.sass
================================================
@import content
@import spanish
+offline-content
================================================
FILE: sass/offline-language-turkish-indicator.sass
================================================
.offline-ui
&.offline-ui-up
.offline-ui-content:before
content: "Çevrimiçi"
&.offline-ui-down
.offline-ui-content:before
content: "Çevrimdışı"
================================================
FILE: sass/offline-language-turkish.sass
================================================
@import content
@import turkish
+offline-content
================================================
FILE: sass/offline-theme-chrome-indicator.sass
================================================
@import compass/css3
@import offline-theme-base-indicator
$green: #80d580
$red: #ec8787
.offline-ui
+box-shadow(0 0 0 1px rgba(0, 0, 0, .15))
+border-radius(4px 4px 0 0)
font-family: "Lucida Grande", sans-serif
font-size: 12px
padding: 7px
background: #f6f6f6
color: #888
bottom: 0
left: 20px
.offline-ui-content
padding-left: 16px
&:after
+border-radius(50%)
content: " "
display: block
position: absolute
top: 0
bottom: 1px
left: 8px
margin: auto
height: 9px
width: 9px
&.offline-ui-up
.offline-ui-content:after
background: $green
&.offline-ui-down
.offline-ui-content:after
background: $red
================================================
FILE: sass/offline-theme-chrome.sass
================================================
@import compass/css3
@import mixins
@import keyframes
@import offline-theme-base
$green: #80d580
$red: #ec8787
+keyframes-offline-dropin
+keyframes-offline-dropout
+keyframes-offline-rotation
.offline-ui
+box-shadow(0 0 0 1px rgba(0, 0, 0, .15), 0 0 1em rgba(0, 0, 0, .3))
font-family: "Lucida Grande", sans-serif
font-size: 14px
padding: 1em
width: 38em
max-width: 100%
background: #f6f6f6
color: #444
overflow: hidden
.offline-ui-content
padding-left: 2em
&:before
line-height: 1.25em
&:after
+border-radius(50%)
content: " "
display: block
position: absolute
top: 0
bottom: 0
left: 1em
margin: auto
height: 1em
width: 1em
.offline-ui-retry
+box-shadow(0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75))
+border-radius(2px)
+background-image(linear-gradient(#ededed, #ededed 38%, #dedede))
position: absolute
right: 4em
top: 1em
bottom: 1em
border: 1px solid rgba(0, 0, 0, 0.25)
text-shadow: 0 1px 0 #f0f0f0
padding: 0 1em
line-height: 1.6em
height: 1.7em
margin: auto
font-size: 12px
text-decoration: none
color: inherit
&.offline-ui-up
+offline-animation(offline-dropout forwards .5s 2s)
.offline-ui-content:after
background: $green
&.offline-ui-down
+offline-animation(offline-dropin .5s)
.offline-ui-content:after
background: $red
&.offline-ui-connecting, &.offline-ui-waiting
padding-right: 3em
.offline-ui-content:after
background: $red
&:after
+offline-animation(offline-rotation .7s linear infinite)
+border-radius(50%)
content: " "
display: block
position: absolute
right: 1em
top: 0
bottom: 0
margin: auto
height: 1em
width: 1em
border: 2px solid rgba(0, 0, 0, 0)
border-top-color: rgba(0, 0, 0, .5)
border-left-color: rgba(0, 0, 0, .5)
opacity: 0.7
&.offline-ui-waiting
padding-right: 11em
&.offline-ui-reconnect-failed-2s
padding-right: 0
================================================
FILE: sass/offline-theme-dark-indicator.sass
================================================
@import compass/css3
@import offline-theme-base-indicator
$green: #80d580
$red: #e24949
.offline-ui
+box-shadow(0 0 0 1px rgba(0, 0, 0, .15))
+border-radius(4px 4px 0 0)
font-family: "Helvetica Neue", sans-serif
font-weight: 300
padding: 1em
background: #000
color: #ccc
bottom: 0
left: 20px
.offline-ui-content
padding-left: 1.5em
&:after
+border-radius(50%)
content: " "
display: block
position: absolute
top: 0
bottom: 0
left: 1em
margin: auto
height: .8em
width: .8em
&.offline-ui-up
.offline-ui-content:after
background: $green
&.offline-ui-down
.offline-ui-content:after
background: $red
================================================
FILE: sass/offline-theme-dark.sass
================================================
@import compass/css3
@import mixins
@import keyframes
@import offline-theme-base
$green: #80d580
$red: #e24949
+keyframes-offline-dropin
+keyframes-offline-dropout
+keyframes-offline-rotation
.offline-ui
+border-radius(0 0 4px 4px)
font-family: "Helvetica Neue", sans-serif
font-weight: 300
padding: 1em
width: 38em
max-width: 100%
background: #000
color: #ccc
overflow: hidden
@media (max-width: 38em)
+border-radius(0)
.offline-ui-content
padding-left: 2em
&:before
line-height: 1.25em
&:after
+border-radius(50%)
content: " "
display: block
position: absolute
top: 0
bottom: 0
left: 1em
margin: auto
height: 1em
width: 1em
.offline-ui-retry
position: absolute
right: 3em
top: 0
bottom: 0
background: rgba(255, 255, 255, .2)
text-decoration: none
color: inherit
line-height: 3.5em
height: 3.5em
margin: auto
padding: 0 1em
&.offline-ui-up
+offline-animation(offline-dropout forwards .5s 2s)
.offline-ui-content:after
background: $green
&.offline-ui-down
+offline-animation(offline-dropin .5s)
.offline-ui-content:after
background: $red
&.offline-ui-connecting, &.offline-ui-waiting
padding-right: 3em
.offline-ui-content:after
background: $red
&:after
+offline-animation(offline-rotation .7s linear infinite)
+border-radius(50%)
content: " "
display: block
position: absolute
right: 1em
top: 0
bottom: 0
margin: auto
height: 1em
width: 1em
border: 2px solid transparent
border-top-color: rgba(255, 255, 255, .5)
border-left-color: rgba(255, 255, 255, .5)
opacity: 0.7
&.offline-ui-waiting
padding-right: 11em
&.offline-ui-reconnect-failed-2s
padding-right: 0
================================================
FILE: sass/offline-theme-default-indicator.sass
================================================
@import compass/css3
@import offline-theme-base-indicator
$red: #ec8787
$green: #d6e9c6
$darkRed: #551313
$darkGreen: #468847
.offline-ui
+border-radius(4px)
font-family: "Helvetica Neue", sans-serif
padding: 1em
max-width: 100%
bottom: 1em
left: 1em
&.offline-ui-up
background: $green
color: $darkGreen
&.offline-ui-down
background: $red
color: $darkRed
================================================
FILE: sass/offline-theme-default.sass
================================================
@import compass/css3
@import mixins
@import keyframes
@import offline-theme-base
$red: #ec8787
$green: #d6e9c6
$yellow: #f8ecad
$darkRed: #551313
$darkGreen: #468847
$darkYellow: #7c6d1f
+keyframes-offline-fadein
+keyframes-offline-fadeout-and-hide
+keyframes-offline-rotation
.offline-ui
+border-radius(4px)
font-family: "Helvetica Neue", sans-serif
padding: 1em
top: 1em
width: 38em
max-width: 100%
overflow: hidden
@media (max-width: 38em)
+border-radius(0)
top: 0
.offline-ui-content:before
line-height: 1.25em
.offline-ui-retry
position: absolute
right: 3em
top: 0
bottom: 0
background: rgba(0, 0, 0, .1)
text-decoration: none
color: inherit
line-height: 3.5em
height: 3.5em
margin: auto
padding: 0 1em
&.offline-ui-up
+offline-animation(offline-fadeout-and-hide forwards .5s 2s)
background: $green
color: $darkGreen
&.offline-ui-down
+offline-animation(offline-fadein .5s)
background: $red
color: $darkRed
&.offline-ui-connecting, &.offline-ui-waiting
background: $yellow
color: $darkYellow
padding-right: 3em
&:after
+offline-animation(offline-rotation .7s linear infinite)
+border-radius(50%)
content: " "
display: block
position: absolute
right: 1em
top: 0
bottom: 0
margin: auto
height: 1em
width: 1em
border: 2px solid rgba(0, 0, 0, 0)
border-top-color: $darkYellow
border-left-color: $darkYellow
opacity: 0.7
&.offline-ui-waiting
padding-right: 11em
&.offline-ui-reconnect-failed-2s
padding-right: 0
================================================
FILE: sass/offline-theme-hubspot.sass
================================================
@import compass/css3
@import offline-theme-default
.offline-ui
+border-radius(0 0 4px 4px)
+box-shadow(inset 0 0 0 1px rgba(0, 0, 0, .15), 0 2px 8px rgba(0, 0, 0, .1))
font-family: "Helvetica Neue", Helvetica, sans-serif, sans-serif
font-size: 13px
top: 42px
================================================
FILE: sass/offline-theme-slide-indicator.sass
================================================
@import compass/css3
@import offline-theme-base-indicator
$red: #ec8787
$green: #d6e9c6
$darkRed: #551313
$darkGreen: #468847
.offline-ui
+border-radius(4px 4px 0 0)
font-family: "Helvetica Neue", sans-serif
padding: 1em
max-width: 100%
bottom: 0
left: 1em
&.offline-ui-up
background: $green
color: $darkGreen
&.offline-ui-down
background: $red
color: $darkRed
================================================
FILE: sass/offline-theme-slide.sass
================================================
@import compass/css3
@import mixins
@import keyframes
@import offline-theme-base
$red: #ec8787
$green: #d6e9c6
$yellow: #f8ecad
$darkRed: #551313
$darkGreen: #468847
$darkYellow: #7c6d1f
+keyframes-offline-dropin
+keyframes-offline-dropout
+keyframes-offline-rotation
.offline-ui
+border-radius(0 0 4px 4px)
font-family: "Helvetica Neue", sans-serif
padding: 1em
width: 38em
max-width: 100%
overflow: hidden
@media (max-width: 38em)
+border-radius(0)
.offline-ui-retry
position: absolute
right: 3em
top: 0
bottom: 0
background: rgba(0, 0, 0, .1)
text-decoration: none
color: inherit
line-height: 3.5em
height: 3.5em
margin: auto
padding: 0 1em
&.offline-ui-up
+offline-animation(offline-dropout forwards .5s 2s)
background: $green
color: $darkGreen
&.offline-ui-down
+offline-animation(offline-dropin .5s)
background: $red
color: $darkRed
&.offline-ui-connecting, &.offline-ui-waiting
background: $yellow
color: $darkYellow
padding-right: 3em
&:after
+offline-animation(offline-rotation .7s linear infinite)
+border-radius(50%)
content: " "
display: block
position: absolute
right: 1em
top: 0
bottom: 0
margin: auto
height: 1em
width: 1em
border: 2px solid rgba(0, 0, 0, 0)
border-top-color: $darkYellow
border-left-color: $darkYellow
opacity: 0.7
&.offline-ui-waiting
padding-right: 11em
&.offline-ui-reconnect-failed-2s
padding-right: 0
================================================
FILE: test/index.html
================================================
<head>
<script src="../offline.min.js"></script>
<!--
Themes:
<link rel="stylesheet" href="./themes/offline-theme-default.css" />
<link rel="stylesheet" href="./themes/offline-theme-default-indicator.css" />
<link rel="stylesheet" href="./themes/offline-theme-slide.css" />
<link rel="stylesheet" href="./themes/offline-theme-slide-indicator.css" />
<link rel="stylesheet" href="./themes/offline-theme-chrome.css" />
<link rel="stylesheet" href="./themes/offline-theme-chrome-indicator.css" />
<link rel="stylesheet" href="./themes/offline-theme-hubspot.css" />
-->
<link rel="stylesheet" href="../themes/offline-theme-chrome.css" />
<link rel="stylesheet" href="../themes/offline-language-english.css" />
<script>
var run = function(){
var req = new XMLHttpRequest();
req.timeout = 5000;
req.open('GET', 'http://localhost:8888/walter/0', true);
req.send();
}
setInterval(run, 3000);
</script>
</head>
<body>
</body>
================================================
FILE: test/snake.html
================================================
<head>
<script src="../offline.min.js"></script>
<script src="../js/snake.js"></script>
<!--
Themes:
<link rel="stylesheet" href="./themes/offline-theme-default.css" />
<link rel="stylesheet" href="./themes/offline-theme-default-indicator.css" />
<link rel="stylesheet" href="./themes/offline-theme-slide.css" />
<link rel="stylesheet" href="./themes/offline-theme-slide-indicator.css" />
<link rel="stylesheet" href="./themes/offline-theme-chrome.css" />
<link rel="stylesheet" href="./themes/offline-theme-chrome-indicator.css" />
<link rel="stylesheet" href="./themes/offline-theme-hubspot.css" />
-->
<link rel="stylesheet" href="../themes/offline-theme-chrome.css" />
<script>
Offline.options = {
game: true
}
var run = function(){
if (Offline.state === 'up')
Offline.check();
}
setInterval(run, 5000);
</script>
</head>
<body>
<h1 style="margin-top: 100px; text-align: center; font-family: helvetica;">Disable your internet connection to play!</h1>
</body>
================================================
FILE: themes/offline-language-arabic-indicator.css
================================================
@charset "UTF-8";
/* line 5, ../sass/offline-language-arabic-indicator.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "متصل.";
}
/* line 10, ../sass/offline-language-arabic-indicator.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "غير متصل.";
}
================================================
FILE: themes/offline-language-arabic.css
================================================
@charset "UTF-8";
/* line 6, ../sass/_content.sass */
.offline-ui .offline-ui-retry:before {
content: " إعادة الاتصال";
}
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "الحاسوب متصل بالإنترنت.";
}
@media (max-width: 1024px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "جهازك متصل بالإنترنت";
}
}
@media (max-width: 568px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: ".جهازك متصل";
}
}
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: ".الحاسوب فقد الاتصال بالإنترنت";
}
@media (max-width: 1024px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: ".جهازك فقد الاتصال بالإنترنت";
}
}
@media (max-width: 568px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: ".جهازك غير متصل";
}
}
/* line 33, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before {
content: "...محاولة إعادة الاتصال";
}
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...ثواني";
}
@media (max-width: 568px) {
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: " إعادة الاتصال في" attr(data-retry-in-value) "...ث";
}
}
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...ثانية";
}
@media (max-width: 568px) {
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: " إعادة الاتصال في" attr(data-retry-in-value) "...ث";
}
}
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...دقائق";
}
@media (max-width: 568px) {
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: " إعادة الاتصال في" attr(data-retry-in-value) "...د";
}
}
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...دقيقة";
}
@media (max-width: 568px) {
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: " إعادة الاتصال في" attr(data-retry-in-value) "...د";
}
}
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...ساعات";
}
@media (max-width: 568px) {
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: " إعادة الاتصال في" attr(data-retry-in-value) "...س";
}
}
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: " الاتصال فقد إعادة الاتصال في" attr(data-retry-in-value) " ...ساعه";
}
@media (max-width: 568px) {
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: " إعادة الاتصال في" attr(data-retry-in-value) "...س";
}
}
/* line 90, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry {
display: none;
}
/* line 93, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before {
content: ".فشلت محاولة الاتصال";
}
================================================
FILE: themes/offline-language-chinese-simplified-indicator.css
================================================
@charset "UTF-8";
/* line 5, ../sass/offline-language-chinese-simplified-indicator.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "鍦ㄧ嚎";
}
/* line 10, ../sass/offline-language-chinese-simplified-indicator.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "绂荤嚎";
}
================================================
FILE: themes/offline-language-chinese-simplified.css
================================================
@charset "UTF-8";
/* line 6, ../sass/_content.sass */
.offline-ui .offline-ui-retry:before {
content: "重连";
}
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "您的电脑已经连接到网络。";
}
@media (max-width: 1024px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "您的设备已经连接到网络。";
}
}
@media (max-width: 568px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "您的设备已经连接到网络。";
}
}
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "您的电脑失去了网络连接。";
}
@media (max-width: 1024px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "您的设备失去了网络连接。";
}
}
@media (max-width: 568px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "您的设备失去了网络连接。";
}
}
/* line 33, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before {
content: "正在尝试重连...";
}
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "秒...";
}
@media (max-width: 568px) {
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "即将重连:" attr(data-retry-in-value) "s...";
}
}
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "秒...";
}
@media (max-width: 568px) {
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "即将重连:" attr(data-retry-in-value) "s...";
}
}
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "分钟...";
}
@media (max-width: 568px) {
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "即将重连:" attr(data-retry-in-value) "m...";
}
}
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "分钟...";
}
@media (max-width: 568px) {
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "即将重连:" attr(data-retry-in-value) "m...";
}
}
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "小时...";
}
@media (max-width: 568px) {
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "即将重连:" attr(data-retry-in-value) "h...";
}
}
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "失去网络连接。 即将重连:" attr(data-retry-in-value) "小时...";
}
@media (max-width: 568px) {
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "即将重连:" attr(data-retry-in-value) "h...";
}
}
/* line 90, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry {
display: none;
}
/* line 93, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before {
content: "尝试连接网络失败。";
}
================================================
FILE: themes/offline-language-chinese-traditional-indicator.css
================================================
@charset "UTF-8";
/* line 5, ../sass/offline-language-chinese-traditional-indicator.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "鍦ㄧ窔";
}
/* line 10, ../sass/offline-language-chinese-traditional-indicator.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "闆㈢窔";
}
================================================
FILE: themes/offline-language-chinese-traditional.css
================================================
@charset "UTF-8";
/* line 6, ../sass/_content.sass */
.offline-ui .offline-ui-retry:before {
content: "重連";
}
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "您的電腦已經連接到網絡。";
}
@media (max-width: 1024px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "您的設備已經連接到網絡。";
}
}
@media (max-width: 568px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "您的設備已經連接到網絡。";
}
}
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "您的電腦失去了網絡連接。";
}
@media (max-width: 1024px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "您的設備失去了網絡連接。";
}
}
@media (max-width: 568px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "您的設備失去了網絡連接。";
}
}
/* line 33, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before {
content: "正在嘗試重連...";
}
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "秒...";
}
@media (max-width: 568px) {
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "即將重連:" attr(data-retry-in-value) "s...";
}
}
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "秒...";
}
@media (max-width: 568px) {
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "即將重連:" attr(data-retry-in-value) "s...";
}
}
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "分鐘...";
}
@media (max-width: 568px) {
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "即將重連:" attr(data-retry-in-value) "m...";
}
}
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "分鐘...";
}
@media (max-width: 568px) {
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "即將重連:" attr(data-retry-in-value) "m...";
}
}
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "小時...";
}
@media (max-width: 568px) {
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "即將重連:" attr(data-retry-in-value) "h...";
}
}
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "失去網絡連接。即將重連:" attr(data-retry-in-value) "小時...";
}
@media (max-width: 568px) {
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "即將重連:" attr(data-retry-in-value) "h...";
}
}
/* line 90, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry {
display: none;
}
/* line 93, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before {
content: "嘗試連接網絡失敗。";
}
================================================
FILE: themes/offline-language-czech-indicator.css
================================================
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Online"; }
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Offline"; }
================================================
FILE: themes/offline-language-czech.css
================================================
@charset "UTF-8";
/* line 6, ../sass/_content.sass */
.offline-ui .offline-ui-retry:before {
content: "Znovu připojit";
}
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Váš počítač je připojen k internetu.";
}
@media (max-width: 1024px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Vaše zařízení je připojeno k internetu.";
}
}
@media (max-width: 568px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Vaše zařízení je připojeno.";
}
}
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Váš počítač ztratil připojení k internetu.";
}
@media (max-width: 1024px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Vaše zařízení ztratilo připojení k internetu.";
}
}
@media (max-width: 568px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Vaše zařízení není připojeno.";
}
}
/* line 33, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before {
content: "Zkouším se znovu připojit...";
}
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " sekund...";
}
@media (max-width: 568px) {
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "Znovu zkusím za " attr(data-retry-in-value) "s...";
}
}
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " sekundu...";
}
@media (max-width: 568px) {
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "Znovu zkusím za " attr(data-retry-in-value) "s...";
}
}
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " minut...";
}
@media (max-width: 568px) {
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "Znovu zkusím za " attr(data-retry-in-value) "m...";
}
}
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " minutu...";
}
@media (max-width: 568px) {
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "Znovu zkusím za " attr(data-retry-in-value) "m...";
}
}
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " hodin...";
}
@media (max-width: 568px) {
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "Znovu zkusím za " attr(data-retry-in-value) "h...";
}
}
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "Připojení ztraceno. Znovu zkusím za " attr(data-retry-in-value) " hodinu...";
}
@media (max-width: 568px) {
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "Znovu zkusím za " attr(data-retry-in-value) "h...";
}
}
/* line 90, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry {
display: none;
}
/* line 93, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before {
content: "Pokus o připojení selhal.";
}
================================================
FILE: themes/offline-language-dutch-indicator.css
================================================
/* line 5, ../sass/offline-language-dutch-indicator.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Online";
}
/* line 10, ../sass/offline-language-dutch-indicator.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Offline";
}
================================================
FILE: themes/offline-language-dutch.css
================================================
/* line 6, ../sass/_content.sass */
.offline-ui .offline-ui-retry:before {
content: "Opnieuw";
}
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Computer verbonden met internet.";
}
@media (max-width: 1024px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Apparaat verbonden met internet.";
}
}
@media (max-width: 568px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Apparaat verbonden met internet.";
}
}
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Computer niet verbonden met internet.";
}
@media (max-width: 1024px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Apparaat niet verbonden met internet.";
}
}
@media (max-width: 568px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Apparaat niet verbonden met internet.";
}
}
/* line 33, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before {
content: "Opnieuw proberen...";
}
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " seconden...";
}
@media (max-width: 568px) {
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "Opnieuw proberen over " attr(data-retry-in-value) "s...";
}
}
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " seconde...";
}
@media (max-width: 568px) {
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "Opnieuw proberen over " attr(data-retry-in-value) "s...";
}
}
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " minuten...";
}
@media (max-width: 568px) {
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "Opnieuw proberen over " attr(data-retry-in-value) "m...";
}
}
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " minuut...";
}
@media (max-width: 568px) {
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "Opnieuw proberen over " attr(data-retry-in-value) "m...";
}
}
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " uren...";
}
@media (max-width: 568px) {
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "Opnieuw proberen over " attr(data-retry-in-value) "u...";
}
}
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "Internetverbinding kwijt. Opnieuw proberen over " attr(data-retry-in-value) " uur...";
}
@media (max-width: 568px) {
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "Opnieuw proberen over " attr(data-retry-in-value) "u...";
}
}
/* line 90, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry {
display: none;
}
/* line 93, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before {
content: "Poging mislukt.";
}
================================================
FILE: themes/offline-language-english-indicator.css
================================================
/* line 5, ../sass/offline-language-english-indicator.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Online";
}
/* line 10, ../sass/offline-language-english-indicator.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Offline";
}
================================================
FILE: themes/offline-language-english.css
================================================
/* line 6, ../sass/_content.sass */
.offline-ui .offline-ui-retry:before {
content: "Reconnect";
}
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Your computer is connected to the internet.";
}
@media (max-width: 1024px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Your device is connected to the internet.";
}
}
@media (max-width: 568px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Your device is connected.";
}
}
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Your computer lost its internet connection.";
}
@media (max-width: 1024px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Your device lost its internet connection.";
}
}
@media (max-width: 568px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Your device isn't connected.";
}
}
/* line 33, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before {
content: "Attempting to reconnect...";
}
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " seconds...";
}
@media (max-width: 568px) {
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "Reconnecting in " attr(data-retry-in-value) "s...";
}
}
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " second...";
}
@media (max-width: 568px) {
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "Reconnecting in " attr(data-retry-in-value) "s...";
}
}
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " minutes...";
}
@media (max-width: 568px) {
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "Reconnecting in " attr(data-retry-in-value) "m...";
}
}
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " minute...";
}
@media (max-width: 568px) {
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "Reconnecting in " attr(data-retry-in-value) "m...";
}
}
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " hours...";
}
@media (max-width: 568px) {
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "Reconnecting in " attr(data-retry-in-value) "h...";
}
}
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "Connection lost. Reconnecting in " attr(data-retry-in-value) " hour...";
}
@media (max-width: 568px) {
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "Reconnecting in " attr(data-retry-in-value) "h...";
}
}
/* line 90, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry {
display: none;
}
/* line 93, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before {
content: "Connection attempt failed.";
}
================================================
FILE: themes/offline-language-french-indicator.css
================================================
@charset "UTF-8";
/* line 5, ../sass/offline-language-french-indicator.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Connecté";
}
/* line 10, ../sass/offline-language-french-indicator.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Pas connecté";
}
================================================
FILE: themes/offline-language-french.css
================================================
@charset "UTF-8";
/* line 6, ../sass/_content.sass */
.offline-ui .offline-ui-retry:before {
content: "Reconnecter";
}
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Votre ordinateur est connecté à Internet.";
}
@media (max-width: 1024px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Votre appareil est connecté à Internet.";
}
}
@media (max-width: 568px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Votre appareil est connecté.";
}
}
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Votre ordinateur a perdu sa connexion Internet.";
}
@media (max-width: 1024px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Votre appareil a perdu sa connexion Internet.";
}
}
@media (max-width: 568px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Votre appareil n'est pas branché.";
}
}
/* line 33, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before {
content: "Tentative de reconnexion...";
}
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " secondes...";
}
@media (max-width: 568px) {
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "Reconnexion dans " attr(data-retry-in-value) "s...";
}
}
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " seconde...";
}
@media (max-width: 568px) {
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "Reconnexion dans " attr(data-retry-in-value) "s...";
}
}
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " minutes...";
}
@media (max-width: 568px) {
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "Reconnexion dans " attr(data-retry-in-value) "m...";
}
}
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " minute...";
}
@media (max-width: 568px) {
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "Reconnexion dans " attr(data-retry-in-value) "m...";
}
}
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " heures...";
}
@media (max-width: 568px) {
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "Reconnexion dans " attr(data-retry-in-value) "h...";
}
}
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "Connexion perdue. Reconnexion dans " attr(data-retry-in-value) " heure...";
}
@media (max-width: 568px) {
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "Reconnexion dans " attr(data-retry-in-value) "h...";
}
}
/* line 90, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry {
display: none;
}
/* line 93, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before {
content: "La tentative de connexion a échoué.";
}
================================================
FILE: themes/offline-language-german-indicator.css
================================================
/* line 5, ../sass/offline-language-german-indicator.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Online";
}
/* line 10, ../sass/offline-language-german-indicator.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Offline";
}
================================================
FILE: themes/offline-language-german.css
================================================
@charset "UTF-8";
/* line 6, ../sass/_content.sass */
.offline-ui .offline-ui-retry:before {
content: "Verbinden";
}
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Dein Computer ist mit dem Internet verbunden.";
}
@media (max-width: 1024px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Deing Gerät ist mit dem Internet verbunden.";
}
}
@media (max-width: 568px) {
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "Dein Gerät ist online.";
}
}
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Dein Computer wurde vom Internet getrennt.";
}
@media (max-width: 1024px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Dein Gerät wurde vom Internet getrennt.";
}
}
@media (max-width: 568px) {
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "Keine Internetverbindung.";
}
}
/* line 33, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-content:before, .offline-ui.offline-ui-down.offline-ui-connecting-2s .offline-ui-content:before {
content: "Versuche Verbindung wiederherzustellen...";
}
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Sekunden...";
}
@media (max-width: 568px) {
/* line 42, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"]:before {
content: "Verbinde in " attr(data-retry-in-value) "s...";
}
}
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Sekunde...";
}
@media (max-width: 568px) {
/* line 50, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="second"][data-retry-in-value="1"]:before {
content: "Verbinde in " attr(data-retry-in-value) "s...";
}
}
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Minuten...";
}
@media (max-width: 568px) {
/* line 58, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"]:before {
content: "Verbinde in " attr(data-retry-in-value) "m...";
}
}
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Minute...";
}
@media (max-width: 568px) {
/* line 66, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="minute"][data-retry-in-value="1"]:before {
content: "Verbinde in " attr(data-retry-in-value) "m...";
}
}
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Stunden...";
}
@media (max-width: 568px) {
/* line 74, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"]:before {
content: "Verbinde in " attr(data-retry-in-value) "h...";
}
}
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "Keine Verbindung. Verbinde nochmal in " attr(data-retry-in-value) " Stunde...";
}
@media (max-width: 568px) {
/* line 82, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-waiting .offline-ui-content[data-retry-in-unit="hour"][data-retry-in-value="1"]:before {
content: "Verbinde in " attr(data-retry-in-value) "h...";
}
}
/* line 90, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s.offline-ui-waiting .offline-ui-retry {
display: none;
}
/* line 93, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-reconnect-failed-2s .offline-ui-content:before {
content: "Verbindung Fehlgeschlagen.";
}
================================================
FILE: themes/offline-language-hebrew-indicator.css
================================================
/* line 5, ../sass/offline-language-english-indicator.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "מחובר";
}
/* line 10, ../sass/offline-language-english-indicator.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "מנותק";
}
================================================
FILE: themes/offline-language-hebrew.css
================================================
/* line 6, ../sass/_content.sass */
.offline-ui .offline-ui-retry:before {
content: "מתחבר";
}
/* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "המחשב לא מחובר לאינטרנט.";
}
@media (max-width: 1024px) { /* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "המכשיר לא מחובר לאינטרנט.";
}
}
@media (max-width: 568px) { /* line 11, ../sass/_content.sass */
.offline-ui.offline-ui-up .offline-ui-content:before {
content: "המכשיר מחובר.";
}
}
/* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "המחשב איבד את החיבור לאינטרנט.";
}
@media (max-width: 1024px) { /* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "המכשיר איבד את החיבור לאינטרנט.";
}
}
@media (max-width: 568px) { /* line 22, ../sass/_content.sass */
.offline-ui.offline-ui-down .offline-ui-content:before {
content: "המכשיר מחובר.";
}
}
/* line 33, ../sass/_content.sass */
.offline-ui.offline-ui-down.offline-ui-connecting .offline-ui-
gitextract_8akg9yce/
├── .github/
│ ├── ISSUE_TEMPLATE
│ └── PULL_REQUEST_TEMPLATE
├── .gitignore
├── .hsdoc
├── Gruntfile.coffee
├── LICENSE
├── README.md
├── bower.json
├── coffee/
│ ├── offline.coffee
│ ├── reconnect.coffee
│ ├── requests.coffee
│ ├── simulate.coffee
│ ├── snake.coffee
│ └── ui.coffee
├── docs/
│ └── welcome/
│ ├── app.js
│ ├── images/
│ │ ├── ethernet-cable.sketch/
│ │ │ ├── Data
│ │ │ ├── fonts
│ │ │ └── version
│ │ ├── macbook-pro-top.sketch/
│ │ │ ├── Data
│ │ │ ├── fonts
│ │ │ └── version
│ │ └── macbook-pro.sketch/
│ │ ├── Data
│ │ ├── fonts
│ │ └── version
│ └── index.html
├── install.json
├── js/
│ ├── offline.js
│ ├── reconnect.js
│ ├── requests.js
│ ├── simulate.js
│ ├── snake.js
│ └── ui.js
├── offline.js
├── package.json
├── sass/
│ ├── _arabic.sass
│ ├── _chinese-simplified.sass
│ ├── _chinese-traditional.sass
│ ├── _content.sass
│ ├── _czech.sass
│ ├── _dutch.sass
│ ├── _english.sass
│ ├── _french.sass
│ ├── _german.sass
│ ├── _italian.sass
│ ├── _keyframes.sass
│ ├── _mixins.sass
│ ├── _offline-theme-base-indicator.sass
│ ├── _offline-theme-base.sass
│ ├── _pashto.sass
│ ├── _persian.sass
│ ├── _polish.sass
│ ├── _portuguese-brazil.sass
│ ├── _spanish.sass
│ ├── _turkish.sass
│ ├── offline-language-arabic-indicator.sass
│ ├── offline-language-arabic.sass
│ ├── offline-language-chinese-simplified-indicator.sass
│ ├── offline-language-chinese-simplified.sass
│ ├── offline-language-chinese-traditional-indicator.sass
│ ├── offline-language-chinese-traditional.sass
│ ├── offline-language-czech-indicator.sass
│ ├── offline-language-czech.sass
│ ├── offline-language-dutch-indicator.sass
│ ├── offline-language-dutch.sass
│ ├── offline-language-english-indicator.sass
│ ├── offline-language-english.sass
│ ├── offline-language-french-indicator.sass
│ ├── offline-language-french.sass
│ ├── offline-language-german-indicator.sass
│ ├── offline-language-german.sass
│ ├── offline-language-italian-indicator.sass
│ ├── offline-language-italian.sass
│ ├── offline-language-pashto-indicator.sass
│ ├── offline-language-pashto.sass
│ ├── offline-language-polish-indicator.sass
│ ├── offline-language-polish.sass
│ ├── offline-language-portuguese-brazil-indicator.sass
│ ├── offline-language-portuguese-brazil.sass
│ ├── offline-language-simplified-chinese-indicator.sass
│ ├── offline-language-spanish-indicator.sass
│ ├── offline-language-spanish.sass
│ ├── offline-language-turkish-indicator.sass
│ ├── offline-language-turkish.sass
│ ├── offline-theme-chrome-indicator.sass
│ ├── offline-theme-chrome.sass
│ ├── offline-theme-dark-indicator.sass
│ ├── offline-theme-dark.sass
│ ├── offline-theme-default-indicator.sass
│ ├── offline-theme-default.sass
│ ├── offline-theme-hubspot.sass
│ ├── offline-theme-slide-indicator.sass
│ └── offline-theme-slide.sass
├── test/
│ ├── index.html
│ └── snake.html
└── themes/
├── offline-language-arabic-indicator.css
├── offline-language-arabic.css
├── offline-language-chinese-simplified-indicator.css
├── offline-language-chinese-simplified.css
├── offline-language-chinese-traditional-indicator.css
├── offline-language-chinese-traditional.css
├── offline-language-czech-indicator.css
├── offline-language-czech.css
├── offline-language-dutch-indicator.css
├── offline-language-dutch.css
├── offline-language-english-indicator.css
├── offline-language-english.css
├── offline-language-french-indicator.css
├── offline-language-french.css
├── offline-language-german-indicator.css
├── offline-language-german.css
├── offline-language-hebrew-indicator.css
├── offline-language-hebrew.css
├── offline-language-italian-indicator.css
├── offline-language-italian.css
├── offline-language-pashto-indicator.css
├── offline-language-pashto.css
├── offline-language-persian-indicator.css
├── offline-language-persian.css
├── offline-language-polish-indicator.css
├── offline-language-polish.css
├── offline-language-portuguese-brazil-indicator.css
├── offline-language-portuguese-brazil.css
├── offline-language-simplified-chinese-indicator.css
├── offline-language-spanish-indicator.css
├── offline-language-spanish.css
├── offline-language-turkish-indicator.css
├── offline-language-turkish.css
├── offline-theme-chrome-indicator.css
├── offline-theme-chrome.css
├── offline-theme-dark-indicator.css
├── offline-theme-dark.css
├── offline-theme-default-indicator.css
├── offline-theme-default.css
├── offline-theme-hubspot.css
├── offline-theme-slide-indicator.css
└── offline-theme-slide.css
Condensed preview — 136 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (317K chars).
[
{
"path": ".github/ISSUE_TEMPLATE",
"chars": 121,
"preview": "<!--\n\n This project isn't actively maintained.\n\n Issues and pull requests will likely not receive a response.\n\n-->"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE",
"chars": 121,
"preview": "<!--\n\n This project isn't actively maintained.\n\n Issues and pull requests will likely not receive a response.\n\n-->"
},
{
"path": ".gitignore",
"chars": 26,
"preview": "node_modules/\n.sass-cache/"
},
{
"path": ".hsdoc",
"chars": 108,
"preview": "title: \"Offline\"\nsource: \"{coffee/*,sass/*}\"\nassets: \"{js/*,themes/*,offline.min.js,docs/welcome/*,test/*}\"\n"
},
{
"path": "Gruntfile.coffee",
"chars": 1136,
"preview": "module.exports = (grunt) ->\n grunt.initConfig\n pkg: grunt.file.readJSON('package.json')\n\n coffee:\n compile:\n"
},
{
"path": "LICENSE",
"chars": 1058,
"preview": "Copyright (c) 2014 HubSpot, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this s"
},
{
"path": "README.md",
"chars": 5727,
"preview": "___\n\n**This project isn't actively maintained.**\n___\n\nOffline\n======\n\n**Note to users pre-0.6.0: Offline previously use"
},
{
"path": "bower.json",
"chars": 713,
"preview": "{\n \"name\": \"offline\",\n \"homepage\": \"http://github.hubspot.com/offline/docs/welcome\",\n \"authors\": [\n \"Zack Bloom <z"
},
{
"path": "coffee/offline.coffee",
"chars": 6105,
"preview": "# We get a clue that the browser might be offline from suspicious requests or\n# the HTML5 offline api. If we suspect it"
},
{
"path": "coffee/reconnect.coffee",
"chars": 1255,
"preview": "unless window.Offline\n throw new Error \"Offline Reconnect brought in without offline.js\"\n\nrc = Offline.reconnect = {}\n\n"
},
{
"path": "coffee/requests.coffee",
"chars": 2473,
"preview": "unless window.Offline\n throw new Error \"Requests module brought in without offline.js\"\n\nheld = []\n\nwaitingOnConfirm = f"
},
{
"path": "coffee/simulate.coffee",
"chars": 392,
"preview": "unless Offline\n throw new Error(\"Offline simulate brought in without offline.js\")\n\nfor state in ['up', 'down']\n try\n"
},
{
"path": "coffee/snake.coffee",
"chars": 2122,
"preview": "canvas = dot = score = speed = stop = snake = randDot = fill = null\n\nrender = ->\n canvas = document.createElementNS('ht"
},
{
"path": "coffee/ui.coffee",
"chars": 3127,
"preview": "unless window.Offline\n throw new Error \"Offline UI brought in without offline.js\"\n\nTEMPLATE = '<div class=\"offline-ui\">"
},
{
"path": "docs/welcome/app.js",
"chars": 3227,
"preview": "$(function(){\n var themes = [{\n name: 'default',\n title: 'Default'\n }, {\n name: 'slide',\n "
},
{
"path": "docs/welcome/images/ethernet-cable.sketch/fonts",
"chars": 0,
"preview": ""
},
{
"path": "docs/welcome/images/ethernet-cable.sketch/version",
"chars": 2,
"preview": "14"
},
{
"path": "docs/welcome/images/macbook-pro-top.sketch/fonts",
"chars": 0,
"preview": ""
},
{
"path": "docs/welcome/images/macbook-pro-top.sketch/version",
"chars": 2,
"preview": "14"
},
{
"path": "docs/welcome/images/macbook-pro.sketch/fonts",
"chars": 0,
"preview": ""
},
{
"path": "docs/welcome/images/macbook-pro.sketch/version",
"chars": 2,
"preview": "14"
},
{
"path": "docs/welcome/index.html",
"chars": 17845,
"preview": "<!DOCTYPE html>\n<!--[if lt IE 7]> <html class=\"no-js ie6 ie9-and-less ie8-and-less ie7-and-less\" lang=\"en\"> <![endif]-->"
},
{
"path": "install.json",
"chars": 2660,
"preview": "{\n \"resources\": {\n \"head\": [\n {\n \"type\": \"script\",\n \"src\": \"./offline.min.js\"\n },\n {\n "
},
{
"path": "js/offline.js",
"chars": 8022,
"preview": "(function() {\n var Offline, checkXHR, defaultOptions, extendNative, grab, handlers, init;\n\n extendNative = function(to"
},
{
"path": "js/reconnect.js",
"chars": 1821,
"preview": "(function() {\n var down, next, nope, rc, reset, retryIntv, tick, tryNow, up;\n\n if (!window.Offline) {\n throw new Er"
},
{
"path": "js/requests.js",
"chars": 3668,
"preview": "(function() {\n var clear, flush, held, holdRequest, makeRequest, waitingOnConfirm;\n\n if (!window.Offline) {\n throw "
},
{
"path": "js/simulate.js",
"chars": 762,
"preview": "(function() {\n var base, e, i, len, ref, simulate, state;\n\n if (!Offline) {\n throw new Error(\"Offline simulate brou"
},
{
"path": "js/snake.js",
"chars": 2844,
"preview": "(function() {\n var canvas, dot, fill, hide, keyHandler, move, randDot, render, score, show, snake, speed, stop;\n\n canv"
},
{
"path": "js/ui.js",
"chars": 4266,
"preview": "(function() {\n var RETRY_TEMPLATE, TEMPLATE, _onreadystatechange, addClass, content, createFromHTML, el, flashClass, fl"
},
{
"path": "offline.js",
"chars": 15930,
"preview": "/*! offline-js 0.7.19 */\n(function() {\n var Offline, checkXHR, defaultOptions, extendNative, grab, handlers, init;\n ex"
},
{
"path": "package.json",
"chars": 690,
"preview": "{\n \"name\": \"offline-js\",\n \"version\": \"0.7.19\",\n \"description\": \"Automatically detect when a browser is offline\",\n \"a"
},
{
"path": "sass/_arabic.sass",
"chars": 2189,
"preview": "@charset \"utf-8\"\r\n$upComputer: \"الحاسوب متصل بالإنترنت.\"\r\n$upDevice: \"جهازك متصل بالإنترنت\"\r\n$upDeviceSmall: \".جهازك متص"
},
{
"path": "sass/_chinese-simplified.sass",
"chars": 1993,
"preview": "@charset \"utf-8\"\n\n$upComputer: \"您的电脑已经连接到网络。\"\n$upDevice: \"您的设备已经连接到网络。\"\n$upDeviceSmall: \"您的设备已经连接到网络。\"\n\n$downComputer: \""
},
{
"path": "sass/_chinese-traditional.sass",
"chars": 1992,
"preview": "@charset \"utf-8\"\n\n$upComputer: \"您的電腦已經連接到網絡。\"\n$upDevice: \"您的設備已經連接到網絡。\"\n$upDeviceSmall: \"您的設備已經連接到網絡。\"\n\n$downComputer: \""
},
{
"path": "sass/_content.sass",
"chars": 3806,
"preview": "=offline-content\n .offline-ui\n\n .offline-ui-retry\n\n &:before\n content: $retryButton\n"
},
{
"path": "sass/_czech.sass",
"chars": 2251,
"preview": "@charset \"utf-8\"\n\n$upComputer: \"Váš počítač je připojen k internetu.\"\n$upDevice: \"Vaše zařízení je připojeno k internetu"
},
{
"path": "sass/_dutch.sass",
"chars": 2232,
"preview": "@charset \"utf-8\"\n\n$upComputer: \"Computer verbonden met internet.\"\n$upDevice: \"Apparaat verbonden met internet.\"\n$upDevic"
},
{
"path": "sass/_english.sass",
"chars": 2244,
"preview": "@charset \"utf-8\"\n$upComputer: \"Your computer is connected to the internet.\"\n$upDevice: \"Your device is connected to the "
},
{
"path": "sass/_french.sass",
"chars": 2275,
"preview": "@charset \"utf-8\"\n$upComputer: \"Votre ordinateur est connecté à Internet.\"\n$upDevice: \"Votre appareil est connecté à Inte"
},
{
"path": "sass/_german.sass",
"chars": 2261,
"preview": "@charset \"utf-8\"\n$upComputer: \"Dein Computer ist mit dem Internet verbunden.\"\n$upDevice: \"Deing Gerät ist mit dem Intern"
},
{
"path": "sass/_italian.sass",
"chars": 2251,
"preview": "@charset \"utf-8\"\n$upComputer: \"Il tuo computer è connesso ad internet.\"\n$upDevice: \"Il tuo device è connesso ad internet"
},
{
"path": "sass/_keyframes.sass",
"chars": 1785,
"preview": "@import compass/css3\n@import mixins\n\n=keyframes-offline-fadein\n +offline-keyframes(\"offline-fadein\")\n 0%\n "
},
{
"path": "sass/_mixins.sass",
"chars": 788,
"preview": "=offline-keyframes($name)\n @-webkit-keyframes #{$name}\n @content\n @-moz-keyframes #{$name}\n @content"
},
{
"path": "sass/_offline-theme-base-indicator.sass",
"chars": 409,
"preview": "@import compass/css3\n\n.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offline-ui *:before, .offline-"
},
{
"path": "sass/_offline-theme-base.sass",
"chars": 850,
"preview": "@import compass/css3\n@import compass/css3/user-interface\n\n.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:af"
},
{
"path": "sass/_pashto.sass",
"chars": 2236,
"preview": "@charset \"utf-8\"\n$upComputer: \"ستاسو د کمپيوټر له انټرنيټ سره وصل دی.\"\n$upDevice: \"ستاسو وسيله چې د انټرنټ سره نښلي.\"\n$u"
},
{
"path": "sass/_persian.sass",
"chars": 2222,
"preview": "@charset \"utf-8\"\n$upComputer: \"ارتباط کامپیوتر شما با اینترنت برقرار است.\"\n$upDevice: \"ارتباط دستگاه شما با اینترنت برقر"
},
{
"path": "sass/_polish.sass",
"chars": 2273,
"preview": "@charset \"utf-8\"\n$upComputer: \"Twój komputer jest podłączony do internetu.\"\n$upDevice: \"Twoje urządzenie jest podłączone"
},
{
"path": "sass/_portuguese-brazil.sass",
"chars": 2264,
"preview": "@charset \"utf-8\"\n$upComputer: \"Seu computador está conectado à internet.\"\n$upDevice: \"O dispositivo está conectado à int"
},
{
"path": "sass/_spanish.sass",
"chars": 2248,
"preview": "@charset \"utf-8\"\n$upComputer: \"Tu computador está conectado a internet.\"\n$upDevice: \"Tu dispositivo está conectado a int"
},
{
"path": "sass/_turkish.sass",
"chars": 2541,
"preview": "@charset \"utf-8\"\n$upComputer: \"Bilgisayarınız internete bağlı.\"\n$upDevice: \"Cihazınız internete bağlı.\"\n$upDeviceSmall: "
},
{
"path": "sass/offline-language-arabic-indicator.sass",
"chars": 199,
"preview": ".offline-ui\r\n\r\n &.offline-ui-up\r\n\r\n .offline-ui-content:before\r\n content: \"متصل.\"\r\n\r\n &.offline-"
},
{
"path": "sass/offline-language-arabic.sass",
"chars": 51,
"preview": "@import content\r\n@import arabic\r\n\r\n+offline-content"
},
{
"path": "sass/offline-language-chinese-simplified-indicator.sass",
"chars": 180,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"在线\"\n\n &.offline-ui-down\n\n "
},
{
"path": "sass/offline-language-chinese-simplified.sass",
"chars": 61,
"preview": "@import content\n@import chinese-simplified\n\n+offline-content\n"
},
{
"path": "sass/offline-language-chinese-traditional-indicator.sass",
"chars": 180,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"在線\"\n\n &.offline-ui-down\n\n "
},
{
"path": "sass/offline-language-chinese-traditional.sass",
"chars": 62,
"preview": "@import content\n@import chinese-traditional\n\n+offline-content\n"
},
{
"path": "sass/offline-language-czech-indicator.sass",
"chars": 189,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"Online\"\n\n &.offline-ui-dow"
},
{
"path": "sass/offline-language-czech.sass",
"chars": 48,
"preview": "@import content\n@import czech\n\n+offline-content\n"
},
{
"path": "sass/offline-language-dutch-indicator.sass",
"chars": 189,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"Online\"\n\n &.offline-ui-dow"
},
{
"path": "sass/offline-language-dutch.sass",
"chars": 48,
"preview": "@import content\n@import dutch\n\n+offline-content\n"
},
{
"path": "sass/offline-language-english-indicator.sass",
"chars": 188,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"Online\"\n\n &.offline-ui-dow"
},
{
"path": "sass/offline-language-english.sass",
"chars": 49,
"preview": "@import content\n@import english\n\n+offline-content"
},
{
"path": "sass/offline-language-french-indicator.sass",
"chars": 195,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"Connecté\"\n\n &.offline-ui-d"
},
{
"path": "sass/offline-language-french.sass",
"chars": 48,
"preview": "@import content\n@import french\n\n+offline-content"
},
{
"path": "sass/offline-language-german-indicator.sass",
"chars": 188,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"Online\"\n\n &.offline-ui-dow"
},
{
"path": "sass/offline-language-german.sass",
"chars": 49,
"preview": "@import content\n@import german\n\n\n+offline-content"
},
{
"path": "sass/offline-language-italian-indicator.sass",
"chars": 188,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"Online\"\n\n &.offline-ui-dow"
},
{
"path": "sass/offline-language-italian.sass",
"chars": 50,
"preview": "@import content\n@import italian\n\n+offline-content\n"
},
{
"path": "sass/offline-language-pashto-indicator.sass",
"chars": 188,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"Online\"\n\n &.offline-ui-dow"
},
{
"path": "sass/offline-language-pashto.sass",
"chars": 49,
"preview": "@import content\n@import pashto\n\n+offline-content\n"
},
{
"path": "sass/offline-language-polish-indicator.sass",
"chars": 195,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"Połączony\"\n\n &.offline-ui-"
},
{
"path": "sass/offline-language-polish.sass",
"chars": 49,
"preview": "@import content\n@import polish\n\n+offline-content\n"
},
{
"path": "sass/offline-language-portuguese-brazil-indicator.sass",
"chars": 197,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"Conectado\"\n\n &.offline-ui-"
},
{
"path": "sass/offline-language-portuguese-brazil.sass",
"chars": 60,
"preview": "@import content\n@import portuguese-brazil\n\n+offline-content\n"
},
{
"path": "sass/offline-language-simplified-chinese-indicator.sass",
"chars": 196,
"preview": "@charset \"utf-8\"\n.offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"在线\"\n\n &.o"
},
{
"path": "sass/offline-language-spanish-indicator.sass",
"chars": 194,
"preview": ".offline-ui\n &.offline-ui-up\n .offline-ui-content:before\n content: \"En línea\"\n &.offline-ui-down"
},
{
"path": "sass/offline-language-spanish.sass",
"chars": 50,
"preview": "@import content\n@import spanish\n\n+offline-content\n"
},
{
"path": "sass/offline-language-turkish-indicator.sass",
"chars": 195,
"preview": ".offline-ui\n\n &.offline-ui-up\n\n .offline-ui-content:before\n content: \"Çevrimiçi\"\n\n &.offline-ui-"
},
{
"path": "sass/offline-language-turkish.sass",
"chars": 50,
"preview": "@import content\n@import turkish\n\n+offline-content\n"
},
{
"path": "sass/offline-theme-chrome-indicator.sass",
"chars": 826,
"preview": "@import compass/css3\n\n@import offline-theme-base-indicator\n\n$green: #80d580\n$red: #ec8787\n\n.offline-ui\n +box-shadow(0"
},
{
"path": "sass/offline-theme-chrome.sass",
"chars": 2532,
"preview": "@import compass/css3\n\n@import mixins\n@import keyframes\n\n@import offline-theme-base\n\n$green: #80d580\n$red: #ec8787\n\n+keyf"
},
{
"path": "sass/offline-theme-dark-indicator.sass",
"chars": 827,
"preview": "@import compass/css3\n\n@import offline-theme-base-indicator\n\n$green: #80d580\n$red: #e24949\n\n.offline-ui\n +box-shadow(0"
},
{
"path": "sass/offline-theme-dark.sass",
"chars": 2293,
"preview": "@import compass/css3\n\n@import mixins\n@import keyframes\n\n@import offline-theme-base\n\n$green: #80d580\n$red: #e24949\n\n+keyf"
},
{
"path": "sass/offline-theme-default-indicator.sass",
"chars": 424,
"preview": "@import compass/css3\n\n@import offline-theme-base-indicator\n\n$red: #ec8787\n$green: #d6e9c6\n\n$darkRed: #551313\n$darkGreen:"
},
{
"path": "sass/offline-theme-default.sass",
"chars": 1980,
"preview": "@import compass/css3\n\n@import mixins\n@import keyframes\n\n@import offline-theme-base\n\n$red: #ec8787\n$green: #d6e9c6\n$yello"
},
{
"path": "sass/offline-theme-hubspot.sass",
"chars": 280,
"preview": "@import compass/css3\n\n@import offline-theme-default\n\n.offline-ui\n +border-radius(0 0 4px 4px)\n +box-shadow(inset 0"
},
{
"path": "sass/offline-theme-slide-indicator.sass",
"chars": 430,
"preview": "@import compass/css3\n\n@import offline-theme-base-indicator\n\n$red: #ec8787\n$green: #d6e9c6\n\n$darkRed: #551313\n$darkGreen:"
},
{
"path": "sass/offline-theme-slide.sass",
"chars": 1882,
"preview": "@import compass/css3\n\n@import mixins\n@import keyframes\n\n@import offline-theme-base\n\n$red: #ec8787\n$green: #d6e9c6\n$yello"
},
{
"path": "test/index.html",
"chars": 929,
"preview": "<head>\n<script src=\"../offline.min.js\"></script>\n\n<!--\nThemes:\n<link rel=\"stylesheet\" href=\"./themes/offline-theme-defau"
},
{
"path": "test/snake.html",
"chars": 977,
"preview": "<head>\n<script src=\"../offline.min.js\"></script>\n<script src=\"../js/snake.js\"></script>\n\n<!--\nThemes:\n<link rel=\"stylesh"
},
{
"path": "themes/offline-language-arabic-indicator.css",
"chars": 301,
"preview": "@charset \"UTF-8\";\n/* line 5, ../sass/offline-language-arabic-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-con"
},
{
"path": "themes/offline-language-arabic.css",
"chars": 4597,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \" إعادة الاتصال\""
},
{
"path": "themes/offline-language-chinese-simplified-indicator.css",
"chars": 317,
"preview": "@charset \"UTF-8\";\n/* line 5, ../sass/offline-language-chinese-simplified-indicator.sass */\n.offline-ui.offline-ui-up .of"
},
{
"path": "themes/offline-language-chinese-simplified.css",
"chars": 4312,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"重连\";\n}\n/* line "
},
{
"path": "themes/offline-language-chinese-traditional-indicator.css",
"chars": 319,
"preview": "@charset \"UTF-8\";\n/* line 5, ../sass/offline-language-chinese-traditional-indicator.sass */\n.offline-ui.offline-ui-up .o"
},
{
"path": "themes/offline-language-chinese-traditional.css",
"chars": 4306,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"重連\";\n}\n/* line "
},
{
"path": "themes/offline-language-czech-indicator.css",
"chars": 159,
"preview": ".offline-ui.offline-ui-up .offline-ui-content:before {\n content: \"Online\"; }\n.offline-ui.offline-ui-down .offline-ui-co"
},
{
"path": "themes/offline-language-czech.css",
"chars": 4740,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"Znovu připojit\""
},
{
"path": "themes/offline-language-dutch-indicator.css",
"chars": 280,
"preview": "/* line 5, ../sass/offline-language-dutch-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-content:before {\n con"
},
{
"path": "themes/offline-language-dutch.css",
"chars": 4793,
"preview": "/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"Opnieuw\";\n}\n/* line 11, ../sass/_"
},
{
"path": "themes/offline-language-english-indicator.css",
"chars": 284,
"preview": "/* line 5, ../sass/offline-language-english-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-content:before {\n c"
},
{
"path": "themes/offline-language-english.css",
"chars": 4701,
"preview": "/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"Reconnect\";\n}\n/* line 11, ../sass"
},
{
"path": "themes/offline-language-french-indicator.css",
"chars": 307,
"preview": "@charset \"UTF-8\";\n/* line 5, ../sass/offline-language-french-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-con"
},
{
"path": "themes/offline-language-french.css",
"chars": 4765,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"Reconnecter\";\n}"
},
{
"path": "themes/offline-language-german-indicator.css",
"chars": 282,
"preview": "/* line 5, ../sass/offline-language-german-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-content:before {\n co"
},
{
"path": "themes/offline-language-german.css",
"chars": 4741,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"Verbinden\";\n}\n/"
},
{
"path": "themes/offline-language-hebrew-indicator.css",
"chars": 281,
"preview": "/* line 5, ../sass/offline-language-english-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-content:before {\n c"
},
{
"path": "themes/offline-language-hebrew.css",
"chars": 4609,
"preview": "/* line 6, ../sass/_content.sass */\n\n.offline-ui .offline-ui-retry:before {\n content: \"מתחבר\";\n}\n/* line 11, ../sass/"
},
{
"path": "themes/offline-language-italian-indicator.css",
"chars": 284,
"preview": "/* line 5, ../sass/offline-language-italian-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-content:before {\n c"
},
{
"path": "themes/offline-language-italian.css",
"chars": 4756,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"Riconnetti\";\n}\n"
},
{
"path": "themes/offline-language-pashto-indicator.css",
"chars": 282,
"preview": "/* line 5, ../sass/offline-language-pashto-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-content:before {\n co"
},
{
"path": "themes/offline-language-pashto.css",
"chars": 4736,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"بيا ونښلوي\";\n}\n"
},
{
"path": "themes/offline-language-persian-indicator.css",
"chars": 282,
"preview": "* line 5, ../sass/offline-language-english-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-content:before {\n co"
},
{
"path": "themes/offline-language-persian.css",
"chars": 4644,
"preview": "/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"اتصال مجدد\";\n}\n/* line 11, ../sas"
},
{
"path": "themes/offline-language-polish-indicator.css",
"chars": 306,
"preview": "@charset \"UTF-8\";\n/* line 5, ../sass/offline-language-polish-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-con"
},
{
"path": "themes/offline-language-polish.css",
"chars": 4728,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"Połącz teraz\";\n"
},
{
"path": "themes/offline-language-portuguese-brazil-indicator.css",
"chars": 312,
"preview": "/* line 5, ../sass/offline-language-portuguese-brazil-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-content:be"
},
{
"path": "themes/offline-language-portuguese-brazil.css",
"chars": 4739,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"Reconectar\";\n}\n"
},
{
"path": "themes/offline-language-simplified-chinese-indicator.css",
"chars": 315,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/offline-language-simplified-chinese-indicator.sass */\n.offline-ui.offline-ui-up .of"
},
{
"path": "themes/offline-language-spanish-indicator.css",
"chars": 310,
"preview": "@charset \"UTF-8\";\n/* line 3, ../sass/offline-language-spanish-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-co"
},
{
"path": "themes/offline-language-spanish.css",
"chars": 4728,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"Reconectar\";\n}\n"
},
{
"path": "themes/offline-language-turkish-indicator.css",
"chars": 308,
"preview": "@charset \"UTF-8\";\n/* line 5, ../sass/offline-language-turkish-indicator.sass */\n.offline-ui.offline-ui-up .offline-ui-co"
},
{
"path": "themes/offline-language-turkish.css",
"chars": 4990,
"preview": "@charset \"UTF-8\";\n/* line 6, ../sass/_content.sass */\n.offline-ui .offline-ui-retry:before {\n content: \"Yeniden bağlan\""
},
{
"path": "themes/offline-theme-chrome-indicator.css",
"chars": 2062,
"preview": "/* line 3, ../sass/_offline-theme-base-indicator.sass */\n.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:aft"
},
{
"path": "themes/offline-theme-chrome.css",
"chars": 16248,
"preview": "/* line 4, ../sass/_offline-theme-base.sass */\n.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offli"
},
{
"path": "themes/offline-theme-dark-indicator.css",
"chars": 2055,
"preview": "/* line 3, ../sass/_offline-theme-base-indicator.sass */\n.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:aft"
},
{
"path": "themes/offline-theme-dark.css",
"chars": 15505,
"preview": "/* line 4, ../sass/_offline-theme-base.sass */\n.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offli"
},
{
"path": "themes/offline-theme-default-indicator.css",
"chars": 1336,
"preview": "/* line 3, ../sass/_offline-theme-base-indicator.sass */\n.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:aft"
},
{
"path": "themes/offline-theme-default.css",
"chars": 9330,
"preview": "/* line 4, ../sass/_offline-theme-base.sass */\n.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offli"
},
{
"path": "themes/offline-theme-hubspot.css",
"chars": 9922,
"preview": "/* line 4, ../sass/_offline-theme-base.sass */\n.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offli"
},
{
"path": "themes/offline-theme-slide-indicator.css",
"chars": 1368,
"preview": "/* line 3, ../sass/_offline-theme-base-indicator.sass */\n.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:aft"
},
{
"path": "themes/offline-theme-slide.css",
"chars": 14492,
"preview": "/* line 4, ../sass/_offline-theme-base.sass */\n.offline-ui, .offline-ui *, .offline-ui:before, .offline-ui:after, .offli"
}
]
// ... and 3 more files (download for full content)
About this extraction
This page contains the full source code of the HubSpot/offline GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 136 files (289.5 KB), approximately 87.2k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.