From c9f8c896e654f074a34acaf612a8d79a826c4623 Mon Sep 17 00:00:00 2001
From: doutatsu <doutatsu@gmail.com>
Date: Thu, 21 Sep 2023 11:45:56 +0300
Subject: [PATCH] Allow setting a destroy delay

Destroying a carousel can appear as a visual bug in certain
situations, due to transitions and the likes. By providing
an ability to delay carousel destroy, users can wait for
whatever is interfering to finish it's work and then destroy
the carousel
---
 dist/js/vue-splide.cjs.js           | 6 ++++--
 dist/js/vue-splide.esm.js           | 6 ++++--
 src/js/components/Splide/Splide.vue | 4 +++-
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/dist/js/vue-splide.cjs.js b/dist/js/vue-splide.cjs.js
index 78ca348..4dbd7cb 100644
--- a/dist/js/vue-splide.cjs.js
+++ b/dist/js/vue-splide.cjs.js
@@ -2689,8 +2689,10 @@ const _sfc_main$1 = vue.defineComponent({
       }
     });
     vue.onBeforeUnmount(() => {
-      var _a;
-      (_a = splide.value) == null ? void 0 : _a.destroy();
+      setTimeout(() => {
+        var _a;
+        (_a = splide.value) == null ? void 0 : _a.destroy();
+      }, props.options.destroyDelay || 0);
     });
     vue.watch(() => merge({}, props.options), (options) => {
       if (splide.value) {
diff --git a/dist/js/vue-splide.esm.js b/dist/js/vue-splide.esm.js
index 72c24de..42ca56f 100644
--- a/dist/js/vue-splide.esm.js
+++ b/dist/js/vue-splide.esm.js
@@ -2687,8 +2687,10 @@ const _sfc_main$1 = defineComponent({
       }
     });
     onBeforeUnmount(() => {
-      var _a;
-      (_a = splide.value) == null ? void 0 : _a.destroy();
+      setTimeout(() => {
+        var _a;
+        (_a = splide.value) == null ? void 0 : _a.destroy();
+      }, props.options.destroyDelay || 0);
     });
     watch(() => merge({}, props.options), (options) => {
       if (splide.value) {
diff --git a/src/js/components/Splide/Splide.vue b/src/js/components/Splide/Splide.vue
index adf982b..ae72004 100644
--- a/src/js/components/Splide/Splide.vue
+++ b/src/js/components/Splide/Splide.vue
@@ -76,7 +76,9 @@ export default defineComponent( {
     } );
 
     onBeforeUnmount( () => {
-      splide.value?.destroy();
+      setTimeout(() => {
+        splide.value?.destroy();
+      }, props.options.destroyDelay || 0);
     } );
 
     watch( () => merge( {}, props.options ), options => {