j1-template 2023.7.0 → 2023.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/modules/searcher/procedures/topsearch.proc +2 -1
  3. data/_includes/themes/j1/procedures/global/create_bs_button.proc +0 -1
  4. data/_includes/themes/j1/procedures/global/create_word_cloud.proc +3 -2
  5. data/_includes/themes/j1/procedures/global/date-german.proc +2 -7
  6. data/_includes/themes/j1/procedures/global/get_category.proc +13 -19
  7. data/_includes/themes/j1/procedures/global/get_category_item.proc +29 -33
  8. data/_includes/themes/j1/procedures/global/get_documents_dir.proc +8 -8
  9. data/_includes/themes/j1/procedures/global/get_page_url.proc +9 -14
  10. data/_includes/themes/j1/procedures/global/select_color.proc +12 -17
  11. data/_includes/themes/j1/procedures/global/select_font_size.proc +31 -35
  12. data/_includes/themes/j1/procedures/global/select_icon_size.proc +38 -40
  13. data/_includes/themes/j1/procedures/global/select_location.proc +56 -59
  14. data/_includes/themes/j1/procedures/global/set_base_vars_folders.proc +2 -4
  15. data/_includes/themes/j1/procedures/global/set_image_block.proc +4 -2
  16. data/_includes/themes/j1/procedures/global/setup.proc +8 -3
  17. data/assets/data/masonry.html +13 -13
  18. data/assets/themes/j1/adapter/js/masterslider.js +2 -1
  19. data/assets/themes/j1/adapter/js/slick.js +13 -10
  20. data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +70 -0
  21. data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
  22. data/assets/themes/j1/core/js/template.js +1339 -3
  23. data/assets/themes/j1/core/js/template.min.js +7 -7
  24. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  25. data/assets/themes/j1/modules/carousel/css/theme/uno.css +5 -0
  26. data/assets/themes/j1/modules/carousel/css/theme/uno.min.css +1 -1
  27. data/assets/themes/j1/modules/masonry/css/theme/readme +1 -0
  28. data/assets/themes/j1/modules/masterslider/css/theme/uno.css +2 -3
  29. data/assets/themes/j1/modules/masterslider/css/theme/uno.min.css +1 -1
  30. data/assets/themes/j1/modules/slick/lightbox/css/theme/uno.css +13 -2
  31. data/assets/themes/j1/modules/slick/lightbox/css/theme/uno.min.css +1 -1
  32. data/assets/themes/j1/modules/slick/lightbox/js/slick-lightbox.js +373 -347
  33. data/assets/themes/j1/modules/slick/slider/css/theme/uno.css +20 -51
  34. data/assets/themes/j1/modules/slick/slider/css/theme/uno.min.css +2 -2
  35. data/lib/j1/version.rb +1 -1
  36. data/lib/starter_web/Gemfile +2 -2
  37. data/lib/starter_web/README.md +5 -5
  38. data/lib/starter_web/_config.yml +1 -1
  39. data/lib/starter_web/_data/blocks/banner.yml +8 -9
  40. data/lib/starter_web/_data/blocks/footer.yml +3 -3
  41. data/lib/starter_web/_data/modules/masonry.yml +9 -1
  42. data/lib/starter_web/_data/modules/masterslider.yml +69 -116
  43. data/lib/starter_web/_data/modules/navigator_menu.yml +58 -51
  44. data/lib/starter_web/_data/resources.yml +3 -3
  45. data/lib/starter_web/_data/templates/feed.xml +1 -1
  46. data/lib/starter_web/_includes/attributes.asciidoc +1 -0
  47. data/lib/starter_web/_plugins/asciidoctor/callout.rb +2 -2
  48. data/lib/starter_web/_plugins/asciidoctor/masterslider-block.rb +1 -1
  49. data/lib/starter_web/_plugins/asciidoctor/slick-block.rb +1 -1
  50. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  51. data/lib/starter_web/assets/images/collections/books/biography/a_life_in_questions.jpg +0 -0
  52. data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +5 -5
  53. data/lib/starter_web/index.html +6 -6
  54. data/lib/starter_web/package.json +1 -1
  55. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +0 -1
  56. data/lib/starter_web/pages/public/tools/previewer/preview_bootstrap_theme.adoc +148 -140
  57. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  58. data/lib/starter_web/utilsrv/package.json +1 -1
  59. metadata +3 -75
  60. data/assets/themes/j1/modules/carousel/js/carousel.js +0 -1517
  61. data/assets/themes/j1/modules/carousel/js/carousel.min.js +0 -57
  62. data/assets/themes/j1/modules/masonry/css/theme/uno.css +0 -35
  63. data/assets/themes/j1/modules/masonry/css/theme/uno.min.css +0 -15
  64. data/assets/themes/j1/modules/speak2me/LICENSE +0 -21
  65. data/assets/themes/j1/modules/speak2me/js/speak2me.js +0 -947
  66. data/assets/themes/j1/modules/speak2me/js/speak2me.min.js +0 -26
  67. data/lib/starter_web/_data/modules/buymeacoffee.yml +0 -30
  68. data/lib/starter_web/_data/modules/defaults/buymeacoffee.yml +0 -30
  69. data/lib/starter_web/assets/images/modules/masterslider/slider_5/ms-free-food-restaurant-140x80.jpg +0 -0
  70. data/lib/starter_web/assets/images/modules/masterslider/slider_5/ms-free-food-restaurant.jpg +0 -0
  71. data/lib/starter_web/assets/images/modules/masterslider/slider_5/ms-free-food-single-man-140x80.jpg +0 -0
  72. data/lib/starter_web/assets/images/modules/masterslider/slider_5/ms-free-food-single-man.jpg +0 -0
  73. data/lib/starter_web/assets/images/modules/masterslider/slider_5/ms-free-food-single-woman-140x80.jpg +0 -0
  74. data/lib/starter_web/assets/images/modules/masterslider/slider_5/ms-free-food-single-woman.jpg +0 -0
  75. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/attributes.asciidoc +0 -58
  76. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/accordion.asciidoc +0 -34
  77. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/alerts.asciidoc +0 -15
  78. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/badges.asciidoc +0 -9
  79. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/body.asciidoc +0 -14
  80. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/breadcrumbs.asciidoc +0 -14
  81. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/buttons.asciidoc +0 -75
  82. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/cards.asciidoc +0 -22
  83. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/carousel.asciidoc +0 -37
  84. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/close.asciidoc +0 -15
  85. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/code.asciidoc +0 -14
  86. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/color_system.asciidoc +0 -353
  87. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/components.asciidoc +0 -69
  88. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/dropdowns.asciidoc +0 -53
  89. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/figures.asciidoc +0 -5
  90. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/forms.asciidoc +0 -270
  91. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/grid.asciidoc +0 -49
  92. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/links.asciidoc +0 -21
  93. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/list_groups.asciidoc +0 -28
  94. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/modals.asciidoc +0 -43
  95. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navbar.asciidoc +0 -45
  96. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navs.asciidoc +0 -28
  97. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/offcanvas.asciidoc +0 -16
  98. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/options.asciidoc +0 -30
  99. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/pagination.asciidoc +0 -40
  100. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/paragraph.asciidoc +0 -5
  101. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/placeholders.asciidoc +0 -5
  102. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/popovers.asciidoc +0 -28
  103. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/position.asciidoc +0 -8
  104. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/progress_bars.asciidoc +0 -12
  105. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spacing.asciidoc +0 -14
  106. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spinners.asciidoc +0 -12
  107. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tables.asciidoc +0 -55
  108. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/thumbnails.asciidoc +0 -9
  109. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/toasts.asciidoc +0 -18
  110. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tooltips.asciidoc +0 -28
  111. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/typography.asciidoc +0 -115
  112. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/z_index.asciidoc +0 -26
  113. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/_table.asciidoc +0 -9
  114. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/accordion.asciidoc +0 -87
  115. data/lib/starter_web/pages/public/learn/bs_sass_variables/bs_sass_variables.adoc +0 -267
  116. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/attributes.asciidoc +0 -59
  117. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/100_chapter.asciidoc +0 -541
  118. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/200_chapter.asciidoc +0 -33
  119. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/build_command_options.asciidoc +0 -72
  120. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/files_and_folders.asciidoc +0 -66
  121. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_configuration_options.asciidoc +0 -63
  122. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_variables.asciidoc +0 -26
  123. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/page_variables.asciidoc +0 -54
  124. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/serve_command_options.asciidoc +0 -45
  125. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/site_variables.asciidoc +0 -59
  126. data/lib/starter_web/pages/public/learn/core_web_vitals/core_web_vitals.adoc +0 -447
  127. data/lib/starter_web/pages/public/learn/roundtrip/lunr_search.1.asciidoc +0 -460
  128. data/lib/starter_web/pages/public/manuals/speak2me.adoc +0 -412
  129. data/lib/starter_web/pages/public/tools/cheatsheet/gem.adoc +0 -259
  130. data/lib/starter_web/pages/public/tools/cheatsheet/git.adoc +0 -1462
  131. data/lib/starter_web/pages/public/tools/cheatsheet/j1.adoc +0 -177
  132. data/lib/starter_web/pages/public/tools/cheatsheet/yaml.adoc +0 -522
