diff --git a/demo/components/demos/peeking/cloning.vue b/demo/components/demos/peeking/cloning.vue
index 71c496d..6be68dd 100644
--- a/demo/components/demos/peeking/cloning.vue
+++ b/demo/components/demos/peeking/cloning.vue
@@ -1,10 +1,12 @@
-
-
-
-
+
+
diff --git a/demo/content/peeking.md b/demo/content/peeking.md
index 50afd4a..61730ea 100644
--- a/demo/content/peeking.md
+++ b/demo/content/peeking.md
@@ -41,10 +41,12 @@ Note how there is only one more slide than the amount we're showing per page. Th
```vue
-
-
-
-
+
+
diff --git a/index.js b/index.js
index a6a1074..3736e3a 100644
--- a/index.js
+++ b/index.js
@@ -671,6 +671,11 @@ interactiveSelector = 'a, button, input, textarea, select';
if (isPeekingClone || indexOf.call(this.activeSlides, index) < 0) {
vnode.data.attrs['aria-hidden'] = 'true';
+ } // Prevent duplicate keys on clones
+
+
+ if (isPeekingClone && vnode.key) {
+ vnode.key += '-clone-' + index;
} // Return modified vnode
@@ -762,10 +767,10 @@ interactiveSelector = 'a, button, input, textarea, select';
});
// CONCATENATED MODULE: ./src/ssr-carousel-track.vue?vue&type=script&lang=coffee&
/* harmony default export */ var src_ssr_carousel_trackvue_type_script_lang_coffee_ = (ssr_carousel_trackvue_type_script_lang_coffee_);
-// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src!./node_modules/stylus-loader!./node_modules/vue-loader/lib??vue-loader-options!./src/ssr-carousel-track.vue?vue&type=style&index=0&id=d4be1c2a&prod&lang=stylus&
+// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src!./node_modules/stylus-loader!./node_modules/vue-loader/lib??vue-loader-options!./src/ssr-carousel-track.vue?vue&type=style&index=0&id=b3a34fb0&prod&lang=stylus&
// extracted by mini-css-extract-plugin
-// CONCATENATED MODULE: ./src/ssr-carousel-track.vue?vue&type=style&index=0&id=d4be1c2a&prod&lang=stylus&
+// CONCATENATED MODULE: ./src/ssr-carousel-track.vue?vue&type=style&index=0&id=b3a34fb0&prod&lang=stylus&
// CONCATENATED MODULE: ./src/ssr-carousel-track.vue
var ssr_carousel_track_render, ssr_carousel_track_staticRenderFns
diff --git a/src/ssr-carousel-track.vue b/src/ssr-carousel-track.vue
index dd686b0..54fbaee 100644
--- a/src/ssr-carousel-track.vue
+++ b/src/ssr-carousel-track.vue
@@ -82,6 +82,10 @@ export default
if isPeekingClone or index not in @activeSlides
then vnode.data.attrs['aria-hidden'] = 'true'
+ # Prevent duplicate keys on clones
+ if isPeekingClone and vnode.key
+ then vnode.key += '-clone-' + index
+
# Return modified vnode
return vnode