fluentd-ui 0.3.13 → 0.3.14
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.
- data/ChangeLog +9 -0
- data/Gemfile.lock +47 -44
- data/README.md +4 -4
- data/app/assets/javascripts/vue/in_tail_format.js +7 -2
- data/app/assets/stylesheets/common.css.scss +16 -0
- data/app/controllers/concerns/setting_history_concern.rb +6 -0
- data/app/controllers/fluentd/settings_controller.rb +37 -8
- data/app/models/fluent_gem.rb +6 -3
- data/app/models/fluentd/agent.rb +1 -0
- data/app/models/fluentd/agent/common.rb +4 -0
- data/app/models/fluentd/agent/fluentd_gem.rb +9 -13
- data/app/models/fluentd/agent/local_common.rb +23 -0
- data/app/models/fluentd/agent/td_agent.rb +4 -0
- data/app/models/fluentd/agent/td_agent/macosx.rb +0 -4
- data/app/models/fluentd/agent/td_agent/unix.rb +0 -4
- data/app/views/fluentd/settings/edit.html.haml +1 -3
- data/app/views/fluentd/settings/histories/show.html.haml +10 -0
- data/app/views/fluentd/settings/running_backup/show.html.haml +11 -0
- data/app/views/shared/settings/_diff.html.erb +21 -0
- data/circle.yml +5 -0
- data/config/application.rb +1 -0
- data/config/locales/translation_en.yml +7 -0
- data/config/locales/translation_ja.yml +7 -0
- data/fluentd-ui.gemspec +1 -0
- data/lib/fluentd-ui.rb +5 -1
- data/lib/fluentd-ui/version.rb +1 -1
- data/spec/features/fluentd/setting/histories_spec.rb +23 -1
- data/spec/features/fluentd/setting/running_backup_spec.rb +22 -1
- data/spec/models/fluentd/agent/local_common_spec.rb +4 -2
- data/spec/models/fluentd/agent_spec.rb +1 -48
- data/spec/models/plugin_spec.rb +2 -2
- data/spec/spec_helper.rb +10 -0
- data/spec/support/fluentd_agent_common_behavior.rb +53 -0
- data/vendor/assets/javascripts/bower/.gitignore +10 -0
- data/vendor/assets/javascripts/bower/vue/.bower.json +4 -4
- data/vendor/assets/javascripts/bower/vue/bower.json +17 -0
- data/vendor/assets/javascripts/bower/vue/dist/vue.js +329 -198
- data/vendor/assets/javascripts/bower/vue/dist/vue.min.js +3 -3
- metadata +107 -291
- checksums.yaml +0 -7
- data/vendor/assets/javascripts/bower/codemirror/AUTHORS +0 -423
- data/vendor/assets/javascripts/bower/codemirror/CONTRIBUTING.md +0 -76
- data/vendor/assets/javascripts/bower/codemirror/LICENSE +0 -19
- data/vendor/assets/javascripts/bower/codemirror/README.md +0 -11
- data/vendor/assets/javascripts/bower/codemirror/addon/comment/comment.js +0 -183
- data/vendor/assets/javascripts/bower/codemirror/addon/comment/continuecomment.js +0 -85
- data/vendor/assets/javascripts/bower/codemirror/addon/dialog/dialog.css +0 -32
- data/vendor/assets/javascripts/bower/codemirror/addon/dialog/dialog.js +0 -155
- data/vendor/assets/javascripts/bower/codemirror/addon/display/fullscreen.css +0 -6
- data/vendor/assets/javascripts/bower/codemirror/addon/display/fullscreen.js +0 -41
- data/vendor/assets/javascripts/bower/codemirror/addon/display/panel.js +0 -94
- data/vendor/assets/javascripts/bower/codemirror/addon/display/placeholder.js +0 -58
- data/vendor/assets/javascripts/bower/codemirror/addon/display/rulers.js +0 -64
- data/vendor/assets/javascripts/bower/codemirror/addon/edit/closebrackets.js +0 -159
- data/vendor/assets/javascripts/bower/codemirror/addon/edit/closetag.js +0 -159
- data/vendor/assets/javascripts/bower/codemirror/addon/edit/continuelist.js +0 -51
- data/vendor/assets/javascripts/bower/codemirror/addon/edit/matchbrackets.js +0 -120
- data/vendor/assets/javascripts/bower/codemirror/addon/edit/matchtags.js +0 -66
- data/vendor/assets/javascripts/bower/codemirror/addon/edit/trailingspace.js +0 -27
- data/vendor/assets/javascripts/bower/codemirror/addon/fold/brace-fold.js +0 -105
- data/vendor/assets/javascripts/bower/codemirror/addon/fold/comment-fold.js +0 -57
- data/vendor/assets/javascripts/bower/codemirror/addon/fold/foldcode.js +0 -145
- data/vendor/assets/javascripts/bower/codemirror/addon/fold/foldgutter.css +0 -20
- data/vendor/assets/javascripts/bower/codemirror/addon/fold/foldgutter.js +0 -134
- data/vendor/assets/javascripts/bower/codemirror/addon/fold/indent-fold.js +0 -44
- data/vendor/assets/javascripts/bower/codemirror/addon/fold/markdown-fold.js +0 -49
- data/vendor/assets/javascripts/bower/codemirror/addon/fold/xml-fold.js +0 -182
- data/vendor/assets/javascripts/bower/codemirror/addon/hint/anyword-hint.js +0 -41
- data/vendor/assets/javascripts/bower/codemirror/addon/hint/css-hint.js +0 -56
- data/vendor/assets/javascripts/bower/codemirror/addon/hint/html-hint.js +0 -348
- data/vendor/assets/javascripts/bower/codemirror/addon/hint/javascript-hint.js +0 -146
- data/vendor/assets/javascripts/bower/codemirror/addon/hint/show-hint.css +0 -38
- data/vendor/assets/javascripts/bower/codemirror/addon/hint/show-hint.js +0 -389
- data/vendor/assets/javascripts/bower/codemirror/addon/hint/sql-hint.js +0 -197
- data/vendor/assets/javascripts/bower/codemirror/addon/hint/xml-hint.js +0 -110
- data/vendor/assets/javascripts/bower/codemirror/addon/lint/coffeescript-lint.js +0 -41
- data/vendor/assets/javascripts/bower/codemirror/addon/lint/css-lint.js +0 -35
- data/vendor/assets/javascripts/bower/codemirror/addon/lint/javascript-lint.js +0 -136
- data/vendor/assets/javascripts/bower/codemirror/addon/lint/json-lint.js +0 -31
- data/vendor/assets/javascripts/bower/codemirror/addon/lint/lint.css +0 -73
- data/vendor/assets/javascripts/bower/codemirror/addon/lint/lint.js +0 -204
- data/vendor/assets/javascripts/bower/codemirror/addon/lint/yaml-lint.js +0 -28
- data/vendor/assets/javascripts/bower/codemirror/addon/merge/merge.css +0 -112
- data/vendor/assets/javascripts/bower/codemirror/addon/merge/merge.js +0 -643
- data/vendor/assets/javascripts/bower/codemirror/addon/mode/loadmode.js +0 -64
- data/vendor/assets/javascripts/bower/codemirror/addon/mode/multiplex.js +0 -118
- data/vendor/assets/javascripts/bower/codemirror/addon/mode/multiplex_test.js +0 -33
- data/vendor/assets/javascripts/bower/codemirror/addon/mode/overlay.js +0 -85
- data/vendor/assets/javascripts/bower/codemirror/addon/mode/simple.js +0 -213
- data/vendor/assets/javascripts/bower/codemirror/addon/runmode/colorize.js +0 -40
- data/vendor/assets/javascripts/bower/codemirror/addon/runmode/runmode-standalone.js +0 -157
- data/vendor/assets/javascripts/bower/codemirror/addon/runmode/runmode.js +0 -72
- data/vendor/assets/javascripts/bower/codemirror/addon/runmode/runmode.node.js +0 -120
- data/vendor/assets/javascripts/bower/codemirror/addon/scroll/annotatescrollbar.js +0 -76
- data/vendor/assets/javascripts/bower/codemirror/addon/scroll/scrollpastend.js +0 -46
- data/vendor/assets/javascripts/bower/codemirror/addon/scroll/simplescrollbars.css +0 -66
- data/vendor/assets/javascripts/bower/codemirror/addon/scroll/simplescrollbars.js +0 -139
- data/vendor/assets/javascripts/bower/codemirror/addon/search/match-highlighter.js +0 -128
- data/vendor/assets/javascripts/bower/codemirror/addon/search/matchesonscrollbar.css +0 -8
- data/vendor/assets/javascripts/bower/codemirror/addon/search/matchesonscrollbar.js +0 -90
- data/vendor/assets/javascripts/bower/codemirror/addon/search/search.js +0 -164
- data/vendor/assets/javascripts/bower/codemirror/addon/search/searchcursor.js +0 -189
- data/vendor/assets/javascripts/bower/codemirror/addon/selection/active-line.js +0 -71
- data/vendor/assets/javascripts/bower/codemirror/addon/selection/mark-selection.js +0 -118
- data/vendor/assets/javascripts/bower/codemirror/addon/tern/tern.css +0 -86
- data/vendor/assets/javascripts/bower/codemirror/addon/tern/tern.js +0 -670
- data/vendor/assets/javascripts/bower/codemirror/addon/tern/worker.js +0 -44
- data/vendor/assets/javascripts/bower/codemirror/addon/wrap/hardwrap.js +0 -139
- data/vendor/assets/javascripts/bower/codemirror/keymap/emacs.js +0 -411
- data/vendor/assets/javascripts/bower/codemirror/keymap/sublime.js +0 -540
- data/vendor/assets/javascripts/bower/codemirror/keymap/vim.js +0 -4901
- data/vendor/assets/javascripts/bower/codemirror/mode/apl/apl.js +0 -175
- data/vendor/assets/javascripts/bower/codemirror/mode/asterisk/asterisk.js +0 -198
- data/vendor/assets/javascripts/bower/codemirror/mode/clike/clike.js +0 -489
- data/vendor/assets/javascripts/bower/codemirror/mode/clike/scala.html +0 -767
- data/vendor/assets/javascripts/bower/codemirror/mode/clojure/clojure.js +0 -243
- data/vendor/assets/javascripts/bower/codemirror/mode/cobol/cobol.js +0 -255
- data/vendor/assets/javascripts/bower/codemirror/mode/coffeescript/coffeescript.js +0 -369
- data/vendor/assets/javascripts/bower/codemirror/mode/commonlisp/commonlisp.js +0 -122
- data/vendor/assets/javascripts/bower/codemirror/mode/css/css.js +0 -717
- data/vendor/assets/javascripts/bower/codemirror/mode/css/less.html +0 -152
- data/vendor/assets/javascripts/bower/codemirror/mode/css/less_test.js +0 -51
- data/vendor/assets/javascripts/bower/codemirror/mode/css/scss.html +0 -157
- data/vendor/assets/javascripts/bower/codemirror/mode/css/scss_test.js +0 -110
- data/vendor/assets/javascripts/bower/codemirror/mode/css/test.js +0 -135
- data/vendor/assets/javascripts/bower/codemirror/mode/cypher/cypher.js +0 -146
- data/vendor/assets/javascripts/bower/codemirror/mode/d/d.js +0 -218
- data/vendor/assets/javascripts/bower/codemirror/mode/dart/dart.js +0 -50
- data/vendor/assets/javascripts/bower/codemirror/mode/diff/diff.js +0 -47
- data/vendor/assets/javascripts/bower/codemirror/mode/django/django.js +0 -67
- data/vendor/assets/javascripts/bower/codemirror/mode/dockerfile/dockerfile.js +0 -76
- data/vendor/assets/javascripts/bower/codemirror/mode/dtd/dtd.js +0 -142
- data/vendor/assets/javascripts/bower/codemirror/mode/dylan/dylan.js +0 -299
- data/vendor/assets/javascripts/bower/codemirror/mode/ebnf/ebnf.js +0 -195
- data/vendor/assets/javascripts/bower/codemirror/mode/ecl/ecl.js +0 -207
- data/vendor/assets/javascripts/bower/codemirror/mode/eiffel/eiffel.js +0 -162
- data/vendor/assets/javascripts/bower/codemirror/mode/erlang/erlang.js +0 -622
- data/vendor/assets/javascripts/bower/codemirror/mode/fortran/fortran.js +0 -188
- data/vendor/assets/javascripts/bower/codemirror/mode/gas/gas.js +0 -345
- data/vendor/assets/javascripts/bower/codemirror/mode/gfm/gfm.js +0 -123
- data/vendor/assets/javascripts/bower/codemirror/mode/gfm/test.js +0 -213
- data/vendor/assets/javascripts/bower/codemirror/mode/gherkin/gherkin.js +0 -178
- data/vendor/assets/javascripts/bower/codemirror/mode/go/go.js +0 -184
- data/vendor/assets/javascripts/bower/codemirror/mode/groovy/groovy.js +0 -226
- data/vendor/assets/javascripts/bower/codemirror/mode/haml/haml.js +0 -159
- data/vendor/assets/javascripts/bower/codemirror/mode/haml/test.js +0 -97
- data/vendor/assets/javascripts/bower/codemirror/mode/haskell/haskell.js +0 -267
- data/vendor/assets/javascripts/bower/codemirror/mode/haxe/haxe.js +0 -518
- data/vendor/assets/javascripts/bower/codemirror/mode/htmlembedded/htmlembedded.js +0 -86
- data/vendor/assets/javascripts/bower/codemirror/mode/htmlmixed/htmlmixed.js +0 -121
- data/vendor/assets/javascripts/bower/codemirror/mode/http/http.js +0 -113
- data/vendor/assets/javascripts/bower/codemirror/mode/idl/idl.js +0 -290
- data/vendor/assets/javascripts/bower/codemirror/mode/jade/jade.js +0 -590
- data/vendor/assets/javascripts/bower/codemirror/mode/javascript/javascript.js +0 -686
- data/vendor/assets/javascripts/bower/codemirror/mode/javascript/json-ld.html +0 -72
- data/vendor/assets/javascripts/bower/codemirror/mode/javascript/test.js +0 -200
- data/vendor/assets/javascripts/bower/codemirror/mode/javascript/typescript.html +0 -61
- data/vendor/assets/javascripts/bower/codemirror/mode/jinja2/jinja2.js +0 -142
- data/vendor/assets/javascripts/bower/codemirror/mode/julia/julia.js +0 -301
- data/vendor/assets/javascripts/bower/codemirror/mode/kotlin/kotlin.js +0 -280
- data/vendor/assets/javascripts/bower/codemirror/mode/livescript/livescript.js +0 -280
- data/vendor/assets/javascripts/bower/codemirror/mode/lua/lua.js +0 -159
- data/vendor/assets/javascripts/bower/codemirror/mode/markdown/markdown.js +0 -765
- data/vendor/assets/javascripts/bower/codemirror/mode/markdown/test.js +0 -754
- data/vendor/assets/javascripts/bower/codemirror/mode/meta.js +0 -165
- data/vendor/assets/javascripts/bower/codemirror/mode/mirc/mirc.js +0 -193
- data/vendor/assets/javascripts/bower/codemirror/mode/mllike/mllike.js +0 -205
- data/vendor/assets/javascripts/bower/codemirror/mode/modelica/modelica.js +0 -245
- data/vendor/assets/javascripts/bower/codemirror/mode/nginx/nginx.js +0 -178
- data/vendor/assets/javascripts/bower/codemirror/mode/ntriples/ntriples.js +0 -186
- data/vendor/assets/javascripts/bower/codemirror/mode/octave/octave.js +0 -135
- data/vendor/assets/javascripts/bower/codemirror/mode/pascal/pascal.js +0 -109
- data/vendor/assets/javascripts/bower/codemirror/mode/pegjs/pegjs.js +0 -114
- data/vendor/assets/javascripts/bower/codemirror/mode/perl/perl.js +0 -832
- data/vendor/assets/javascripts/bower/codemirror/mode/php/php.js +0 -226
- data/vendor/assets/javascripts/bower/codemirror/mode/php/test.js +0 -154
- data/vendor/assets/javascripts/bower/codemirror/mode/pig/pig.js +0 -188
- data/vendor/assets/javascripts/bower/codemirror/mode/properties/properties.js +0 -78
- data/vendor/assets/javascripts/bower/codemirror/mode/puppet/puppet.js +0 -220
- data/vendor/assets/javascripts/bower/codemirror/mode/python/python.js +0 -359
- data/vendor/assets/javascripts/bower/codemirror/mode/q/q.js +0 -139
- data/vendor/assets/javascripts/bower/codemirror/mode/r/r.js +0 -162
- data/vendor/assets/javascripts/bower/codemirror/mode/rpm/rpm.js +0 -101
- data/vendor/assets/javascripts/bower/codemirror/mode/rst/rst.js +0 -557
- data/vendor/assets/javascripts/bower/codemirror/mode/ruby/ruby.js +0 -285
- data/vendor/assets/javascripts/bower/codemirror/mode/ruby/test.js +0 -14
- data/vendor/assets/javascripts/bower/codemirror/mode/rust/rust.js +0 -451
- data/vendor/assets/javascripts/bower/codemirror/mode/sass/sass.js +0 -327
- data/vendor/assets/javascripts/bower/codemirror/mode/scheme/scheme.js +0 -248
- data/vendor/assets/javascripts/bower/codemirror/mode/shell/shell.js +0 -139
- data/vendor/assets/javascripts/bower/codemirror/mode/shell/test.js +0 -58
- data/vendor/assets/javascripts/bower/codemirror/mode/sieve/sieve.js +0 -193
- data/vendor/assets/javascripts/bower/codemirror/mode/slim/slim.js +0 -575
- data/vendor/assets/javascripts/bower/codemirror/mode/slim/test.js +0 -96
- data/vendor/assets/javascripts/bower/codemirror/mode/smalltalk/smalltalk.js +0 -168
- data/vendor/assets/javascripts/bower/codemirror/mode/smarty/smarty.js +0 -221
- data/vendor/assets/javascripts/bower/codemirror/mode/smartymixed/smartymixed.js +0 -197
- data/vendor/assets/javascripts/bower/codemirror/mode/solr/solr.js +0 -104
- data/vendor/assets/javascripts/bower/codemirror/mode/soy/soy.js +0 -198
- data/vendor/assets/javascripts/bower/codemirror/mode/sparql/sparql.js +0 -174
- data/vendor/assets/javascripts/bower/codemirror/mode/spreadsheet/spreadsheet.js +0 -109
- data/vendor/assets/javascripts/bower/codemirror/mode/sql/sql.js +0 -391
- data/vendor/assets/javascripts/bower/codemirror/mode/stex/stex.js +0 -251
- data/vendor/assets/javascripts/bower/codemirror/mode/stex/test.js +0 -123
- data/vendor/assets/javascripts/bower/codemirror/mode/tcl/tcl.js +0 -147
- data/vendor/assets/javascripts/bower/codemirror/mode/textile/test.js +0 -417
- data/vendor/assets/javascripts/bower/codemirror/mode/textile/textile.js +0 -469
- data/vendor/assets/javascripts/bower/codemirror/mode/tiddlywiki/tiddlywiki.css +0 -14
- data/vendor/assets/javascripts/bower/codemirror/mode/tiddlywiki/tiddlywiki.js +0 -369
- data/vendor/assets/javascripts/bower/codemirror/mode/tiki/tiki.css +0 -26
- data/vendor/assets/javascripts/bower/codemirror/mode/tiki/tiki.js +0 -323
- data/vendor/assets/javascripts/bower/codemirror/mode/toml/toml.js +0 -88
- data/vendor/assets/javascripts/bower/codemirror/mode/tornado/tornado.js +0 -68
- data/vendor/assets/javascripts/bower/codemirror/mode/turtle/turtle.js +0 -162
- data/vendor/assets/javascripts/bower/codemirror/mode/vb/vb.js +0 -274
- data/vendor/assets/javascripts/bower/codemirror/mode/vbscript/vbscript.js +0 -350
- data/vendor/assets/javascripts/bower/codemirror/mode/velocity/velocity.js +0 -201
- data/vendor/assets/javascripts/bower/codemirror/mode/verilog/test.js +0 -273
- data/vendor/assets/javascripts/bower/codemirror/mode/verilog/verilog.js +0 -364
- data/vendor/assets/javascripts/bower/codemirror/mode/xml/test.js +0 -51
- data/vendor/assets/javascripts/bower/codemirror/mode/xml/xml.js +0 -384
- data/vendor/assets/javascripts/bower/codemirror/mode/xquery/test.js +0 -67
- data/vendor/assets/javascripts/bower/codemirror/mode/xquery/xquery.js +0 -447
- data/vendor/assets/javascripts/bower/codemirror/mode/yaml/yaml.js +0 -117
- data/vendor/assets/javascripts/bower/codemirror/mode/z80/z80.js +0 -100
- data/vendor/assets/javascripts/bower/vue/LICENSE +0 -21
- data/vendor/assets/javascripts/bower/vue/src/api/child.js +0 -53
- data/vendor/assets/javascripts/bower/vue/src/api/data.js +0 -161
- data/vendor/assets/javascripts/bower/vue/src/api/dom.js +0 -211
- data/vendor/assets/javascripts/bower/vue/src/api/events.js +0 -176
- data/vendor/assets/javascripts/bower/vue/src/api/global.js +0 -146
- data/vendor/assets/javascripts/bower/vue/src/api/lifecycle.js +0 -72
- data/vendor/assets/javascripts/bower/vue/src/batcher.js +0 -65
- data/vendor/assets/javascripts/bower/vue/src/cache.js +0 -112
- data/vendor/assets/javascripts/bower/vue/src/compiler/compile.js +0 -549
- data/vendor/assets/javascripts/bower/vue/src/compiler/transclude.js +0 -146
- data/vendor/assets/javascripts/bower/vue/src/config.js +0 -79
- data/vendor/assets/javascripts/bower/vue/src/directive.js +0 -219
- data/vendor/assets/javascripts/bower/vue/src/directives/attr.js +0 -32
- data/vendor/assets/javascripts/bower/vue/src/directives/class.js +0 -18
- data/vendor/assets/javascripts/bower/vue/src/directives/cloak.js +0 -12
- data/vendor/assets/javascripts/bower/vue/src/directives/component.js +0 -196
- data/vendor/assets/javascripts/bower/vue/src/directives/el.js +0 -13
- data/vendor/assets/javascripts/bower/vue/src/directives/html.js +0 -38
- data/vendor/assets/javascripts/bower/vue/src/directives/if.js +0 -87
- data/vendor/assets/javascripts/bower/vue/src/directives/index.js +0 -22
- data/vendor/assets/javascripts/bower/vue/src/directives/model/checkbox.js +0 -25
- data/vendor/assets/javascripts/bower/vue/src/directives/model/default.js +0 -123
- data/vendor/assets/javascripts/bower/vue/src/directives/model/index.js +0 -56
- data/vendor/assets/javascripts/bower/vue/src/directives/model/radio.js +0 -26
- data/vendor/assets/javascripts/bower/vue/src/directives/model/select.js +0 -166
- data/vendor/assets/javascripts/bower/vue/src/directives/on.js +0 -59
- data/vendor/assets/javascripts/bower/vue/src/directives/partial.js +0 -44
- data/vendor/assets/javascripts/bower/vue/src/directives/ref.js +0 -24
- data/vendor/assets/javascripts/bower/vue/src/directives/repeat.js +0 -503
- data/vendor/assets/javascripts/bower/vue/src/directives/show.js +0 -8
- data/vendor/assets/javascripts/bower/vue/src/directives/style.js +0 -58
- data/vendor/assets/javascripts/bower/vue/src/directives/text.js +0 -15
- data/vendor/assets/javascripts/bower/vue/src/directives/transition.js +0 -12
- data/vendor/assets/javascripts/bower/vue/src/directives/with.js +0 -47
- data/vendor/assets/javascripts/bower/vue/src/filters/array-filters.js +0 -87
- data/vendor/assets/javascripts/bower/vue/src/filters/index.js +0 -135
- data/vendor/assets/javascripts/bower/vue/src/instance/compile.js +0 -179
- data/vendor/assets/javascripts/bower/vue/src/instance/events.js +0 -122
- data/vendor/assets/javascripts/bower/vue/src/instance/init.js +0 -76
- data/vendor/assets/javascripts/bower/vue/src/instance/scope.js +0 -217
- data/vendor/assets/javascripts/bower/vue/src/observer/array.js +0 -90
- data/vendor/assets/javascripts/bower/vue/src/observer/dep.js +0 -50
- data/vendor/assets/javascripts/bower/vue/src/observer/index.js +0 -235
- data/vendor/assets/javascripts/bower/vue/src/observer/object.js +0 -66
- data/vendor/assets/javascripts/bower/vue/src/parsers/directive.js +0 -159
- data/vendor/assets/javascripts/bower/vue/src/parsers/expression.js +0 -226
- data/vendor/assets/javascripts/bower/vue/src/parsers/path.js +0 -300
- data/vendor/assets/javascripts/bower/vue/src/parsers/template.js +0 -248
- data/vendor/assets/javascripts/bower/vue/src/parsers/text.js +0 -178
- data/vendor/assets/javascripts/bower/vue/src/transition/css.js +0 -189
- data/vendor/assets/javascripts/bower/vue/src/transition/index.js +0 -151
- data/vendor/assets/javascripts/bower/vue/src/transition/js.js +0 -43
- data/vendor/assets/javascripts/bower/vue/src/util/debug.js +0 -50
- data/vendor/assets/javascripts/bower/vue/src/util/dom.js +0 -197
- data/vendor/assets/javascripts/bower/vue/src/util/env.js +0 -74
- data/vendor/assets/javascripts/bower/vue/src/util/filter.js +0 -72
- data/vendor/assets/javascripts/bower/vue/src/util/index.js +0 -8
- data/vendor/assets/javascripts/bower/vue/src/util/lang.js +0 -175
- data/vendor/assets/javascripts/bower/vue/src/util/merge-option.js +0 -255
- data/vendor/assets/javascripts/bower/vue/src/vue.js +0 -84
- data/vendor/assets/javascripts/bower/vue/src/watcher.js +0 -240
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
var _ = require('../../util')
|
|
2
|
-
|
|
3
|
-
var handlers = {
|
|
4
|
-
_default: require('./default'),
|
|
5
|
-
radio: require('./radio'),
|
|
6
|
-
select: require('./select'),
|
|
7
|
-
checkbox: require('./checkbox')
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
module.exports = {
|
|
11
|
-
|
|
12
|
-
priority: 800,
|
|
13
|
-
twoWay: true,
|
|
14
|
-
handlers: handlers,
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Possible elements:
|
|
18
|
-
* <select>
|
|
19
|
-
* <textarea>
|
|
20
|
-
* <input type="*">
|
|
21
|
-
* - text
|
|
22
|
-
* - checkbox
|
|
23
|
-
* - radio
|
|
24
|
-
* - number
|
|
25
|
-
* - TODO: more types may be supplied as a plugin
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
bind: function () {
|
|
29
|
-
// friendly warning...
|
|
30
|
-
var filters = this.filters
|
|
31
|
-
if (filters && filters.read && !filters.write) {
|
|
32
|
-
_.warn(
|
|
33
|
-
'It seems you are using a read-only filter with ' +
|
|
34
|
-
'v-model. You might want to use a two-way filter ' +
|
|
35
|
-
'to ensure correct behavior.'
|
|
36
|
-
)
|
|
37
|
-
}
|
|
38
|
-
var el = this.el
|
|
39
|
-
var tag = el.tagName
|
|
40
|
-
var handler
|
|
41
|
-
if (tag === 'INPUT') {
|
|
42
|
-
handler = handlers[el.type] || handlers._default
|
|
43
|
-
} else if (tag === 'SELECT') {
|
|
44
|
-
handler = handlers.select
|
|
45
|
-
} else if (tag === 'TEXTAREA') {
|
|
46
|
-
handler = handlers._default
|
|
47
|
-
} else {
|
|
48
|
-
_.warn("v-model doesn't support element type: " + tag)
|
|
49
|
-
return
|
|
50
|
-
}
|
|
51
|
-
handler.bind.call(this)
|
|
52
|
-
this.update = handler.update
|
|
53
|
-
this.unbind = handler.unbind
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
var _ = require('../../util')
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
|
|
5
|
-
bind: function () {
|
|
6
|
-
var self = this
|
|
7
|
-
var el = this.el
|
|
8
|
-
this.listener = function () {
|
|
9
|
-
self.set(el.value, true)
|
|
10
|
-
}
|
|
11
|
-
_.on(el, 'change', this.listener)
|
|
12
|
-
if (el.checked) {
|
|
13
|
-
this._initValue = el.value
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
|
|
17
|
-
update: function (value) {
|
|
18
|
-
/* jshint eqeqeq: false */
|
|
19
|
-
this.el.checked = value == this.el.value
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
unbind: function () {
|
|
23
|
-
_.off(this.el, 'change', this.listener)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
var _ = require('../../util')
|
|
2
|
-
var Watcher = require('../../watcher')
|
|
3
|
-
|
|
4
|
-
module.exports = {
|
|
5
|
-
|
|
6
|
-
bind: function () {
|
|
7
|
-
var self = this
|
|
8
|
-
var el = this.el
|
|
9
|
-
// check options param
|
|
10
|
-
var optionsParam = this._checkParam('options')
|
|
11
|
-
if (optionsParam) {
|
|
12
|
-
initOptions.call(this, optionsParam)
|
|
13
|
-
}
|
|
14
|
-
this.multiple = el.hasAttribute('multiple')
|
|
15
|
-
this.listener = function () {
|
|
16
|
-
var value = self.multiple
|
|
17
|
-
? getMultiValue(el)
|
|
18
|
-
: el.value
|
|
19
|
-
self.set(value, true)
|
|
20
|
-
}
|
|
21
|
-
_.on(el, 'change', this.listener)
|
|
22
|
-
checkInitialValue.call(this)
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
update: function (value) {
|
|
26
|
-
/* jshint eqeqeq: false */
|
|
27
|
-
var el = this.el
|
|
28
|
-
el.selectedIndex = -1
|
|
29
|
-
var multi = this.multiple && _.isArray(value)
|
|
30
|
-
var options = el.options
|
|
31
|
-
var i = options.length
|
|
32
|
-
var option
|
|
33
|
-
while (i--) {
|
|
34
|
-
option = options[i]
|
|
35
|
-
option.selected = multi
|
|
36
|
-
? indexOf(value, option.value) > -1
|
|
37
|
-
: value == option.value
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
|
|
41
|
-
unbind: function () {
|
|
42
|
-
_.off(this.el, 'change', this.listener)
|
|
43
|
-
if (this.optionWatcher) {
|
|
44
|
-
this.optionWatcher.teardown()
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Initialize the option list from the param.
|
|
52
|
-
*
|
|
53
|
-
* @param {String} expression
|
|
54
|
-
*/
|
|
55
|
-
|
|
56
|
-
function initOptions (expression) {
|
|
57
|
-
var self = this
|
|
58
|
-
function optionUpdateWatcher (value) {
|
|
59
|
-
if (_.isArray(value)) {
|
|
60
|
-
self.el.innerHTML = ''
|
|
61
|
-
buildOptions(self.el, value)
|
|
62
|
-
if (self._watcher) {
|
|
63
|
-
self.update(self._watcher.value)
|
|
64
|
-
}
|
|
65
|
-
} else {
|
|
66
|
-
_.warn('Invalid options value for v-model: ' + value)
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
this.optionWatcher = new Watcher(
|
|
70
|
-
this.vm,
|
|
71
|
-
expression,
|
|
72
|
-
optionUpdateWatcher
|
|
73
|
-
)
|
|
74
|
-
// update with initial value
|
|
75
|
-
optionUpdateWatcher(this.optionWatcher.value)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Build up option elements. IE9 doesn't create options
|
|
80
|
-
* when setting innerHTML on <select> elements, so we have
|
|
81
|
-
* to use DOM API here.
|
|
82
|
-
*
|
|
83
|
-
* @param {Element} parent - a <select> or an <optgroup>
|
|
84
|
-
* @param {Array} options
|
|
85
|
-
*/
|
|
86
|
-
|
|
87
|
-
function buildOptions (parent, options) {
|
|
88
|
-
var op, el
|
|
89
|
-
for (var i = 0, l = options.length; i < l; i++) {
|
|
90
|
-
op = options[i]
|
|
91
|
-
if (!op.options) {
|
|
92
|
-
el = document.createElement('option')
|
|
93
|
-
if (typeof op === 'string') {
|
|
94
|
-
el.text = el.value = op
|
|
95
|
-
} else {
|
|
96
|
-
el.text = op.text
|
|
97
|
-
el.value = op.value
|
|
98
|
-
}
|
|
99
|
-
} else {
|
|
100
|
-
el = document.createElement('optgroup')
|
|
101
|
-
el.label = op.label
|
|
102
|
-
buildOptions(el, op.options)
|
|
103
|
-
}
|
|
104
|
-
parent.appendChild(el)
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Check the initial value for selected options.
|
|
110
|
-
*/
|
|
111
|
-
|
|
112
|
-
function checkInitialValue () {
|
|
113
|
-
var initValue
|
|
114
|
-
var options = this.el.options
|
|
115
|
-
for (var i = 0, l = options.length; i < l; i++) {
|
|
116
|
-
if (options[i].hasAttribute('selected')) {
|
|
117
|
-
if (this.multiple) {
|
|
118
|
-
(initValue || (initValue = []))
|
|
119
|
-
.push(options[i].value)
|
|
120
|
-
} else {
|
|
121
|
-
initValue = options[i].value
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if (initValue) {
|
|
126
|
-
this._initValue = initValue
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Helper to extract a value array for select[multiple]
|
|
132
|
-
*
|
|
133
|
-
* @param {SelectElement} el
|
|
134
|
-
* @return {Array}
|
|
135
|
-
*/
|
|
136
|
-
|
|
137
|
-
function getMultiValue (el) {
|
|
138
|
-
return Array.prototype.filter
|
|
139
|
-
.call(el.options, filterSelected)
|
|
140
|
-
.map(getOptionValue)
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
function filterSelected (op) {
|
|
144
|
-
return op.selected
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
function getOptionValue (op) {
|
|
148
|
-
return op.value || op.text
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Native Array.indexOf uses strict equal, but in this
|
|
153
|
-
* case we need to match string/numbers with soft equal.
|
|
154
|
-
*
|
|
155
|
-
* @param {Array} arr
|
|
156
|
-
* @param {*} val
|
|
157
|
-
*/
|
|
158
|
-
|
|
159
|
-
function indexOf (arr, val) {
|
|
160
|
-
/* jshint eqeqeq: false */
|
|
161
|
-
var i = arr.length
|
|
162
|
-
while (i--) {
|
|
163
|
-
if (arr[i] == val) return i
|
|
164
|
-
}
|
|
165
|
-
return -1
|
|
166
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
var _ = require('../util')
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
|
|
5
|
-
acceptStatement: true,
|
|
6
|
-
priority: 700,
|
|
7
|
-
|
|
8
|
-
bind: function () {
|
|
9
|
-
// deal with iframes
|
|
10
|
-
if (
|
|
11
|
-
this.el.tagName === 'IFRAME' &&
|
|
12
|
-
this.arg !== 'load'
|
|
13
|
-
) {
|
|
14
|
-
var self = this
|
|
15
|
-
this.iframeBind = function () {
|
|
16
|
-
_.on(self.el.contentWindow, self.arg, self.handler)
|
|
17
|
-
}
|
|
18
|
-
_.on(this.el, 'load', this.iframeBind)
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
update: function (handler) {
|
|
23
|
-
if (typeof handler !== 'function') {
|
|
24
|
-
_.warn(
|
|
25
|
-
'Directive "v-on:' + this.expression + '" ' +
|
|
26
|
-
'expects a function value.'
|
|
27
|
-
)
|
|
28
|
-
return
|
|
29
|
-
}
|
|
30
|
-
this.reset()
|
|
31
|
-
var vm = this.vm
|
|
32
|
-
this.handler = function (e) {
|
|
33
|
-
e.targetVM = vm
|
|
34
|
-
vm.$event = e
|
|
35
|
-
var res = handler(e)
|
|
36
|
-
vm.$event = null
|
|
37
|
-
return res
|
|
38
|
-
}
|
|
39
|
-
if (this.iframeBind) {
|
|
40
|
-
this.iframeBind()
|
|
41
|
-
} else {
|
|
42
|
-
_.on(this.el, this.arg, this.handler)
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
reset: function () {
|
|
47
|
-
var el = this.iframeBind
|
|
48
|
-
? this.el.contentWindow
|
|
49
|
-
: this.el
|
|
50
|
-
if (this.handler) {
|
|
51
|
-
_.off(el, this.arg, this.handler)
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
-
unbind: function () {
|
|
56
|
-
this.reset()
|
|
57
|
-
_.off(this.el, 'load', this.iframeBind)
|
|
58
|
-
}
|
|
59
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
var _ = require('../util')
|
|
2
|
-
var templateParser = require('../parsers/template')
|
|
3
|
-
var vIf = require('./if')
|
|
4
|
-
|
|
5
|
-
module.exports = {
|
|
6
|
-
|
|
7
|
-
isLiteral: true,
|
|
8
|
-
|
|
9
|
-
// same logic reuse from v-if
|
|
10
|
-
compile: vIf.compile,
|
|
11
|
-
teardown: vIf.teardown,
|
|
12
|
-
|
|
13
|
-
bind: function () {
|
|
14
|
-
var el = this.el
|
|
15
|
-
this.start = document.createComment('v-partial-start')
|
|
16
|
-
this.end = document.createComment('v-partial-end')
|
|
17
|
-
if (el.nodeType !== 8) {
|
|
18
|
-
el.innerHTML = ''
|
|
19
|
-
}
|
|
20
|
-
if (el.tagName === 'TEMPLATE' || el.nodeType === 8) {
|
|
21
|
-
_.replace(el, this.end)
|
|
22
|
-
} else {
|
|
23
|
-
el.appendChild(this.end)
|
|
24
|
-
}
|
|
25
|
-
_.before(this.start, this.end)
|
|
26
|
-
if (!this._isDynamicLiteral) {
|
|
27
|
-
this.insert(this.expression)
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
|
|
31
|
-
update: function (id) {
|
|
32
|
-
this.teardown()
|
|
33
|
-
this.insert(id)
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
insert: function (id) {
|
|
37
|
-
var partial = this.vm.$options.partials[id]
|
|
38
|
-
_.assertAsset(partial, 'partial', id)
|
|
39
|
-
if (partial) {
|
|
40
|
-
this.compile(templateParser.parse(partial))
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
var _ = require('../util')
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
|
|
5
|
-
isLiteral: true,
|
|
6
|
-
|
|
7
|
-
bind: function () {
|
|
8
|
-
if (this.el !== this.vm.$el) {
|
|
9
|
-
_.warn(
|
|
10
|
-
'v-ref should only be used on instance root nodes.'
|
|
11
|
-
)
|
|
12
|
-
return
|
|
13
|
-
}
|
|
14
|
-
this.owner = this.vm.$parent
|
|
15
|
-
this.owner.$[this.expression] = this.vm
|
|
16
|
-
},
|
|
17
|
-
|
|
18
|
-
unbind: function () {
|
|
19
|
-
if (this.owner.$[this.expression] === this.vm) {
|
|
20
|
-
delete this.owner.$[this.expression]
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
}
|
|
@@ -1,503 +0,0 @@
|
|
|
1
|
-
var _ = require('../util')
|
|
2
|
-
var isObject = _.isObject
|
|
3
|
-
var textParser = require('../parsers/text')
|
|
4
|
-
var expParser = require('../parsers/expression')
|
|
5
|
-
var templateParser = require('../parsers/template')
|
|
6
|
-
var compile = require('../compiler/compile')
|
|
7
|
-
var transclude = require('../compiler/transclude')
|
|
8
|
-
var mergeOptions = require('../util/merge-option')
|
|
9
|
-
var uid = 0
|
|
10
|
-
|
|
11
|
-
module.exports = {
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Setup.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
bind: function () {
|
|
18
|
-
// uid as a cache identifier
|
|
19
|
-
this.id = '__v_repeat_' + (++uid)
|
|
20
|
-
// we need to insert the objToArray converter
|
|
21
|
-
// as the first read filter, because it has to be invoked
|
|
22
|
-
// before any user filters. (can't do it in `update`)
|
|
23
|
-
if (!this.filters) {
|
|
24
|
-
this.filters = {}
|
|
25
|
-
}
|
|
26
|
-
// add the object -> array convert filter
|
|
27
|
-
var objectConverter = _.bind(objToArray, this)
|
|
28
|
-
if (!this.filters.read) {
|
|
29
|
-
this.filters.read = [objectConverter]
|
|
30
|
-
} else {
|
|
31
|
-
this.filters.read.unshift(objectConverter)
|
|
32
|
-
}
|
|
33
|
-
// setup ref node
|
|
34
|
-
this.ref = document.createComment('v-repeat')
|
|
35
|
-
_.replace(this.el, this.ref)
|
|
36
|
-
// check if this is a block repeat
|
|
37
|
-
this.template = this.el.tagName === 'TEMPLATE'
|
|
38
|
-
? templateParser.parse(this.el, true)
|
|
39
|
-
: this.el
|
|
40
|
-
// check other directives that need to be handled
|
|
41
|
-
// at v-repeat level
|
|
42
|
-
this.checkIf()
|
|
43
|
-
this.checkRef()
|
|
44
|
-
this.checkComponent()
|
|
45
|
-
// check for trackby param
|
|
46
|
-
this.idKey =
|
|
47
|
-
this._checkParam('track-by') ||
|
|
48
|
-
this._checkParam('trackby') // 0.11.0 compat
|
|
49
|
-
// cache for primitive value instances
|
|
50
|
-
this.cache = Object.create(null)
|
|
51
|
-
},
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Warn against v-if usage.
|
|
55
|
-
*/
|
|
56
|
-
|
|
57
|
-
checkIf: function () {
|
|
58
|
-
if (_.attr(this.el, 'if') !== null) {
|
|
59
|
-
_.warn(
|
|
60
|
-
'Don\'t use v-if with v-repeat. ' +
|
|
61
|
-
'Use v-show or the "filterBy" filter instead.'
|
|
62
|
-
)
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Check if v-ref/ v-el is also present.
|
|
68
|
-
*/
|
|
69
|
-
|
|
70
|
-
checkRef: function () {
|
|
71
|
-
var childId = _.attr(this.el, 'ref')
|
|
72
|
-
this.childId = childId
|
|
73
|
-
? this.vm.$interpolate(childId)
|
|
74
|
-
: null
|
|
75
|
-
var elId = _.attr(this.el, 'el')
|
|
76
|
-
this.elId = elId
|
|
77
|
-
? this.vm.$interpolate(elId)
|
|
78
|
-
: null
|
|
79
|
-
},
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Check the component constructor to use for repeated
|
|
83
|
-
* instances. If static we resolve it now, otherwise it
|
|
84
|
-
* needs to be resolved at build time with actual data.
|
|
85
|
-
*/
|
|
86
|
-
|
|
87
|
-
checkComponent: function () {
|
|
88
|
-
var id = _.attr(this.el, 'component')
|
|
89
|
-
var options = this.vm.$options
|
|
90
|
-
if (!id) {
|
|
91
|
-
this.Ctor = _.Vue // default constructor
|
|
92
|
-
this.inherit = true // inline repeats should inherit
|
|
93
|
-
// important: transclude with no options, just
|
|
94
|
-
// to ensure block start and block end
|
|
95
|
-
this.template = transclude(this.template)
|
|
96
|
-
this._linkFn = compile(this.template, options)
|
|
97
|
-
} else {
|
|
98
|
-
this._asComponent = true
|
|
99
|
-
var tokens = textParser.parse(id)
|
|
100
|
-
if (!tokens) { // static component
|
|
101
|
-
var Ctor = this.Ctor = options.components[id]
|
|
102
|
-
_.assertAsset(Ctor, 'component', id)
|
|
103
|
-
// If there's no parent scope directives and no
|
|
104
|
-
// content to be transcluded, we can optimize the
|
|
105
|
-
// rendering by pre-transcluding + compiling here
|
|
106
|
-
// and provide a link function to every instance.
|
|
107
|
-
if (!this.el.hasChildNodes() &&
|
|
108
|
-
!this.el.hasAttributes()) {
|
|
109
|
-
// merge an empty object with owner vm as parent
|
|
110
|
-
// so child vms can access parent assets.
|
|
111
|
-
var merged = mergeOptions(Ctor.options, {}, {
|
|
112
|
-
$parent: this.vm
|
|
113
|
-
})
|
|
114
|
-
this.template = transclude(this.template, merged)
|
|
115
|
-
this._linkFn = compile(this.template, merged)
|
|
116
|
-
}
|
|
117
|
-
} else {
|
|
118
|
-
// to be resolved later
|
|
119
|
-
var ctorExp = textParser.tokensToExp(tokens)
|
|
120
|
-
this.ctorGetter = expParser.parse(ctorExp).get
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Update.
|
|
127
|
-
* This is called whenever the Array mutates.
|
|
128
|
-
*
|
|
129
|
-
* @param {Array} data
|
|
130
|
-
*/
|
|
131
|
-
|
|
132
|
-
update: function (data) {
|
|
133
|
-
if (typeof data === 'number') {
|
|
134
|
-
data = range(data)
|
|
135
|
-
}
|
|
136
|
-
this.vms = this.diff(data || [], this.vms)
|
|
137
|
-
// update v-ref
|
|
138
|
-
if (this.childId) {
|
|
139
|
-
this.vm.$[this.childId] = this.vms
|
|
140
|
-
}
|
|
141
|
-
if (this.elId) {
|
|
142
|
-
this.vm.$$[this.elId] = this.vms.map(function (vm) {
|
|
143
|
-
return vm.$el
|
|
144
|
-
})
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Diff, based on new data and old data, determine the
|
|
150
|
-
* minimum amount of DOM manipulations needed to make the
|
|
151
|
-
* DOM reflect the new data Array.
|
|
152
|
-
*
|
|
153
|
-
* The algorithm diffs the new data Array by storing a
|
|
154
|
-
* hidden reference to an owner vm instance on previously
|
|
155
|
-
* seen data. This allows us to achieve O(n) which is
|
|
156
|
-
* better than a levenshtein distance based algorithm,
|
|
157
|
-
* which is O(m * n).
|
|
158
|
-
*
|
|
159
|
-
* @param {Array} data
|
|
160
|
-
* @param {Array} oldVms
|
|
161
|
-
* @return {Array}
|
|
162
|
-
*/
|
|
163
|
-
|
|
164
|
-
diff: function (data, oldVms) {
|
|
165
|
-
var idKey = this.idKey
|
|
166
|
-
var converted = this.converted
|
|
167
|
-
var ref = this.ref
|
|
168
|
-
var alias = this.arg
|
|
169
|
-
var init = !oldVms
|
|
170
|
-
var vms = new Array(data.length)
|
|
171
|
-
var obj, raw, vm, i, l
|
|
172
|
-
// First pass, go through the new Array and fill up
|
|
173
|
-
// the new vms array. If a piece of data has a cached
|
|
174
|
-
// instance for it, we reuse it. Otherwise build a new
|
|
175
|
-
// instance.
|
|
176
|
-
for (i = 0, l = data.length; i < l; i++) {
|
|
177
|
-
obj = data[i]
|
|
178
|
-
raw = converted ? obj.value : obj
|
|
179
|
-
vm = !init && this.getVm(raw)
|
|
180
|
-
if (vm) { // reusable instance
|
|
181
|
-
vm._reused = true
|
|
182
|
-
vm.$index = i // update $index
|
|
183
|
-
if (converted) {
|
|
184
|
-
vm.$key = obj.key // update $key
|
|
185
|
-
}
|
|
186
|
-
if (idKey) { // swap track by id data
|
|
187
|
-
if (alias) {
|
|
188
|
-
vm[alias] = raw
|
|
189
|
-
} else {
|
|
190
|
-
vm._setData(raw)
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
} else { // new instance
|
|
194
|
-
vm = this.build(obj, i)
|
|
195
|
-
vm._new = true
|
|
196
|
-
}
|
|
197
|
-
vms[i] = vm
|
|
198
|
-
// insert if this is first run
|
|
199
|
-
if (init) {
|
|
200
|
-
vm.$before(ref)
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
// if this is the first run, we're done.
|
|
204
|
-
if (init) {
|
|
205
|
-
return vms
|
|
206
|
-
}
|
|
207
|
-
// Second pass, go through the old vm instances and
|
|
208
|
-
// destroy those who are not reused (and remove them
|
|
209
|
-
// from cache)
|
|
210
|
-
for (i = 0, l = oldVms.length; i < l; i++) {
|
|
211
|
-
vm = oldVms[i]
|
|
212
|
-
if (!vm._reused) {
|
|
213
|
-
this.uncacheVm(vm)
|
|
214
|
-
vm.$destroy(true)
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
// final pass, move/insert new instances into the
|
|
218
|
-
// right place. We're going in reverse here because
|
|
219
|
-
// insertBefore relies on the next sibling to be
|
|
220
|
-
// resolved.
|
|
221
|
-
var targetNext, currentNext
|
|
222
|
-
i = vms.length
|
|
223
|
-
while (i--) {
|
|
224
|
-
vm = vms[i]
|
|
225
|
-
// this is the vm that we should be in front of
|
|
226
|
-
targetNext = vms[i + 1]
|
|
227
|
-
if (!targetNext) {
|
|
228
|
-
// This is the last item. If it's reused then
|
|
229
|
-
// everything else will eventually be in the right
|
|
230
|
-
// place, so no need to touch it. Otherwise, insert
|
|
231
|
-
// it.
|
|
232
|
-
if (!vm._reused) {
|
|
233
|
-
vm.$before(ref)
|
|
234
|
-
}
|
|
235
|
-
} else {
|
|
236
|
-
if (vm._reused) {
|
|
237
|
-
// this is the vm we are actually in front of
|
|
238
|
-
currentNext = findNextVm(vm, ref)
|
|
239
|
-
// we only need to move if we are not in the right
|
|
240
|
-
// place already.
|
|
241
|
-
if (currentNext !== targetNext) {
|
|
242
|
-
vm.$before(targetNext.$el, null, false)
|
|
243
|
-
}
|
|
244
|
-
} else {
|
|
245
|
-
// new instance, insert to existing next
|
|
246
|
-
vm.$before(targetNext.$el)
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
vm._new = false
|
|
250
|
-
vm._reused = false
|
|
251
|
-
}
|
|
252
|
-
return vms
|
|
253
|
-
},
|
|
254
|
-
|
|
255
|
-
/**
|
|
256
|
-
* Build a new instance and cache it.
|
|
257
|
-
*
|
|
258
|
-
* @param {Object} data
|
|
259
|
-
* @param {Number} index
|
|
260
|
-
*/
|
|
261
|
-
|
|
262
|
-
build: function (data, index) {
|
|
263
|
-
var original = data
|
|
264
|
-
var meta = { $index: index }
|
|
265
|
-
if (this.converted) {
|
|
266
|
-
meta.$key = original.key
|
|
267
|
-
}
|
|
268
|
-
var raw = this.converted ? data.value : data
|
|
269
|
-
var alias = this.arg
|
|
270
|
-
var hasAlias = !isObject(raw) || alias
|
|
271
|
-
// wrap the raw data with alias
|
|
272
|
-
data = hasAlias ? {} : raw
|
|
273
|
-
if (alias) {
|
|
274
|
-
data[alias] = raw
|
|
275
|
-
} else if (hasAlias) {
|
|
276
|
-
meta.$value = raw
|
|
277
|
-
}
|
|
278
|
-
// resolve constructor
|
|
279
|
-
var Ctor = this.Ctor || this.resolveCtor(data, meta)
|
|
280
|
-
var vm = this.vm.$addChild({
|
|
281
|
-
el: templateParser.clone(this.template),
|
|
282
|
-
_asComponent: this._asComponent,
|
|
283
|
-
_linkFn: this._linkFn,
|
|
284
|
-
_meta: meta,
|
|
285
|
-
data: data,
|
|
286
|
-
inherit: this.inherit
|
|
287
|
-
}, Ctor)
|
|
288
|
-
// cache instance
|
|
289
|
-
this.cacheVm(raw, vm)
|
|
290
|
-
return vm
|
|
291
|
-
},
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* Resolve a contructor to use for an instance.
|
|
295
|
-
* The tricky part here is that there could be dynamic
|
|
296
|
-
* components depending on instance data.
|
|
297
|
-
*
|
|
298
|
-
* @param {Object} data
|
|
299
|
-
* @param {Object} meta
|
|
300
|
-
* @return {Function}
|
|
301
|
-
*/
|
|
302
|
-
|
|
303
|
-
resolveCtor: function (data, meta) {
|
|
304
|
-
// create a temporary context object and copy data
|
|
305
|
-
// and meta properties onto it.
|
|
306
|
-
// use _.define to avoid accidentally overwriting scope
|
|
307
|
-
// properties.
|
|
308
|
-
var context = Object.create(this.vm)
|
|
309
|
-
var key
|
|
310
|
-
for (key in data) {
|
|
311
|
-
_.define(context, key, data[key])
|
|
312
|
-
}
|
|
313
|
-
for (key in meta) {
|
|
314
|
-
_.define(context, key, meta[key])
|
|
315
|
-
}
|
|
316
|
-
var id = this.ctorGetter.call(context, context)
|
|
317
|
-
var Ctor = this.vm.$options.components[id]
|
|
318
|
-
_.assertAsset(Ctor, 'component', id)
|
|
319
|
-
return Ctor
|
|
320
|
-
},
|
|
321
|
-
|
|
322
|
-
/**
|
|
323
|
-
* Unbind, teardown everything
|
|
324
|
-
*/
|
|
325
|
-
|
|
326
|
-
unbind: function () {
|
|
327
|
-
if (this.childId) {
|
|
328
|
-
delete this.vm.$[this.childId]
|
|
329
|
-
}
|
|
330
|
-
if (this.vms) {
|
|
331
|
-
var i = this.vms.length
|
|
332
|
-
var vm
|
|
333
|
-
while (i--) {
|
|
334
|
-
vm = this.vms[i]
|
|
335
|
-
this.uncacheVm(vm)
|
|
336
|
-
vm.$destroy()
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
},
|
|
340
|
-
|
|
341
|
-
/**
|
|
342
|
-
* Cache a vm instance based on its data.
|
|
343
|
-
*
|
|
344
|
-
* If the data is an object, we save the vm's reference on
|
|
345
|
-
* the data object as a hidden property. Otherwise we
|
|
346
|
-
* cache them in an object and for each primitive value
|
|
347
|
-
* there is an array in case there are duplicates.
|
|
348
|
-
*
|
|
349
|
-
* @param {Object} data
|
|
350
|
-
* @param {Vue} vm
|
|
351
|
-
*/
|
|
352
|
-
|
|
353
|
-
cacheVm: function (data, vm) {
|
|
354
|
-
var idKey = this.idKey
|
|
355
|
-
var cache = this.cache
|
|
356
|
-
var id
|
|
357
|
-
if (idKey) {
|
|
358
|
-
id = data[idKey]
|
|
359
|
-
if (!cache[id]) {
|
|
360
|
-
cache[id] = vm
|
|
361
|
-
} else {
|
|
362
|
-
_.warn('Duplicate ID in v-repeat: ' + id)
|
|
363
|
-
}
|
|
364
|
-
} else if (isObject(data)) {
|
|
365
|
-
id = this.id
|
|
366
|
-
if (data.hasOwnProperty(id)) {
|
|
367
|
-
if (data[id] === null) {
|
|
368
|
-
data[id] = vm
|
|
369
|
-
} else {
|
|
370
|
-
_.warn(
|
|
371
|
-
'Duplicate objects are not supported in v-repeat.'
|
|
372
|
-
)
|
|
373
|
-
}
|
|
374
|
-
} else {
|
|
375
|
-
_.define(data, this.id, vm)
|
|
376
|
-
}
|
|
377
|
-
} else {
|
|
378
|
-
if (!cache[data]) {
|
|
379
|
-
cache[data] = [vm]
|
|
380
|
-
} else {
|
|
381
|
-
cache[data].push(vm)
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
vm._raw = data
|
|
385
|
-
},
|
|
386
|
-
|
|
387
|
-
/**
|
|
388
|
-
* Try to get a cached instance from a piece of data.
|
|
389
|
-
*
|
|
390
|
-
* @param {Object} data
|
|
391
|
-
* @return {Vue|undefined}
|
|
392
|
-
*/
|
|
393
|
-
|
|
394
|
-
getVm: function (data) {
|
|
395
|
-
if (this.idKey) {
|
|
396
|
-
return this.cache[data[this.idKey]]
|
|
397
|
-
} else if (isObject(data)) {
|
|
398
|
-
return data[this.id]
|
|
399
|
-
} else {
|
|
400
|
-
var cached = this.cache[data]
|
|
401
|
-
if (cached) {
|
|
402
|
-
var i = 0
|
|
403
|
-
var vm = cached[i]
|
|
404
|
-
// since duplicated vm instances might be a reused
|
|
405
|
-
// one OR a newly created one, we need to return the
|
|
406
|
-
// first instance that is neither of these.
|
|
407
|
-
while (vm && (vm._reused || vm._new)) {
|
|
408
|
-
vm = cached[++i]
|
|
409
|
-
}
|
|
410
|
-
return vm
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
},
|
|
414
|
-
|
|
415
|
-
/**
|
|
416
|
-
* Delete a cached vm instance.
|
|
417
|
-
*
|
|
418
|
-
* @param {Vue} vm
|
|
419
|
-
*/
|
|
420
|
-
|
|
421
|
-
uncacheVm: function (vm) {
|
|
422
|
-
var data = vm._raw
|
|
423
|
-
if (this.idKey) {
|
|
424
|
-
this.cache[data[this.idKey]] = null
|
|
425
|
-
} else if (isObject(data)) {
|
|
426
|
-
data[this.id] = null
|
|
427
|
-
vm._raw = null
|
|
428
|
-
} else {
|
|
429
|
-
this.cache[data].pop()
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
/**
|
|
436
|
-
* Helper to find the next element that is an instance
|
|
437
|
-
* root node. This is necessary because a destroyed vm's
|
|
438
|
-
* element could still be lingering in the DOM before its
|
|
439
|
-
* leaving transition finishes, but its __vue__ reference
|
|
440
|
-
* should have been removed so we can skip them.
|
|
441
|
-
*
|
|
442
|
-
* @param {Vue} vm
|
|
443
|
-
* @param {CommentNode} ref
|
|
444
|
-
* @return {Vue}
|
|
445
|
-
*/
|
|
446
|
-
|
|
447
|
-
function findNextVm (vm, ref) {
|
|
448
|
-
var el = (vm._blockEnd || vm.$el).nextSibling
|
|
449
|
-
while (!el.__vue__ && el !== ref) {
|
|
450
|
-
el = el.nextSibling
|
|
451
|
-
}
|
|
452
|
-
return el.__vue__
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
/**
|
|
456
|
-
* Attempt to convert non-Array objects to array.
|
|
457
|
-
* This is the default filter installed to every v-repeat
|
|
458
|
-
* directive.
|
|
459
|
-
*
|
|
460
|
-
* It will be called with **the directive** as `this`
|
|
461
|
-
* context so that we can mark the repeat array as converted
|
|
462
|
-
* from an object.
|
|
463
|
-
*
|
|
464
|
-
* @param {*} obj
|
|
465
|
-
* @return {Array}
|
|
466
|
-
* @private
|
|
467
|
-
*/
|
|
468
|
-
|
|
469
|
-
function objToArray (obj) {
|
|
470
|
-
if (!_.isPlainObject(obj)) {
|
|
471
|
-
return obj
|
|
472
|
-
}
|
|
473
|
-
var keys = Object.keys(obj)
|
|
474
|
-
var i = keys.length
|
|
475
|
-
var res = new Array(i)
|
|
476
|
-
var key
|
|
477
|
-
while (i--) {
|
|
478
|
-
key = keys[i]
|
|
479
|
-
res[i] = {
|
|
480
|
-
key: key,
|
|
481
|
-
value: obj[key]
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
// `this` points to the repeat directive instance
|
|
485
|
-
this.converted = true
|
|
486
|
-
return res
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
/**
|
|
490
|
-
* Create a range array from given number.
|
|
491
|
-
*
|
|
492
|
-
* @param {Number} n
|
|
493
|
-
* @return {Array}
|
|
494
|
-
*/
|
|
495
|
-
|
|
496
|
-
function range (n) {
|
|
497
|
-
var i = -1
|
|
498
|
-
var ret = new Array(n)
|
|
499
|
-
while (++i < n) {
|
|
500
|
-
ret[i] = i
|
|
501
|
-
}
|
|
502
|
-
return ret
|
|
503
|
-
}
|