@@ -1,353 +1,379 @@
1
1
  'use strict';
2
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.$element.find(slickLightbox.options.itemSelector);
26
- if (slickLightbox.elementIsSlick()) {
27
- $items = slickLightbox.filterOutSlickClones($items);
28
- $clickedItem = slickLightbox.handlePossibleCloneClick($clickedItem, $items);
29
- }
30
- return slickLightbox.init($items.index($clickedItem));
31
- });
32
- }
33
- SlickLightbox.prototype.init = function (index) {
34
- /* 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). */
35
- this.didInit = true;
36
- this.detectIE();
37
- this.createModal();
38
- this.bindEvents();
39
- this.initSlick(index);
40
- return this.open();
41
- };
42
- SlickLightbox.prototype.createModalItems = function () {
43
- /* 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`. */
44
- var $items, createItem, itemTemplate, lazyPlaceholder, length, links;
45
- lazyPlaceholder = this.options.lazyPlaceholder || 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
46
- itemTemplate = function (source, caption, lazy) {
47
- var imgSourceParams;
48
- if (lazy === true) {
49
- imgSourceParams = ' data-lazy="' + source + '" src="' + lazyPlaceholder + '" ';
50
- } else {
51
- imgSourceParams = ' src="' + source + '" ';
52
- }
53
- 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>';
54
- };
55
- if (this.options.images) {
56
- links = $.map(this.options.images, function (_this) {
57
- return function (img) {
58
- return itemTemplate(img, _this.options.lazy);
59
- };
60
- }(this));
61
- } else {
62
- $items = this.filterOutSlickClones(this.$element.find(this.options.itemSelector));
63
- length = $items.length;
64
- createItem = function (_this) {
65
- return function (el, index) {
66
- var caption, info, src;
67
- info = {
68
- index: index,
69
- length: length
70
- };
71
- caption = _this.getElementCaption(el, info);
72
- src = _this.getElementSrc(el);
73
- return itemTemplate(src, caption, _this.options.lazy);
74
- };
75
- }(this);
76
- links = $.map($items, createItem);
77
- }
78
- return links;
79
- };
80
- SlickLightbox.prototype.createModal = function () {
81
- /* Creates a `slick`-friendly modal. */
82
- var html, links;
83
- links = this.createModalItems();
84
- 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>';
85
- this.$modalElement = $(html);
86
- this.$parts = {};
87
- this.$parts['closeButton'] = $(this.options.layouts.closeButton);
88
- this.$modalElement.find('.slick-lightbox-inner').append(this.$parts['closeButton']);
89
- return $('body').append(this.$modalElement);
90
- };
91
- SlickLightbox.prototype.initSlick = function (index) {
92
- /* 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. */
93
- var additional;
94
- additional = { initialSlide: index };
95
- if (this.options.lazy) {
96
- additional.lazyLoad = 'ondemand';
97
- }
98
- if (this.options.slick != null) {
99
- if (typeof this.options.slick === 'function') {
100
- this.slick = this.options.slick(this.$modalElement);
101
- } else {
102
- this.slick = this.$modalElement.find('.slick-lightbox-slick').slick($.extend({}, this.options.slick, additional));
103
- }
104
- } else {
105
- this.slick = this.$modalElement.find('.slick-lightbox-slick').slick(additional);
106
- }
107
- return this.$modalElement.trigger('init.slickLightbox');
108
- };
109
- SlickLightbox.prototype.open = function () {
110
- /* Opens the lightbox. */
111
- if (this.options.useHistoryApi) {
112
- this.writeHistory();
113
- }
114
- this.$element.trigger('show.slickLightbox');
115
- setTimeout(function (_this) {
116
- return function () {
117
- return _this.$element.trigger('shown.slickLightbox');
118
- };
119
- }(this), this.getTransitionDuration());
120
- return this.$modalElement.removeClass('slick-lightbox-hide-init');
121
- };
122
- SlickLightbox.prototype.close = function () {
123
- /* Closes the lightbox and destroys it, maintaining the original element bindings. */
124
- this.$element.trigger('hide.slickLightbox');
125
- setTimeout(function (_this) {
126
- return function () {
127
- return _this.$element.trigger('hidden.slickLightbox');
128
- };
129
- }(this), this.getTransitionDuration());
130
- this.$modalElement.addClass('slick-lightbox-hide');
131
- return this.destroy();
132
- };
133
- SlickLightbox.prototype.bindEvents = function () {
134
- /* Binds global events. */
135
- var resizeSlides;
136
- resizeSlides = function (_this) {
137
- return function () {
138
- var h;
139
- h = _this.$modalElement.find('.slick-lightbox-inner').height();
140
- _this.$modalElement.find('.slick-lightbox-slick-item').height(h);
141
- return _this.$modalElement.find('.slick-lightbox-slick-img, .slick-lightbox-slick-item-inner').css('max-height', Math.round(_this.options.imageMaxHeight * h));
142
- };
143
- }(this);
144
- $(window).on('orientationchange.slickLightbox resize.slickLightbox', resizeSlides);
145
- if (this.options.useHistoryApi) {
146
- $(window).on('popstate.slickLightbox', function (_this) {
147
- return function () {
148
- return _this.close();
149
- };
150
- }(this));
151
- }
152
- this.$modalElement.on('init.slickLightbox', resizeSlides);
153
- this.$modalElement.on('destroy.slickLightbox', function (_this) {
154
- return function () {
155
- return _this.destroy();
156
- };
157
- }(this));
158
- this.$element.on('destroy.slickLightbox', function (_this) {
159
- return function () {
160
- return _this.destroy(true);
161
- };
162
- }(this));
163
- this.$parts['closeButton'].on('click.slickLightbox touchstart.slickLightbox', function (_this) {
164
- return function (e) {
165
- e.preventDefault();
166
- return _this.close();
167
- };
168
- }(this));
169
- if (this.options.closeOnEscape || this.options.navigateByKeyboard) {
170
- $(document).on('keydown.slickLightbox', function (_this) {
171
- return function (e) {
172
- var code;
173
- code = e.keyCode ? e.keyCode : e.which;
174
- if (_this.options.navigateByKeyboard) {
175
- if (code === 37) {
176
- _this.slideSlick('left');
177
- } else if (code === 39) {
178
- _this.slideSlick('right');
179
- }
180
- }
181
- if (_this.options.closeOnEscape) {
182
- if (code === 27) {
183
- return _this.close();
184
- }
185
- }
186
- };
187
- }(this));
188
- }
189
- if (this.options.closeOnBackdropClick) {
190
- this.$modalElement.on('click.slickLightbox touchstart.slickLightbox', '.slick-lightbox-slick-img', function (e) {
191
- return e.stopPropagation();
192
- });
193
- return this.$modalElement.on('click.slickLightbox', '.slick-lightbox-slick-item', function (_this) {
194
- return function (e) {
195
- e.preventDefault();
196
- return _this.close();
197
- };
198
- }(this));
199
- }
200
- };
201
- SlickLightbox.prototype.slideSlick = function (direction) {
202
- /* Moves the slick prev or next. */
203
- if (direction === 'left') {
204
- return this.slick.slick('slickPrev');
205
- } else {
206
- return this.slick.slick('slickNext');
207
- }
208
- };
209
- SlickLightbox.prototype.detectIE = function () {
210
- /* Detects usage of IE8 and lower. */
211
- var ieversion;
212
- this.isIE = false;
213
- if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
214
- ieversion = new Number(RegExp.$1);
215
- if (ieversion < 9) {
216
- return this.isIE = true;
217
- }
218
- }
219
- };
220
- SlickLightbox.prototype.getElementCaption = function (el, info) {
221
- /* Returns caption for each slide based on the type of `options.caption`. */
222
- var c;
223
- if (!this.options.caption) {
224
- return '';
225
- }
226
- c = function () {
227
- switch (typeof this.options.caption) {
228
- case 'function':
229
- return this.options.caption(el, info);
230
- case 'string':
231
- return $(el).data(this.options.caption);
232
- }
233
- }.call(this);
234
- return '<span class="slick-lightbox-slick-caption">' + c + '</span>';
235
- };
236
- SlickLightbox.prototype.getElementSrc = function (el) {
237
- /* Returns src for each slide image based on the type of `options.src`. */
238
- switch (typeof this.options.src) {
239
- case 'function':
240
- return this.options.src(el);
241
- case 'string':
242
- return $(el).attr(this.options.src);
243
- default:
244
- return el.href;
245
- }
246
- };
247
- SlickLightbox.prototype.unbindEvents = function () {
248
- /* Unbinds global events. */
249
- $(window).off('.slickLightbox');
250
- $(document).off('.slickLightbox');
251
- return this.$modalElement.off('.slickLightbox');
252
- };
253
- SlickLightbox.prototype.destroy = function (unbindAnchors) {
254
- if (unbindAnchors == null) {
255
- unbindAnchors = false;
256
- }
257
- /* Destroys the lightbox and unbinds global events. If `true` is passed as an argument, unbinds the original element as well. */
258
- if (this.didInit) {
259
- this.unbindEvents();
260
- setTimeout(function (_this) {
261
- return function () {
262
- return _this.$modalElement.remove();
263
- };
264
- }(this), this.options.destroyTimeout);
265
- }
266
- if (unbindAnchors) {
267
- this.$element.off('.slickLightbox');
268
- return this.$element.off('.slickLightbox', this.options.itemSelector);
269
- }
270
- };
271
- SlickLightbox.prototype.destroyPrevious = function () {
272
- /* Destroys lightboxes currently in DOM. */
273
- return $('body').children('.slick-lightbox').trigger('destroy.slickLightbox');
274
- };
275
- SlickLightbox.prototype.getTransitionDuration = function () {
276
- /* Detects the transition duration to know when to remove stuff from DOM etc. */
277
- var duration;
278
- if (this.transitionDuration) {
279
- return this.transitionDuration;
280
- }
281
- duration = this.$modalElement.css('transition-duration');
282
- if (typeof duration === 'undefined') {
283
- return this.transitionDuration = 500;
284
- } else {
285
- return this.transitionDuration = duration.indexOf('ms') > -1 ? parseFloat(duration) : parseFloat(duration) * 1000;
286
- }
287
- };
288
- SlickLightbox.prototype.writeHistory = function () {
289
- /* Writes an empty state to the history API if supported. */
290
- return typeof history !== 'undefined' && history !== null ? typeof history.pushState === 'function' ? history.pushState(null, null, '') : void 0 : void 0;
291
- };
292
- SlickLightbox.prototype.filterOutSlickClones = function ($items) {
293
- /* Removes all slick clones from the set of elements. Only does so, if the target element is a slick slider. */
294
- if (!this.elementIsSlick()) {
295
- return $items;
296
- }
297
- return $items = $items.filter(function () {
298
- var $item;
299
- $item = $(this);
300
- return !$item.hasClass('slick-cloned') && $item.parents('.slick-cloned').length === 0;
301
- });
302
- };
303
- SlickLightbox.prototype.handlePossibleCloneClick = function ($clickedItem, $items) {
304
- var href;
305
- if (!this.elementIsSlick()) {
306
- return $clickedItem;
307
- }
308
- if (!$clickedItem.closest('.slick-slide').hasClass('slick-cloned')) {
309
- return $clickedItem;
310
- }
311
- href = $clickedItem.attr('href');
312
- return $items.filter(function () {
313
- return $(this).attr('href') === href;
314
- }).first();
315
- };
316
- SlickLightbox.prototype.elementIsSlick = function () {
317
- return this.$element.hasClass('slick-slider');
318
- };
319
- return SlickLightbox;
320
- }();
321
- defaults = {
322
- background: 'rgba(0,0,0,.8)',
323
- closeOnEscape: true,
324
- closeOnBackdropClick: true,
325
- destroyTimeout: 500,
326
- itemSelector: 'a',
327
- navigateByKeyboard: true,
328
- src: false,
329
- caption: false,
330
- captionPosition: 'dynamic',
331
- images: false,
332
- slick: {},
333
- useHistoryApi: false,
334
- layouts: { closeButton: '<button type="button" class="slick-lightbox-close"></button>' },
335
- shouldOpen: null,
336
- imageMaxHeight: 0.9,
337
- lazy: false
3
+
4
+ var SlickLightbox, defaults;
5
+
6
+ SlickLightbox = function () {
7
+ /* The core class */
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.$element.find(slickLightbox.options.itemSelector);
26
+ if (slickLightbox.elementIsSlick()) {
27
+ $items = slickLightbox.filterOutSlickClones($items);
28
+ $clickedItem = slickLightbox.handlePossibleCloneClick($clickedItem, $items);
29
+ }
30
+ return slickLightbox.init($items.index($clickedItem));
31
+ });
32
+ }
33
+
34
+ SlickLightbox.prototype.init = function (index) {
35
+ /* 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). */
36
+ this.didInit = true;
37
+ this.detectIE();
38
+ this.createModal();
39
+ this.bindEvents();
40
+ this.initSlick(index);
41
+ return this.open();
42
+ };
43
+
44
+ SlickLightbox.prototype.createModalItems = function () {
45
+ /* 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`. */
46
+ var $items, createItem, itemTemplate, lazyPlaceholder, length, links;
47
+ lazyPlaceholder = this.options.lazyPlaceholder || 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
48
+ itemTemplate = function (source, caption, lazy) {
49
+ var imgSourceParams;
50
+ if (lazy === true) {
51
+ imgSourceParams = ' data-lazy="' + source + '" src="' + lazyPlaceholder + '" ';
52
+ } else {
53
+ imgSourceParams = ' src="' + source + '" ';
54
+ }
55
+ 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>';
56
+ };
57
+ if (this.options.images) {
58
+ links = $.map(this.options.images, function (_this) {
59
+ return function (img) {
60
+ return itemTemplate(img, _this.options.lazy);
61
+ };
62
+ }(this));
63
+ } else {
64
+ $items = this.filterOutSlickClones(this.$element.find(this.options.itemSelector));
65
+ length = $items.length;
66
+ createItem = function (_this) {
67
+ return function (el, index) {
68
+ var caption, info, src;
69
+ info = {
70
+ index: index,
71
+ length: length
72
+ };
73
+ caption = _this.getElementCaption(el, info);
74
+ src = _this.getElementSrc(el);
75
+ return itemTemplate(src, caption, _this.options.lazy);
76
+ };
77
+ }(this);
78
+ links = $.map($items, createItem);
79
+ }
80
+ return links;
338
81
  };
