97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* globals __VUE_SSR_CONTEXT__ */
 | |
| 
 | |
| // IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
 | |
| // This module is a runtime utility for cleaner component module output and will
 | |
| // be included in the final webpack user bundle.
 | |
| 
 | |
| export default function normalizeComponent(
 | |
|   scriptExports,
 | |
|   render,
 | |
|   staticRenderFns,
 | |
|   functionalTemplate,
 | |
|   injectStyles,
 | |
|   scopeId,
 | |
|   moduleIdentifier /* server only */,
 | |
|   shadowMode /* vue-cli only */
 | |
| ) {
 | |
|   // Vue.extend constructor export interop
 | |
|   var options =
 | |
|     typeof scriptExports === 'function' ? scriptExports.options : scriptExports
 | |
| 
 | |
|   // render functions
 | |
|   if (render) {
 | |
|     options.render = render
 | |
|     options.staticRenderFns = staticRenderFns
 | |
|     options._compiled = true
 | |
|   }
 | |
| 
 | |
|   // functional template
 | |
|   if (functionalTemplate) {
 | |
|     options.functional = true
 | |
|   }
 | |
| 
 | |
|   // scopedId
 | |
|   if (scopeId) {
 | |
|     options._scopeId = 'data-v-' + scopeId
 | |
|   }
 | |
| 
 | |
|   var hook
 | |
|   if (moduleIdentifier) {
 | |
|     // server build
 | |
|     hook = function (context) {
 | |
|       // 2.3 injection
 | |
|       context =
 | |
|         context || // cached call
 | |
|         (this.$vnode && this.$vnode.ssrContext) || // stateful
 | |
|         (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
 | |
|       // 2.2 with runInNewContext: true
 | |
|       if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
 | |
|         context = __VUE_SSR_CONTEXT__
 | |
|       }
 | |
|       // inject component styles
 | |
|       if (injectStyles) {
 | |
|         injectStyles.call(this, context)
 | |
|       }
 | |
|       // register component module identifier for async chunk inferrence
 | |
|       if (context && context._registeredComponents) {
 | |
|         context._registeredComponents.add(moduleIdentifier)
 | |
|       }
 | |
|     }
 | |
|     // used by ssr in case component is cached and beforeCreate
 | |
|     // never gets called
 | |
|     options._ssrRegister = hook
 | |
|   } else if (injectStyles) {
 | |
|     hook = shadowMode
 | |
|       ? function () {
 | |
|           injectStyles.call(
 | |
|             this,
 | |
|             (options.functional ? this.parent : this).$root.$options.shadowRoot
 | |
|           )
 | |
|         }
 | |
|       : injectStyles
 | |
|   }
 | |
| 
 | |
|   if (hook) {
 | |
|     if (options.functional) {
 | |
|       // for template-only hot-reload because in that case the render fn doesn't
 | |
|       // go through the normalizer
 | |
|       options._injectStyles = hook
 | |
|       // register for functional component in vue file
 | |
|       var originalRender = options.render
 | |
|       options.render = function renderWithStyleInjection(h, context) {
 | |
|         hook.call(context)
 | |
|         return originalRender(h, context)
 | |
|       }
 | |
|     } else {
 | |
|       // inject component registration as beforeCreate hook
 | |
|       var existing = options.beforeCreate
 | |
|       options.beforeCreate = existing ? [].concat(existing, hook) : [hook]
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   return {
 | |
|     exports: scriptExports,
 | |
|     options: options
 | |
|   }
 | |
| }
 |