mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-24 23:23:59 -06:00
Add the full source of BambuStudio
using version 1.0.10
This commit is contained in:
parent
30bcadab3e
commit
1555904bef
3771 changed files with 1251328 additions and 0 deletions
95
resources/web/guide/swiper/svelte/swiper-slide.svelte
Normal file
95
resources/web/guide/swiper/svelte/swiper-slide.svelte
Normal file
|
@ -0,0 +1,95 @@
|
|||
<script>
|
||||
import { onMount, onDestroy, beforeUpdate, afterUpdate } from 'svelte';
|
||||
import { uniqueClasses } from './utils.js';
|
||||
|
||||
export let zoom = undefined;
|
||||
export let virtualIndex = undefined;
|
||||
|
||||
let className = undefined;
|
||||
export { className as class };
|
||||
|
||||
let slideEl = null;
|
||||
let slideClasses = 'swiper-slide';
|
||||
|
||||
let swiper = null;
|
||||
let eventAttached = false;
|
||||
|
||||
const updateClasses = (_, el, classNames) => {
|
||||
if (el === slideEl) {
|
||||
slideClasses = classNames;
|
||||
}
|
||||
};
|
||||
|
||||
const attachEvent = () => {
|
||||
if (!swiper || eventAttached) return;
|
||||
swiper.on('_slideClass', updateClasses);
|
||||
eventAttached = true;
|
||||
};
|
||||
|
||||
const detachEvent = () => {
|
||||
if (!swiper) return;
|
||||
swiper.off('_slideClass', updateClasses);
|
||||
eventAttached = false;
|
||||
};
|
||||
|
||||
$: slideData = {
|
||||
isActive:
|
||||
slideClasses.indexOf('swiper-slide-active') >= 0 ||
|
||||
slideClasses.indexOf('swiper-slide-duplicate-active') >= 0,
|
||||
isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,
|
||||
isDuplicate: slideClasses.indexOf('swiper-slide-duplicate') >= 0,
|
||||
isPrev:
|
||||
slideClasses.indexOf('swiper-slide-prev') >= 0 ||
|
||||
slideClasses.indexOf('swiper-slide-duplicate-prev') >= 0,
|
||||
isNext:
|
||||
slideClasses.indexOf('swiper-slide-next') >= 0 ||
|
||||
slideClasses.indexOf('swiper-slide-duplicate-next') >= 0,
|
||||
};
|
||||
|
||||
onMount(() => {
|
||||
if (typeof virtualIndex === 'undefined') return;
|
||||
slideEl.onSwiper = (_swiper) => {
|
||||
swiper = _swiper;
|
||||
attachEvent();
|
||||
};
|
||||
attachEvent();
|
||||
});
|
||||
|
||||
afterUpdate(() => {
|
||||
if (!slideEl || !swiper) return;
|
||||
if (swiper.destroyed) {
|
||||
if (slideClasses !== 'swiper-slide') {
|
||||
slideClasses = 'swiper-slide';
|
||||
}
|
||||
return;
|
||||
}
|
||||
attachEvent();
|
||||
});
|
||||
|
||||
beforeUpdate(() => {
|
||||
attachEvent();
|
||||
});
|
||||
|
||||
onDestroy(() => {
|
||||
if (!swiper) return;
|
||||
detachEvent();
|
||||
});
|
||||
</script>
|
||||
|
||||
<div
|
||||
bind:this={slideEl}
|
||||
class={uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`)}
|
||||
data-swiper-slide-index={virtualIndex}
|
||||
{...$$restProps}
|
||||
>
|
||||
{#if zoom}
|
||||
<div
|
||||
class="swiper-zoom-container"
|
||||
data-swiper-zoom={typeof zoom === 'number' ? zoom : undefined}
|
||||
>
|
||||
<slot data={slideData} />
|
||||
</div>
|
||||
{:else}
|
||||
<slot data={slideData} />
|
||||
{/if}
|
||||
</div>
|
Loading…
Add table
Add a link
Reference in a new issue