339
- $.fn.slickLightbox = function (options) {
340
- /* Fires the plugin. */
341
- options = $.extend({}, defaults, options);
342
- $(this).each(function () {
343
- return this.slickLightbox = new SlickLightbox(this, options);
344
- });
345
- return this;
82
+
83
+ SlickLightbox.prototype.createModal = function () {
84
+ /* Creates a `slick`-friendly modal. */
85
+ var html, links;
86
+ links = this.createModalItems();
87
+ 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>';
88
+ this.$modalElement = $(html);
89
+ this.$parts = {};
90
+ this.$parts['closeButton'] = $(this.options.layouts.closeButton);
91
+ this.$modalElement.find('.slick-lightbox-inner').append(this.$parts['closeButton']);
92
+ return $('body').append(this.$modalElement);
346
93
  };
347
- $.fn.unslickLightbox = function () {
348
- /* Removes everything. */
349
- return $(this).trigger('destroy.slickLightbox').each(function () {
350
- return this.slickLightbox = null;
351
- });
94
+
95
+ SlickLightbox.prototype.initSlick = function (index) {
96
+ /* 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. */
97
+ var additional;
98
+ additional = { initialSlide: index };
99
+ if (this.options.lazy) {
100
+ additional.lazyLoad = 'ondemand';
101
+ }
102
+ if (this.options.slick != null) {
103
+ if (typeof this.options.slick === 'function') {
104
+ this.slick = this.options.slick(this.$modalElement);
105
+ } else {
106
+ this.slick = this.$modalElement.find('.slick-lightbox-slick').slick($.extend({}, this.options.slick, additional));
107
+ }
108
+ } else {
109
+ this.slick = this.$modalElement.find('.slick-lightbox-slick').slick(additional);
110
+ }
111
+ return this.$modalElement.trigger('init.slickLightbox');
352
112
  };
113
+
114
+ SlickLightbox.prototype.open = function () {
115
+ /* Opens the lightbox. */
116
+ if (this.options.useHistoryApi) {
117
+ this.writeHistory();
118
+ }
119
+ this.$element.trigger('show.slickLightbox');
120
+ setTimeout(function (_this) {
121
+ return function () {
122
+ return _this.$element.trigger('shown.slickLightbox');
123
+ };
124
+ }(this), this.getTransitionDuration());
125
+ return this.$modalElement.removeClass('slick-lightbox-hide-init');
126
+ };
127
+
128
+ SlickLightbox.prototype.close = function () {
129
+ /* Closes the lightbox and destroys it, maintaining the original element bindings. */
130
+ this.$element.trigger('hide.slickLightbox');
131
+ setTimeout(function (_this) {
132
+ return function () {
133
+ return _this.$element.trigger('hidden.slickLightbox');
134
+ };
135
+ }(this), this.getTransitionDuration());
136
+ this.$modalElement.addClass('slick-lightbox-hide');
137
+ return this.destroy();
138
+ };
139
+
140
+ SlickLightbox.prototype.bindEvents = function () {
141
+ /* Binds global events. */
142
+ var resizeSlides;
143
+ resizeSlides = function (_this) {
144
+ return function () {
145
+ var h;
146
+ h = _this.$modalElement.find('.slick-lightbox-inner').height();
147
+ _this.$modalElement.find('.slick-lightbox-slick-item').height(h);
148
+ return _this.$modalElement.find('.slick-lightbox-slick-img, .slick-lightbox-slick-item-inner').css('max-height', Math.round(_this.options.imageMaxHeight * h));
149
+ };
150
+ }(this);
151
+ $(window).on('orientationchange.slickLightbox resize.slickLightbox', resizeSlides);
152
+ if (this.options.useHistoryApi) {
153
+ $(window).on('popstate.slickLightbox', function (_this) {
154
+ return function () {
155
+ return _this.close();
156
+ };
157
+ }(this));
158
+ }
159
+ this.$modalElement.on('init.slickLightbox', resizeSlides);
160
+ this.$modalElement.on('destroy.slickLightbox', function (_this) {
161
+ return function () {
162
+ return _this.destroy();
163
+ };
164
+ }(this));
165
+ this.$element.on('destroy.slickLightbox', function (_this) {
166
+ return function () {
167
+ return _this.destroy(true);
168
+ };
169
+ }(this));
170
+ this.$parts['closeButton'].on('click.slickLightbox touchstart.slickLightbox', function (_this) {
171
+ return function (e) {
172
+ e.preventDefault();
173
+ return _this.close();
174
+ };
175
+ }(this));
176
+ if (this.options.closeOnEscape || this.options.navigateByKeyboard) {
177
+ $(document).on('keydown.slickLightbox', function (_this) {
178
+ return function (e) {
179
+ var code;
180
+ code = e.keyCode ? e.keyCode : e.which;
181
+ if (_this.options.navigateByKeyboard) {
182
+ if (code === 37) {
183
+ _this.slideSlick('left');
184
+ } else if (code === 39) {
185
+ _this.slideSlick('right');
186
+ }
187
+ }
188
+ if (_this.options.closeOnEscape) {
189
+ if (code === 27) {
190
+ return _this.close();
191
+ }
192
+ }
193
+ };
194
+ }(this));
195
+ }
196
+ if (this.options.closeOnBackdropClick) {
197
+ this.$modalElement.on('click.slickLightbox touchstart.slickLightbox', '.slick-lightbox-slick-img', function (e) {
198
+ return e.stopPropagation();
199
+ });
200
+ return this.$modalElement.on('click.slickLightbox', '.slick-lightbox-slick-item', function (_this) {
201
+ return function (e) {
202
+ e.preventDefault();
203
+ return _this.close();
204
+ };
205
+ }(this));
206
+ }
207
+ };
208
+
209
+ SlickLightbox.prototype.slideSlick = function (direction) {
210
+ /* Moves the slick prev or next. */
211
+ if (direction === 'left') {
212
+ return this.slick.slick('slickPrev');
213
+ } else {
214
+ return this.slick.slick('slickNext');
215
+ }
216
+ };
217
+
218
+ SlickLightbox.prototype.detectIE = function () {
219
+ /* Detects usage of IE8 and lower. */
220
+ var ieversion;
221
+ this.isIE = false;
222
+ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
223
+ ieversion = new Number(RegExp.$1);
224
+ if (ieversion < 9) {
225
+ return this.isIE = true;
226
+ }
227
+ }
228
+ };
229
+
230
+ SlickLightbox.prototype.getElementCaption = function (el, info) {
231
+ /* Returns caption for each slide based on the type of `options.caption`. */
232
+ var c;
233
+ if (!this.options.caption) {
234
+ return '';
235
+ }
236
+ c = function () {
237
+ switch (typeof this.options.caption) {
238
+ case 'function':
239
+ return this.options.caption(el, info);
240
+ case 'string':
241
+ return $(el).data(this.options.caption);
242
+ }
243
+ }.call(this);
244
+ return '<span class="slick-lightbox-slick-caption">' + c + '</span>';
245
+ };
246
+
247
+ SlickLightbox.prototype.getElementSrc = function (el) {
248
+ /* Returns src for each slide image based on the type of `options.src`. */
249
+ switch (typeof this.options.src) {
250
+ case 'function':
251
+ return this.options.src(el);
252
+ case 'string':
253
+ return $(el).attr(this.options.src);
254
+ default:
255
+ return el.href;
256
+ }
257
+ };
258
+
259
+ SlickLightbox.prototype.unbindEvents = function () {
260
+ /* Unbinds global events. */
261
+ $(window).off('.slickLightbox');
262
+ $(document).off('.slickLightbox');
263
+ return this.$modalElement.off('.slickLightbox');
264
+ };
265
+
266
+ SlickLightbox.prototype.destroy = function (unbindAnchors) {
267
+ if (unbindAnchors == null) {
268
+ unbindAnchors = false;
269
+ }
270
+ /* Destroys the lightbox and unbinds global events. If `true` is passed as an argument, unbinds the original element as well. */
271
+ if (this.didInit) {
272
+ this.unbindEvents();
273
+ setTimeout(function (_this) {
274
+ return function () {
275
+ return _this.$modalElement.remove();
276
+ };
277
+ }(this), this.options.destroyTimeout);
278
+ }
279
+ if (unbindAnchors) {
280
+ this.$element.off('.slickLightbox');
281
+ return this.$element.off('.slickLightbox', this.options.itemSelector);
282
+ }
283
+ };
284
+
285
+ SlickLightbox.prototype.destroyPrevious = function () {
286
+ /* Destroys lightboxes currently in DOM. */
287
+ return $('body').children('.slick-lightbox').trigger('destroy.slickLightbox');
288
+ };
289
+
290
+ SlickLightbox.prototype.getTransitionDuration = function () {
291
+ /* Detects the transition duration to know when to remove stuff from DOM etc. */
292
+ var duration;
293
+ if (this.transitionDuration) {
294
+ return this.transitionDuration;
295
+ }
296
+ duration = this.$modalElement.css('transition-duration');
297
+ if (typeof duration === 'undefined') {
298
+ return this.transitionDuration = 500;
299
+ } else {
300
+ return this.transitionDuration = duration.indexOf('ms') > -1 ? parseFloat(duration) : parseFloat(duration) * 1000;
301
+ }
302
+ };
303
+
304
+ SlickLightbox.prototype.writeHistory = function () {
305
+ /* Writes an empty state to the history API if supported. */
306
+ return typeof history !== 'undefined' && history !== null ? typeof history.pushState === 'function' ? history.pushState(null, null, '') : void 0 : void 0;
307
+ };
308
+
309
+ SlickLightbox.prototype.filterOutSlickClones = function ($items) {
310
+ /* Removes all slick clones from the set of elements. Only does so, if the target element is a slick slider. */
311
+ if (!this.elementIsSlick()) {
312
+ return $items;
313
+ }
314
+ return $items = $items.filter(function () {
315
+ var $item;
316
+ $item = $(this);
317
+ return !$item.hasClass('slick-cloned') && $item.parents('.slick-cloned').length === 0;
318
+ });
319
+ };
320
+
321
+ SlickLightbox.prototype.handlePossibleCloneClick = function ($clickedItem, $items) {
322
+ var href;
323
+ if (!this.elementIsSlick()) {
324
+ return $clickedItem;
325
+ }
326
+ if (!$clickedItem.closest('.slick-slide').hasClass('slick-cloned')) {
327
+ return $clickedItem;
328
+ }
329
+ href = $clickedItem.attr('href');
330
+ return $items.filter(function () {
331
+ return $(this).attr('href') === href;
332
+ }).first();
333
+ };
334
+
335
+ SlickLightbox.prototype.elementIsSlick = function () {
336
+ return this.$element.hasClass('slick-slider');
337
+ };
338
+
339
+ return SlickLightbox;
340
+ }();
341
+ /* END core class */
342
+
343
+ /* Default options of the plugin */
344
+ defaults = {
345
+ background: 'rgba(0,0,0,.8)',
346
+ closeOnEscape: true,
347
+ closeOnBackdropClick: true,
348
+ destroyTimeout: 500,
349
+ itemSelector: 'a',
350
+ navigateByKeyboard: true,
351
+ src: false,
352
+ caption: false,
353
+ captionPosition: 'dynamic',
354
+ images: false,
355
+ slick: {},
356
+ useHistoryApi: false,
357
+ layouts: { closeButton: '<button type="button" class="slick-lightbox-close"></button>' },
358
+ shouldOpen: null,
359
+ imageMaxHeight: 0.9,
360
+ lazy: false
361
+ };
362
+
363
+ /* Fires the plugin */
364
+ $.fn.slickLightbox = function (options) {
365
+ options = $.extend({}, defaults, options);
366
+ $(this).each(function () {
367
+ return this.slickLightbox = new SlickLightbox(this, options);
368
+ });
369
+ return this;
370
+ };
371
+
372
+ /* Removes everything */
373
+ $.fn.unslickLightbox = function () {
374
+ return $(this).trigger('destroy.slickLightbox').each(function () {
375
+ return this.slickLightbox = null;
376
+ });
377
+ };
378
+
353
379
  }(jQuery));