{"version":3,"file":"infinite-loading-vue3-ts.esm-D5jL_eg8.js","sources":["../../node_modules/.pnpm/infinite-loading-vue3-ts@1.0.5_vue@3.5.11_typescript@5.3.3_/node_modules/infinite-loading-vue3-ts/dist/infinite-loading-vue3-ts.esm.js"],"sourcesContent":["import { defineComponent, ref, openBlock, createBlock, withDirectives, createVNode, renderSlot, vShow, createTextVNode } from 'vue';\n\nconst STATUS = {\n  READY: 0,\n  LOADING: 1,\n  COMPLETE: 2,\n  ERROR: 3\n};\nvar script = defineComponent({\n  name: 'InfiniteLoading',\n\n  setup() {\n    const stateChanger = ref();\n    const scrollParent = ref();\n    const isFirstLoad = ref(false);\n    const status = ref(STATUS.READY);\n    return {\n      stateChanger,\n      scrollParent,\n      isFirstLoad,\n      status\n    };\n  },\n\n  computed: {\n    isShowSpinner() {\n      return this.status === STATUS.LOADING;\n    },\n\n    isShowError() {\n      return this.status === STATUS.ERROR;\n    },\n\n    isShowNoResults() {\n      return this.status === STATUS.COMPLETE && this.isFirstLoad;\n    },\n\n    isShowNoMore() {\n      return this.status === STATUS.COMPLETE && !this.isFirstLoad;\n    }\n\n  },\n\n  mounted() {\n    this.scrollParent = this.getScrollParent(); // object pass to emit event\n\n    this.stateChanger = {\n      loaded: () => {\n        this.isFirstLoad = false;\n        this.infinityLoad();\n      },\n      complete: () => {\n        this.status = STATUS.COMPLETE;\n        this.removeEventListener();\n      },\n      reset: () => {\n        this.status = STATUS.READY;\n        this.isFirstLoad = true;\n        this.addEventListener();\n        setTimeout(() => {\n          this.infinityLoad();\n        }, 1);\n      },\n      error: () => {\n        this.status = STATUS.ERROR;\n      }\n    };\n    setTimeout(() => {\n      this.infinityLoad();\n      this.addEventListener();\n    });\n  },\n\n  beforeUnmount() {\n    this.removeEventListener();\n  },\n\n  methods: {\n    addEventListener() {\n      if (this.scrollParent) {\n        this.scrollParent.addEventListener('scroll', this.scrollHandler);\n      }\n    },\n\n    removeEventListener() {\n      if (this.scrollParent) {\n        this.scrollParent.removeEventListener('scroll', this.scrollHandler);\n      }\n    },\n\n    getCurrentDistance() {\n      var _this$scrollParent;\n\n      const infiniteElmOffsetTopFromBottom = this.$el.getBoundingClientRect().top;\n      const scrollElmOffsetTopFromBottom = this.scrollParent === window ? window.innerHeight : (_this$scrollParent = this.scrollParent) === null || _this$scrollParent === void 0 ? void 0 : _this$scrollParent.getBoundingClientRect().bottom;\n      return infiniteElmOffsetTopFromBottom - (scrollElmOffsetTopFromBottom || 0);\n    },\n\n    isVisible(elm) {\n      return elm.offsetWidth + elm.offsetHeight > 0;\n    },\n\n    getScrollParent(elm) {\n      if (!elm) {\n        elm = this.$el;\n      }\n\n      let result;\n\n      if (elm.tagName === 'BODY') {\n        result = window;\n      } else if (elm.hasAttribute('infinite-wrapper') || elm.hasAttribute('data-infinite-wrapper')) {\n        result = elm;\n      }\n\n      return result || this.getScrollParent(elm.parentNode);\n    },\n\n    infinityLoad() {\n      if (this.status !== STATUS.COMPLETE && this.isVisible(this.$el) && this.getCurrentDistance() <= 100) {\n        this.status = STATUS.LOADING;\n        this.$emit('infinite', this.stateChanger);\n      } else {\n        if (this.status === STATUS.LOADING) {\n          this.status = STATUS.READY;\n        }\n      }\n    },\n\n    scrollHandler() {\n      if (this.status === STATUS.READY) {\n        this.infinityLoad();\n      }\n    }\n\n  }\n});\n\nconst _hoisted_1 = {\n  class: \"infinite-loading-container\"\n};\nconst _hoisted_2 = {\n  class: \"infinite-status-prompt\"\n};\n\nconst _hoisted_3 = /*#__PURE__*/createTextVNode(\" Loading... \");\n\nconst _hoisted_4 = {\n  class: \"infinite-status-prompt\"\n};\n\nconst _hoisted_5 = /*#__PURE__*/createTextVNode(\" No results :( \");\n\nconst _hoisted_6 = {\n  class: \"infinite-status-prompt\"\n};\n\nconst _hoisted_7 = /*#__PURE__*/createTextVNode(\" No more data :) \");\n\nconst _hoisted_8 = {\n  class: \"infinite-status-prompt\"\n};\n\nconst _hoisted_9 = /*#__PURE__*/createTextVNode(\" Opps, something went wrong :( \");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createBlock(\"div\", _hoisted_1, [withDirectives(createVNode(\"div\", _hoisted_2, [renderSlot(_ctx.$slots, \"spinner\", {}, () => [_hoisted_3])], 512), [[vShow, _ctx.isShowSpinner]]), withDirectives(createVNode(\"div\", _hoisted_4, [renderSlot(_ctx.$slots, \"no-results\", {}, () => [_hoisted_5])], 512), [[vShow, _ctx.isShowNoResults]]), withDirectives(createVNode(\"div\", _hoisted_6, [renderSlot(_ctx.$slots, \"no-more\", {}, () => [_hoisted_7])], 512), [[vShow, _ctx.isShowNoMore]]), withDirectives(createVNode(\"div\", _hoisted_8, [renderSlot(_ctx.$slots, \"error\", {}, () => [_hoisted_9, createVNode(\"button\", {\n    class: \"btn-try-infinite\",\n    onClick: _cache[1] || (_cache[1] = (...args) => _ctx.infinityLoad && _ctx.infinityLoad(...args))\n  }, \"Retry\")])], 512), [[vShow, _ctx.isShowError]])]);\n}\n\nscript.render = render;\n\n// Import vue component\n\n// Default export is installable instance of component.\n// IIFE injects install function into component, allowing component\n// to be registered via Vue.use() as well as Vue.component(),\nvar entry_esm = /*#__PURE__*/(() => {\n  // Assign InstallableComponent type\n  const installable = script; // Attach install function executed by Vue.use()\n\n  installable.install = app => {\n    app.component('InfiniteLoadingVue3Ts', installable);\n  };\n\n  return installable;\n})(); // It's possible to expose named exports when writing components that can\n// also be used as directives, etc. - eg. import { RollupDemoDirective } from 'rollup-demo';\n\nconst InfiniteLoading = script;\n\nexport default entry_esm;\nexport { InfiniteLoading };\n"],"names":["STATUS","script","defineComponent","stateChanger","ref","scrollParent","isFirstLoad","status","_this$scrollParent","infiniteElmOffsetTopFromBottom","scrollElmOffsetTopFromBottom","elm","result","_hoisted_1","_hoisted_2","_hoisted_3","createTextVNode","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createBlock","withDirectives","createVNode","renderSlot","vShow","args","entry_esm","installable","app"],"mappings":"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","x_google_ignoreList":[0]}