fluentd-ui 0.3.13 → 0.3.14
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of fluentd-ui might be problematic. Click here for more details.
- 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
|
-
}
|