written 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/written/app/assets/javascripts/written/core/content.coffee +10 -10
- data/lib/written/app/assets/javascripts/written/core/cursor.coffee +6 -6
- data/lib/written/app/assets/javascripts/written/core/document.coffee +39 -6
- data/lib/written/app/assets/javascripts/written/parsers/block/code.coffee +34 -30
- data/lib/written/app/assets/javascripts/written/parsers/block/heading.coffee +28 -30
- data/lib/written/app/assets/javascripts/written/parsers/block/image.coffee +30 -49
- data/lib/written/app/assets/javascripts/written/parsers/block/olist.coffee +46 -49
- data/lib/written/app/assets/javascripts/written/parsers/block/paragraph.coffee +28 -32
- data/lib/written/app/assets/javascripts/written/parsers/block/quote.coffee +30 -32
- data/lib/written/app/assets/javascripts/written/parsers/block/ulist.coffee +43 -45
- data/lib/written/app/assets/javascripts/written/parsers/inline/code.coffee +28 -30
- data/lib/written/app/assets/javascripts/written/parsers/inline/italic.coffee +21 -25
- data/lib/written/app/assets/javascripts/written/parsers/inline/link.coffee +21 -25
- data/lib/written/app/assets/javascripts/written/parsers/inline/strong.coffee +21 -25
- data/lib/written/app/assets/javascripts/written/parsers/parsers.coffee +87 -19
- data/lib/written/app/assets/javascripts/written.coffee +0 -1
- data/lib/written/version.rb +1 -1
- data/test/server/app/assets/javascripts/application.coffee +5 -15
- metadata +2 -18
- data/lib/written/app/assets/javascripts/written/core/extensions/text.coffee +0 -2
- data/lib/written/app/assets/javascripts/written/core/stringify.coffee +0 -15
- data/lib/written/app/assets/javascripts/written/parsers/block.coffee +0 -69
- data/lib/written/app/assets/javascripts/written/parsers/inline/list.coffee +0 -27
- data/lib/written/app/assets/javascripts/written/parsers/inline.coffee +0 -81
- data/lib/written/app/assets/javascripts/written/polyfills/CustomElements/CustomElements.js +0 -32
- data/lib/written/app/assets/javascripts/written/polyfills/CustomElements/base.js +0 -40
- data/lib/written/app/assets/javascripts/written/polyfills/CustomElements/boot.js +0 -124
- data/lib/written/app/assets/javascripts/written/polyfills/CustomElements/observe.js +0 -318
- data/lib/written/app/assets/javascripts/written/polyfills/CustomElements/register.js +0 -369
- data/lib/written/app/assets/javascripts/written/polyfills/CustomElements/traverse.js +0 -86
- data/lib/written/app/assets/javascripts/written/polyfills/CustomElements/upgrade.js +0 -130
- data/lib/written/app/assets/javascripts/written/polyfills/MutationObserver/MutationObserver.js +0 -575
- data/lib/written/app/assets/javascripts/written/polyfills/WeakMap/WeakMap.js +0 -49
- data/lib/written/app/assets/javascripts/written/polyfills/base.coffee +0 -10
- data/lib/written/app/assets/javascripts/written/polyfills/dom.js +0 -104
@@ -1,25 +1,15 @@
|
|
1
1
|
#= require 'written'
|
2
2
|
#= require 'prism'
|
3
|
+
#
|
4
|
+
document.removeEventListener('DOMContentLoaded', Prism.highlightAll)
|
3
5
|
|
4
|
-
|
5
|
-
code.highlight = (element) ->
|
6
|
+
Written.Parsers.get('pre').highlightWith (element) ->
|
6
7
|
Prism.highlightElement(element, false)
|
7
8
|
|
8
|
-
|
9
|
-
code.highlight = (element) ->
|
9
|
+
Written.Parsers.get('code').highlightWith (element) ->
|
10
10
|
Prism.highlightElement(element, false)
|
11
11
|
|
12
|
-
|
13
|
-
if window.AWS?
|
14
|
-
uploader = new Written.Uploaders.AWS({
|
15
|
-
bucket: AWS.bucket,
|
16
|
-
accessKey: AWS.accessKey,
|
17
|
-
policy: AWS.policy,
|
18
|
-
signature: AWS.signature
|
19
|
-
})
|
20
|
-
|
21
|
-
Written.Parsers.Block.get('Image').uploader(uploader)
|
22
|
-
|
23
12
|
editor = new Written(document.getElementById('Editor'))
|
24
13
|
editor.initialize()
|
25
14
|
|
15
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: written
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pier-Olivier Thibault
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Written is a rich Markdown editor for the web.
|
14
14
|
email: pothibo@gmail.com
|
@@ -29,11 +29,8 @@ files:
|
|
29
29
|
- lib/written/app/assets/javascripts/written/core/cursor.coffee
|
30
30
|
- lib/written/app/assets/javascripts/written/core/document.coffee
|
31
31
|
- lib/written/app/assets/javascripts/written/core/extensions/string.coffee
|
32
|
-
- lib/written/app/assets/javascripts/written/core/extensions/text.coffee
|
33
32
|
- lib/written/app/assets/javascripts/written/core/history.coffee
|
34
33
|
- lib/written/app/assets/javascripts/written/core/observer.coffee
|
35
|
-
- lib/written/app/assets/javascripts/written/core/stringify.coffee
|
36
|
-
- lib/written/app/assets/javascripts/written/parsers/block.coffee
|
37
34
|
- lib/written/app/assets/javascripts/written/parsers/block/code.coffee
|
38
35
|
- lib/written/app/assets/javascripts/written/parsers/block/heading.coffee
|
39
36
|
- lib/written/app/assets/javascripts/written/parsers/block/image.coffee
|
@@ -41,24 +38,11 @@ files:
|
|
41
38
|
- lib/written/app/assets/javascripts/written/parsers/block/paragraph.coffee
|
42
39
|
- lib/written/app/assets/javascripts/written/parsers/block/quote.coffee
|
43
40
|
- lib/written/app/assets/javascripts/written/parsers/block/ulist.coffee
|
44
|
-
- lib/written/app/assets/javascripts/written/parsers/inline.coffee
|
45
41
|
- lib/written/app/assets/javascripts/written/parsers/inline/code.coffee
|
46
42
|
- lib/written/app/assets/javascripts/written/parsers/inline/italic.coffee
|
47
43
|
- lib/written/app/assets/javascripts/written/parsers/inline/link.coffee
|
48
|
-
- lib/written/app/assets/javascripts/written/parsers/inline/list.coffee
|
49
44
|
- lib/written/app/assets/javascripts/written/parsers/inline/strong.coffee
|
50
45
|
- lib/written/app/assets/javascripts/written/parsers/parsers.coffee
|
51
|
-
- lib/written/app/assets/javascripts/written/polyfills/CustomElements/CustomElements.js
|
52
|
-
- lib/written/app/assets/javascripts/written/polyfills/CustomElements/base.js
|
53
|
-
- lib/written/app/assets/javascripts/written/polyfills/CustomElements/boot.js
|
54
|
-
- lib/written/app/assets/javascripts/written/polyfills/CustomElements/observe.js
|
55
|
-
- lib/written/app/assets/javascripts/written/polyfills/CustomElements/register.js
|
56
|
-
- lib/written/app/assets/javascripts/written/polyfills/CustomElements/traverse.js
|
57
|
-
- lib/written/app/assets/javascripts/written/polyfills/CustomElements/upgrade.js
|
58
|
-
- lib/written/app/assets/javascripts/written/polyfills/MutationObserver/MutationObserver.js
|
59
|
-
- lib/written/app/assets/javascripts/written/polyfills/WeakMap/WeakMap.js
|
60
|
-
- lib/written/app/assets/javascripts/written/polyfills/base.coffee
|
61
|
-
- lib/written/app/assets/javascripts/written/polyfills/dom.js
|
62
46
|
- lib/written/app/assets/javascripts/written/uploaders/aws.coffee
|
63
47
|
- lib/written/app/assets/stylesheets/written.scss
|
64
48
|
- lib/written/railtie.rb
|
@@ -1,15 +0,0 @@
|
|
1
|
-
ElementString = (node) ->
|
2
|
-
node.textContent
|
3
|
-
|
4
|
-
CustomElementString = (node) ->
|
5
|
-
node.toString()
|
6
|
-
|
7
|
-
TextNodeString = (node) ->
|
8
|
-
node.textContent
|
9
|
-
|
10
|
-
Written.Stringify = (node) ->
|
11
|
-
switch
|
12
|
-
when node.nodeType == Node.TEXT_NODE then TextNodeString(node)
|
13
|
-
when node.hasAttribute('is') then CustomElementString(node)
|
14
|
-
else ElementString(node)
|
15
|
-
|
@@ -1,69 +0,0 @@
|
|
1
|
-
class @Written.Parsers.Block
|
2
|
-
constructor: ->
|
3
|
-
@parsers = []
|
4
|
-
|
5
|
-
freeze: ->
|
6
|
-
if Written.Parsers.Block.parsers.default?
|
7
|
-
@parsers.push Written.Parsers.Block.parsers.default
|
8
|
-
|
9
|
-
Object.freeze(this)
|
10
|
-
Object.freeze(@parsers)
|
11
|
-
|
12
|
-
use: (names) ->
|
13
|
-
if typeof names == 'string' && names == 'all'
|
14
|
-
@parsers = Written.Parsers.Block.parsers.available.slice()
|
15
|
-
return this
|
16
|
-
|
17
|
-
if typeof names == 'string'
|
18
|
-
names = names.split(',').map (name) ->
|
19
|
-
name.trim()
|
20
|
-
|
21
|
-
parser = Written.Parsers.Block.parsers.available.find (obj) ->
|
22
|
-
names.contains(obj.parser.name)
|
23
|
-
|
24
|
-
if !parser?
|
25
|
-
throw "Couldn't find parser #{names}."
|
26
|
-
return this
|
27
|
-
|
28
|
-
@parsers.push(parser)
|
29
|
-
return this
|
30
|
-
|
31
|
-
parse: (lines) =>
|
32
|
-
blocks = []
|
33
|
-
while (line = lines.pop()) != undefined
|
34
|
-
str = line.toString()
|
35
|
-
block = blocks[blocks.length - 1]
|
36
|
-
|
37
|
-
if block? && block.multiline && block.accepts(line)
|
38
|
-
block.append(line)
|
39
|
-
continue
|
40
|
-
|
41
|
-
blocks.push(@find(str))
|
42
|
-
|
43
|
-
blocks
|
44
|
-
|
45
|
-
find: (str) ->
|
46
|
-
parser = undefined
|
47
|
-
for p in @parsers
|
48
|
-
if match = p.rule.exec(str)
|
49
|
-
parser = new p(match)
|
50
|
-
break
|
51
|
-
|
52
|
-
return parser
|
53
|
-
|
54
|
-
|
55
|
-
@Written.Parsers.Block.parsers = {
|
56
|
-
available: []
|
57
|
-
default: undefined
|
58
|
-
}
|
59
|
-
|
60
|
-
@Written.Parsers.Block.get = (name) ->
|
61
|
-
Written.Parsers.Block.parsers.available.find (p) ->
|
62
|
-
p.parserName.localeCompare(name) == 0
|
63
|
-
|
64
|
-
@Written.Parsers.Block.register = (parser, defaultParser = false) ->
|
65
|
-
if defaultParser
|
66
|
-
Written.Parsers.Block.parsers.default = parser
|
67
|
-
else
|
68
|
-
Written.Parsers.Block.parsers.available.push parser
|
69
|
-
|
@@ -1,27 +0,0 @@
|
|
1
|
-
prototype = Object.create(HTMLLIElement.prototype)
|
2
|
-
|
3
|
-
prototype.getRange = (offset, walker) ->
|
4
|
-
range = document.createRange()
|
5
|
-
|
6
|
-
if !@firstChild?
|
7
|
-
range.setStart(this, 0)
|
8
|
-
else
|
9
|
-
while walker.nextNode()
|
10
|
-
if walker.currentNode.length < offset
|
11
|
-
offset -= walker.currentNode.length
|
12
|
-
continue
|
13
|
-
|
14
|
-
range.setStart(walker.currentNode, offset)
|
15
|
-
break
|
16
|
-
|
17
|
-
range.collapse(true)
|
18
|
-
range
|
19
|
-
|
20
|
-
prototype.toString = ->
|
21
|
-
@textContent
|
22
|
-
|
23
|
-
document.registerElement('written-li', {
|
24
|
-
prototype: prototype
|
25
|
-
extends: 'li'
|
26
|
-
})
|
27
|
-
|
@@ -1,81 +0,0 @@
|
|
1
|
-
class @Written.Parsers.Inline
|
2
|
-
constructor: ->
|
3
|
-
@parsers = []
|
4
|
-
|
5
|
-
freeze: ->
|
6
|
-
Object.freeze(this)
|
7
|
-
Object.freeze(@parsers)
|
8
|
-
|
9
|
-
use: (names) ->
|
10
|
-
if typeof names == 'string' && names == 'all'
|
11
|
-
@parsers = Written.Parsers.Inline.parsers.available.slice()
|
12
|
-
return this
|
13
|
-
|
14
|
-
if typeof names == 'string'
|
15
|
-
names = names.split(',').map (name) ->
|
16
|
-
name.trim()
|
17
|
-
|
18
|
-
parser = Written.Parsers.Inline.parsers.available.find (parser) ->
|
19
|
-
names.contains(parser.name)
|
20
|
-
|
21
|
-
if !parser?
|
22
|
-
throw "Couldn't find parser #{name}."
|
23
|
-
return this
|
24
|
-
|
25
|
-
@parsers.push parser
|
26
|
-
return this
|
27
|
-
|
28
|
-
parse: (text) =>
|
29
|
-
if Array.isArray(text)
|
30
|
-
return text.map(@parse)
|
31
|
-
|
32
|
-
parsers = []
|
33
|
-
for p in @parsers
|
34
|
-
if text.length is 0
|
35
|
-
break
|
36
|
-
|
37
|
-
p.rule.lastIndex = 0
|
38
|
-
|
39
|
-
while match = p.rule.exec(text)
|
40
|
-
parser = new p(match)
|
41
|
-
parsers[parser.index()] = parser
|
42
|
-
|
43
|
-
@merge(parsers, text)
|
44
|
-
|
45
|
-
|
46
|
-
merge: (parsers, text) ->
|
47
|
-
content = []
|
48
|
-
buffer = ''
|
49
|
-
index = 0
|
50
|
-
|
51
|
-
while text[index]?
|
52
|
-
if parser = parsers[index]
|
53
|
-
content.push buffer.slice(0)
|
54
|
-
content.push parser
|
55
|
-
buffer = ''
|
56
|
-
index += parser.length()
|
57
|
-
else
|
58
|
-
buffer += text[index]
|
59
|
-
index += 1
|
60
|
-
|
61
|
-
if buffer.length > 0
|
62
|
-
content.push buffer
|
63
|
-
|
64
|
-
content
|
65
|
-
|
66
|
-
splice: (text, parser) ->
|
67
|
-
start = parser.index()
|
68
|
-
end = start + parser.length()
|
69
|
-
text.slice(0, start) + text.slice(end, text.length)
|
70
|
-
|
71
|
-
|
72
|
-
@Written.Parsers.Inline.get = (name) ->
|
73
|
-
Written.Parsers.Inline.parsers.available.find (p) ->
|
74
|
-
p.parserName.localeCompare(name) == 0
|
75
|
-
|
76
|
-
@Written.Parsers.Inline.parsers = {
|
77
|
-
available: []
|
78
|
-
}
|
79
|
-
|
80
|
-
@Written.Parsers.Inline.register = (parser) ->
|
81
|
-
Written.Parsers.Inline.parsers.available.push(parser)
|
@@ -1,32 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @license
|
3
|
-
* Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
|
4
|
-
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
5
|
-
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
6
|
-
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
7
|
-
* Code distributed by Google as part of the polymer project is also
|
8
|
-
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
9
|
-
*/
|
10
|
-
(function() {
|
11
|
-
|
12
|
-
// Establish polyfill scope. We do this here to store flags. Flags are not
|
13
|
-
// supported in the build.
|
14
|
-
window.CustomElements = window.CustomElements || {flags:{}};
|
15
|
-
|
16
|
-
// Flags. Convert url arguments to flags
|
17
|
-
var flags = {};
|
18
|
-
if (!flags.noOpts) {
|
19
|
-
location.search.slice(1).split('&').forEach(function(option) {
|
20
|
-
var parts = option.split('=');
|
21
|
-
var match;
|
22
|
-
if (parts[0] && (match = parts[0].match(/wc-(.+)/))) {
|
23
|
-
flags[match[1]] = parts[1] || true;
|
24
|
-
}
|
25
|
-
});
|
26
|
-
}
|
27
|
-
|
28
|
-
|
29
|
-
// exports
|
30
|
-
window.CustomElements.flags = flags;
|
31
|
-
|
32
|
-
})();
|
@@ -1,40 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @license
|
3
|
-
* Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
|
4
|
-
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
5
|
-
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
6
|
-
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
7
|
-
* Code distributed by Google as part of the polymer project is also
|
8
|
-
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
9
|
-
*/
|
10
|
-
window.CustomElements = window.CustomElements || {flags:{}};
|
11
|
-
|
12
|
-
(function(scope) {
|
13
|
-
|
14
|
-
// imports
|
15
|
-
var flags = scope.flags;
|
16
|
-
|
17
|
-
// world's simplest module initializer
|
18
|
-
var modules = [];
|
19
|
-
var addModule = function(module) {
|
20
|
-
modules.push(module);
|
21
|
-
};
|
22
|
-
|
23
|
-
var initializeModules = function() {
|
24
|
-
modules.forEach(function(module) {
|
25
|
-
module(scope);
|
26
|
-
});
|
27
|
-
};
|
28
|
-
|
29
|
-
// exports
|
30
|
-
scope.addModule = addModule;
|
31
|
-
scope.initializeModules = initializeModules;
|
32
|
-
scope.hasNative = Boolean(document.registerElement);
|
33
|
-
scope.isIE = /Trident/.test(navigator.userAgent);
|
34
|
-
|
35
|
-
// NOTE: For consistent timing, use native custom elements only when not
|
36
|
-
// polyfilling other key related web components features.
|
37
|
-
scope.useNative = !flags.register && scope.hasNative &&
|
38
|
-
!window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative);
|
39
|
-
|
40
|
-
})(window.CustomElements);
|
@@ -1,124 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @license
|
3
|
-
* Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
|
4
|
-
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
5
|
-
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
6
|
-
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
7
|
-
* Code distributed by Google as part of the polymer project is also
|
8
|
-
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
9
|
-
*/
|
10
|
-
(function(scope){
|
11
|
-
|
12
|
-
// imports
|
13
|
-
var useNative = scope.useNative;
|
14
|
-
var initializeModules = scope.initializeModules;
|
15
|
-
|
16
|
-
var isIE = scope.isIE;
|
17
|
-
|
18
|
-
// If native, setup stub api and bail.
|
19
|
-
// NOTE: we fire `WebComponentsReady` under native for api compatibility
|
20
|
-
if (useNative) {
|
21
|
-
// stub
|
22
|
-
var nop = function() {};
|
23
|
-
|
24
|
-
// exports
|
25
|
-
scope.watchShadow = nop;
|
26
|
-
scope.upgrade = nop;
|
27
|
-
scope.upgradeAll = nop;
|
28
|
-
scope.upgradeDocumentTree = nop;
|
29
|
-
scope.upgradeSubtree = nop;
|
30
|
-
scope.takeRecords = nop;
|
31
|
-
|
32
|
-
scope.instanceof = function(obj, base) {
|
33
|
-
return obj instanceof base;
|
34
|
-
};
|
35
|
-
|
36
|
-
} else {
|
37
|
-
// Initialize polyfill modules. Note, polyfill modules are loaded but not
|
38
|
-
// executed; this is a convenient way to control which modules run when
|
39
|
-
// the polyfill is required and allows the polyfill to load even when it's
|
40
|
-
// not needed.
|
41
|
-
initializeModules();
|
42
|
-
}
|
43
|
-
|
44
|
-
// imports
|
45
|
-
var upgradeDocumentTree = scope.upgradeDocumentTree;
|
46
|
-
var upgradeDocument = scope.upgradeDocument;
|
47
|
-
|
48
|
-
// ShadowDOM polyfill wraps elements but some elements like `document`
|
49
|
-
// cannot be wrapped so we help the polyfill by wrapping some elements.
|
50
|
-
if (!window.wrap) {
|
51
|
-
if (window.ShadowDOMPolyfill) {
|
52
|
-
window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded;
|
53
|
-
window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded;
|
54
|
-
} else {
|
55
|
-
window.wrap = window.unwrap = function(node) {
|
56
|
-
return node;
|
57
|
-
};
|
58
|
-
}
|
59
|
-
}
|
60
|
-
|
61
|
-
// eagarly upgrade imported documents
|
62
|
-
if (window.HTMLImports) {
|
63
|
-
window.HTMLImports.__importsParsingHook = function(elt) {
|
64
|
-
if (elt.import) {
|
65
|
-
upgradeDocument(wrap(elt.import));
|
66
|
-
}
|
67
|
-
};
|
68
|
-
}
|
69
|
-
|
70
|
-
// bootstrap parsing
|
71
|
-
function bootstrap() {
|
72
|
-
// one more upgrade to catch out of order registrations
|
73
|
-
upgradeDocumentTree(window.wrap(document));
|
74
|
-
// install upgrade hook if HTMLImports are available
|
75
|
-
// set internal 'ready' flag, now document.registerElement will trigger
|
76
|
-
// synchronous upgrades
|
77
|
-
window.CustomElements.ready = true;
|
78
|
-
// async to ensure *native* custom elements upgrade prior to this
|
79
|
-
// DOMContentLoaded can fire before elements upgrade (e.g. when there's
|
80
|
-
// an external script)
|
81
|
-
// Delay doubly to help workaround
|
82
|
-
// https://code.google.com/p/chromium/issues/detail?id=516550.
|
83
|
-
// CustomElements must use requestAnimationFrame in attachedCallback
|
84
|
-
// to query style/layout data. The WebComponentsReady event is intended
|
85
|
-
// to convey overall readiness, which ideally should be after elements
|
86
|
-
// are attached. Adding a slight extra delay to WebComponentsReady
|
87
|
-
// helps preserve this guarantee.
|
88
|
-
var requestAnimationFrame = window.requestAnimationFrame || function(f) {
|
89
|
-
setTimeout(f, 16);
|
90
|
-
};
|
91
|
-
requestAnimationFrame(function() {
|
92
|
-
setTimeout(function() {
|
93
|
-
// capture blunt profiling data
|
94
|
-
window.CustomElements.readyTime = Date.now();
|
95
|
-
if (window.HTMLImports) {
|
96
|
-
window.CustomElements.elapsed = window.CustomElements.readyTime - window.HTMLImports.readyTime;
|
97
|
-
}
|
98
|
-
// notify the system that we are bootstrapped
|
99
|
-
document.dispatchEvent(
|
100
|
-
new CustomEvent('WebComponentsReady', {bubbles: true})
|
101
|
-
);
|
102
|
-
});
|
103
|
-
});
|
104
|
-
}
|
105
|
-
|
106
|
-
// When loading at readyState complete time (or via flag), boot custom elements
|
107
|
-
// immediately.
|
108
|
-
// If relevant, HTMLImports must already be loaded.
|
109
|
-
if (document.readyState === 'complete' || scope.flags.eager) {
|
110
|
-
bootstrap();
|
111
|
-
// When loading at readyState interactive time, bootstrap only if HTMLImports
|
112
|
-
// are not pending. Also avoid IE as the semantics of this state are unreliable.
|
113
|
-
} else if (document.readyState === 'interactive' && !window.attachEvent &&
|
114
|
-
(!window.HTMLImports || window.HTMLImports.ready)) {
|
115
|
-
bootstrap();
|
116
|
-
// When loading at other readyStates, wait for the appropriate DOM event to
|
117
|
-
// bootstrap.
|
118
|
-
} else {
|
119
|
-
var loadEvent = window.HTMLImports && !window.HTMLImports.ready ?
|
120
|
-
'HTMLImportsLoaded' : 'DOMContentLoaded';
|
121
|
-
window.addEventListener(loadEvent, bootstrap);
|
122
|
-
}
|
123
|
-
|
124
|
-
})(window.CustomElements);
|