slick-lightbox-rails 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 231ab7f2e415b0ff7bdef8d8eec670b327359fdd
4
+ data.tar.gz: df759dade0de1dd3e19e60ad98870b65c2bacc5c
5
+ SHA512:
6
+ metadata.gz: 77e956f6a251c314989dc96bf01e5ace8c442a04d0d6bfcbc205900584fcd7045184d40adf62c31a31c75d37bc30c95936229832876d728b2dc200dc9624bf1b
7
+ data.tar.gz: 2a42bc3c9f0fca6addfc6cc185fcbf0f0cebbefe8e0bec0b5f4fef013886ea749ba3fe468699c09d7f144c08612d88e39cf1d32e67568f8460bc363c0ee5d37d
@@ -0,0 +1,51 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /spec/examples.txt
9
+ /test/tmp/
10
+ /test/version_tmp/
11
+ /tmp/
12
+
13
+ # Used by dotenv library to load environment variables.
14
+ # .env
15
+
16
+ ## Specific to RubyMotion:
17
+ .dat*
18
+ .repl_history
19
+ build/
20
+ *.bridgesupport
21
+ build-iPhoneOS/
22
+ build-iPhoneSimulator/
23
+
24
+ ## Specific to RubyMotion (use of CocoaPods):
25
+ #
26
+ # We recommend against adding the Pods directory to your .gitignore. However
27
+ # you should judge for yourself, the pros and cons are mentioned at:
28
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
29
+ #
30
+ # vendor/Pods/
31
+
32
+ ## Documentation cache and generated files:
33
+ /.yardoc/
34
+ /_yardoc/
35
+ /doc/
36
+ /rdoc/
37
+ pkg/
38
+
39
+ ## Environment normalization:
40
+ /.bundle/
41
+ /vendor/bundle
42
+ /lib/bundler/man/
43
+
44
+ # for a library or gem, you might want to ignore these files since the code is
45
+ # intended to run in multiple environments; otherwise, check them in:
46
+ # Gemfile.lock
47
+ # .ruby-version
48
+ # .ruby-gemset
49
+
50
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
51
+ .rvmrc
@@ -0,0 +1,3 @@
1
+ [submodule "slick-lightbox"]
2
+ path = slick-lightbox
3
+ url = git@github.com:mreq/slick-lightbox
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2017 Scott Johnson
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,17 @@
1
+ slick-lightbox-rails
2
+ ====================
3
+ A Rails gem for the [slick-lightbox](https://github.com/mreq/slick-lightbox) project.
4
+
5
+ Usage
6
+ -------
7
+ Install by adding to Gemfile:
8
+ ```
9
+ gem 'slick-lightbox-rails', >= 0.0.2
10
+ ```
11
+
12
+ Run bundler:
13
+ ```
14
+ bundle install
15
+ ```
16
+
17
+ For examples on how to use slick-lightbox, see the [documentation](http://mreq.github.io/slick-lightbox/).
@@ -0,0 +1,76 @@
1
+ Encoding.default_external = "UTF-8" if defined?(Encoding)
2
+ require 'json'
3
+ require 'bundler/gem_tasks'
4
+
5
+ def version
6
+ JSON.load(File.read('slick-lightbox/package.json'))['version']
7
+ end
8
+
9
+ task :submodule do
10
+ sh 'git submodule update --init' unless File.exist?('slick-lightbox/README.md')
11
+ end
12
+
13
+ desc "Remove the app directory"
14
+ task :clean do
15
+ rm_rf 'app'
16
+ source_dir = 'slick-lightbox'
17
+ %x( cd #{source_dir} && git reset --hard HEAD )
18
+ end
19
+
20
+ desc "Compile and minify the Javascript and CSS assets"
21
+ task :build_slick_lightbox => :submodule do
22
+ source_dir = 'slick-lightbox'
23
+ Rake.rake_output_message 'Installing npm dependencies...'
24
+ %x( cd #{source_dir} && npm i )
25
+ Rake.rake_output_message 'Compiling...'
26
+ %x( cd #{source_dir} && gulp build )
27
+ end
28
+
29
+ desc "Update Slick::Lightbox::Rails::SLICK_LIGHTBOX_VERSION"
30
+ task :version => :submodule do
31
+ Rake.rake_output_message "Setting Slick::Lightbox::Rails::SLICK_LIGHTBOX_VERSION = \"#{version}\""
32
+
33
+ versionRb = 'lib/slick/lightbox/rails/version.rb'
34
+ versionRbSource = File.read(versionRb)
35
+ versionDefinition = "SLICK_LIGHTBOX_VERSION = \"#{version}\""
36
+ versionRbSource.sub! /SLICK_LIGHTBOX_VERSION = "[^"]*"/, versionDefinition \
37
+ or fail "Could not find SLICK_LIGHTBOX_VERSION in #{versionRb}"
38
+ File.open(versionRb, 'w') do |out|
39
+ out.write(versionRbSource)
40
+ end
41
+ end
42
+
43
+ desc "Move the build assets to the app dir"
44
+ task :move_to_app_dir => :build_slick_lightbox do
45
+ Rake.rake_output_message 'Moving built files...'
46
+ target_dir_js = 'app/assets/javascripts/slick-lightbox'
47
+ target_dir_css = 'app/assets/stylesheets/slick-lightbox'
48
+
49
+ mkdir_p target_dir_js
50
+ mkdir_p target_dir_css
51
+
52
+ FileUtils.cp(Dir.glob("slick-lightbox/dist/*.js"), target_dir_js)
53
+ FileUtils.cp(Dir.glob("slick-lightbox/dist/*.css"), target_dir_css)
54
+ end
55
+
56
+ desc "Generate root files"
57
+ task :generate_root_files => :move_to_app_dir do
58
+ Rake.rake_output_message 'Generating root files...'
59
+ target_js_file='app/assets/javascripts/slick-lightbox.js'
60
+ target_css_file='app/assets/stylesheets/slick-lightbox.css'
61
+
62
+ File.open(target_js_file, 'w') do |out|
63
+ out.write('//= require slick-lightbox/slick-lightbox')
64
+ end
65
+
66
+ File.open(target_css_file, 'w') do |out|
67
+ out.write('//= require slick-lightbox/slick-lightbox')
68
+ end
69
+ end
70
+
71
+ desc "Clean and then generate everything (default)"
72
+ task :assets => [:clean, :generate_root_files, :version]
73
+
74
+ task :build => :assets
75
+
76
+ task :default => :assets
@@ -0,0 +1 @@
1
+ //= require slick-lightbox/slick-lightbox
@@ -0,0 +1,331 @@
1
+ 'use strict';
2
+ (function ($) {
3
+ var SlickLightbox, defaults;
4
+ SlickLightbox = function () {
5
+ /*
6
+ The core class.
7
+ */
8
+ function SlickLightbox(element, options1) {
9
+ var slickLightbox;
10
+ this.options = options1;
11
+ /* Binds the plugin. */
12
+ this.$element = $(element);
13
+ this.didInit = false;
14
+ slickLightbox = this;
15
+ this.$element.on('click.slickLightbox', this.options.itemSelector, function (e) {
16
+ var $clickedItem, $items;
17
+ e.preventDefault();
18
+ $clickedItem = $(this);
19
+ $clickedItem.blur();
20
+ if (typeof slickLightbox.options.shouldOpen === 'function') {
21
+ if (!slickLightbox.options.shouldOpen(slickLightbox, $clickedItem, e)) {
22
+ return;
23
+ }
24
+ }
25
+ $items = slickLightbox.filterOutSlickClones(slickLightbox.$element.find(slickLightbox.options.itemSelector));
26
+ return slickLightbox.init($items.index($clickedItem));
27
+ });
28
+ }
29
+ SlickLightbox.prototype.init = function (index) {
30
+ /* Creates the lightbox, opens it, binds events and calls `slick`. Accepts `index` of the element, that triggered it (so that we know, on which slide to start slick). */
31
+ this.didInit = true;
32
+ this.detectIE();
33
+ this.createModal();
34
+ this.bindEvents();
35
+ this.initSlick(index);
36
+ return this.open();
37
+ };
38
+ SlickLightbox.prototype.createModalItems = function () {
39
+ /* Creates individual slides to be used with slick. If `options.images` array is specified, it uses it's contents, otherwise loops through elements' `options.itemSelector`. */
40
+ var $items, createItem, itemTemplate, lazyPlaceholder, length, links;
41
+ lazyPlaceholder = this.options.lazyPlaceholder || 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
42
+ itemTemplate = function (source, caption, lazy) {
43
+ var imgSourceParams;
44
+ if (lazy === true) {
45
+ imgSourceParams = ' data-lazy="' + source + '" src="' + lazyPlaceholder + '" ';
46
+ } else {
47
+ imgSourceParams = ' src="' + source + '" ';
48
+ }
49
+ return '<div class="slick-lightbox-slick-item">\n <div class="slick-lightbox-slick-item-inner">\n <img class="slick-lightbox-slick-img" ' + imgSourceParams + ' />\n ' + caption + '\n </div>\n</div>';
50
+ };
51
+ if (this.options.images) {
52
+ links = $.map(this.options.images, function (img) {
53
+ return itemTemplate(img, this.options.lazy);
54
+ });
55
+ } else {
56
+ $items = this.filterOutSlickClones(this.$element.find(this.options.itemSelector));
57
+ length = $items.length;
58
+ createItem = function (_this) {
59
+ return function (el, index) {
60
+ var caption, info, src;
61
+ info = {
62
+ index: index,
63
+ length: length
64
+ };
65
+ caption = _this.getElementCaption(el, info);
66
+ src = _this.getElementSrc(el);
67
+ return itemTemplate(src, caption, _this.options.lazy);
68
+ };
69
+ }(this);
70
+ links = $.map($items, createItem);
71
+ }
72
+ return links;
73
+ };
74
+ SlickLightbox.prototype.createModal = function () {
75
+ /* Creates a `slick`-friendly modal. */
76
+ var html, links;
77
+ links = this.createModalItems();
78
+ html = '<div class="slick-lightbox slick-lightbox-hide-init' + (this.isIE ? ' slick-lightbox-ie' : '') + '" style="background: ' + this.options.background + ';">\n <div class="slick-lightbox-inner">\n <div class="slick-lightbox-slick slick-caption-' + this.options.captionPosition + '">' + links.join('') + '</div>\n <div>\n<div>';
79
+ this.$modalElement = $(html);
80
+ this.$parts = {};
81
+ this.$parts['closeButton'] = $(this.options.layouts.closeButton);
82
+ this.$modalElement.find('.slick-lightbox-inner').append(this.$parts['closeButton']);
83
+ return $('body').append(this.$modalElement);
84
+ };
85
+ SlickLightbox.prototype.initSlick = function (index) {
86
+ /* Runs slick by default, using `options.slick` if provided. If `options.slick` is a function, it gets fired instead of us initializing slick. Merges in initialSlide option. */
87
+ var additional;
88
+ additional = { initialSlide: index };
89
+ if (this.options.lazy) {
90
+ additional.lazyLoad = 'ondemand';
91
+ }
92
+ if (this.options.slick != null) {
93
+ if (typeof this.options.slick === 'function') {
94
+ this.slick = this.options.slick(this.$modalElement);
95
+ } else {
96
+ this.slick = this.$modalElement.find('.slick-lightbox-slick').slick($.extend({}, this.options.slick, additional));
97
+ }
98
+ } else {
99
+ this.slick = this.$modalElement.find('.slick-lightbox-slick').slick(additional);
100
+ }
101
+ return this.$modalElement.trigger('init.slickLightbox');
102
+ };
103
+ SlickLightbox.prototype.open = function () {
104
+ /* Opens the lightbox. */
105
+ if (this.options.useHistoryApi) {
106
+ this.writeHistory();
107
+ }
108
+ this.$element.trigger('show.slickLightbox');
109
+ setTimeout(function (_this) {
110
+ return function () {
111
+ return _this.$element.trigger('shown.slickLightbox');
112
+ };
113
+ }(this), this.getTransitionDuration());
114
+ return this.$modalElement.removeClass('slick-lightbox-hide-init');
115
+ };
116
+ SlickLightbox.prototype.close = function () {
117
+ /* Closes the lightbox and destroys it, maintaining the original element bindings. */
118
+ this.$element.trigger('hide.slickLightbox');
119
+ setTimeout(function (_this) {
120
+ return function () {
121
+ return _this.$element.trigger('hidden.slickLightbox');
122
+ };
123
+ }(this), this.getTransitionDuration());
124
+ this.$modalElement.addClass('slick-lightbox-hide');
125
+ return this.destroy();
126
+ };
127
+ SlickLightbox.prototype.bindEvents = function () {
128
+ /* Binds global events. */
129
+ var resizeSlides;
130
+ resizeSlides = function (_this) {
131
+ return function () {
132
+ var h;
133
+ h = _this.$modalElement.find('.slick-lightbox-inner').height();
134
+ _this.$modalElement.find('.slick-lightbox-slick-item').height(h);
135
+ return _this.$modalElement.find('.slick-lightbox-slick-img, .slick-lightbox-slick-item-inner').css('max-height', Math.round(_this.options.imageMaxHeight * h));
136
+ };
137
+ }(this);
138
+ $(window).on('orientationchange.slickLightbox resize.slickLightbox', resizeSlides);
139
+ if (this.options.useHistoryApi) {
140
+ $(window).on('popstate.slickLightbox', function (_this) {
141
+ return function () {
142
+ return _this.close();
143
+ };
144
+ }(this));
145
+ }
146
+ this.$modalElement.on('init.slickLightbox', resizeSlides);
147
+ this.$modalElement.on('destroy.slickLightbox', function (_this) {
148
+ return function () {
149
+ return _this.destroy();
150
+ };
151
+ }(this));
152
+ this.$element.on('destroy.slickLightbox', function (_this) {
153
+ return function () {
154
+ return _this.destroy(true);
155
+ };
156
+ }(this));
157
+ this.$parts['closeButton'].on('click.slickLightbox touchstart.slickLightbox', function (_this) {
158
+ return function (e) {
159
+ e.preventDefault();
160
+ return _this.close();
161
+ };
162
+ }(this));
163
+ if (this.options.closeOnEscape || this.options.navigateByKeyboard) {
164
+ $(document).on('keydown.slickLightbox', function (_this) {
165
+ return function (e) {
166
+ var code;
167
+ code = e.keyCode ? e.keyCode : e.which;
168
+ if (_this.options.navigateByKeyboard) {
169
+ if (code === 37) {
170
+ _this.slideSlick('left');
171
+ } else if (code === 39) {
172
+ _this.slideSlick('right');
173
+ }
174
+ }
175
+ if (_this.options.closeOnEscape) {
176
+ if (code === 27) {
177
+ return _this.close();
178
+ }
179
+ }
180
+ };
181
+ }(this));
182
+ }
183
+ if (this.options.closeOnBackdropClick) {
184
+ this.$modalElement.on('click.slickLightbox touchstart.slickLightbox', '.slick-lightbox-slick-img', function (e) {
185
+ return e.stopPropagation();
186
+ });
187
+ return this.$modalElement.on('click.slickLightbox', '.slick-lightbox-slick-item', function (_this) {
188
+ return function (e) {
189
+ e.preventDefault();
190
+ return _this.close();
191
+ };
192
+ }(this));
193
+ }
194
+ };
195
+ SlickLightbox.prototype.slideSlick = function (direction) {
196
+ /* Moves the slick prev or next. */
197
+ if (direction === 'left') {
198
+ return this.slick.slick('slickPrev');
199
+ } else {
200
+ return this.slick.slick('slickNext');
201
+ }
202
+ };
203
+ SlickLightbox.prototype.detectIE = function () {
204
+ /* Detects usage of IE8 and lower. */
205
+ var ieversion;
206
+ this.isIE = false;
207
+ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
208
+ ieversion = new Number(RegExp.$1);
209
+ if (ieversion < 9) {
210
+ return this.isIE = true;
211
+ }
212
+ }
213
+ };
214
+ SlickLightbox.prototype.getElementCaption = function (el, info) {
215
+ /* Returns caption for each slide based on the type of `options.caption`. */
216
+ var c;
217
+ if (!this.options.caption) {
218
+ return '';
219
+ }
220
+ c = function () {
221
+ switch (typeof this.options.caption) {
222
+ case 'function':
223
+ return this.options.caption(el, info);
224
+ case 'string':
225
+ return $(el).data(this.options.caption);
226
+ }
227
+ }.call(this);
228
+ return '<span class="slick-lightbox-slick-caption">' + c + '</span>';
229
+ };
230
+ SlickLightbox.prototype.getElementSrc = function (el) {
231
+ /* Returns src for each slide image based on the type of `options.src`. */
232
+ switch (typeof this.options.src) {
233
+ case 'function':
234
+ return this.options.src(el);
235
+ case 'string':
236
+ return $(el).attr(this.options.src);
237
+ default:
238
+ return el.href;
239
+ }
240
+ };
241
+ SlickLightbox.prototype.unbindEvents = function () {
242
+ /* Unbinds global events. */
243
+ $(window).off('.slickLightbox');
244
+ $(document).off('.slickLightbox');
245
+ return this.$modalElement.off('.slickLightbox');
246
+ };
247
+ SlickLightbox.prototype.destroy = function (unbindAnchors) {
248
+ if (unbindAnchors == null) {
249
+ unbindAnchors = false;
250
+ }
251
+ /* Destroys the lightbox and unbinds global events. If `true` is passed as an argument, unbinds the original element as well. */
252
+ if (this.didInit) {
253
+ this.unbindEvents();
254
+ setTimeout(function (_this) {
255
+ return function () {
256
+ return _this.$modalElement.remove();
257
+ };
258
+ }(this), this.options.destroyTimeout);
259
+ }
260
+ if (unbindAnchors) {
261
+ this.$element.off('.slickLightbox');
262
+ return this.$element.off('.slickLightbox', this.options.itemSelector);
263
+ }
264
+ };
265
+ SlickLightbox.prototype.destroyPrevious = function () {
266
+ /* Destroys lightboxes currently in DOM. */
267
+ return $('body').children('.slick-lightbox').trigger('destroy.slickLightbox');
268
+ };
269
+ SlickLightbox.prototype.getTransitionDuration = function () {
270
+ /* Detects the transition duration to know when to remove stuff from DOM etc. */
271
+ var duration;
272
+ if (this.transitionDuration) {
273
+ return this.transitionDuration;
274
+ }
275
+ duration = this.$modalElement.css('transition-duration');
276
+ if (typeof duration === 'undefined') {
277
+ return this.transitionDuration = 500;
278
+ } else {
279
+ return this.transitionDuration = duration.indexOf('ms') > -1 ? parseFloat(duration) : parseFloat(duration) * 1000;
280
+ }
281
+ };
282
+ SlickLightbox.prototype.writeHistory = function () {
283
+ /* Writes an empty state to the history API if supported. */
284
+ return typeof history !== 'undefined' && history !== null ? typeof history.pushState === 'function' ? history.pushState(null, null, '') : void 0 : void 0;
285
+ };
286
+ SlickLightbox.prototype.filterOutSlickClones = function ($items) {
287
+ /* Removes all slick clones from the set of elements. Only does so, if the target element is a slick slider. */
288
+ if (!this.$element.hasClass('slick-slider')) {
289
+ return $items;
290
+ }
291
+ return $items = $items.filter(function () {
292
+ var $item;
293
+ $item = $(this);
294
+ return !$item.hasClass('slick-cloned') && $item.parents('.slick-cloned').length === 0;
295
+ });
296
+ };
297
+ return SlickLightbox;
298
+ }();
299
+ defaults = {
300
+ background: 'rgba(0,0,0,.8)',
301
+ closeOnEscape: true,
302
+ closeOnBackdropClick: true,
303
+ destroyTimeout: 500,
304
+ itemSelector: 'a',
305
+ navigateByKeyboard: true,
306
+ src: false,
307
+ caption: false,
308
+ captionPosition: 'dynamic',
309
+ images: false,
310
+ slick: {},
311
+ useHistoryApi: false,
312
+ layouts: { closeButton: '<button type="button" class="slick-lightbox-close"></button>' },
313
+ shouldOpen: null,
314
+ imageMaxHeight: 0.9,
315
+ lazy: false
316
+ };
317
+ $.fn.slickLightbox = function (options) {
318
+ /* Fires the plugin. */
319
+ options = $.extend({}, defaults, options);
320
+ $(this).each(function () {
321
+ return this.slickLightbox = new SlickLightbox(this, options);
322
+ });
323
+ return this;
324
+ };
325
+ $.fn.unslickLightbox = function () {
326
+ /* Removes everything. */
327
+ return $(this).trigger('destroy.slickLightbox').each(function () {
328
+ return this.slickLightbox = null;
329
+ });
330
+ };
331
+ }(jQuery));
@@ -0,0 +1,2 @@
1
+ "use strict";!function(t){var i,n;i=function(){function i(i,n){var o;this.options=n,this.$element=t(i),this.didInit=!1,o=this,this.$element.on("click.slickLightbox",this.options.itemSelector,function(i){var n,e;if(i.preventDefault(),n=t(this),n.blur(),"function"!=typeof o.options.shouldOpen||o.options.shouldOpen(o,n,i))return e=o.filterOutSlickClones(o.$element.find(o.options.itemSelector)),o.init(e.index(n))})}return i.prototype.init=function(t){return this.didInit=!0,this.detectIE(),this.createModal(),this.bindEvents(),this.initSlick(t),this.open()},i.prototype.createModalItems=function(){var i,n,o,e,s,l;return e=this.options.lazyPlaceholder||"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",o=function(t,i,n){return'<div class="slick-lightbox-slick-item">\n <div class="slick-lightbox-slick-item-inner">\n <img class="slick-lightbox-slick-img" '+(!0===n?' data-lazy="'+t+'" src="'+e+'" ':' src="'+t+'" ')+" />\n "+i+"\n </div>\n</div>"},this.options.images?l=t.map(this.options.images,function(t){return o(t,this.options.lazy)}):(i=this.filterOutSlickClones(this.$element.find(this.options.itemSelector)),s=i.length,n=function(t){return function(i,n){var e,l,r;return l={index:n,length:s},e=t.getElementCaption(i,l),r=t.getElementSrc(i),o(r,e,t.options.lazy)}}(this),l=t.map(i,n)),l},i.prototype.createModal=function(){var i,n;return n=this.createModalItems(),i='<div class="slick-lightbox slick-lightbox-hide-init'+(this.isIE?" slick-lightbox-ie":"")+'" style="background: '+this.options.background+';">\n <div class="slick-lightbox-inner">\n <div class="slick-lightbox-slick slick-caption-'+this.options.captionPosition+'">'+n.join("")+"</div>\n <div>\n<div>",this.$modalElement=t(i),this.$parts={},this.$parts.closeButton=t(this.options.layouts.closeButton),this.$modalElement.find(".slick-lightbox-inner").append(this.$parts.closeButton),t("body").append(this.$modalElement)},i.prototype.initSlick=function(i){var n;return n={initialSlide:i},this.options.lazy&&(n.lazyLoad="ondemand"),null!=this.options.slick?"function"==typeof this.options.slick?this.slick=this.options.slick(this.$modalElement):this.slick=this.$modalElement.find(".slick-lightbox-slick").slick(t.extend({},this.options.slick,n)):this.slick=this.$modalElement.find(".slick-lightbox-slick").slick(n),this.$modalElement.trigger("init.slickLightbox")},i.prototype.open=function(){return this.options.useHistoryApi&&this.writeHistory(),this.$element.trigger("show.slickLightbox"),setTimeout(function(t){return function(){return t.$element.trigger("shown.slickLightbox")}}(this),this.getTransitionDuration()),this.$modalElement.removeClass("slick-lightbox-hide-init")},i.prototype.close=function(){return this.$element.trigger("hide.slickLightbox"),setTimeout(function(t){return function(){return t.$element.trigger("hidden.slickLightbox")}}(this),this.getTransitionDuration()),this.$modalElement.addClass("slick-lightbox-hide"),this.destroy()},i.prototype.bindEvents=function(){var i;if(i=function(t){return function(){var i;return i=t.$modalElement.find(".slick-lightbox-inner").height(),t.$modalElement.find(".slick-lightbox-slick-item").height(i),t.$modalElement.find(".slick-lightbox-slick-img, .slick-lightbox-slick-item-inner").css("max-height",Math.round(t.options.imageMaxHeight*i))}}(this),t(window).on("orientationchange.slickLightbox resize.slickLightbox",i),this.options.useHistoryApi&&t(window).on("popstate.slickLightbox",function(t){return function(){return t.close()}}(this)),this.$modalElement.on("init.slickLightbox",i),this.$modalElement.on("destroy.slickLightbox",function(t){return function(){return t.destroy()}}(this)),this.$element.on("destroy.slickLightbox",function(t){return function(){return t.destroy(!0)}}(this)),this.$parts.closeButton.on("click.slickLightbox touchstart.slickLightbox",function(t){return function(i){return i.preventDefault(),t.close()}}(this)),(this.options.closeOnEscape||this.options.navigateByKeyboard)&&t(document).on("keydown.slickLightbox",function(t){return function(i){var n;if(n=i.keyCode?i.keyCode:i.which,t.options.navigateByKeyboard&&(37===n?t.slideSlick("left"):39===n&&t.slideSlick("right")),t.options.closeOnEscape&&27===n)return t.close()}}(this)),this.options.closeOnBackdropClick)return this.$modalElement.on("click.slickLightbox touchstart.slickLightbox",".slick-lightbox-slick-img",function(t){return t.stopPropagation()}),this.$modalElement.on("click.slickLightbox",".slick-lightbox-slick-item",function(t){return function(i){return i.preventDefault(),t.close()}}(this))},i.prototype.slideSlick=function(t){return"left"===t?this.slick.slick("slickPrev"):this.slick.slick("slickNext")},i.prototype.detectIE=function(){if(this.isIE=!1,/MSIE (\d+\.\d+);/.test(navigator.userAgent)&&new Number(RegExp.$1)<9)return this.isIE=!0},i.prototype.getElementCaption=function(i,n){return this.options.caption?'<span class="slick-lightbox-slick-caption">'+function(){switch(typeof this.options.caption){case"function":return this.options.caption(i,n);case"string":return t(i).data(this.options.caption)}}.call(this)+"</span>":""},i.prototype.getElementSrc=function(i){switch(typeof this.options.src){case"function":return this.options.src(i);case"string":return t(i).attr(this.options.src);default:return i.href}},i.prototype.unbindEvents=function(){return t(window).off(".slickLightbox"),t(document).off(".slickLightbox"),this.$modalElement.off(".slickLightbox")},i.prototype.destroy=function(t){if(null==t&&(t=!1),this.didInit&&(this.unbindEvents(),setTimeout(function(t){return function(){return t.$modalElement.remove()}}(this),this.options.destroyTimeout)),t)return this.$element.off(".slickLightbox"),this.$element.off(".slickLightbox",this.options.itemSelector)},i.prototype.destroyPrevious=function(){return t("body").children(".slick-lightbox").trigger("destroy.slickLightbox")},i.prototype.getTransitionDuration=function(){var t;return this.transitionDuration?this.transitionDuration:(t=this.$modalElement.css("transition-duration"),this.transitionDuration=void 0===t?500:t.indexOf("ms")>-1?parseFloat(t):1e3*parseFloat(t))},i.prototype.writeHistory=function(){return"undefined"!=typeof history&&null!==history&&"function"==typeof history.pushState?history.pushState(null,null,""):void 0},i.prototype.filterOutSlickClones=function(i){return this.$element.hasClass("slick-slider")?i=i.filter(function(){var i;return i=t(this),!i.hasClass("slick-cloned")&&0===i.parents(".slick-cloned").length}):i},i}(),n={background:"rgba(0,0,0,.8)",closeOnEscape:!0,closeOnBackdropClick:!0,destroyTimeout:500,itemSelector:"a",navigateByKeyboard:!0,src:!1,caption:!1,captionPosition:"dynamic",images:!1,slick:{},useHistoryApi:!1,layouts:{closeButton:'<button type="button" class="slick-lightbox-close"></button>'},shouldOpen:null,imageMaxHeight:.9,lazy:!1},t.fn.slickLightbox=function(o){return o=t.extend({},n,o),t(this).each(function(){return this.slickLightbox=new i(this,o)}),this},t.fn.unslickLightbox=function(){return t(this).trigger("destroy.slickLightbox").each(function(){return this.slickLightbox=null})}}(jQuery);
2
+ //# sourceMappingURL=slick-lightbox.min.js.map
@@ -0,0 +1 @@
1
+ //= require slick-lightbox/slick-lightbox
@@ -0,0 +1 @@
1
+ .slick-lightbox{position:fixed;top:0;left:0;z-index:9999;width:100%;height:100%;background:black;-webkit-transition:opacity 0.5s ease;transition:opacity 0.5s ease}.slick-lightbox .slick-loading .slick-list{background-color:transparent}.slick-lightbox .slick-prev{left:15px}.slick-lightbox .slick-next{right:15px}.slick-lightbox-hide{opacity:0}.slick-lightbox-hide.slick-lightbox-ie{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}.slick-lightbox-hide-init{position:absolute;top:-9999px;opacity:0}.slick-lightbox-hide-init.slick-lightbox-ie{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}.slick-lightbox-inner{position:fixed;top:0;left:0;width:100%;height:100%}.slick-lightbox-slick-item{text-align:center;overflow:hidden}.slick-lightbox-slick-item:before{content:'';display:inline-block;height:100%;vertical-align:middle;margin-right:-0.25em}.slick-caption-bottom .slick-lightbox-slick-item .slick-lightbox-slick-item .slick-lightbox-slick-caption{position:absolute;bottom:0;left:0;text-align:center;width:100%;margin-bottom:20px}.slick-caption-dynamic .slick-lightbox-slick-item .slick-lightbox-slick-item .slick-lightbox-slick-caption{display:block;text-align:center}.slick-lightbox-slick-item-inner{display:inline-block;vertical-align:middle;max-width:90%;max-height:90%}.slick-lightbox-slick-img{margin:0 auto;display:block;max-width:90%;max-height:90%}.slick-lightbox-slick-caption{margin:10px 0 0;color:white}.slick-lightbox-close{position:absolute;top:15px;right:15px;display:block;height:20px;width:20px;line-height:0;font-size:0;cursor:pointer;background:transparent;color:transparent;padding:0;border:none}.slick-lightbox-close:focus{outline:none}.slick-lightbox-close:before{font-family:"slick";font-size:20px;line-height:1;color:white;opacity:0.85;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:'×'}
@@ -0,0 +1,2 @@
1
+ require 'slick/lightbox/rails/engine'
2
+ require 'slick/lightbox/rails/version'
@@ -0,0 +1,8 @@
1
+ module Slick
2
+ module Lightbox
3
+ module Rails
4
+ class Engine < ::Rails::Engine
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Slick
2
+ module Lightbox
3
+ module Rails
4
+ VERSION = "0.0.2"
5
+ SLICK_LIGHTBOX_VERSION = "0.2.10"
6
+ end
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: slick-lightbox-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Scott Johnson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-10-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.16
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 3.2.16
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ description: slick-lightbox, a lightbox wrapper for Ken's amazing slick carosel, packaged
42
+ as a gem for simple use within Rails applications
43
+ email:
44
+ - jaywir3@gmail.com
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - ".gitignore"
50
+ - ".gitmodules"
51
+ - LICENSE
52
+ - README.md
53
+ - Rakefile
54
+ - app/assets/javascripts/slick-lightbox.js
55
+ - app/assets/javascripts/slick-lightbox/slick-lightbox.js
56
+ - app/assets/javascripts/slick-lightbox/slick-lightbox.min.js
57
+ - app/assets/stylesheets/slick-lightbox.css
58
+ - app/assets/stylesheets/slick-lightbox/slick-lightbox.css
59
+ - lib/slick/lightbox/rails.rb
60
+ - lib/slick/lightbox/rails/engine.rb
61
+ - lib/slick/lightbox/rails/version.rb
62
+ homepage: https://github.com/jwir3/slick-lightbox-rails
63
+ licenses:
64
+ - MIT
65
+ metadata: {}
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 1.3.6
80
+ requirements: []
81
+ rubyforge_project:
82
+ rubygems_version: 2.6.8
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: A lightbox wrapper for Ken's amazing slick carosel.
86
+ test_files: []