Browse code

Refactor and rewrite as contao bundle

Benjamin Roth authored on04/11/2022 22:32:32
Showing1 changed files
1 1
deleted file mode 100644
... ...
@@ -1,158 +0,0 @@
1
-<script>
2
-  import {
3
-    onMount,
4
-    onDestroy,
5
-    afterUpdate,
6
-    createEventDispatcher,
7
-    tick,
8
-    beforeUpdate,
9
-  } from 'svelte';
10
-  import { getParams } from './get-params';
11
-  import { initSwiper } from './init-swiper';
12
-  import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses } from './utils';
13
-  import { getChangedParams } from './get-changed-params';
14
-  import { updateSwiper } from './update-swiper';
15
-
16
-  const dispatch = createEventDispatcher();
17
-
18
-  let className = undefined;
19
-  export { className as class };
20
-
21
-  let containerClasses = 'swiper-container';
22
-  let breakpointChanged = false;
23
-  let swiperInstance = null;
24
-  let oldPassedParams = null;
25
-
26
-  let paramsData;
27
-  let swiperParams;
28
-  let passedParams;
29
-  let restProps;
30
-
31
-  let swiperEl = null;
32
-  let prevEl = null;
33
-  let nextEl = null;
34
-  let scrollbarEl = null;
35
-  let paginationEl = null;
36
-  let virtualData = { slides: [] };
37
-
38
-  export function swiper() {
39
-    return swiperInstance;
40
-  }
41
-
42
-  const setVirtualData = (data) => {
43
-    virtualData = data;
44
-
45
-    tick().then(() => {
46
-      swiperInstance.$wrapperEl.children('.swiper-slide').each((el) => {
47
-        if (el.onSwiper) el.onSwiper(swiperInstance);
48
-      });
49
-      swiperInstance.updateSlides();
50
-      swiperInstance.updateProgress();
51
-      swiperInstance.updateSlidesClasses();
52
-      if (swiperInstance.lazy && swiperInstance.params.lazy.enabled) {
53
-        swiperInstance.lazy.load();
54
-      }
55
-    });
56
-  };
57
-
58
-  const calcParams = () => {
59
-    paramsData = getParams($$restProps);
60
-    swiperParams = paramsData.params;
61
-    passedParams = paramsData.passedParams;
62
-    restProps = paramsData.rest;
63
-  };
64
-
65
-  calcParams();
66
-  oldPassedParams = passedParams;
67
-
68
-  const onBeforeBreakpoint = () => {
69
-    breakpointChanged = true;
70
-  };
71
-
72
-  swiperParams.onAny = (event, ...args) => {
73
-    dispatch(event, [args]);
74
-  };
75
-  Object.assign(swiperParams.on, {
76
-    _beforeBreakpoint: onBeforeBreakpoint,
77
-    _containerClasses(_swiper, classes) {
78
-      containerClasses = classes;
79
-    },
80
-    _swiper(_swiper) {
81
-      swiperInstance = _swiper;
82
-      if (_swiper.virtual && _swiper.params.virtual.enabled) {
83
-        _swiper.params.virtual.cache = false;
84
-        _swiper.params.virtual.renderExternalUpdate = false;
85
-        _swiper.params.virtual.renderExternal = (data) => {
86
-          setVirtualData(data);
87
-          if (swiperParams.virtual && swiperParams.virtual.renderExternal) {
88
-            swiperParams.virtual.renderExternal(data);
89
-          }
90
-        };
91
-      }
92
-      dispatch('swiper', [_swiper]);
93
-    },
94
-  });
95
-
96
-  onMount(() => {
97
-    if (!swiperEl) return;
98
-    initSwiper(
99
-      {
100
-        el: swiperEl,
101
-        nextEl: nextEl,
102
-        prevEl: prevEl,
103
-        paginationEl: paginationEl,
104
-        scrollbarEl: scrollbarEl,
105
-      },
106
-      swiperParams,
107
-    );
108
-    if (swiperParams.virtual) return;
109
-    swiperInstance.slides.each((el) => {
110
-      if (el.onSwiper) el.onSwiper(swiperInstance);
111
-    });
112
-  });
113
-
114
-  afterUpdate(() => {
115
-    if (!swiperInstance) return;
116
-    calcParams();
117
-
118
-    const changedParams = getChangedParams(passedParams, oldPassedParams);
119
-    if (
120
-      (changedParams.length || breakpointChanged) &&
121
-      swiperInstance &&
122
-      !swiperInstance.destroyed
123
-    ) {
124
-      updateSwiper(swiperInstance, passedParams, changedParams);
125
-    }
126
-    breakpointChanged = false;
127
-    oldPassedParams = passedParams;
128
-  });
129
-
130
-  onDestroy(() => {
131
-    if (swiperInstance && !swiperInstance.destroyed) {
132
-      swiperInstance.destroy(true, false);
133
-    }
134
-  });
135
-</script>
136
-
137
-<div
138
-  bind:this={swiperEl}
139
-  class={uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)}
140
-  {...restProps}>
141
-  <slot name="content-start" />
142
-  {#if needsNavigation(swiperParams)}
143
-    <div bind:this={prevEl} class="swiper-button-prev" />
144
-    <div bind:this={nextEl} class="swiper-button-next" />
145
-  {/if}
146
-  {#if needsScrollbar(swiperParams)}
147
-    <div bind:this={scrollbarEl} class="swiper-scrollbar" />
148
-  {/if}
149
-  {#if needsPagination(swiperParams)}
150
-    <div bind:this={paginationEl} class="swiper-pagination" />
151
-  {/if}
152
-  <div class="swiper-wrapper">
153
-    <slot name="wrapper-start" />
154
-    <slot {virtualData} />
155
-    <slot name="wrapper-end" />
156
-  </div>
157
-  <slot name="content-end" />
158
-</div>
Browse code

swiper.js version 6.4.5

Benjamin Roth authored on17/01/2021 16:24:34
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,158 @@
1
+<script>
2
+  import {
3
+    onMount,
4
+    onDestroy,
5
+    afterUpdate,
6
+    createEventDispatcher,
7
+    tick,
8
+    beforeUpdate,
9
+  } from 'svelte';
10
+  import { getParams } from './get-params';
11
+  import { initSwiper } from './init-swiper';
12
+  import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses } from './utils';
13
+  import { getChangedParams } from './get-changed-params';
14
+  import { updateSwiper } from './update-swiper';
15
+
16
+  const dispatch = createEventDispatcher();
17
+
18
+  let className = undefined;
19
+  export { className as class };
20
+
21
+  let containerClasses = 'swiper-container';
22
+  let breakpointChanged = false;
23
+  let swiperInstance = null;
24
+  let oldPassedParams = null;
25
+
26
+  let paramsData;
27
+  let swiperParams;
28
+  let passedParams;
29
+  let restProps;
30
+
31
+  let swiperEl = null;
32
+  let prevEl = null;
33
+  let nextEl = null;
34
+  let scrollbarEl = null;
35
+  let paginationEl = null;
36
+  let virtualData = { slides: [] };
37
+
38
+  export function swiper() {
39
+    return swiperInstance;
40
+  }
41
+
42
+  const setVirtualData = (data) => {
43
+    virtualData = data;
44
+
45
+    tick().then(() => {
46
+      swiperInstance.$wrapperEl.children('.swiper-slide').each((el) => {
47
+        if (el.onSwiper) el.onSwiper(swiperInstance);
48
+      });
49
+      swiperInstance.updateSlides();
50
+      swiperInstance.updateProgress();
51
+      swiperInstance.updateSlidesClasses();
52
+      if (swiperInstance.lazy && swiperInstance.params.lazy.enabled) {
53
+        swiperInstance.lazy.load();
54
+      }
55
+    });
56
+  };
57
+
58
+  const calcParams = () => {
59
+    paramsData = getParams($$restProps);
60
+    swiperParams = paramsData.params;
61
+    passedParams = paramsData.passedParams;
62
+    restProps = paramsData.rest;
63
+  };
64
+
65
+  calcParams();
66
+  oldPassedParams = passedParams;
67
+
68
+  const onBeforeBreakpoint = () => {
69
+    breakpointChanged = true;
70
+  };
71
+
72
+  swiperParams.onAny = (event, ...args) => {
73
+    dispatch(event, [args]);
74
+  };
75
+  Object.assign(swiperParams.on, {
76
+    _beforeBreakpoint: onBeforeBreakpoint,
77
+    _containerClasses(_swiper, classes) {
78
+      containerClasses = classes;
79
+    },
80
+    _swiper(_swiper) {
81
+      swiperInstance = _swiper;
82
+      if (_swiper.virtual && _swiper.params.virtual.enabled) {
83
+        _swiper.params.virtual.cache = false;
84
+        _swiper.params.virtual.renderExternalUpdate = false;
85
+        _swiper.params.virtual.renderExternal = (data) => {
86
+          setVirtualData(data);
87
+          if (swiperParams.virtual && swiperParams.virtual.renderExternal) {
88
+            swiperParams.virtual.renderExternal(data);
89
+          }
90
+        };
91
+      }
92
+      dispatch('swiper', [_swiper]);
93
+    },
94
+  });
95
+
96
+  onMount(() => {
97
+    if (!swiperEl) return;
98
+    initSwiper(
99
+      {
100
+        el: swiperEl,
101
+        nextEl: nextEl,
102
+        prevEl: prevEl,
103
+        paginationEl: paginationEl,
104
+        scrollbarEl: scrollbarEl,
105
+      },
106
+      swiperParams,
107
+    );
108
+    if (swiperParams.virtual) return;
109
+    swiperInstance.slides.each((el) => {
110
+      if (el.onSwiper) el.onSwiper(swiperInstance);
111
+    });
112
+  });
113
+
114
+  afterUpdate(() => {
115
+    if (!swiperInstance) return;
116
+    calcParams();
117
+
118
+    const changedParams = getChangedParams(passedParams, oldPassedParams);
119
+    if (
120
+      (changedParams.length || breakpointChanged) &&
121
+      swiperInstance &&
122
+      !swiperInstance.destroyed
123
+    ) {
124
+      updateSwiper(swiperInstance, passedParams, changedParams);
125
+    }
126
+    breakpointChanged = false;
127
+    oldPassedParams = passedParams;
128
+  });
129
+
130
+  onDestroy(() => {
131
+    if (swiperInstance && !swiperInstance.destroyed) {
132
+      swiperInstance.destroy(true, false);
133
+    }
134
+  });
135
+</script>
136
+
137
+<div
138
+  bind:this={swiperEl}
139
+  class={uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)}
140
+  {...restProps}>
141
+  <slot name="content-start" />
142
+  {#if needsNavigation(swiperParams)}
143
+    <div bind:this={prevEl} class="swiper-button-prev" />
144
+    <div bind:this={nextEl} class="swiper-button-next" />
145
+  {/if}
146
+  {#if needsScrollbar(swiperParams)}
147
+    <div bind:this={scrollbarEl} class="swiper-scrollbar" />
148
+  {/if}
149
+  {#if needsPagination(swiperParams)}
150
+    <div bind:this={paginationEl} class="swiper-pagination" />
151
+  {/if}
152
+  <div class="swiper-wrapper">
153
+    <slot name="wrapper-start" />
154
+    <slot {virtualData} />
155
+    <slot name="wrapper-end" />
156
+  </div>
157
+  <slot name="content-end" />
158
+</div>