plate-lang 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.bowerrc +3 -0
- data/.codeclimate.yml +7 -0
- data/.gitignore +25 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +10 -0
- data/LICENSE.txt +21 -0
- data/README.md +64 -0
- data/Rakefile +36 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/bower.json +10 -0
- data/circle.yml +4 -0
- data/exe/plate +6 -0
- data/lib/plate/cli.rb +97 -0
- data/lib/plate/compiler.rb +244 -0
- data/lib/plate/grammar.y +145 -0
- data/lib/plate/lexer.rb +138 -0
- data/lib/plate/nodes.rb +107 -0
- data/lib/plate/parser.rb +568 -0
- data/lib/plate/version.rb +3 -0
- data/lib/plate.rb +14 -0
- data/plate-lang.gemspec +30 -0
- data/skeleton/app/assets/css/app.css +21 -0
- data/skeleton/app/assets/js/app.js +15 -0
- data/skeleton/app/index.html +26 -0
- data/skeleton/app/vendor/.keep +0 -0
- data/skeleton/vendor/bootstrap/.bower.json +44 -0
- data/skeleton/vendor/bootstrap/Gruntfile.js +531 -0
- data/skeleton/vendor/bootstrap/LICENSE +21 -0
- data/skeleton/vendor/bootstrap/README.md +137 -0
- data/skeleton/vendor/bootstrap/bower.json +34 -0
- data/skeleton/vendor/bootstrap/dist/css/bootstrap-theme.css +587 -0
- data/skeleton/vendor/bootstrap/dist/css/bootstrap-theme.css.map +1 -0
- data/skeleton/vendor/bootstrap/dist/css/bootstrap-theme.min.css +5 -0
- data/skeleton/vendor/bootstrap/dist/css/bootstrap.css +6800 -0
- data/skeleton/vendor/bootstrap/dist/css/bootstrap.css.map +1 -0
- data/skeleton/vendor/bootstrap/dist/css/bootstrap.min.css +5 -0
- data/skeleton/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/skeleton/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +288 -0
- data/skeleton/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/skeleton/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/skeleton/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/skeleton/vendor/bootstrap/dist/js/bootstrap.js +2363 -0
- data/skeleton/vendor/bootstrap/dist/js/bootstrap.min.js +7 -0
- data/skeleton/vendor/bootstrap/dist/js/npm.js +13 -0
- data/skeleton/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
- data/skeleton/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg +288 -0
- data/skeleton/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/skeleton/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
- data/skeleton/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/skeleton/vendor/bootstrap/grunt/.jshintrc +7 -0
- data/skeleton/vendor/bootstrap/grunt/bs-commonjs-generator.js +30 -0
- data/skeleton/vendor/bootstrap/grunt/bs-glyphicons-data-generator.js +42 -0
- data/skeleton/vendor/bootstrap/grunt/bs-lessdoc-parser.js +237 -0
- data/skeleton/vendor/bootstrap/grunt/bs-raw-files-generator.js +44 -0
- data/skeleton/vendor/bootstrap/grunt/configBridge.json +46 -0
- data/skeleton/vendor/bootstrap/grunt/sauce_browsers.yml +82 -0
- data/skeleton/vendor/bootstrap/js/.jscsrc +42 -0
- data/skeleton/vendor/bootstrap/js/.jshintrc +15 -0
- data/skeleton/vendor/bootstrap/js/affix.js +162 -0
- data/skeleton/vendor/bootstrap/js/alert.js +94 -0
- data/skeleton/vendor/bootstrap/js/button.js +120 -0
- data/skeleton/vendor/bootstrap/js/carousel.js +237 -0
- data/skeleton/vendor/bootstrap/js/collapse.js +211 -0
- data/skeleton/vendor/bootstrap/js/dropdown.js +165 -0
- data/skeleton/vendor/bootstrap/js/modal.js +337 -0
- data/skeleton/vendor/bootstrap/js/popover.js +108 -0
- data/skeleton/vendor/bootstrap/js/scrollspy.js +172 -0
- data/skeleton/vendor/bootstrap/js/tab.js +155 -0
- data/skeleton/vendor/bootstrap/js/tooltip.js +514 -0
- data/skeleton/vendor/bootstrap/js/transition.js +59 -0
- data/skeleton/vendor/bootstrap/less/.csscomb.json +304 -0
- data/skeleton/vendor/bootstrap/less/.csslintrc +19 -0
- data/skeleton/vendor/bootstrap/less/alerts.less +73 -0
- data/skeleton/vendor/bootstrap/less/badges.less +66 -0
- data/skeleton/vendor/bootstrap/less/bootstrap.less +56 -0
- data/skeleton/vendor/bootstrap/less/breadcrumbs.less +26 -0
- data/skeleton/vendor/bootstrap/less/button-groups.less +244 -0
- data/skeleton/vendor/bootstrap/less/buttons.less +166 -0
- data/skeleton/vendor/bootstrap/less/carousel.less +269 -0
- data/skeleton/vendor/bootstrap/less/close.less +34 -0
- data/skeleton/vendor/bootstrap/less/code.less +69 -0
- data/skeleton/vendor/bootstrap/less/component-animations.less +33 -0
- data/skeleton/vendor/bootstrap/less/dropdowns.less +216 -0
- data/skeleton/vendor/bootstrap/less/forms.less +607 -0
- data/skeleton/vendor/bootstrap/less/glyphicons.less +305 -0
- data/skeleton/vendor/bootstrap/less/grid.less +84 -0
- data/skeleton/vendor/bootstrap/less/input-groups.less +167 -0
- data/skeleton/vendor/bootstrap/less/jumbotron.less +52 -0
- data/skeleton/vendor/bootstrap/less/labels.less +64 -0
- data/skeleton/vendor/bootstrap/less/list-group.less +130 -0
- data/skeleton/vendor/bootstrap/less/media.less +66 -0
- data/skeleton/vendor/bootstrap/less/mixins/alerts.less +14 -0
- data/skeleton/vendor/bootstrap/less/mixins/background-variant.less +9 -0
- data/skeleton/vendor/bootstrap/less/mixins/border-radius.less +18 -0
- data/skeleton/vendor/bootstrap/less/mixins/buttons.less +68 -0
- data/skeleton/vendor/bootstrap/less/mixins/center-block.less +7 -0
- data/skeleton/vendor/bootstrap/less/mixins/clearfix.less +22 -0
- data/skeleton/vendor/bootstrap/less/mixins/forms.less +85 -0
- data/skeleton/vendor/bootstrap/less/mixins/gradients.less +59 -0
- data/skeleton/vendor/bootstrap/less/mixins/grid-framework.less +91 -0
- data/skeleton/vendor/bootstrap/less/mixins/grid.less +122 -0
- data/skeleton/vendor/bootstrap/less/mixins/hide-text.less +21 -0
- data/skeleton/vendor/bootstrap/less/mixins/image.less +33 -0
- data/skeleton/vendor/bootstrap/less/mixins/labels.less +12 -0
- data/skeleton/vendor/bootstrap/less/mixins/list-group.less +30 -0
- data/skeleton/vendor/bootstrap/less/mixins/nav-divider.less +10 -0
- data/skeleton/vendor/bootstrap/less/mixins/nav-vertical-align.less +9 -0
- data/skeleton/vendor/bootstrap/less/mixins/opacity.less +8 -0
- data/skeleton/vendor/bootstrap/less/mixins/pagination.less +24 -0
- data/skeleton/vendor/bootstrap/less/mixins/panels.less +24 -0
- data/skeleton/vendor/bootstrap/less/mixins/progress-bar.less +10 -0
- data/skeleton/vendor/bootstrap/less/mixins/reset-filter.less +8 -0
- data/skeleton/vendor/bootstrap/less/mixins/reset-text.less +18 -0
- data/skeleton/vendor/bootstrap/less/mixins/resize.less +6 -0
- data/skeleton/vendor/bootstrap/less/mixins/responsive-visibility.less +15 -0
- data/skeleton/vendor/bootstrap/less/mixins/size.less +10 -0
- data/skeleton/vendor/bootstrap/less/mixins/tab-focus.less +9 -0
- data/skeleton/vendor/bootstrap/less/mixins/table-row.less +28 -0
- data/skeleton/vendor/bootstrap/less/mixins/text-emphasis.less +9 -0
- data/skeleton/vendor/bootstrap/less/mixins/text-overflow.less +8 -0
- data/skeleton/vendor/bootstrap/less/mixins/vendor-prefixes.less +227 -0
- data/skeleton/vendor/bootstrap/less/mixins.less +40 -0
- data/skeleton/vendor/bootstrap/less/modals.less +150 -0
- data/skeleton/vendor/bootstrap/less/navbar.less +660 -0
- data/skeleton/vendor/bootstrap/less/navs.less +242 -0
- data/skeleton/vendor/bootstrap/less/normalize.less +424 -0
- data/skeleton/vendor/bootstrap/less/pager.less +54 -0
- data/skeleton/vendor/bootstrap/less/pagination.less +89 -0
- data/skeleton/vendor/bootstrap/less/panels.less +271 -0
- data/skeleton/vendor/bootstrap/less/popovers.less +131 -0
- data/skeleton/vendor/bootstrap/less/print.less +101 -0
- data/skeleton/vendor/bootstrap/less/progress-bars.less +87 -0
- data/skeleton/vendor/bootstrap/less/responsive-embed.less +35 -0
- data/skeleton/vendor/bootstrap/less/responsive-utilities.less +194 -0
- data/skeleton/vendor/bootstrap/less/scaffolding.less +161 -0
- data/skeleton/vendor/bootstrap/less/tables.less +234 -0
- data/skeleton/vendor/bootstrap/less/theme.less +291 -0
- data/skeleton/vendor/bootstrap/less/thumbnails.less +36 -0
- data/skeleton/vendor/bootstrap/less/tooltip.less +101 -0
- data/skeleton/vendor/bootstrap/less/type.less +302 -0
- data/skeleton/vendor/bootstrap/less/utilities.less +55 -0
- data/skeleton/vendor/bootstrap/less/variables.less +867 -0
- data/skeleton/vendor/bootstrap/less/wells.less +29 -0
- data/skeleton/vendor/bootstrap/package.js +25 -0
- data/skeleton/vendor/bootstrap/package.json +87 -0
- data/skeleton/vendor/bootswatch/.bower.json +52 -0
- data/skeleton/vendor/bootswatch/.bowerrc +5 -0
- data/skeleton/vendor/bootswatch/LICENSE +21 -0
- data/skeleton/vendor/bootswatch/README.md +59 -0
- data/skeleton/vendor/bootswatch/bower.json +42 -0
- data/skeleton/vendor/bootswatch/cerulean/_bootswatch.scss +131 -0
- data/skeleton/vendor/bootswatch/cerulean/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/cerulean/bootstrap.css +6944 -0
- data/skeleton/vendor/bootswatch/cerulean/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/cerulean/bootswatch.less +131 -0
- data/skeleton/vendor/bootswatch/cerulean/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/cerulean/variables.less +867 -0
- data/skeleton/vendor/bootswatch/cosmo/_bootswatch.scss +261 -0
- data/skeleton/vendor/bootswatch/cosmo/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/cosmo/bootstrap.css +6979 -0
- data/skeleton/vendor/bootswatch/cosmo/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/cosmo/bootswatch.less +261 -0
- data/skeleton/vendor/bootswatch/cosmo/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/cosmo/variables.less +867 -0
- data/skeleton/vendor/bootswatch/cyborg/_bootswatch.scss +234 -0
- data/skeleton/vendor/bootswatch/cyborg/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/cyborg/bootstrap.css +6963 -0
- data/skeleton/vendor/bootswatch/cyborg/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/cyborg/bootswatch.less +234 -0
- data/skeleton/vendor/bootswatch/cyborg/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/cyborg/variables.less +867 -0
- data/skeleton/vendor/bootswatch/darkly/_bootswatch.scss +346 -0
- data/skeleton/vendor/bootswatch/darkly/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/darkly/bootstrap.css +7086 -0
- data/skeleton/vendor/bootswatch/darkly/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/darkly/bootswatch.less +346 -0
- data/skeleton/vendor/bootswatch/darkly/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/darkly/variables.less +867 -0
- data/skeleton/vendor/bootswatch/flatly/_bootswatch.scss +329 -0
- data/skeleton/vendor/bootswatch/flatly/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/flatly/bootstrap.css +7065 -0
- data/skeleton/vendor/bootswatch/flatly/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/flatly/bootswatch.less +329 -0
- data/skeleton/vendor/bootswatch/flatly/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/flatly/variables.less +867 -0
- data/skeleton/vendor/bootswatch/fonts/glyphicons-halflings-regular.eot +0 -0
- data/skeleton/vendor/bootswatch/fonts/glyphicons-halflings-regular.svg +288 -0
- data/skeleton/vendor/bootswatch/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/skeleton/vendor/bootswatch/fonts/glyphicons-halflings-regular.woff +0 -0
- data/skeleton/vendor/bootswatch/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/skeleton/vendor/bootswatch/journal/_bootswatch.scss +144 -0
- data/skeleton/vendor/bootswatch/journal/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/journal/bootstrap.css +6891 -0
- data/skeleton/vendor/bootswatch/journal/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/journal/bootswatch.less +144 -0
- data/skeleton/vendor/bootswatch/journal/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/journal/variables.less +867 -0
- data/skeleton/vendor/bootswatch/lumen/_bootswatch.scss +520 -0
- data/skeleton/vendor/bootswatch/lumen/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/lumen/bootstrap.css +7216 -0
- data/skeleton/vendor/bootswatch/lumen/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/lumen/bootswatch.less +520 -0
- data/skeleton/vendor/bootswatch/lumen/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/lumen/variables.less +867 -0
- data/skeleton/vendor/bootswatch/paper/_bootswatch.scss +585 -0
- data/skeleton/vendor/bootswatch/paper/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/paper/bootstrap.css +7502 -0
- data/skeleton/vendor/bootswatch/paper/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/paper/bootswatch.less +585 -0
- data/skeleton/vendor/bootswatch/paper/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/paper/variables.less +867 -0
- data/skeleton/vendor/bootswatch/readable/_bootswatch.scss +182 -0
- data/skeleton/vendor/bootswatch/readable/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/readable/bootstrap.css +6915 -0
- data/skeleton/vendor/bootswatch/readable/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/readable/bootswatch.less +182 -0
- data/skeleton/vendor/bootswatch/readable/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/readable/variables.less +867 -0
- data/skeleton/vendor/bootswatch/sandstone/_bootswatch.scss +194 -0
- data/skeleton/vendor/bootswatch/sandstone/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/sandstone/bootstrap.css +6953 -0
- data/skeleton/vendor/bootswatch/sandstone/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/sandstone/bootswatch.less +194 -0
- data/skeleton/vendor/bootswatch/sandstone/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/sandstone/variables.less +867 -0
- data/skeleton/vendor/bootswatch/simplex/_bootswatch.scss +169 -0
- data/skeleton/vendor/bootswatch/simplex/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/simplex/bootstrap.css +6953 -0
- data/skeleton/vendor/bootswatch/simplex/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/simplex/bootswatch.less +169 -0
- data/skeleton/vendor/bootswatch/simplex/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/simplex/variables.less +867 -0
- data/skeleton/vendor/bootswatch/slate/_bootswatch.scss +441 -0
- data/skeleton/vendor/bootswatch/slate/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/slate/bootstrap.css +7301 -0
- data/skeleton/vendor/bootswatch/slate/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/slate/bootswatch.less +441 -0
- data/skeleton/vendor/bootswatch/slate/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/slate/variables.less +867 -0
- data/skeleton/vendor/bootswatch/spacelab/_bootswatch.scss +137 -0
- data/skeleton/vendor/bootswatch/spacelab/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/spacelab/bootstrap.css +6998 -0
- data/skeleton/vendor/bootswatch/spacelab/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/spacelab/bootswatch.less +137 -0
- data/skeleton/vendor/bootswatch/spacelab/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/spacelab/variables.less +867 -0
- data/skeleton/vendor/bootswatch/superhero/_bootswatch.scss +356 -0
- data/skeleton/vendor/bootswatch/superhero/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/superhero/bootstrap.css +7048 -0
- data/skeleton/vendor/bootswatch/superhero/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/superhero/bootswatch.less +356 -0
- data/skeleton/vendor/bootswatch/superhero/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/superhero/variables.less +867 -0
- data/skeleton/vendor/bootswatch/united/_bootswatch.scss +55 -0
- data/skeleton/vendor/bootswatch/united/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/united/bootstrap.css +6813 -0
- data/skeleton/vendor/bootswatch/united/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/united/bootswatch.less +55 -0
- data/skeleton/vendor/bootswatch/united/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/united/variables.less +867 -0
- data/skeleton/vendor/bootswatch/yeti/_bootswatch.scss +437 -0
- data/skeleton/vendor/bootswatch/yeti/_variables.scss +868 -0
- data/skeleton/vendor/bootswatch/yeti/bootstrap.css +7107 -0
- data/skeleton/vendor/bootswatch/yeti/bootstrap.min.css +11 -0
- data/skeleton/vendor/bootswatch/yeti/bootswatch.less +437 -0
- data/skeleton/vendor/bootswatch/yeti/thumbnail.png +0 -0
- data/skeleton/vendor/bootswatch/yeti/variables.less +867 -0
- data/skeleton/vendor/font-awesome/.bower.json +36 -0
- data/skeleton/vendor/font-awesome/.gitignore +33 -0
- data/skeleton/vendor/font-awesome/.npmignore +42 -0
- data/skeleton/vendor/font-awesome/HELP-US-OUT.txt +7 -0
- data/skeleton/vendor/font-awesome/bower.json +22 -0
- data/skeleton/vendor/font-awesome/css/font-awesome.css +2026 -0
- data/skeleton/vendor/font-awesome/css/font-awesome.css.map +7 -0
- data/skeleton/vendor/font-awesome/css/font-awesome.min.css +4 -0
- data/skeleton/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
- data/skeleton/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
- data/skeleton/vendor/font-awesome/fonts/fontawesome-webfont.svg +640 -0
- data/skeleton/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
- data/skeleton/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
- data/skeleton/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
- data/skeleton/vendor/font-awesome/less/animated.less +34 -0
- data/skeleton/vendor/font-awesome/less/bordered-pulled.less +25 -0
- data/skeleton/vendor/font-awesome/less/core.less +12 -0
- data/skeleton/vendor/font-awesome/less/fixed-width.less +6 -0
- data/skeleton/vendor/font-awesome/less/font-awesome.less +17 -0
- data/skeleton/vendor/font-awesome/less/icons.less +677 -0
- data/skeleton/vendor/font-awesome/less/larger.less +13 -0
- data/skeleton/vendor/font-awesome/less/list.less +19 -0
- data/skeleton/vendor/font-awesome/less/mixins.less +26 -0
- data/skeleton/vendor/font-awesome/less/path.less +15 -0
- data/skeleton/vendor/font-awesome/less/rotated-flipped.less +20 -0
- data/skeleton/vendor/font-awesome/less/stacked.less +20 -0
- data/skeleton/vendor/font-awesome/less/variables.less +688 -0
- data/skeleton/vendor/font-awesome/scss/_animated.scss +34 -0
- data/skeleton/vendor/font-awesome/scss/_bordered-pulled.scss +25 -0
- data/skeleton/vendor/font-awesome/scss/_core.scss +12 -0
- data/skeleton/vendor/font-awesome/scss/_fixed-width.scss +6 -0
- data/skeleton/vendor/font-awesome/scss/_icons.scss +677 -0
- data/skeleton/vendor/font-awesome/scss/_larger.scss +13 -0
- data/skeleton/vendor/font-awesome/scss/_list.scss +19 -0
- data/skeleton/vendor/font-awesome/scss/_mixins.scss +26 -0
- data/skeleton/vendor/font-awesome/scss/_path.scss +15 -0
- data/skeleton/vendor/font-awesome/scss/_rotated-flipped.scss +20 -0
- data/skeleton/vendor/font-awesome/scss/_stacked.scss +20 -0
- data/skeleton/vendor/font-awesome/scss/_variables.scss +688 -0
- data/skeleton/vendor/font-awesome/scss/font-awesome.scss +17 -0
- data/skeleton/vendor/google-code-prettify/.bower.json +26 -0
- data/skeleton/vendor/google-code-prettify/CHANGES.html +172 -0
- data/skeleton/vendor/google-code-prettify/COPYING +191 -0
- data/skeleton/vendor/google-code-prettify/README-zh-Hans.html +143 -0
- data/skeleton/vendor/google-code-prettify/README.html +233 -0
- data/skeleton/vendor/google-code-prettify/README.md +54 -0
- data/skeleton/vendor/google-code-prettify/bin/prettify.min.css +1 -0
- data/skeleton/vendor/google-code-prettify/bin/prettify.min.js +30 -0
- data/skeleton/vendor/google-code-prettify/bin/run_prettify.min.js +34 -0
- data/skeleton/vendor/google-code-prettify/bower.json +16 -0
- data/skeleton/vendor/google-code-prettify/examples/quine.html +55 -0
- data/skeleton/vendor/google-code-prettify/src/lang-apollo.js +51 -0
- data/skeleton/vendor/google-code-prettify/src/lang-basic.js +32 -0
- data/skeleton/vendor/google-code-prettify/src/lang-clj.js +64 -0
- data/skeleton/vendor/google-code-prettify/src/lang-css.js +159 -0
- data/skeleton/vendor/google-code-prettify/src/lang-dart.js +88 -0
- data/skeleton/vendor/google-code-prettify/src/lang-erlang.js +92 -0
- data/skeleton/vendor/google-code-prettify/src/lang-go.js +58 -0
- data/skeleton/vendor/google-code-prettify/src/lang-hs.js +101 -0
- data/skeleton/vendor/google-code-prettify/src/lang-lisp.js +94 -0
- data/skeleton/vendor/google-code-prettify/src/lang-llvm.js +61 -0
- data/skeleton/vendor/google-code-prettify/src/lang-lua.js +59 -0
- data/skeleton/vendor/google-code-prettify/src/lang-matlab.js +180 -0
- data/skeleton/vendor/google-code-prettify/src/lang-ml.js +56 -0
- data/skeleton/vendor/google-code-prettify/src/lang-mumps.js +139 -0
- data/skeleton/vendor/google-code-prettify/src/lang-n.js +65 -0
- data/skeleton/vendor/google-code-prettify/src/lang-pascal.js +32 -0
- data/skeleton/vendor/google-code-prettify/src/lang-proto.js +35 -0
- data/skeleton/vendor/google-code-prettify/src/lang-r.js +57 -0
- data/skeleton/vendor/google-code-prettify/src/lang-rd.js +47 -0
- data/skeleton/vendor/google-code-prettify/src/lang-scala.js +54 -0
- data/skeleton/vendor/google-code-prettify/src/lang-sql.js +58 -0
- data/skeleton/vendor/google-code-prettify/src/lang-tcl.js +62 -0
- data/skeleton/vendor/google-code-prettify/src/lang-tex.js +46 -0
- data/skeleton/vendor/google-code-prettify/src/lang-vb.js +66 -0
- data/skeleton/vendor/google-code-prettify/src/lang-vhdl.js +34 -0
- data/skeleton/vendor/google-code-prettify/src/lang-wiki.js +53 -0
- data/skeleton/vendor/google-code-prettify/src/lang-xq.js +67 -0
- data/skeleton/vendor/google-code-prettify/src/lang-yaml.js +27 -0
- data/skeleton/vendor/google-code-prettify/src/prettify.css +52 -0
- data/skeleton/vendor/google-code-prettify/src/prettify.js +1655 -0
- data/skeleton/vendor/google-code-prettify/src/run_prettify.js +1905 -0
- data/skeleton/vendor/google-code-prettify/styles/demo.html +61 -0
- data/skeleton/vendor/google-code-prettify/styles/desert.css +34 -0
- data/skeleton/vendor/google-code-prettify/styles/doxy.css +64 -0
- data/skeleton/vendor/google-code-prettify/styles/index.html +89 -0
- data/skeleton/vendor/google-code-prettify/styles/sons-of-obsidian.css +118 -0
- data/skeleton/vendor/google-code-prettify/styles/sunburst.css +51 -0
- data/skeleton/vendor/jquery/.bower.json +38 -0
- data/skeleton/vendor/jquery/MIT-LICENSE.txt +21 -0
- data/skeleton/vendor/jquery/bower.json +28 -0
- data/skeleton/vendor/jquery/dist/jquery.js +9210 -0
- data/skeleton/vendor/jquery/dist/jquery.min.js +5 -0
- data/skeleton/vendor/jquery/dist/jquery.min.map +1 -0
- data/skeleton/vendor/jquery/src/ajax/jsonp.js +89 -0
- data/skeleton/vendor/jquery/src/ajax/load.js +75 -0
- data/skeleton/vendor/jquery/src/ajax/parseJSON.js +13 -0
- data/skeleton/vendor/jquery/src/ajax/parseXML.js +28 -0
- data/skeleton/vendor/jquery/src/ajax/script.js +64 -0
- data/skeleton/vendor/jquery/src/ajax/var/nonce.js +5 -0
- data/skeleton/vendor/jquery/src/ajax/var/rquery.js +3 -0
- data/skeleton/vendor/jquery/src/ajax/xhr.js +136 -0
- data/skeleton/vendor/jquery/src/ajax.js +786 -0
- data/skeleton/vendor/jquery/src/attributes/attr.js +141 -0
- data/skeleton/vendor/jquery/src/attributes/classes.js +158 -0
- data/skeleton/vendor/jquery/src/attributes/prop.js +94 -0
- data/skeleton/vendor/jquery/src/attributes/support.js +35 -0
- data/skeleton/vendor/jquery/src/attributes/val.js +161 -0
- data/skeleton/vendor/jquery/src/attributes.js +11 -0
- data/skeleton/vendor/jquery/src/callbacks.js +205 -0
- data/skeleton/vendor/jquery/src/core/access.js +60 -0
- data/skeleton/vendor/jquery/src/core/init.js +123 -0
- data/skeleton/vendor/jquery/src/core/parseHTML.js +39 -0
- data/skeleton/vendor/jquery/src/core/ready.js +97 -0
- data/skeleton/vendor/jquery/src/core/var/rsingleTag.js +4 -0
- data/skeleton/vendor/jquery/src/core.js +502 -0
- data/skeleton/vendor/jquery/src/css/addGetHookIf.js +22 -0
- data/skeleton/vendor/jquery/src/css/curCSS.js +57 -0
- data/skeleton/vendor/jquery/src/css/defaultDisplay.js +70 -0
- data/skeleton/vendor/jquery/src/css/hiddenVisibleSelectors.js +15 -0
- data/skeleton/vendor/jquery/src/css/support.js +96 -0
- data/skeleton/vendor/jquery/src/css/swap.js +28 -0
- data/skeleton/vendor/jquery/src/css/var/cssExpand.js +3 -0
- data/skeleton/vendor/jquery/src/css/var/getStyles.js +12 -0
- data/skeleton/vendor/jquery/src/css/var/isHidden.js +13 -0
- data/skeleton/vendor/jquery/src/css/var/rmargin.js +3 -0
- data/skeleton/vendor/jquery/src/css/var/rnumnonpx.js +5 -0
- data/skeleton/vendor/jquery/src/css.js +450 -0
- data/skeleton/vendor/jquery/src/data/Data.js +181 -0
- data/skeleton/vendor/jquery/src/data/accepts.js +20 -0
- data/skeleton/vendor/jquery/src/data/var/data_priv.js +5 -0
- data/skeleton/vendor/jquery/src/data/var/data_user.js +5 -0
- data/skeleton/vendor/jquery/src/data.js +178 -0
- data/skeleton/vendor/jquery/src/deferred.js +149 -0
- data/skeleton/vendor/jquery/src/deprecated.js +13 -0
- data/skeleton/vendor/jquery/src/dimensions.js +50 -0
- data/skeleton/vendor/jquery/src/effects/Tween.js +114 -0
- data/skeleton/vendor/jquery/src/effects/animatedSelector.js +13 -0
- data/skeleton/vendor/jquery/src/effects.js +648 -0
- data/skeleton/vendor/jquery/src/event/ajax.js +13 -0
- data/skeleton/vendor/jquery/src/event/alias.js +39 -0
- data/skeleton/vendor/jquery/src/event/support.js +9 -0
- data/skeleton/vendor/jquery/src/event.js +868 -0
- data/skeleton/vendor/jquery/src/exports/amd.js +24 -0
- data/skeleton/vendor/jquery/src/exports/global.js +32 -0
- data/skeleton/vendor/jquery/src/intro.js +44 -0
- data/skeleton/vendor/jquery/src/jquery.js +37 -0
- data/skeleton/vendor/jquery/src/manipulation/_evalUrl.js +18 -0
- data/skeleton/vendor/jquery/src/manipulation/support.js +32 -0
- data/skeleton/vendor/jquery/src/manipulation/var/rcheckableType.js +3 -0
- data/skeleton/vendor/jquery/src/manipulation.js +580 -0
- data/skeleton/vendor/jquery/src/offset.js +207 -0
- data/skeleton/vendor/jquery/src/outro.js +1 -0
- data/skeleton/vendor/jquery/src/queue/delay.js +22 -0
- data/skeleton/vendor/jquery/src/queue.js +142 -0
- data/skeleton/vendor/jquery/src/selector-native.js +172 -0
- data/skeleton/vendor/jquery/src/selector-sizzle.js +14 -0
- data/skeleton/vendor/jquery/src/selector.js +1 -0
- data/skeleton/vendor/jquery/src/serialize.js +111 -0
- data/skeleton/vendor/jquery/src/sizzle/dist/sizzle.js +2067 -0
- data/skeleton/vendor/jquery/src/sizzle/dist/sizzle.min.js +3 -0
- data/skeleton/vendor/jquery/src/sizzle/dist/sizzle.min.map +1 -0
- data/skeleton/vendor/jquery/src/traversing/findFilter.js +100 -0
- data/skeleton/vendor/jquery/src/traversing/var/rneedsContext.js +6 -0
- data/skeleton/vendor/jquery/src/traversing.js +199 -0
- data/skeleton/vendor/jquery/src/var/arr.js +3 -0
- data/skeleton/vendor/jquery/src/var/class2type.js +4 -0
- data/skeleton/vendor/jquery/src/var/concat.js +5 -0
- data/skeleton/vendor/jquery/src/var/hasOwn.js +5 -0
- data/skeleton/vendor/jquery/src/var/indexOf.js +5 -0
- data/skeleton/vendor/jquery/src/var/pnum.js +3 -0
- data/skeleton/vendor/jquery/src/var/push.js +5 -0
- data/skeleton/vendor/jquery/src/var/rnotwhite.js +3 -0
- data/skeleton/vendor/jquery/src/var/slice.js +5 -0
- data/skeleton/vendor/jquery/src/var/strundefined.js +3 -0
- data/skeleton/vendor/jquery/src/var/support.js +4 -0
- data/skeleton/vendor/jquery/src/var/toString.js +5 -0
- data/skeleton/vendor/jquery/src/wrap.js +79 -0
- data/skeleton/vendor/vue/.bower.json +29 -0
- data/skeleton/vendor/vue/LICENSE +21 -0
- data/skeleton/vendor/vue/bower.json +16 -0
- data/skeleton/vendor/vue/build/banner.js +8 -0
- data/skeleton/vendor/vue/build/grunt-tasks/build.js +50 -0
- data/skeleton/vendor/vue/build/grunt-tasks/casper.js +26 -0
- data/skeleton/vendor/vue/build/grunt-tasks/codecov.js +18 -0
- data/skeleton/vendor/vue/build/grunt-tasks/open.js +11 -0
- data/skeleton/vendor/vue/build/grunt-tasks/release.js +84 -0
- data/skeleton/vendor/vue/build/saucelabs.config.js +79 -0
- data/skeleton/vendor/vue/build/webpack.build.dev.config.js +20 -0
- data/skeleton/vendor/vue/build/webpack.build.prod.config.js +25 -0
- data/skeleton/vendor/vue/build/webpack.dev.config.js +10 -0
- data/skeleton/vendor/vue/build/webpack.test.config.js +13 -0
- data/skeleton/vendor/vue/circle.yml +4 -0
- data/skeleton/vendor/vue/dist/vue.js +9863 -0
- data/skeleton/vendor/vue/dist/vue.min.js +8 -0
- data/skeleton/vendor/vue/perf/bench.html +2 -0
- data/skeleton/vendor/vue/perf/bench.js +87 -0
- data/skeleton/vendor/vue/src/api/child.js +49 -0
- data/skeleton/vendor/vue/src/api/data.js +154 -0
- data/skeleton/vendor/vue/src/api/dom.js +226 -0
- data/skeleton/vendor/vue/src/api/events.js +174 -0
- data/skeleton/vendor/vue/src/api/global.js +119 -0
- data/skeleton/vendor/vue/src/api/lifecycle.js +68 -0
- data/skeleton/vendor/vue/src/batcher.js +98 -0
- data/skeleton/vendor/vue/src/cache.js +112 -0
- data/skeleton/vendor/vue/src/compiler/compile-props.js +183 -0
- data/skeleton/vendor/vue/src/compiler/compile.js +631 -0
- data/skeleton/vendor/vue/src/compiler/index.js +4 -0
- data/skeleton/vendor/vue/src/compiler/transclude.js +144 -0
- data/skeleton/vendor/vue/src/config.js +124 -0
- data/skeleton/vendor/vue/src/directive.js +224 -0
- data/skeleton/vendor/vue/src/directives/attr.js +51 -0
- data/skeleton/vendor/vue/src/directives/class.js +70 -0
- data/skeleton/vendor/vue/src/directives/cloak.js +10 -0
- data/skeleton/vendor/vue/src/directives/component.js +300 -0
- data/skeleton/vendor/vue/src/directives/el.js +12 -0
- data/skeleton/vendor/vue/src/directives/html.js +40 -0
- data/skeleton/vendor/vue/src/directives/if.js +126 -0
- data/skeleton/vendor/vue/src/directives/index.js +24 -0
- data/skeleton/vendor/vue/src/directives/model/checkbox.js +24 -0
- data/skeleton/vendor/vue/src/directives/model/index.js +76 -0
- data/skeleton/vendor/vue/src/directives/model/radio.js +26 -0
- data/skeleton/vendor/vue/src/directives/model/select.js +199 -0
- data/skeleton/vendor/vue/src/directives/model/text.js +159 -0
- data/skeleton/vendor/vue/src/directives/on.js +60 -0
- data/skeleton/vendor/vue/src/directives/prop.js +62 -0
- data/skeleton/vendor/vue/src/directives/ref.js +22 -0
- data/skeleton/vendor/vue/src/directives/repeat.js +754 -0
- data/skeleton/vendor/vue/src/directives/show.js +8 -0
- data/skeleton/vendor/vue/src/directives/style.js +110 -0
- data/skeleton/vendor/vue/src/directives/text.js +14 -0
- data/skeleton/vendor/vue/src/directives/transition.js +26 -0
- data/skeleton/vendor/vue/src/element-directives/content.js +111 -0
- data/skeleton/vendor/vue/src/element-directives/index.js +2 -0
- data/skeleton/vendor/vue/src/element-directives/partial.js +73 -0
- data/skeleton/vendor/vue/src/filters/array-filters.js +85 -0
- data/skeleton/vendor/vue/src/filters/index.js +137 -0
- data/skeleton/vendor/vue/src/instance/compile.js +196 -0
- data/skeleton/vendor/vue/src/instance/events.js +139 -0
- data/skeleton/vendor/vue/src/instance/init.js +89 -0
- data/skeleton/vendor/vue/src/instance/misc.js +93 -0
- data/skeleton/vendor/vue/src/instance/scope.js +282 -0
- data/skeleton/vendor/vue/src/observer/array.js +92 -0
- data/skeleton/vendor/vue/src/observer/dep.js +61 -0
- data/skeleton/vendor/vue/src/observer/index.js +212 -0
- data/skeleton/vendor/vue/src/observer/object.js +82 -0
- data/skeleton/vendor/vue/src/parsers/directive.js +179 -0
- data/skeleton/vendor/vue/src/parsers/expression.js +264 -0
- data/skeleton/vendor/vue/src/parsers/path.js +348 -0
- data/skeleton/vendor/vue/src/parsers/template.js +264 -0
- data/skeleton/vendor/vue/src/parsers/text.js +176 -0
- data/skeleton/vendor/vue/src/transition/index.js +128 -0
- data/skeleton/vendor/vue/src/transition/queue.js +35 -0
- data/skeleton/vendor/vue/src/transition/transition.js +308 -0
- data/skeleton/vendor/vue/src/util/component.js +124 -0
- data/skeleton/vendor/vue/src/util/debug.js +64 -0
- data/skeleton/vendor/vue/src/util/dom.js +262 -0
- data/skeleton/vendor/vue/src/util/env.js +85 -0
- data/skeleton/vendor/vue/src/util/index.js +9 -0
- data/skeleton/vendor/vue/src/util/lang.js +289 -0
- data/skeleton/vendor/vue/src/util/options.js +353 -0
- data/skeleton/vendor/vue/src/vue.js +89 -0
- data/skeleton/vendor/vue/src/watcher.js +292 -0
- data/tmp/.keep +0 -0
- metadata +677 -0
|
@@ -0,0 +1,754 @@
|
|
|
1
|
+
var _ = require('../util')
|
|
2
|
+
var config = require('../config')
|
|
3
|
+
var isObject = _.isObject
|
|
4
|
+
var isPlainObject = _.isPlainObject
|
|
5
|
+
var textParser = require('../parsers/text')
|
|
6
|
+
var expParser = require('../parsers/expression')
|
|
7
|
+
var templateParser = require('../parsers/template')
|
|
8
|
+
var compiler = require('../compiler')
|
|
9
|
+
var uid = 0
|
|
10
|
+
|
|
11
|
+
// async component resolution states
|
|
12
|
+
var UNRESOLVED = 0
|
|
13
|
+
var PENDING = 1
|
|
14
|
+
var RESOLVED = 2
|
|
15
|
+
var ABORTED = 3
|
|
16
|
+
|
|
17
|
+
module.exports = {
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Setup.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
bind: function () {
|
|
24
|
+
// support for item in array syntax
|
|
25
|
+
var inMatch = this.expression.match(/(.*) in (.*)/)
|
|
26
|
+
if (inMatch) {
|
|
27
|
+
this.arg = inMatch[1]
|
|
28
|
+
this._watcherExp = inMatch[2]
|
|
29
|
+
}
|
|
30
|
+
// uid as a cache identifier
|
|
31
|
+
this.id = '__v_repeat_' + (++uid)
|
|
32
|
+
|
|
33
|
+
// setup anchor nodes
|
|
34
|
+
this.start = _.createAnchor('v-repeat-start')
|
|
35
|
+
this.end = _.createAnchor('v-repeat-end')
|
|
36
|
+
_.replace(this.el, this.end)
|
|
37
|
+
_.before(this.start, this.end)
|
|
38
|
+
|
|
39
|
+
// check if this is a block repeat
|
|
40
|
+
this.template = _.isTemplate(this.el)
|
|
41
|
+
? templateParser.parse(this.el, true)
|
|
42
|
+
: this.el
|
|
43
|
+
|
|
44
|
+
// check for trackby param
|
|
45
|
+
this.idKey = this._checkParam('track-by')
|
|
46
|
+
// check for transition stagger
|
|
47
|
+
var stagger = +this._checkParam('stagger')
|
|
48
|
+
this.enterStagger = +this._checkParam('enter-stagger') || stagger
|
|
49
|
+
this.leaveStagger = +this._checkParam('leave-stagger') || stagger
|
|
50
|
+
|
|
51
|
+
// check for v-ref/v-el
|
|
52
|
+
this.refID = this._checkParam(config.prefix + 'ref')
|
|
53
|
+
this.elID = this._checkParam(config.prefix + 'el')
|
|
54
|
+
|
|
55
|
+
// check other directives that need to be handled
|
|
56
|
+
// at v-repeat level
|
|
57
|
+
this.checkIf()
|
|
58
|
+
this.checkComponent()
|
|
59
|
+
|
|
60
|
+
// create cache object
|
|
61
|
+
this.cache = Object.create(null)
|
|
62
|
+
|
|
63
|
+
// some helpful tips...
|
|
64
|
+
/* istanbul ignore if */
|
|
65
|
+
if (
|
|
66
|
+
process.env.NODE_ENV !== 'production' &&
|
|
67
|
+
this.el.tagName === 'OPTION'
|
|
68
|
+
) {
|
|
69
|
+
_.warn(
|
|
70
|
+
'Don\'t use v-repeat for v-model options; ' +
|
|
71
|
+
'use the `options` param instead: ' +
|
|
72
|
+
'http://vuejs.org/guide/forms.html#Dynamic_Select_Options'
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Warn against v-if usage.
|
|
79
|
+
*/
|
|
80
|
+
|
|
81
|
+
checkIf: function () {
|
|
82
|
+
if (_.attr(this.el, 'if') !== null) {
|
|
83
|
+
process.env.NODE_ENV !== 'production' && _.warn(
|
|
84
|
+
'Don\'t use v-if with v-repeat. ' +
|
|
85
|
+
'Use v-show or the "filterBy" filter instead.'
|
|
86
|
+
)
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Check the component constructor to use for repeated
|
|
92
|
+
* instances. If static we resolve it now, otherwise it
|
|
93
|
+
* needs to be resolved at build time with actual data.
|
|
94
|
+
*/
|
|
95
|
+
|
|
96
|
+
checkComponent: function () {
|
|
97
|
+
this.componentState = UNRESOLVED
|
|
98
|
+
var options = this.vm.$options
|
|
99
|
+
var id = _.checkComponent(this.el, options)
|
|
100
|
+
if (!id) {
|
|
101
|
+
// default constructor
|
|
102
|
+
this.Component = _.Vue
|
|
103
|
+
// inline repeats should inherit
|
|
104
|
+
this.inline = true
|
|
105
|
+
// important: transclude with no options, just
|
|
106
|
+
// to ensure block start and block end
|
|
107
|
+
this.template = compiler.transclude(this.template)
|
|
108
|
+
var copy = _.extend({}, options)
|
|
109
|
+
copy._asComponent = false
|
|
110
|
+
this._linkFn = compiler.compile(this.template, copy)
|
|
111
|
+
} else {
|
|
112
|
+
this.Component = null
|
|
113
|
+
this.asComponent = true
|
|
114
|
+
// check inline-template
|
|
115
|
+
if (this._checkParam('inline-template') !== null) {
|
|
116
|
+
// extract inline template as a DocumentFragment
|
|
117
|
+
this.inlineTemplate = _.extractContent(this.el, true)
|
|
118
|
+
}
|
|
119
|
+
var tokens = textParser.parse(id)
|
|
120
|
+
if (tokens) {
|
|
121
|
+
// dynamic component to be resolved later
|
|
122
|
+
var componentExp = textParser.tokensToExp(tokens)
|
|
123
|
+
this.componentGetter = expParser.parse(componentExp).get
|
|
124
|
+
} else {
|
|
125
|
+
// static
|
|
126
|
+
this.componentId = id
|
|
127
|
+
this.pendingData = null
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
resolveComponent: function () {
|
|
133
|
+
this.componentState = PENDING
|
|
134
|
+
this.vm._resolveComponent(this.componentId, _.bind(function (Component) {
|
|
135
|
+
if (this.componentState === ABORTED) {
|
|
136
|
+
return
|
|
137
|
+
}
|
|
138
|
+
this.Component = Component
|
|
139
|
+
this.componentState = RESOLVED
|
|
140
|
+
this.realUpdate(this.pendingData)
|
|
141
|
+
this.pendingData = null
|
|
142
|
+
}, this))
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Resolve a dynamic component to use for an instance.
|
|
147
|
+
* The tricky part here is that there could be dynamic
|
|
148
|
+
* components depending on instance data.
|
|
149
|
+
*
|
|
150
|
+
* @param {Object} data
|
|
151
|
+
* @param {Object} meta
|
|
152
|
+
* @return {Function}
|
|
153
|
+
*/
|
|
154
|
+
|
|
155
|
+
resolveDynamicComponent: function (data, meta) {
|
|
156
|
+
// create a temporary context object and copy data
|
|
157
|
+
// and meta properties onto it.
|
|
158
|
+
// use _.define to avoid accidentally overwriting scope
|
|
159
|
+
// properties.
|
|
160
|
+
var context = Object.create(this.vm)
|
|
161
|
+
var key
|
|
162
|
+
for (key in data) {
|
|
163
|
+
_.define(context, key, data[key])
|
|
164
|
+
}
|
|
165
|
+
for (key in meta) {
|
|
166
|
+
_.define(context, key, meta[key])
|
|
167
|
+
}
|
|
168
|
+
var id = this.componentGetter.call(context, context)
|
|
169
|
+
var Component = _.resolveAsset(this.vm.$options, 'components', id)
|
|
170
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
171
|
+
_.assertAsset(Component, 'component', id)
|
|
172
|
+
}
|
|
173
|
+
if (!Component.options) {
|
|
174
|
+
process.env.NODE_ENV !== 'production' && _.warn(
|
|
175
|
+
'Async resolution is not supported for v-repeat ' +
|
|
176
|
+
'+ dynamic component. (component: ' + id + ')'
|
|
177
|
+
)
|
|
178
|
+
return _.Vue
|
|
179
|
+
}
|
|
180
|
+
return Component
|
|
181
|
+
},
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Update.
|
|
185
|
+
* This is called whenever the Array mutates. If we have
|
|
186
|
+
* a component, we might need to wait for it to resolve
|
|
187
|
+
* asynchronously.
|
|
188
|
+
*
|
|
189
|
+
* @param {Array|Number|String} data
|
|
190
|
+
*/
|
|
191
|
+
|
|
192
|
+
update: function (data) {
|
|
193
|
+
if (this.componentId) {
|
|
194
|
+
var state = this.componentState
|
|
195
|
+
if (state === UNRESOLVED) {
|
|
196
|
+
this.pendingData = data
|
|
197
|
+
// once resolved, it will call realUpdate
|
|
198
|
+
this.resolveComponent()
|
|
199
|
+
} else if (state === PENDING) {
|
|
200
|
+
this.pendingData = data
|
|
201
|
+
} else if (state === RESOLVED) {
|
|
202
|
+
this.realUpdate(data)
|
|
203
|
+
}
|
|
204
|
+
} else {
|
|
205
|
+
this.realUpdate(data)
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* The real update that actually modifies the DOM.
|
|
211
|
+
*
|
|
212
|
+
* @param {Array|Number|String} data
|
|
213
|
+
*/
|
|
214
|
+
|
|
215
|
+
realUpdate: function (data) {
|
|
216
|
+
this.vms = this.diff(data, this.vms)
|
|
217
|
+
// update v-ref
|
|
218
|
+
if (this.refID) {
|
|
219
|
+
this.vm.$[this.refID] = this.converted
|
|
220
|
+
? toRefObject(this.vms)
|
|
221
|
+
: this.vms
|
|
222
|
+
}
|
|
223
|
+
if (this.elID) {
|
|
224
|
+
this.vm.$$[this.elID] = this.vms.map(function (vm) {
|
|
225
|
+
return vm.$el
|
|
226
|
+
})
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Diff, based on new data and old data, determine the
|
|
232
|
+
* minimum amount of DOM manipulations needed to make the
|
|
233
|
+
* DOM reflect the new data Array.
|
|
234
|
+
*
|
|
235
|
+
* The algorithm diffs the new data Array by storing a
|
|
236
|
+
* hidden reference to an owner vm instance on previously
|
|
237
|
+
* seen data. This allows us to achieve O(n) which is
|
|
238
|
+
* better than a levenshtein distance based algorithm,
|
|
239
|
+
* which is O(m * n).
|
|
240
|
+
*
|
|
241
|
+
* @param {Array} data
|
|
242
|
+
* @param {Array} oldVms
|
|
243
|
+
* @return {Array}
|
|
244
|
+
*/
|
|
245
|
+
|
|
246
|
+
diff: function (data, oldVms) {
|
|
247
|
+
var idKey = this.idKey
|
|
248
|
+
var converted = this.converted
|
|
249
|
+
var start = this.start
|
|
250
|
+
var end = this.end
|
|
251
|
+
var inDoc = _.inDoc(start)
|
|
252
|
+
var alias = this.arg
|
|
253
|
+
var init = !oldVms
|
|
254
|
+
var vms = new Array(data.length)
|
|
255
|
+
var obj, raw, vm, i, l, primitive
|
|
256
|
+
// First pass, go through the new Array and fill up
|
|
257
|
+
// the new vms array. If a piece of data has a cached
|
|
258
|
+
// instance for it, we reuse it. Otherwise build a new
|
|
259
|
+
// instance.
|
|
260
|
+
for (i = 0, l = data.length; i < l; i++) {
|
|
261
|
+
obj = data[i]
|
|
262
|
+
raw = converted ? obj.$value : obj
|
|
263
|
+
primitive = !isObject(raw)
|
|
264
|
+
vm = !init && this.getVm(raw, i, converted ? obj.$key : null)
|
|
265
|
+
if (vm) { // reusable instance
|
|
266
|
+
vm._reused = true
|
|
267
|
+
vm.$index = i // update $index
|
|
268
|
+
// update data for track-by or object repeat,
|
|
269
|
+
// since in these two cases the data is replaced
|
|
270
|
+
// rather than mutated.
|
|
271
|
+
if (idKey || converted || primitive) {
|
|
272
|
+
if (alias) {
|
|
273
|
+
vm[alias] = raw
|
|
274
|
+
} else if (_.isPlainObject(raw)) {
|
|
275
|
+
vm.$data = raw
|
|
276
|
+
} else {
|
|
277
|
+
vm.$value = raw
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
} else { // new instance
|
|
281
|
+
vm = this.build(obj, i, true)
|
|
282
|
+
vm._reused = false
|
|
283
|
+
}
|
|
284
|
+
vms[i] = vm
|
|
285
|
+
// insert if this is first run
|
|
286
|
+
if (init) {
|
|
287
|
+
vm.$before(end)
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
// if this is the first run, we're done.
|
|
291
|
+
if (init) {
|
|
292
|
+
return vms
|
|
293
|
+
}
|
|
294
|
+
// Second pass, go through the old vm instances and
|
|
295
|
+
// destroy those who are not reused (and remove them
|
|
296
|
+
// from cache)
|
|
297
|
+
var removalIndex = 0
|
|
298
|
+
var totalRemoved = oldVms.length - vms.length
|
|
299
|
+
for (i = 0, l = oldVms.length; i < l; i++) {
|
|
300
|
+
vm = oldVms[i]
|
|
301
|
+
if (!vm._reused) {
|
|
302
|
+
this.uncacheVm(vm)
|
|
303
|
+
vm.$destroy(false, true) // defer cleanup until removal
|
|
304
|
+
this.remove(vm, removalIndex++, totalRemoved, inDoc)
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
// final pass, move/insert new instances into the
|
|
308
|
+
// right place.
|
|
309
|
+
var targetPrev, prevEl, currentPrev
|
|
310
|
+
var insertionIndex = 0
|
|
311
|
+
for (i = 0, l = vms.length; i < l; i++) {
|
|
312
|
+
vm = vms[i]
|
|
313
|
+
// this is the vm that we should be after
|
|
314
|
+
targetPrev = vms[i - 1]
|
|
315
|
+
prevEl = targetPrev
|
|
316
|
+
? targetPrev._staggerCb
|
|
317
|
+
? targetPrev._staggerAnchor
|
|
318
|
+
: targetPrev._fragmentEnd || targetPrev.$el
|
|
319
|
+
: start
|
|
320
|
+
if (vm._reused && !vm._staggerCb) {
|
|
321
|
+
currentPrev = findPrevVm(vm, start, this.id)
|
|
322
|
+
if (currentPrev !== targetPrev) {
|
|
323
|
+
this.move(vm, prevEl)
|
|
324
|
+
}
|
|
325
|
+
} else {
|
|
326
|
+
// new instance, or still in stagger.
|
|
327
|
+
// insert with updated stagger index.
|
|
328
|
+
this.insert(vm, insertionIndex++, prevEl, inDoc)
|
|
329
|
+
}
|
|
330
|
+
vm._reused = false
|
|
331
|
+
}
|
|
332
|
+
return vms
|
|
333
|
+
},
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Build a new instance and cache it.
|
|
337
|
+
*
|
|
338
|
+
* @param {Object} data
|
|
339
|
+
* @param {Number} index
|
|
340
|
+
* @param {Boolean} needCache
|
|
341
|
+
*/
|
|
342
|
+
|
|
343
|
+
build: function (data, index, needCache) {
|
|
344
|
+
var meta = { $index: index }
|
|
345
|
+
if (this.converted) {
|
|
346
|
+
meta.$key = data.$key
|
|
347
|
+
}
|
|
348
|
+
var raw = this.converted ? data.$value : data
|
|
349
|
+
var alias = this.arg
|
|
350
|
+
if (alias) {
|
|
351
|
+
data = {}
|
|
352
|
+
data[alias] = raw
|
|
353
|
+
} else if (!isPlainObject(raw)) {
|
|
354
|
+
// non-object values
|
|
355
|
+
data = {}
|
|
356
|
+
meta.$value = raw
|
|
357
|
+
} else {
|
|
358
|
+
// default
|
|
359
|
+
data = raw
|
|
360
|
+
}
|
|
361
|
+
// resolve constructor
|
|
362
|
+
var Component = this.Component || this.resolveDynamicComponent(data, meta)
|
|
363
|
+
var parent = this._host || this.vm
|
|
364
|
+
var vm = parent.$addChild({
|
|
365
|
+
el: templateParser.clone(this.template),
|
|
366
|
+
data: data,
|
|
367
|
+
inherit: this.inline,
|
|
368
|
+
template: this.inlineTemplate,
|
|
369
|
+
// repeater meta, e.g. $index, $key
|
|
370
|
+
_meta: meta,
|
|
371
|
+
// mark this as an inline-repeat instance
|
|
372
|
+
_repeat: this.inline,
|
|
373
|
+
// is this a component?
|
|
374
|
+
_asComponent: this.asComponent,
|
|
375
|
+
// linker cachable if no inline-template
|
|
376
|
+
_linkerCachable: !this.inlineTemplate && Component !== _.Vue,
|
|
377
|
+
// pre-compiled linker for simple repeats
|
|
378
|
+
_linkFn: this._linkFn,
|
|
379
|
+
// identifier, shows that this vm belongs to this collection
|
|
380
|
+
_repeatId: this.id,
|
|
381
|
+
// transclusion content owner
|
|
382
|
+
_context: this.vm
|
|
383
|
+
}, Component)
|
|
384
|
+
// cache instance
|
|
385
|
+
if (needCache) {
|
|
386
|
+
this.cacheVm(raw, vm, index, this.converted ? meta.$key : null)
|
|
387
|
+
}
|
|
388
|
+
// sync back changes for two-way bindings of primitive values
|
|
389
|
+
var dir = this
|
|
390
|
+
if (this.rawType === 'object' && isPrimitive(raw)) {
|
|
391
|
+
vm.$watch(alias || '$value', function (val) {
|
|
392
|
+
if (dir.filters) {
|
|
393
|
+
process.env.NODE_ENV !== 'production' && _.warn(
|
|
394
|
+
'You seem to be mutating the $value reference of ' +
|
|
395
|
+
'a v-repeat instance (likely through v-model) ' +
|
|
396
|
+
'and filtering the v-repeat at the same time. ' +
|
|
397
|
+
'This will not work properly with an Array of ' +
|
|
398
|
+
'primitive values. Please use an Array of ' +
|
|
399
|
+
'Objects instead.'
|
|
400
|
+
)
|
|
401
|
+
}
|
|
402
|
+
dir._withLock(function () {
|
|
403
|
+
if (dir.converted) {
|
|
404
|
+
dir.rawValue[vm.$key] = val
|
|
405
|
+
} else {
|
|
406
|
+
dir.rawValue.$set(vm.$index, val)
|
|
407
|
+
}
|
|
408
|
+
})
|
|
409
|
+
})
|
|
410
|
+
}
|
|
411
|
+
return vm
|
|
412
|
+
},
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Unbind, teardown everything
|
|
416
|
+
*/
|
|
417
|
+
|
|
418
|
+
unbind: function () {
|
|
419
|
+
this.componentState = ABORTED
|
|
420
|
+
if (this.refID) {
|
|
421
|
+
this.vm.$[this.refID] = null
|
|
422
|
+
}
|
|
423
|
+
if (this.vms) {
|
|
424
|
+
var i = this.vms.length
|
|
425
|
+
var vm
|
|
426
|
+
while (i--) {
|
|
427
|
+
vm = this.vms[i]
|
|
428
|
+
this.uncacheVm(vm)
|
|
429
|
+
vm.$destroy()
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Cache a vm instance based on its data.
|
|
436
|
+
*
|
|
437
|
+
* If the data is an object, we save the vm's reference on
|
|
438
|
+
* the data object as a hidden property. Otherwise we
|
|
439
|
+
* cache them in an object and for each primitive value
|
|
440
|
+
* there is an array in case there are duplicates.
|
|
441
|
+
*
|
|
442
|
+
* @param {Object} data
|
|
443
|
+
* @param {Vue} vm
|
|
444
|
+
* @param {Number} index
|
|
445
|
+
* @param {String} [key]
|
|
446
|
+
*/
|
|
447
|
+
|
|
448
|
+
cacheVm: function (data, vm, index, key) {
|
|
449
|
+
var idKey = this.idKey
|
|
450
|
+
var cache = this.cache
|
|
451
|
+
var primitive = !isObject(data)
|
|
452
|
+
var id
|
|
453
|
+
if (key || idKey || primitive) {
|
|
454
|
+
id = idKey
|
|
455
|
+
? idKey === '$index'
|
|
456
|
+
? index
|
|
457
|
+
: data[idKey]
|
|
458
|
+
: (key || index)
|
|
459
|
+
if (!cache[id]) {
|
|
460
|
+
cache[id] = vm
|
|
461
|
+
} else if (!primitive && idKey !== '$index') {
|
|
462
|
+
process.env.NODE_ENV !== 'production' && _.warn(
|
|
463
|
+
'Duplicate track-by key in v-repeat: ' + id
|
|
464
|
+
)
|
|
465
|
+
}
|
|
466
|
+
} else {
|
|
467
|
+
id = this.id
|
|
468
|
+
if (data.hasOwnProperty(id)) {
|
|
469
|
+
if (data[id] === null) {
|
|
470
|
+
data[id] = vm
|
|
471
|
+
} else {
|
|
472
|
+
process.env.NODE_ENV !== 'production' && _.warn(
|
|
473
|
+
'Duplicate objects are not supported in v-repeat ' +
|
|
474
|
+
'when using components or transitions.'
|
|
475
|
+
)
|
|
476
|
+
}
|
|
477
|
+
} else {
|
|
478
|
+
_.define(data, id, vm)
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
vm._raw = data
|
|
482
|
+
},
|
|
483
|
+
|
|
484
|
+
/**
|
|
485
|
+
* Try to get a cached instance from a piece of data.
|
|
486
|
+
*
|
|
487
|
+
* @param {Object} data
|
|
488
|
+
* @param {Number} index
|
|
489
|
+
* @param {String} [key]
|
|
490
|
+
* @return {Vue|undefined}
|
|
491
|
+
*/
|
|
492
|
+
|
|
493
|
+
getVm: function (data, index, key) {
|
|
494
|
+
var idKey = this.idKey
|
|
495
|
+
var primitive = !isObject(data)
|
|
496
|
+
if (key || idKey || primitive) {
|
|
497
|
+
var id = idKey
|
|
498
|
+
? idKey === '$index'
|
|
499
|
+
? index
|
|
500
|
+
: data[idKey]
|
|
501
|
+
: (key || index)
|
|
502
|
+
return this.cache[id]
|
|
503
|
+
} else {
|
|
504
|
+
return data[this.id]
|
|
505
|
+
}
|
|
506
|
+
},
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* Delete a cached vm instance.
|
|
510
|
+
*
|
|
511
|
+
* @param {Vue} vm
|
|
512
|
+
*/
|
|
513
|
+
|
|
514
|
+
uncacheVm: function (vm) {
|
|
515
|
+
var data = vm._raw
|
|
516
|
+
var idKey = this.idKey
|
|
517
|
+
var index = vm.$index
|
|
518
|
+
// fix #948: avoid accidentally fall through to
|
|
519
|
+
// a parent repeater which happens to have $key.
|
|
520
|
+
var key = vm.hasOwnProperty('$key') && vm.$key
|
|
521
|
+
var primitive = !isObject(data)
|
|
522
|
+
if (idKey || key || primitive) {
|
|
523
|
+
var id = idKey
|
|
524
|
+
? idKey === '$index'
|
|
525
|
+
? index
|
|
526
|
+
: data[idKey]
|
|
527
|
+
: (key || index)
|
|
528
|
+
this.cache[id] = null
|
|
529
|
+
} else {
|
|
530
|
+
data[this.id] = null
|
|
531
|
+
vm._raw = null
|
|
532
|
+
}
|
|
533
|
+
},
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Insert an instance.
|
|
537
|
+
*
|
|
538
|
+
* @param {Vue} vm
|
|
539
|
+
* @param {Number} index
|
|
540
|
+
* @param {Node} prevEl
|
|
541
|
+
* @param {Boolean} inDoc
|
|
542
|
+
*/
|
|
543
|
+
|
|
544
|
+
insert: function (vm, index, prevEl, inDoc) {
|
|
545
|
+
if (vm._staggerCb) {
|
|
546
|
+
vm._staggerCb.cancel()
|
|
547
|
+
vm._staggerCb = null
|
|
548
|
+
}
|
|
549
|
+
var staggerAmount = this.getStagger(vm, index, null, 'enter')
|
|
550
|
+
if (inDoc && staggerAmount) {
|
|
551
|
+
// create an anchor and insert it synchronously,
|
|
552
|
+
// so that we can resolve the correct order without
|
|
553
|
+
// worrying about some elements not inserted yet
|
|
554
|
+
var anchor = vm._staggerAnchor
|
|
555
|
+
if (!anchor) {
|
|
556
|
+
anchor = vm._staggerAnchor = _.createAnchor('stagger-anchor')
|
|
557
|
+
anchor.__vue__ = vm
|
|
558
|
+
}
|
|
559
|
+
_.after(anchor, prevEl)
|
|
560
|
+
var op = vm._staggerCb = _.cancellable(function () {
|
|
561
|
+
vm._staggerCb = null
|
|
562
|
+
vm.$before(anchor)
|
|
563
|
+
_.remove(anchor)
|
|
564
|
+
})
|
|
565
|
+
setTimeout(op, staggerAmount)
|
|
566
|
+
} else {
|
|
567
|
+
vm.$after(prevEl)
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* Move an already inserted instance.
|
|
573
|
+
*
|
|
574
|
+
* @param {Vue} vm
|
|
575
|
+
* @param {Node} prevEl
|
|
576
|
+
*/
|
|
577
|
+
|
|
578
|
+
move: function (vm, prevEl) {
|
|
579
|
+
vm.$after(prevEl, null, false)
|
|
580
|
+
},
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Remove an instance.
|
|
584
|
+
*
|
|
585
|
+
* @param {Vue} vm
|
|
586
|
+
* @param {Number} index
|
|
587
|
+
* @param {Boolean} inDoc
|
|
588
|
+
*/
|
|
589
|
+
|
|
590
|
+
remove: function (vm, index, total, inDoc) {
|
|
591
|
+
if (vm._staggerCb) {
|
|
592
|
+
vm._staggerCb.cancel()
|
|
593
|
+
vm._staggerCb = null
|
|
594
|
+
// it's not possible for the same vm to be removed
|
|
595
|
+
// twice, so if we have a pending stagger callback,
|
|
596
|
+
// it means this vm is queued for enter but removed
|
|
597
|
+
// before its transition started. Since it is already
|
|
598
|
+
// destroyed, we can just leave it in detached state.
|
|
599
|
+
return
|
|
600
|
+
}
|
|
601
|
+
var staggerAmount = this.getStagger(vm, index, total, 'leave')
|
|
602
|
+
if (inDoc && staggerAmount) {
|
|
603
|
+
var op = vm._staggerCb = _.cancellable(function () {
|
|
604
|
+
vm._staggerCb = null
|
|
605
|
+
remove()
|
|
606
|
+
})
|
|
607
|
+
setTimeout(op, staggerAmount)
|
|
608
|
+
} else {
|
|
609
|
+
remove()
|
|
610
|
+
}
|
|
611
|
+
function remove () {
|
|
612
|
+
vm.$remove(function () {
|
|
613
|
+
vm._cleanup()
|
|
614
|
+
})
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* Get the stagger amount for an insertion/removal.
|
|
620
|
+
*
|
|
621
|
+
* @param {Vue} vm
|
|
622
|
+
* @param {Number} index
|
|
623
|
+
* @param {String} type
|
|
624
|
+
* @param {Number} total
|
|
625
|
+
*/
|
|
626
|
+
|
|
627
|
+
getStagger: function (vm, index, total, type) {
|
|
628
|
+
type = type + 'Stagger'
|
|
629
|
+
var transition = vm.$el.__v_trans
|
|
630
|
+
var hooks = transition && transition.hooks
|
|
631
|
+
var hook = hooks && (hooks[type] || hooks.stagger)
|
|
632
|
+
return hook
|
|
633
|
+
? hook.call(vm, index, total)
|
|
634
|
+
: index * this[type]
|
|
635
|
+
},
|
|
636
|
+
|
|
637
|
+
/**
|
|
638
|
+
* Pre-process the value before piping it through the
|
|
639
|
+
* filters, and convert non-Array objects to arrays.
|
|
640
|
+
*
|
|
641
|
+
* This function will be bound to this directive instance
|
|
642
|
+
* and passed into the watcher.
|
|
643
|
+
*
|
|
644
|
+
* @param {*} value
|
|
645
|
+
* @return {Array}
|
|
646
|
+
* @private
|
|
647
|
+
*/
|
|
648
|
+
|
|
649
|
+
_preProcess: function (value) {
|
|
650
|
+
// regardless of type, store the un-filtered raw value.
|
|
651
|
+
this.rawValue = value
|
|
652
|
+
var type = this.rawType = typeof value
|
|
653
|
+
if (!isPlainObject(value)) {
|
|
654
|
+
this.converted = false
|
|
655
|
+
if (type === 'number') {
|
|
656
|
+
value = range(value)
|
|
657
|
+
} else if (type === 'string') {
|
|
658
|
+
value = _.toArray(value)
|
|
659
|
+
}
|
|
660
|
+
return value || []
|
|
661
|
+
} else {
|
|
662
|
+
// convert plain object to array.
|
|
663
|
+
var keys = Object.keys(value)
|
|
664
|
+
var i = keys.length
|
|
665
|
+
var res = new Array(i)
|
|
666
|
+
var key
|
|
667
|
+
while (i--) {
|
|
668
|
+
key = keys[i]
|
|
669
|
+
res[i] = {
|
|
670
|
+
$key: key,
|
|
671
|
+
$value: value[key]
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
this.converted = true
|
|
675
|
+
return res
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* Helper to find the previous element that is an instance
|
|
682
|
+
* root node. This is necessary because a destroyed vm's
|
|
683
|
+
* element could still be lingering in the DOM before its
|
|
684
|
+
* leaving transition finishes, but its __vue__ reference
|
|
685
|
+
* should have been removed so we can skip them.
|
|
686
|
+
*
|
|
687
|
+
* If this is a block repeat, we want to make sure we only
|
|
688
|
+
* return vm that is bound to this v-repeat. (see #929)
|
|
689
|
+
*
|
|
690
|
+
* @param {Vue} vm
|
|
691
|
+
* @param {Comment|Text} anchor
|
|
692
|
+
* @return {Vue}
|
|
693
|
+
*/
|
|
694
|
+
|
|
695
|
+
function findPrevVm (vm, anchor, id) {
|
|
696
|
+
var el = vm.$el.previousSibling
|
|
697
|
+
/* istanbul ignore if */
|
|
698
|
+
if (!el) return
|
|
699
|
+
while (
|
|
700
|
+
(!el.__vue__ || el.__vue__.$options._repeatId !== id) &&
|
|
701
|
+
el !== anchor
|
|
702
|
+
) {
|
|
703
|
+
el = el.previousSibling
|
|
704
|
+
}
|
|
705
|
+
return el.__vue__
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
/**
|
|
709
|
+
* Create a range array from given number.
|
|
710
|
+
*
|
|
711
|
+
* @param {Number} n
|
|
712
|
+
* @return {Array}
|
|
713
|
+
*/
|
|
714
|
+
|
|
715
|
+
function range (n) {
|
|
716
|
+
var i = -1
|
|
717
|
+
var ret = new Array(n)
|
|
718
|
+
while (++i < n) {
|
|
719
|
+
ret[i] = i
|
|
720
|
+
}
|
|
721
|
+
return ret
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* Convert a vms array to an object ref for v-ref on an
|
|
726
|
+
* Object value.
|
|
727
|
+
*
|
|
728
|
+
* @param {Array} vms
|
|
729
|
+
* @return {Object}
|
|
730
|
+
*/
|
|
731
|
+
|
|
732
|
+
function toRefObject (vms) {
|
|
733
|
+
var ref = {}
|
|
734
|
+
for (var i = 0, l = vms.length; i < l; i++) {
|
|
735
|
+
ref[vms[i].$key] = vms[i]
|
|
736
|
+
}
|
|
737
|
+
return ref
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/**
|
|
741
|
+
* Check if a value is a primitive one:
|
|
742
|
+
* String, Number, Boolean, null or undefined.
|
|
743
|
+
*
|
|
744
|
+
* @param {*} value
|
|
745
|
+
* @return {Boolean}
|
|
746
|
+
*/
|
|
747
|
+
|
|
748
|
+
function isPrimitive (value) {
|
|
749
|
+
var type = typeof value
|
|
750
|
+
return value == null ||
|
|
751
|
+
type === 'string' ||
|
|
752
|
+
type === 'number' ||
|
|
753
|
+
type === 'boolean'
|
|
754
|
+
}
|