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,163 +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, mountSwiper } from './init-swiper';
12
-  import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } 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
-  });
81
-
82
-  swiperInstance = initSwiper(swiperParams);
83
-  if (swiperInstance.virtual && swiperInstance.params.virtual.enabled) {
84
-    const extendWith = {
85
-      cache: false,
86
-      renderExternal: (data) => {
87
-        setVirtualData(data);
88
-        if (swiperParams.virtual && swiperParams.virtual.renderExternal) {
89
-          swiperParams.virtual.renderExternal(data);
90
-        }
91
-      },
92
-      renderExternalUpdate: false,
93
-    };
94
-    extend(swiperInstance.params.virtual, extendWith);
95
-    extend(swiperInstance.originalParams.virtual, extendWith);
96
-  }
97
-
98
-  onMount(() => {
99
-    if (!swiperEl) return;
100
-    mountSwiper(
101
-      {
102
-        el: swiperEl,
103
-        nextEl: nextEl,
104
-        prevEl: prevEl,
105
-        paginationEl: paginationEl,
106
-        scrollbarEl: scrollbarEl,
107
-        swiper: swiperInstance,
108
-      },
109
-      swiperParams,
110
-    );
111
-    dispatch('swiper', [swiperInstance]);
112
-    if (swiperParams.virtual) return;
113
-    swiperInstance.slides.each((el) => {
114
-      if (el.onSwiper) el.onSwiper(swiperInstance);
115
-    });
116
-  });
117
-
118
-  afterUpdate(() => {
119
-    if (!swiperInstance) return;
120
-    calcParams();
121
-
122
-    const changedParams = getChangedParams(passedParams, oldPassedParams);
123
-    if (
124
-      (changedParams.length || breakpointChanged) &&
125
-      swiperInstance &&
126
-      !swiperInstance.destroyed
127
-    ) {
128
-      updateSwiper(swiperInstance, passedParams, changedParams);
129
-    }
130
-    breakpointChanged = false;
131
-    oldPassedParams = passedParams;
132
-  });
133
-
134
-  onDestroy(() => {
135
-    if (swiperInstance && !swiperInstance.destroyed) {
136
-      swiperInstance.destroy(true, false);
137
-    }
138
-  });
139
-</script>
140
-
141
-<div
142
-  bind:this={swiperEl}
143
-  class={uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)}
144
-  {...restProps}
145
->
146
-  <slot name="container-start" />
147
-  {#if needsNavigation(swiperParams)}
148
-    <div bind:this={prevEl} class="swiper-button-prev" />
149
-    <div bind:this={nextEl} class="swiper-button-next" />
150
-  {/if}
151
-  {#if needsScrollbar(swiperParams)}
152
-    <div bind:this={scrollbarEl} class="swiper-scrollbar" />
153
-  {/if}
154
-  {#if needsPagination(swiperParams)}
155
-    <div bind:this={paginationEl} class="swiper-pagination" />
156
-  {/if}
157
-  <div class="swiper-wrapper">
158
-    <slot name="wrapper-start" />
159
-    <slot {virtualData} />
160
-    <slot name="wrapper-end" />
161
-  </div>
162
-  <slot name="container-end" />
163
-</div>
Browse code

swiper.js version 6.5.0

Benjamin Roth authored on14/03/2021 15:29:46
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,163 @@
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, mountSwiper } from './init-swiper';
12
+  import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } 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
+  });
81
+
82
+  swiperInstance = initSwiper(swiperParams);
83
+  if (swiperInstance.virtual && swiperInstance.params.virtual.enabled) {
84
+    const extendWith = {
85
+      cache: false,
86
+      renderExternal: (data) => {
87
+        setVirtualData(data);
88
+        if (swiperParams.virtual && swiperParams.virtual.renderExternal) {
89
+          swiperParams.virtual.renderExternal(data);
90
+        }
91
+      },
92
+      renderExternalUpdate: false,
93
+    };
94
+    extend(swiperInstance.params.virtual, extendWith);
95
+    extend(swiperInstance.originalParams.virtual, extendWith);
96
+  }
97
+
98
+  onMount(() => {
99
+    if (!swiperEl) return;
100
+    mountSwiper(
101
+      {
102
+        el: swiperEl,
103
+        nextEl: nextEl,
104
+        prevEl: prevEl,
105
+        paginationEl: paginationEl,
106
+        scrollbarEl: scrollbarEl,
107
+        swiper: swiperInstance,
108
+      },
109
+      swiperParams,
110
+    );
111
+    dispatch('swiper', [swiperInstance]);
112
+    if (swiperParams.virtual) return;
113
+    swiperInstance.slides.each((el) => {
114
+      if (el.onSwiper) el.onSwiper(swiperInstance);
115
+    });
116
+  });
117
+
118
+  afterUpdate(() => {
119
+    if (!swiperInstance) return;
120
+    calcParams();
121
+
122
+    const changedParams = getChangedParams(passedParams, oldPassedParams);
123
+    if (
124
+      (changedParams.length || breakpointChanged) &&
125
+      swiperInstance &&
126
+      !swiperInstance.destroyed
127
+    ) {
128
+      updateSwiper(swiperInstance, passedParams, changedParams);
129
+    }
130
+    breakpointChanged = false;
131
+    oldPassedParams = passedParams;
132
+  });
133
+
134
+  onDestroy(() => {
135
+    if (swiperInstance && !swiperInstance.destroyed) {
136
+      swiperInstance.destroy(true, false);
137
+    }
138
+  });
139
+</script>
140
+
141
+<div
142
+  bind:this={swiperEl}
143
+  class={uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)}
144
+  {...restProps}
145
+>
146
+  <slot name="container-start" />
147
+  {#if needsNavigation(swiperParams)}
148
+    <div bind:this={prevEl} class="swiper-button-prev" />
149
+    <div bind:this={nextEl} class="swiper-button-next" />
150
+  {/if}
151
+  {#if needsScrollbar(swiperParams)}
152
+    <div bind:this={scrollbarEl} class="swiper-scrollbar" />
153
+  {/if}
154
+  {#if needsPagination(swiperParams)}
155
+    <div bind:this={paginationEl} class="swiper-pagination" />
156
+  {/if}
157
+  <div class="swiper-wrapper">
158
+    <slot name="wrapper-start" />
159
+    <slot {virtualData} />
160
+    <slot name="wrapper-end" />
161
+  </div>
162
+  <slot name="container-end" />
163
+</div>