|
|
@@ -1,11 +1,5 @@
|
|
|
var _ = require('../util')
|
|
|
-var assetTypes = [
|
|
|
- 'directive',
|
|
|
- 'filter',
|
|
|
- 'partial',
|
|
|
- 'effect',
|
|
|
- 'component'
|
|
|
-]
|
|
|
+var mergeOptions = require('../util/merge-option')
|
|
|
|
|
|
/**
|
|
|
* Expose useful internals
|
|
|
@@ -29,7 +23,7 @@ exports.extend = function (extendOptions) {
|
|
|
}
|
|
|
Sub.prototype = Object.create(Super.prototype)
|
|
|
_.define(Sub.prototype, 'constructor', Sub)
|
|
|
- Sub.options = _.mergeOptions(Super.options, extendOptions)
|
|
|
+ Sub.options = mergeOptions(Super.options, extendOptions)
|
|
|
Sub.super = Super
|
|
|
// allow further extension
|
|
|
Sub.extend = Super.extend
|
|
|
@@ -67,22 +61,44 @@ exports.use = function (plugin) {
|
|
|
/**
|
|
|
* Define asset registration methods on a constructor.
|
|
|
*
|
|
|
- * @param {Function} Ctor
|
|
|
+ * @param {Function} Constructor
|
|
|
*/
|
|
|
|
|
|
-createAssetRegisters(exports)
|
|
|
-function createAssetRegisters (Ctor) {
|
|
|
- assetTypes.forEach(function (type) {
|
|
|
+var assetTypes = [
|
|
|
+ 'directive',
|
|
|
+ 'filter',
|
|
|
+ 'partial',
|
|
|
+ 'transition'
|
|
|
+]
|
|
|
+
|
|
|
+function createAssetRegisters (Constructor) {
|
|
|
|
|
|
- /**
|
|
|
- * Asset registration method.
|
|
|
- *
|
|
|
- * @param {String} id
|
|
|
- * @param {*} definition
|
|
|
- */
|
|
|
+ /* Asset registration methods share the same signature:
|
|
|
+ *
|
|
|
+ * @param {String} id
|
|
|
+ * @param {*} definition
|
|
|
+ */
|
|
|
|
|
|
- Ctor[type] = function (id, definition) {
|
|
|
+ assetTypes.forEach(function (type) {
|
|
|
+ Constructor[type] = function (id, definition) {
|
|
|
this.options[type + 's'][id] = definition
|
|
|
}
|
|
|
})
|
|
|
-}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Component registration needs to automatically invoke
|
|
|
+ * Vue.extend on object values.
|
|
|
+ *
|
|
|
+ * @param {String} id
|
|
|
+ * @param {Object|Function} definition
|
|
|
+ */
|
|
|
+
|
|
|
+ Constructor.component = function (id, definition) {
|
|
|
+ if (_.isObject(definition)) {
|
|
|
+ definition = _.Vue.extend(definition)
|
|
|
+ }
|
|
|
+ this.options.components[id] = definition
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+createAssetRegisters(exports)
|