{"version":3,"sources":["jsdelivr-header.js","/npm/vue-asyncable@0.2.1/dist/vue-asyncable.umd.js"],"names":[],"mappings":"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","file":"/npm/vue-asyncable@0.2.1/dist/vue-asyncable.umd.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/vue-asyncable@0.2.1/dist/vue-asyncable.umd.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'vue'], factory) :\n  (factory((global.VueAsyncdata = {}),global.Vue));\n}(this, (function (exports,Vue) { 'use strict';\n\n  Vue = Vue && Vue.hasOwnProperty('default') ? Vue['default'] : Vue;\n\n  /*\n   * vue-asyncable\n   *\n   * (c) Savaryn Yaroslav <yariksav@gmail.com>\n   *\n   * Some functions was imported from nuxt.js/lib/app/utils.js\n   * For the full copyright and license information, please view the LICENSE\n   * file that was distributed with this source code.\n  */\n\n  var isFunction = function (fn) { return typeof fn === 'function'; };\n\n  var isNil = function (s) { return s === null || s === undefined; };\n\n  var isPromise = function (promise) {\n    return promise && (promise instanceof Promise || typeof promise.then === 'function')\n  };\n\n  /*\n   * vue-asyncable\n   *\n   * (c) Savaryn Yaroslav <yariksav@gmail.com>\n   *\n   * Some functions was imported from nuxt.js/lib/app/utils.js\n   * For the full copyright and license information, please view the LICENSE\n   * file that was distributed with this source code.\n  */\n\n  function promisify (fn, context) {\n    var promise;\n    if (isFunction(fn)) {\n      promise = fn.call(this, context);\n    } else {\n      promise = fn;\n    }\n\n    if (!isPromise(promise)) {\n      if (typeof promise === 'object') {\n        return checkObjectForPromises.call(this, promise, context)\n      } else {\n        promise = Promise.resolve(promise);\n      }\n    }\n\n    var self = this;\n    return promise.then(function (data) {\n      return checkObjectForPromises.call(self, data)\n    })\n  }\n\n  function hasAsync (obj) {\n    if (!obj || typeof obj !== 'object') {\n      return false\n    }\n    for (var key in obj) {\n      if (isPromise(obj[key]) || isFunction(obj[key])) { // } || isFunction(obj[key])) {\n        return true\n      }\n    }\n    return false\n  }\n\n  function checkObjectForPromises (obj, context) {\n    var this$1 = this;\n    if ( context === void 0 ) context = {};\n\n    var promises = [];\n    var self = this;\n    var data = {};\n    if (typeof obj !== 'object') {\n      return obj\n    }\n    var loop = function ( key ) {\n      var something = obj[key];\n      // data[key] = null\n      if (isFunction(something)) {\n        something = something.call(this$1, context);\n      }\n      if (isPromise(something)) {\n        something = something.then(function (res) {\n          if (isNil(res)) {\n            return\n          }\n          if (key.startsWith('...')) {\n            data = Object.assign({}, data, res);\n          } else {\n            data[key] = res;\n          }\n          return res\n        });\n        if (isFunction(context.asyncDataError)) {\n          something = something.catch(function (error) {\n            return context.asyncDataError.call(self, error, { key: key, obj: obj })\n          });\n        }\n        promises.push(something);\n      } else {\n        if (context.deep && hasAsync(something)) {\n          promises.push(checkObjectForPromises.call(self, something, context).then(function (res) {\n            data[key] = res;\n          }));\n        } else {\n          data[key] = something;\n        }\n      }\n    };\n\n    for (var key in obj) loop( key );\n    return Promise.all(promises).then(function () {\n      return Promise.resolve(data)\n    })\n  }\n\n  /*\n   * vue-asyncable\n   *\n   * (c) Savaryn Yaroslav <yariksav@gmail.com>\n   *\n   * Some functions was imported from nuxt.js/lib/app/utils.js\n   * For the full copyright and license information, please view the LICENSE\n   * file that was distributed with this source code.\n  */\n\n  function applyComponentAsyncData (Component, asyncData) {\n    var ComponentData = Component.options._originDataFn || Component.options.data || function () { return {} };\n    Component.options._originDataFn = ComponentData;\n\n    if (!asyncData) {\n      Component.options.data = ComponentData;\n    } else {\n      Component.options.data = function () {\n        var data = ComponentData.call(this);\n        return Object.assign({}, data, asyncData)\n      };\n\n      if (Component._Ctor && Component._Ctor.options) {\n        Component._Ctor.options.data = Component.options.data;\n      }\n    }\n  }\n\n  function sanitizeComponent (Component) {\n    // If Component already sanitized\n    if (Component.options && Component._Ctor === Component) {\n      return Component\n    }\n    if (!Component.options) {\n      Component = Vue.extend(Component);\n      Component._Ctor = Component;\n    } else {\n      Component._Ctor = Component;\n      Component.extendOptions = Component.options;\n    }\n    // For debugging purpose\n    if (!Component.options.name && Component.options.__file) {\n      Component.options.name = Component.options.__file;\n    }\n    return Component\n  }\n\n  var hasAsyncPreload = function (options) {\n    return Boolean(options.asyncData || options.fetch) // !options.__hasAsyncData && (\n  };\n\n  var ensureVmAsyncData = function (vm, context) {\n    function hydrate (data) {\n      for (var key in data) {\n        vm.$set(vm, key, data[key]);\n      }\n      return data\n    }\n\n    var promises = [];\n\n    if (vm.$options.asyncData && !vm.$options.__hasAsyncData) {\n      promises.push(promisify.call(vm, vm.$options.asyncData, context).then(hydrate));\n    }\n    if (vm.$options.fetch && !vm.$options.__hasAsyncData) {\n      promises.push(vm.$options.fetch(context));\n    }\n\n    // firstly we see a data\n    var functionsInData = {};\n    Object.keys(vm.$data).forEach(function (key) {\n      var value = vm.$data[key];\n      if (typeof value === 'function' || isPromise(value)) {\n        vm.$set(vm, key, null);\n        functionsInData[key] = value;\n      }\n    });\n    if (Object.keys(functionsInData).length) {\n      promises.push(promisify.call(vm, functionsInData, context).then(hydrate));\n    }\n\n    // vm.$options.__hasAsyncData = true\n    return Promise.all(promises)\n  };\n\n  var ensureComponentAsyncData = function (Component, context) {\n    var promises = [];\n\n    if (Component.options.asyncData) {\n      var promise = promisify(Component.options.asyncData, context);\n      promise.then(function (asyncDataResult) {\n        applyComponentAsyncData(Component, asyncDataResult);\n        return asyncDataResult\n      });\n      promises.push(promise);\n    }\n\n    // Call fetch(context)\n    if (Component.options.fetch) {\n      promises.push(Component.options.fetch(context));\n    }\n    // Component.options.__hasAsyncData = true\n    return Promise.all(promises)\n  };\n\n  var ensureAsyncData = function async (components, context) {\n    if (!Array.isArray(components)) {\n      if (!components) {\n        return null\n      } else {\n        components = [components];\n      }\n    }\n\n    return Promise.all(components.map(function (Component) {\n      return ensureComponentAsyncData(Component, context)\n    }))\n  };\n\n  var asyncable = {\n    data: function data () {\n      var data = {\n        $loadingAsyncData: true\n      };\n      if (typeof this.$options.asyncData === 'object') {\n        Object.keys(this.$options.asyncData).forEach(function (key) {\n          data[key] = null;\n        });\n      }\n      return data\n    },\n    created: function created () {\n      this.$loadingAsyncData = true;\n      var self = this;\n\n      ensureVmAsyncData(this, this)\n        .then(function () {\n          self.$loadingAsyncData = false;\n        }).catch(function (e) {\n          self.asyncDataError(e, { type: 'load' });\n          self.$loadingAsyncData = false;\n        });\n    },\n    methods: {\n      asyncDataError: function asyncDataError (e, ref) {\n        var type = ref.type;\n        var key = ref.key;\n\n        // if (process.env.NODE_ENV !== 'production') {\n        console.error('Async data loading error', e, type, key);\n        // }\n      }\n    }\n  };\n\n  exports.Asyncable = asyncable;\n  exports.promisify = promisify;\n  exports.applyComponentAsyncData = applyComponentAsyncData;\n  exports.ensureAsyncData = ensureAsyncData;\n  exports.ensureComponentAsyncData = ensureComponentAsyncData;\n  exports.hasAsyncPreload = hasAsyncPreload;\n  exports.sanitizeComponent = sanitizeComponent;\n  exports.isFunction = isFunction;\n  exports.isPromise = isPromise;\n  exports.isNil = isNil;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n"]}