PageSourceSearch

https://hostingnica.net/js/components/slideshow-fx.js

js hostingnica.net collected 2026-10-01 23:49:28 UTC 13,667 bytes, 383 lines download raw bytes

1/*! UIkit 2.26.4 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
2(function(addon) {
3
4    var component;
5
6    if (window.UIkit) {
7        component = addon(UIkit);
8    }
9
10    if (typeof define == "function" && define.amd) {
11        define("uikit-slideshow-fx", ["uikit"], function() {
12            return component || addon(UIkit);
13        });
14    }
15
16})(function(UI) {
17
18    "use strict";
19
20    var Animations = UI.slideshow.animations;
21
22    UI.$.extend(UI.slideshow.animations, {
23        'slice': function(current, next, dir, fromfx) {
24
25            if (!current.data('cover')) {
26                return Animations.fade.apply(this, arguments);
27            }
28
29            var d = UI.$.Deferred();
30
31            var sliceWidth = Math.ceil(this.element.width() / this.options.slices),
32                bgimage    = next.data('cover').css('background-image'),
33                ghost      = UI.$('<li></li>').css({
34                    top    : 0,
35                    left   : 0,
36                    width  : this.container.width(),
37                    height : this.container.height(),
38                    opacity: 1,
39                    zIndex : 15
40                }),
41                ghostWidth  = ghost.width(),
42                ghostHeight = ghost.height(),
43                pos         = fromfx == 'slice-up' ? ghostHeight:'0',
44                bar;
45
46            for (var i = 0; i < this.options.slices; i++) {
47
48                if (fromfx == 'slice-up-down') {
49                    pos = ((i % 2) + 2) % 2==0 ? '0':ghostHeight;
50                }
51
52                var width    = (i == this.options.slices-1) ? sliceWidth : sliceWidth,
53                    clipto   = ('rect(0px, '+(width*(i+1))+'px, '+ghostHeight+'px, '+(sliceWidth*i)+'px)'),
54                    clipfrom;
55
56                //slice-down - default
57                clipfrom = ('rect(0px, '+(width*(i+1))+'px, 0px, '+(sliceWidth*i)+'px)');
58
59                if (fromfx == 'slice-up' || (fromfx == 'slice-up-down' && ((i % 2) + 2) % 2==0 )) {
60                    clipfrom = ('rect('+ghostHeight+'px, '+(width*(i+1))+'px, '+ghostHeight+'px, '+(sliceWidth*i)+'px)');
61                }
62
63                bar = UI.$('<div class="uk-cover-background"></div>').css({
64                    'position'           : 'absolute',
65                    'top'                : 0,
66                    'left'               : 0,
67                    'width'              : ghostWidth,
68                    'height'             : ghostHeight,
69                    'background-image'   : bgimage,
70                    'clip'               : clipfrom,
71                    'opacity'            : 0,
72                    'transition'         : 'all '+this.options.duration+'ms ease-in-out '+(i*60)+'ms',
73                    '-webkit-transition' : 'all '+this.options.duration+'ms ease-in-out '+(i*60)+'ms'
74
75                }).data('clip', clipto);
76
77                ghost.append(bar);
78            }
79
80            this.container.append(ghost);
81
82            ghost.children().last().on(UI.support.transition.end, function() {
83
84                setTimeout(ghost.remove.bind(ghost), 0);
85
86                d.resolve();
87            });
88
89            ghost.width();
90
91            ghost.children().each(function() {
92                var bar = UI.$(this);
93
94                bar.css({
95                    'clip': bar.data('clip'),
96                    'opacity': 1
97                });
98            });
99
100            return d.promise();
101        },
102
103        'slice-up': function(current, next, dir) {
104            return Animations.slice.apply(this, [current, next, dir, 'slice-up']);
105        },
106
107        'slice-down': function(current, next, dir) {
108            return Animations.slice.apply(this, [current, next, dir, 'slice-down']);
109        },
110
111        'slice-up-down': function(current, next, dir) {
112            return Animations.slice.apply(this, [current, next, dir, 'slice-up-down']);
113        },
114
115        'fold': function(current, next, dir) {
116
117            if (!next.data('cover')) {
118                return Animations.fade.apply(this, arguments);
119            }
120
121            var d = UI.$.Deferred();
122
123            var sliceWidth = Math.ceil(this.element.width() / this.options.slice
123s),
124                bgimage    = next.data('cover').css('background-image'),
125                ghost      = UI.$('<li></li>').css({
126                    width  : next.width(),
127                    height : next.height(),
128                    opacity: 1,
129                    zIndex : 15
130                }),
131                ghostWidth  = next.width(),
132                ghostHeight = next.height(),
133                bar;
134
135            for (var i = 0; i < this.options.slices; i++) {
136
137                bar = UI.$('<div class="uk-cover-background"></div>').css({
138                    'position'           : 'absolute',
139                    'top'                : 0,
140                    'left'               : 0,
141                    'width'              : ghostWidth,
142                    'height'             : ghostHeight,
143                    'background-image'   : bgimage,
144                    'transform-origin'   : (sliceWidth*i)+'px 0 0',
145                    'clip'               : ('rect(0px, '+(sliceWidth*(i+1))+'px, '+ghostHeight+'px, '+(sliceWidth*i)+'px)'),
146                    'opacity'            : 0,
147                    'transform'          : 'scaleX(0.000001)',
148                    'transition'         : 'all '+this.options.duration+'ms ease-in-out '+(100+i*60)+'ms',
149                    '-webkit-transition' : 'all '+this.options.duration+'ms ease-in-out '+(100+i*60)+'ms'
150                });
151
152                ghost.prepend(bar);
153            }
154
155            this.container.append(ghost);
156
157            ghost.width();
158
159            ghost.children().first().on(UI.support.transition.end, function() {
160
161                setTimeout(ghost.remove.bind(ghost), 0);
162
163                d.resolve();
164            }).end().css({
165                'transform': 'scaleX(1)',
166                'opacity': 1
167            });
168
169            return d.promise();
170        },
171
172        'puzzle': function(current, next, dir) {
173
174            if (!next.data('cover')) {
175                return Animations.fade.apply(this, arguments);
176            }
177
178            var d = UI.$.Deferred(), $this = this;
179
180            var boxCols   = Math.round(this.options.slices/2),
181                boxWidth  = Math.round(next.width()/boxCols),
182                boxRows   = Math.round(next.height()/boxWidth),
183                boxHeight = Math.round(next.height()/boxRows)+1,
184                bgimage   = next.data('cover').css('background-image'),
185                ghost     = UI.$('<li></li>').css({
186                    width   : this.container.width(),
187                    height  : this.container.height(),
188                    opacity : 1,
189                    zIndex  : 15
190                }),
191                ghostWidth  = this.container.width(),
192                ghostHeight = this.container.height(),
193                box, rect, width;
194
195            for (var rows = 0; rows < boxRows; rows++) {
196
197                for (var cols = 0; cols < boxCols; cols++) {
198
199                    width  = (cols == boxCols-1) ? (boxWidth + 2) : boxWidth;
200
201                    rect = [
202                        (boxHeight * rows)       +'px', // top
203                        (width  * (cols+1))      +'px', // right
204                        (boxHeight * (rows + 1)) +'px', // bottom
205                        (boxWidth  * cols)       +'px'  // left
206                    ];
207
208                    box = UI.$('<div class="uk-cover-background"></div>').css({
209                        'position'          : 'absolute',
210                        'top'               : 0,
211                        'left'              : 0,
212                        'opacity'           : 0,
213                        'width'             : ghostWidth,
214                        'height'            : ghostHeight,
215                        'background-image'  : bgimage,
216                        'clip'              : ('rect('+rect.join(',')+')'),
217                        '-webkit-transform' : 'translateZ(0)', // fixes webkit opacity flickering bug
218                        'transform'         : 'translateZ(0)'          // fixes moz opacity flickering bug
219                    });
220
221                    ghost.append(box);
222                }
223            }
224
225            this.container.append(ghost);
226
227            var boxes = shuffle(ghost.children());
228
229            boxes.each(function(i) {
230                UI.$(this).css({
231                    'transition': 'all '+$this.options.duration+'ms ease-in-out '+(50+i*25)+'ms',
232                    '-webkit-transition': 'all '+$this.options.duration+'ms ease-in-out '+(50+i*25)+'ms'
233                });
234            }).last().on(UI.support.transition.end, function() {
235
236                setTimeout(ghost.remove.bind(ghost), 0);
237
238                d.resolve();
239            });
240
241            ghost.width();
242
243            boxes.css({'opacity': 1});
244
245            return d.promise();
246        },
247
248        'boxes': function(current, next, dir, fromfx) {
249
250            if (!next.data('cover')) {
251                return Animations.fade.apply(this, arguments);
252            }
253
254            var d = UI.$.Deferred();
255
256            var boxCols   = Math.round(this.options.slices/2),
257                boxWidth  = Math.round(next.width()/boxCols),
258                boxRows   = Math.round(next.height()/boxWidth),
259                boxHeight = Math.round(next.height()/boxRows)+1,
260                bgimage   = next.data('cover').css('background-image'),
261                ghost     = UI.$('<li></li>').css({
262                    width   : next.width(),
263                    height  : next.height(),
264                    opacity : 1,
265                    zIndex  : 15
266                }),
267                ghostWidth  = next.width(),
268                ghostHeight = next.height(),
269                box, rect, width, cols;
270
271            for (var rows = 0; rows < boxRows; rows++) {
272
273                for (cols = 0; cols < boxCols; cols++) {
274
275                    width  = (cols == boxCols-1) ? (boxWidth + 2) : boxWidth;
276
277                    rect = [
278                        (boxHeight * rows)       +'px', // top
279                        (width  * (cols+1))      +'px', // right
280                        (boxHeight * (rows + 1)) +'px', // bottom
281                        (boxWidth  * cols)       +'px'  // left
282                    ];
283
284                    box = UI.$('<div class="uk-cover-background"></div>').css({
285                        'position'          : 'absolute',
286                        'top'               : 0,
287                        'left'              : 0,
288                        'opacity'           : 1,
289                        'width'             : ghostWidth,
290                        'height'            : ghostHeight,
291                        'background-image'  : bgimage,
292                        'transform-origin'  : rect[3]+' '+rect[0]+' 0',
293                        'clip'              : ('rect('+rect.join(',')+')'),
294                        '-webkit-transform' : 'scale(0.0000000000000001)',
295                        'transform'         : 'scale(0.0000000000000001)'
296                    });
297
298                    ghost.append(box);
299                }
300            }
301
302            this.container.append(ghost);
303
304            var rowIndex = 0, colIndex = 0, timeBuff = 0, box2Darr = [[]], boxes = ghost.children(), prevCol;
305
306            if (fromfx == 'boxes-reverse') {
307                boxes = [].reverse.apply(boxes);
308            }
309
310            boxes.each(function() {
311
312                box2Darr[rowIndex][colIndex] = UI.$(this);
313                colIndex++;
314
315                if(colIndex == boxCols) {
316                    rowIndex++;
317                    colIndex = 0;
318                    box2Darr[rowIndex] = [];
319                }
320            });
321
322            for (cols = 0, prevCol = 0; cols < (boxCols * boxRows); cols++) {
323
324                prevCol = cols;
325
326                for (var row = 0; row < boxRows; row++) {
327
328                    if (prevCol >= 0 && prevCol < boxCols) {
329
330                        box2Darr[row][prevCol].css({
331                            'transition': 'all '+this.options.duration+'ms linear '+(50+timeBuff)+'ms',
332                            '-webkit-transition': 'all '+this.options.duration+'ms linear '+(50+timeBuff)+'ms'
333                        });
334                    }
335                    prevCol--;
336                }
337                timeBuff += 100;
338            }
339
340            boxes.last().on(UI.support.transition.end, function() {
341
342                setTimeout(ghost.remove.bind(ghost), 0);
343
344                d.resolve();
345            });
346
347            ghost.width();
348
349            boxes.css({
350                '-webkit-transform': 'scale(1)',
351                'transform': 'scale(1)'
352            });
353
354            return d.promise();
355        },
356
357        'boxes-reverse': function(current, next, dir) {
358            return Animations.boxes.apply(this, [current, next, dir, 'boxes-reverse']);
359        },
360
361        'random-fx': function(){
362
363            var animations = ['slice-up', 'fold', 'puzzle', 'slice-down', 'boxes', 'slice-up-down', 'boxes-reverse'];
364
365            this.fxIndex = (this.fxIndex === undefined ? -1 : this.fxIndex) + 1;
366
367            if (!animations[this.fxIndex]) this.fxIndex = 0;
368
369            return Animations[animations[this.fxIndex]].apply(this, arguments);
370        }
371    });
372
373
374    // helper functions
375
376    // Shuffle an array
377    var shuffle = function(arr) {
378        for (var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x) {}
379        return arr;
380    };
381
382    return UI.slideshow.animations;
383});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.