fluentd-ui 0.3.8 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ChangeLog +9 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +4 -1
- data/app/assets/javascripts/vue/fluent_log.js +4 -4
- data/app/assets/javascripts/vue/in_tail_format.js +43 -49
- data/app/assets/javascripts/{alert.js → vue/notification.js} +21 -7
- data/app/assets/javascripts/vue/settings.js +121 -0
- data/app/assets/javascripts/vue/treeview.js +3 -3
- data/app/assets/stylesheets/common.css.scss +7 -1
- data/app/controllers/api/settings_controller.rb +55 -0
- data/app/controllers/api_controller.rb +6 -2
- data/app/controllers/concerns/setting_concern.rb +2 -2
- data/app/controllers/fluentd/settings_controller.rb +17 -2
- data/app/models/fluentd/setting/config.rb +39 -0
- data/app/views/api/settings/_element.json.jbuilder +6 -0
- data/app/views/api/settings/index.json.jbuilder +3 -0
- data/app/views/api/settings/show.json.jbuilder +1 -0
- data/app/views/fluentd/settings/edit.html.haml +3 -0
- data/app/views/fluentd/settings/source_and_output.html.haml +19 -2
- data/app/views/layouts/application.html.erb +1 -30
- data/app/views/shared/vue/_in_tail_format.html.erb +11 -36
- data/app/views/shared/vue/_notification.html.erb +31 -0
- data/app/views/shared/vue/_setting.html.erb +23 -0
- data/app/views/shared/vue/_treeview.html.erb +2 -2
- data/bower.json +1 -1
- data/config/application.rb +1 -0
- data/config/locales/translation_en.yml +11 -7
- data/config/locales/translation_ja.yml +4 -0
- data/config/routes.rb +2 -0
- data/lib/fluentd-ui/version.rb +1 -1
- data/spec/features/fluentd/setting/source_and_output_spec.rb +157 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/javascript_macro.rb +21 -0
- data/vendor/assets/javascripts/bower/vue/.bower.json +7 -7
- data/vendor/assets/javascripts/bower/vue/LICENSE +1 -1
- data/vendor/assets/javascripts/bower/vue/dist/vue.js +7822 -4768
- data/vendor/assets/javascripts/bower/vue/dist/vue.min.js +7 -7
- data/vendor/assets/javascripts/bower/vue/src/api/child.js +53 -0
- data/vendor/assets/javascripts/bower/vue/src/api/data.js +161 -0
- data/vendor/assets/javascripts/bower/vue/src/api/dom.js +211 -0
- data/vendor/assets/javascripts/bower/vue/src/api/events.js +176 -0
- data/vendor/assets/javascripts/bower/vue/src/api/global.js +146 -0
- data/vendor/assets/javascripts/bower/vue/src/api/lifecycle.js +144 -0
- data/vendor/assets/javascripts/bower/vue/src/batcher.js +52 -32
- data/vendor/assets/javascripts/bower/vue/src/cache.js +112 -0
- data/vendor/assets/javascripts/bower/vue/src/compiler/compile.js +549 -0
- data/vendor/assets/javascripts/bower/vue/src/compiler/transclude.js +163 -0
- data/vendor/assets/javascripts/bower/vue/src/config.js +74 -14
- data/vendor/assets/javascripts/bower/vue/src/directive.js +179 -219
- data/vendor/assets/javascripts/bower/vue/src/directives/attr.js +32 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/class.js +18 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/cloak.js +12 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/component.js +214 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/el.js +13 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/html.js +30 -34
- data/vendor/assets/javascripts/bower/vue/src/directives/if.js +77 -46
- data/vendor/assets/javascripts/bower/vue/src/directives/index.js +22 -129
- data/vendor/assets/javascripts/bower/vue/src/directives/model/checkbox.js +25 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/model/default.js +123 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/model/index.js +56 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/model/radio.js +26 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/model/select.js +166 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/on.js +51 -50
- data/vendor/assets/javascripts/bower/vue/src/directives/partial.js +36 -42
- data/vendor/assets/javascripts/bower/vue/src/directives/ref.js +24 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/repeat.js +477 -226
- data/vendor/assets/javascripts/bower/vue/src/directives/show.js +8 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/style.js +49 -37
- data/vendor/assets/javascripts/bower/vue/src/directives/text.js +15 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/transition.js +12 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/with.js +38 -41
- data/vendor/assets/javascripts/bower/vue/src/filters/array-filters.js +87 -0
- data/vendor/assets/javascripts/bower/vue/src/filters/index.js +135 -0
- data/vendor/assets/javascripts/bower/vue/src/instance/compile.js +71 -0
- data/vendor/assets/javascripts/bower/vue/src/instance/events.js +122 -0
- data/vendor/assets/javascripts/bower/vue/src/instance/init.js +76 -0
- data/vendor/assets/javascripts/bower/vue/src/instance/scope.js +217 -0
- data/vendor/assets/javascripts/bower/vue/src/observer/array.js +90 -0
- data/vendor/assets/javascripts/bower/vue/src/observer/dep.js +50 -0
- data/vendor/assets/javascripts/bower/vue/src/observer/index.js +235 -0
- data/vendor/assets/javascripts/bower/vue/src/observer/object.js +75 -0
- data/vendor/assets/javascripts/bower/vue/src/parsers/directive.js +159 -0
- data/vendor/assets/javascripts/bower/vue/src/parsers/expression.js +226 -0
- data/vendor/assets/javascripts/bower/vue/src/parsers/path.js +300 -0
- data/vendor/assets/javascripts/bower/vue/src/parsers/template.js +246 -0
- data/vendor/assets/javascripts/bower/vue/src/parsers/text.js +178 -0
- data/vendor/assets/javascripts/bower/vue/src/transition/css.js +189 -0
- data/vendor/assets/javascripts/bower/vue/src/transition/index.js +151 -0
- data/vendor/assets/javascripts/bower/vue/src/transition/js.js +43 -0
- data/vendor/assets/javascripts/bower/vue/src/util/debug.js +50 -0
- data/vendor/assets/javascripts/bower/vue/src/util/dom.js +176 -0
- data/vendor/assets/javascripts/bower/vue/src/util/env.js +74 -0
- data/vendor/assets/javascripts/bower/vue/src/util/filter.js +72 -0
- data/vendor/assets/javascripts/bower/vue/src/util/index.js +8 -0
- data/vendor/assets/javascripts/bower/vue/src/util/lang.js +175 -0
- data/vendor/assets/javascripts/bower/vue/src/util/merge-option.js +258 -0
- data/vendor/assets/javascripts/bower/vue/src/vue.js +84 -0
- data/vendor/assets/javascripts/bower/vue/src/watcher.js +240 -0
- metadata +65 -20
- data/app/assets/javascripts/setting_format.js +0 -15
- data/vendor/assets/javascripts/bower/vue/src/binding.js +0 -103
- data/vendor/assets/javascripts/bower/vue/src/compiler.js +0 -1037
- data/vendor/assets/javascripts/bower/vue/src/deps-parser.js +0 -65
- data/vendor/assets/javascripts/bower/vue/src/directives/model.js +0 -174
- data/vendor/assets/javascripts/bower/vue/src/directives/view.js +0 -56
- data/vendor/assets/javascripts/bower/vue/src/emitter.js +0 -97
- data/vendor/assets/javascripts/bower/vue/src/exp-parser.js +0 -190
- data/vendor/assets/javascripts/bower/vue/src/filters.js +0 -191
- data/vendor/assets/javascripts/bower/vue/src/fragment.js +0 -67
- data/vendor/assets/javascripts/bower/vue/src/main.js +0 -188
- data/vendor/assets/javascripts/bower/vue/src/observer.js +0 -446
- data/vendor/assets/javascripts/bower/vue/src/template-parser.js +0 -46
- data/vendor/assets/javascripts/bower/vue/src/text-parser.js +0 -96
- data/vendor/assets/javascripts/bower/vue/src/transition.js +0 -228
- data/vendor/assets/javascripts/bower/vue/src/utils.js +0 -326
- data/vendor/assets/javascripts/bower/vue/src/viewmodel.js +0 -190
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
var _ = require('../util')
|
|
2
|
+
var applyCSSTransition = require('./css')
|
|
3
|
+
var applyJSTransition = require('./js')
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Append with transition.
|
|
7
|
+
*
|
|
8
|
+
* @oaram {Element} el
|
|
9
|
+
* @param {Element} target
|
|
10
|
+
* @param {Vue} vm
|
|
11
|
+
* @param {Function} [cb]
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
exports.append = function (el, target, vm, cb) {
|
|
15
|
+
apply(el, 1, function () {
|
|
16
|
+
target.appendChild(el)
|
|
17
|
+
}, vm, cb)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* InsertBefore with transition.
|
|
22
|
+
*
|
|
23
|
+
* @oaram {Element} el
|
|
24
|
+
* @param {Element} target
|
|
25
|
+
* @param {Vue} vm
|
|
26
|
+
* @param {Function} [cb]
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
exports.before = function (el, target, vm, cb) {
|
|
30
|
+
apply(el, 1, function () {
|
|
31
|
+
_.before(el, target)
|
|
32
|
+
}, vm, cb)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Remove with transition.
|
|
37
|
+
*
|
|
38
|
+
* @oaram {Element} el
|
|
39
|
+
* @param {Vue} vm
|
|
40
|
+
* @param {Function} [cb]
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
exports.remove = function (el, vm, cb) {
|
|
44
|
+
apply(el, -1, function () {
|
|
45
|
+
_.remove(el)
|
|
46
|
+
}, vm, cb)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Remove by appending to another parent with transition.
|
|
51
|
+
* This is only used in block operations.
|
|
52
|
+
*
|
|
53
|
+
* @oaram {Element} el
|
|
54
|
+
* @param {Element} target
|
|
55
|
+
* @param {Vue} vm
|
|
56
|
+
* @param {Function} [cb]
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
exports.removeThenAppend = function (el, target, vm, cb) {
|
|
60
|
+
apply(el, -1, function () {
|
|
61
|
+
target.appendChild(el)
|
|
62
|
+
}, vm, cb)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Append the childNodes of a fragment to target.
|
|
67
|
+
*
|
|
68
|
+
* @param {DocumentFragment} block
|
|
69
|
+
* @param {Node} target
|
|
70
|
+
* @param {Vue} vm
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
exports.blockAppend = function (block, target, vm) {
|
|
74
|
+
var nodes = _.toArray(block.childNodes)
|
|
75
|
+
for (var i = 0, l = nodes.length; i < l; i++) {
|
|
76
|
+
exports.before(nodes[i], target, vm)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Remove a block of nodes between two edge nodes.
|
|
82
|
+
*
|
|
83
|
+
* @param {Node} start
|
|
84
|
+
* @param {Node} end
|
|
85
|
+
* @param {Vue} vm
|
|
86
|
+
*/
|
|
87
|
+
|
|
88
|
+
exports.blockRemove = function (start, end, vm) {
|
|
89
|
+
var node = start.nextSibling
|
|
90
|
+
var next
|
|
91
|
+
while (node !== end) {
|
|
92
|
+
next = node.nextSibling
|
|
93
|
+
exports.remove(node, vm)
|
|
94
|
+
node = next
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Apply transitions with an operation callback.
|
|
100
|
+
*
|
|
101
|
+
* @oaram {Element} el
|
|
102
|
+
* @param {Number} direction
|
|
103
|
+
* 1: enter
|
|
104
|
+
* -1: leave
|
|
105
|
+
* @param {Function} op - the actual DOM operation
|
|
106
|
+
* @param {Vue} vm
|
|
107
|
+
* @param {Function} [cb]
|
|
108
|
+
*/
|
|
109
|
+
|
|
110
|
+
var apply = exports.apply = function (el, direction, op, vm, cb) {
|
|
111
|
+
var transData = el.__v_trans
|
|
112
|
+
if (
|
|
113
|
+
!transData ||
|
|
114
|
+
!vm._isCompiled ||
|
|
115
|
+
// if the vm is being manipulated by a parent directive
|
|
116
|
+
// during the parent's compilation phase, skip the
|
|
117
|
+
// animation.
|
|
118
|
+
(vm.$parent && !vm.$parent._isCompiled)
|
|
119
|
+
) {
|
|
120
|
+
op()
|
|
121
|
+
if (cb) cb()
|
|
122
|
+
return
|
|
123
|
+
}
|
|
124
|
+
// determine the transition type on the element
|
|
125
|
+
var jsTransition = vm.$options.transitions[transData.id]
|
|
126
|
+
if (jsTransition) {
|
|
127
|
+
// js
|
|
128
|
+
applyJSTransition(
|
|
129
|
+
el,
|
|
130
|
+
direction,
|
|
131
|
+
op,
|
|
132
|
+
transData,
|
|
133
|
+
jsTransition,
|
|
134
|
+
vm,
|
|
135
|
+
cb
|
|
136
|
+
)
|
|
137
|
+
} else if (_.transitionEndEvent) {
|
|
138
|
+
// css
|
|
139
|
+
applyCSSTransition(
|
|
140
|
+
el,
|
|
141
|
+
direction,
|
|
142
|
+
op,
|
|
143
|
+
transData,
|
|
144
|
+
cb
|
|
145
|
+
)
|
|
146
|
+
} else {
|
|
147
|
+
// not applicable
|
|
148
|
+
op()
|
|
149
|
+
if (cb) cb()
|
|
150
|
+
}
|
|
151
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apply JavaScript enter/leave functions.
|
|
3
|
+
*
|
|
4
|
+
* @param {Element} el
|
|
5
|
+
* @param {Number} direction - 1: enter, -1: leave
|
|
6
|
+
* @param {Function} op - the actual DOM operation
|
|
7
|
+
* @param {Object} data - target element's transition data
|
|
8
|
+
* @param {Object} def - transition definition object
|
|
9
|
+
* @param {Vue} vm - the owner vm of the element
|
|
10
|
+
* @param {Function} [cb]
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
module.exports = function (el, direction, op, data, def, vm, cb) {
|
|
14
|
+
if (data.cancel) {
|
|
15
|
+
data.cancel()
|
|
16
|
+
data.cancel = null
|
|
17
|
+
}
|
|
18
|
+
if (direction > 0) { // enter
|
|
19
|
+
if (def.beforeEnter) {
|
|
20
|
+
def.beforeEnter.call(vm, el)
|
|
21
|
+
}
|
|
22
|
+
op()
|
|
23
|
+
if (def.enter) {
|
|
24
|
+
data.cancel = def.enter.call(vm, el, function () {
|
|
25
|
+
data.cancel = null
|
|
26
|
+
if (cb) cb()
|
|
27
|
+
})
|
|
28
|
+
} else if (cb) {
|
|
29
|
+
cb()
|
|
30
|
+
}
|
|
31
|
+
} else { // leave
|
|
32
|
+
if (def.leave) {
|
|
33
|
+
data.cancel = def.leave.call(vm, el, function () {
|
|
34
|
+
data.cancel = null
|
|
35
|
+
op()
|
|
36
|
+
if (cb) cb()
|
|
37
|
+
})
|
|
38
|
+
} else {
|
|
39
|
+
op()
|
|
40
|
+
if (cb) cb()
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
var config = require('../config')
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Enable debug utilities. The enableDebug() function and
|
|
5
|
+
* all _.log() & _.warn() calls will be dropped in the
|
|
6
|
+
* minified production build.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
enableDebug()
|
|
10
|
+
|
|
11
|
+
function enableDebug () {
|
|
12
|
+
var hasConsole = typeof console !== 'undefined'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Log a message.
|
|
16
|
+
*
|
|
17
|
+
* @param {String} msg
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
exports.log = function (msg) {
|
|
21
|
+
if (hasConsole && config.debug) {
|
|
22
|
+
console.log('[Vue info]: ' + msg)
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* We've got a problem here.
|
|
28
|
+
*
|
|
29
|
+
* @param {String} msg
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
exports.warn = function (msg) {
|
|
33
|
+
if (hasConsole && !config.silent) {
|
|
34
|
+
console.warn('[Vue warn]: ' + msg)
|
|
35
|
+
if (config.debug && console.trace) {
|
|
36
|
+
console.trace()
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Assert asset exists
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
exports.assertAsset = function (val, type, id) {
|
|
46
|
+
if (!val) {
|
|
47
|
+
exports.warn('Failed to resolve ' + type + ': ' + id)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
var config = require('../config')
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Check if a node is in the document.
|
|
5
|
+
*
|
|
6
|
+
* @param {Node} node
|
|
7
|
+
* @return {Boolean}
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
var doc =
|
|
11
|
+
typeof document !== 'undefined' &&
|
|
12
|
+
document.documentElement
|
|
13
|
+
|
|
14
|
+
exports.inDoc = function (node) {
|
|
15
|
+
return doc && doc.contains(node)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Extract an attribute from a node.
|
|
20
|
+
*
|
|
21
|
+
* @param {Node} node
|
|
22
|
+
* @param {String} attr
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
exports.attr = function (node, attr) {
|
|
26
|
+
attr = config.prefix + attr
|
|
27
|
+
var val = node.getAttribute(attr)
|
|
28
|
+
if (val !== null) {
|
|
29
|
+
node.removeAttribute(attr)
|
|
30
|
+
}
|
|
31
|
+
return val
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Insert el before target
|
|
36
|
+
*
|
|
37
|
+
* @param {Element} el
|
|
38
|
+
* @param {Element} target
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
exports.before = function (el, target) {
|
|
42
|
+
target.parentNode.insertBefore(el, target)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Insert el after target
|
|
47
|
+
*
|
|
48
|
+
* @param {Element} el
|
|
49
|
+
* @param {Element} target
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
exports.after = function (el, target) {
|
|
53
|
+
if (target.nextSibling) {
|
|
54
|
+
exports.before(el, target.nextSibling)
|
|
55
|
+
} else {
|
|
56
|
+
target.parentNode.appendChild(el)
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Remove el from DOM
|
|
62
|
+
*
|
|
63
|
+
* @param {Element} el
|
|
64
|
+
*/
|
|
65
|
+
|
|
66
|
+
exports.remove = function (el) {
|
|
67
|
+
el.parentNode.removeChild(el)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Prepend el to target
|
|
72
|
+
*
|
|
73
|
+
* @param {Element} el
|
|
74
|
+
* @param {Element} target
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
exports.prepend = function (el, target) {
|
|
78
|
+
if (target.firstChild) {
|
|
79
|
+
exports.before(el, target.firstChild)
|
|
80
|
+
} else {
|
|
81
|
+
target.appendChild(el)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Replace target with el
|
|
87
|
+
*
|
|
88
|
+
* @param {Element} target
|
|
89
|
+
* @param {Element} el
|
|
90
|
+
*/
|
|
91
|
+
|
|
92
|
+
exports.replace = function (target, el) {
|
|
93
|
+
var parent = target.parentNode
|
|
94
|
+
if (parent) {
|
|
95
|
+
parent.replaceChild(el, target)
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Copy attributes from one element to another.
|
|
101
|
+
*
|
|
102
|
+
* @param {Element} from
|
|
103
|
+
* @param {Element} to
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
exports.copyAttributes = function (from, to) {
|
|
107
|
+
if (from.hasAttributes()) {
|
|
108
|
+
var attrs = from.attributes
|
|
109
|
+
for (var i = 0, l = attrs.length; i < l; i++) {
|
|
110
|
+
var attr = attrs[i]
|
|
111
|
+
to.setAttribute(attr.name, attr.value)
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Add event listener shorthand.
|
|
118
|
+
*
|
|
119
|
+
* @param {Element} el
|
|
120
|
+
* @param {String} event
|
|
121
|
+
* @param {Function} cb
|
|
122
|
+
*/
|
|
123
|
+
|
|
124
|
+
exports.on = function (el, event, cb) {
|
|
125
|
+
el.addEventListener(event, cb)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Remove event listener shorthand.
|
|
130
|
+
*
|
|
131
|
+
* @param {Element} el
|
|
132
|
+
* @param {String} event
|
|
133
|
+
* @param {Function} cb
|
|
134
|
+
*/
|
|
135
|
+
|
|
136
|
+
exports.off = function (el, event, cb) {
|
|
137
|
+
el.removeEventListener(event, cb)
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Add class with compatibility for IE & SVG
|
|
142
|
+
*
|
|
143
|
+
* @param {Element} el
|
|
144
|
+
* @param {Strong} cls
|
|
145
|
+
*/
|
|
146
|
+
|
|
147
|
+
exports.addClass = function (el, cls) {
|
|
148
|
+
if (el.classList) {
|
|
149
|
+
el.classList.add(cls)
|
|
150
|
+
} else {
|
|
151
|
+
var cur = ' ' + (el.getAttribute('class') || '') + ' '
|
|
152
|
+
if (cur.indexOf(' ' + cls + ' ') < 0) {
|
|
153
|
+
el.setAttribute('class', (cur + cls).trim())
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Remove class with compatibility for IE & SVG
|
|
160
|
+
*
|
|
161
|
+
* @param {Element} el
|
|
162
|
+
* @param {Strong} cls
|
|
163
|
+
*/
|
|
164
|
+
|
|
165
|
+
exports.removeClass = function (el, cls) {
|
|
166
|
+
if (el.classList) {
|
|
167
|
+
el.classList.remove(cls)
|
|
168
|
+
} else {
|
|
169
|
+
var cur = ' ' + (el.getAttribute('class') || '') + ' '
|
|
170
|
+
var tar = ' ' + cls + ' '
|
|
171
|
+
while (cur.indexOf(tar) >= 0) {
|
|
172
|
+
cur = cur.replace(tar, ' ')
|
|
173
|
+
}
|
|
174
|
+
el.setAttribute('class', cur.trim())
|
|
175
|
+
}
|
|
176
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Can we use __proto__?
|
|
3
|
+
*
|
|
4
|
+
* @type {Boolean}
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
exports.hasProto = '__proto__' in {}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Indicates we have a window
|
|
11
|
+
*
|
|
12
|
+
* @type {Boolean}
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
var toString = Object.prototype.toString
|
|
16
|
+
var inBrowser = exports.inBrowser =
|
|
17
|
+
typeof window !== 'undefined' &&
|
|
18
|
+
toString.call(window) !== '[object Object]'
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Defer a task to the start of the next event loop
|
|
22
|
+
*
|
|
23
|
+
* @param {Function} cb
|
|
24
|
+
* @param {Object} ctx
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
var defer = inBrowser
|
|
28
|
+
? (window.requestAnimationFrame ||
|
|
29
|
+
window.webkitRequestAnimationFrame ||
|
|
30
|
+
setTimeout)
|
|
31
|
+
: setTimeout
|
|
32
|
+
|
|
33
|
+
exports.nextTick = function (cb, ctx) {
|
|
34
|
+
if (ctx) {
|
|
35
|
+
defer(function () { cb.call(ctx) }, 0)
|
|
36
|
+
} else {
|
|
37
|
+
defer(cb, 0)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Detect if we are in IE9...
|
|
43
|
+
*
|
|
44
|
+
* @type {Boolean}
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
exports.isIE9 =
|
|
48
|
+
inBrowser &&
|
|
49
|
+
navigator.userAgent.indexOf('MSIE 9.0') > 0
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Sniff transition/animation events
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
if (inBrowser && !exports.isIE9) {
|
|
56
|
+
var isWebkitTrans =
|
|
57
|
+
window.ontransitionend === undefined &&
|
|
58
|
+
window.onwebkittransitionend !== undefined
|
|
59
|
+
var isWebkitAnim =
|
|
60
|
+
window.onanimationend === undefined &&
|
|
61
|
+
window.onwebkitanimationend !== undefined
|
|
62
|
+
exports.transitionProp = isWebkitTrans
|
|
63
|
+
? 'WebkitTransition'
|
|
64
|
+
: 'transition'
|
|
65
|
+
exports.transitionEndEvent = isWebkitTrans
|
|
66
|
+
? 'webkitTransitionEnd'
|
|
67
|
+
: 'transitionend'
|
|
68
|
+
exports.animationProp = isWebkitAnim
|
|
69
|
+
? 'WebkitAnimation'
|
|
70
|
+
: 'animation'
|
|
71
|
+
exports.animationEndEvent = isWebkitAnim
|
|
72
|
+
? 'webkitAnimationEnd'
|
|
73
|
+
: 'animationend'
|
|
74
|
+
}
|