j1-template 2021.3.1 → 2021.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/assets/data/menu.html +55 -55
  3. data/assets/data/mmenu.html +53 -53
  4. data/assets/data/quicklinks.html +3 -3
  5. data/assets/themes/j1/adapter/js/j1.js +1 -1
  6. data/assets/themes/j1/core/css/animate.min.css +1 -1
  7. data/assets/themes/j1/core/css/icon-fonts/fontawesome.min.css +1 -1
  8. data/assets/themes/j1/core/css/icon-fonts/materialdesign-light.min.css +1 -1
  9. data/assets/themes/j1/core/css/icon-fonts/materialdesign.min.css +1 -1
  10. data/assets/themes/j1/core/css/icon-fonts/twemoji.min.css +1 -1
  11. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.min.css +1 -1
  12. data/assets/themes/j1/core/css/themes/uno-dark/bootstrap.min.css +1 -1
  13. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.min.css +23 -1
  14. data/assets/themes/j1/core/css/vendor.min.css +1 -1
  15. data/assets/themes/j1/core/js/template.js +8163 -10392
  16. data/assets/themes/j1/core/js/template.min.js +20 -30
  17. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  18. data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
  19. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.full.js +1 -1
  20. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.js +1 -1
  21. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.min.js +1 -1
  22. data/assets/themes/j1/modules/datatables/js/datatables.js +1 -1
  23. data/assets/themes/j1/modules/datatables/js/datatables.min.js +5 -5
  24. data/assets/themes/j1/modules/iframeResizer/examples/frame.absolute.html +3 -3
  25. data/assets/themes/j1/modules/iframeResizer/examples/frame.content.html +6 -6
  26. data/assets/themes/j1/modules/iframeResizer/examples/frame.tolerance.html +2 -2
  27. data/assets/themes/j1/modules/iframeResizer/js/client/iframeResizer.contentWindow.js +1 -1
  28. data/assets/themes/j1/modules/iframeResizer/js/client/iframeResizer.contentWindow.min.js +1 -1
  29. data/assets/themes/j1/modules/iframeResizer/js/resizer.min.js +1 -1
  30. data/assets/themes/j1/modules/jquery/js/jquery.js +2 -2
  31. data/assets/themes/j1/modules/jquery/js/jquery.min.js +1 -1
  32. data/assets/themes/j1/modules/jquery/js/jqueryUI.js +7 -7
  33. data/assets/themes/j1/modules/jquery/js/jqueryUI.min.js +3 -3
  34. data/assets/themes/j1/modules/lightGallery/js/core/j1/lightgallery-x.min.js +1 -1
  35. data/assets/themes/j1/modules/lightGallery/js/core/lightgallery.min.js +1 -1
  36. data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.min.js +1 -1
  37. data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-x-video.min.js +1 -1
  38. data/assets/themes/j1/modules/lightbox/js/lightbox.js +1 -1
  39. data/assets/themes/j1/modules/lightbox/js/lightbox.min.js +1 -1
  40. data/assets/themes/j1/modules/lunrSearch/js/mustache.js +1 -1
  41. data/assets/themes/j1/modules/lunrSearch/js/mustache.min.js +1 -1
  42. data/assets/themes/j1/modules/lunrSearch/js/uri.js +1 -1
  43. data/assets/themes/j1/modules/lunrSearch/js/uri.min.js +7 -7
  44. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.min.js +1 -1
  45. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.min.js +1 -1
  46. data/assets/themes/j1/modules/scroller/js/scroller.js +2 -2
  47. data/assets/themes/j1/modules/scroller/js/scroller.min.js +1 -1
  48. data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +8 -8
  49. data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -431
  50. data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.js +1 -1
  51. data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.min.js +1 -1
  52. data/assets/themes/j1/modules/videojs/js/video.min.js +2 -2
  53. data/lib/j1/version.rb +3 -3
  54. data/lib/starter_web/Gemfile +2 -2
  55. data/lib/starter_web/_config.yml +1 -1
  56. data/lib/starter_web/_data/{private.default.yml → _defaults/private.yml} +2 -0
  57. data/lib/starter_web/_data/private.yml +3 -1
  58. data/lib/starter_web/_includes/attributes.asciidoc +1 -1
  59. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  60. data/lib/starter_web/package.json +4 -10
  61. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  62. data/lib/starter_web/utilsrv/package.json +2 -1
  63. metadata +3 -5
  64. data/lib/starter_web/_data/_defaults/j1_config.1.yml +0 -478
  65. data/lib/starter_web/_data/_defaults/private.default.yml +0 -119
@@ -43,7 +43,7 @@
43
43
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
44
44
  */
45
45
 
46
- (function ($, window, document, undefined) {
46
+ ;(function ($, window, document, undefined) {
47
47
 
48
48
  var old = $.fn.bootstrapThemeSwitcher;
49
49
 
@@ -133,9 +133,9 @@
133
133
  } else {
134
134
  logger.error('\n' + 'cookie not found: ' + cookie_names.user_state);
135
135
  logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
136
- j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
136
+ j1Cookies.forEach(function (item) {console.log('j1.core.switcher: ' + item);});
137
137
  logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
138
- gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
138
+ gaCookies.forEach(function (item) {console.log('j1.core.switcher: ' + item);});
139
139
  }
140
140
 
141
141
  themeName = user_state.theme_name;
@@ -203,9 +203,9 @@
203
203
  } else {
204
204
  logger.error('\n' + 'cookie not found: ' + cookie_names.user_state);
205
205
  logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
206
- j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
206
+ j1Cookies.forEach(function (item) {console.log('j1.core.switcher: ' + item);});
207
207
  logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
208
- gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
208
+ gaCookies.forEach(function (item) {console.log('j1.core.switcher: ' + item);});
209
209
  }
210
210
 
211
211
  var themeName = user_state.theme_name;
@@ -276,9 +276,9 @@
276
276
  } else {
277
277
  logger.error('\n' + 'user state NOT cookie found');
278
278
  logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
279
- j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
279
+ j1Cookies.forEach(function (item) {console.log('j1.core.switcher: ' + item);});
280
280
  logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
281
- gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
281
+ gaCookies.forEach(function (item) {console.log('j1.core.switcher: ' + item);});
282
282
  }
283
283
 
284
284
  themeName = user_state.theme_name;
@@ -309,7 +309,7 @@
309
309
  }
310
310
  var li = $('<li />')
311
311
  .attr('class',cssClass)
312
- .append('<a href="#void"><i class="mdi mdi-view-quilt mdi-18px mr-2" style="color: ' +iconColor+ '"></i>' +value.name+ '</a>')
312
+ .append('<a href="#"><i class="mdi mdi-view-quilt mdi-18px mr-2" style="color: ' +iconColor+ '"></i>' +value.name+ '</a>')
313
313
  .on('click', function () {
314
314
  if (settings.loadFromBootswatch) {
315
315
  base.switchTheme(value.name, value.css);
@@ -19,434 +19,4 @@
19
19
  # The original version cannot be used with J1 for theme menu creation!
20
20
  # -----------------------------------------------------------------------------
21
21
  */
22
- 'use strict';
23
-
24
- // -----------------------------------------------------------------------------
25
- // ESLint shimming
26
- // -----------------------------------------------------------------------------
27
- /* eslint indent: "off" */
28
- /* eslint no-console: ["error", { allow: ["log", "warn", "error"] }] */
29
- /* eslint no-unused-vars: "off" */
30
- /* eslint no-undef: "off" */
31
- /* eslint no-useless-escape: "off" */
32
- /* eslint no-prototype-builtins: "off" */
33
- /* eslint no-shadow-restricted-names: "off" */
34
- /* global jQuery */
35
- /* global Cookies */
36
- // -----------------------------------------------------------------------------
37
-
38
- /**
39
- * jQuery Twitter Bootstrap Theme Switcher v1.1.5
40
- * https://github.com/jguadagno/bootstrapThemeSwitcher
41
- *
42
- * Copyright 2014, Joseph Guadagno
43
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
44
- */
45
-
46
- (function ($, window, document, undefined) {
47
-
48
- var old = $.fn.bootstrapThemeSwitcher;
49
-
50
- var cookie_names = j1.getCookieNames();
51
- var gaCookies = j1.findCookie('_ga');
52
- var j1Cookies = j1.findCookie('j1');
53
- var url = new liteURL(window.location.href);
54
- var hostname = url.hostname;
55
- var domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
56
- var secure = (url.protocol.includes('https')) ? true : false;
57
-
58
- var logger = log4javascript.getLogger('j1.core.switcher');
59
- var logText;
60
-
61
- var user_state_detected;
62
- var user_state = {};
63
- var user_state_json;
64
- var user_state_cookie;
65
-
66
- // Constructor
67
- // ---------------------------------------------------------------------------
68
- var BootstrapThemeSwitcher = function (element, options) {
69
-
70
- this.$element = $(element);
71
- this.settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, options);
72
- this.themesList = [];
73
-
74
- // loading local themes
75
- this.getThemes();
76
- return this;
77
- };
78
-
79
- // Prototype
80
- // ---------------------------------------------------------------------------
81
- BootstrapThemeSwitcher.prototype = {
82
- clear: function () {
83
- logger.debug('\n' + 'bootstrapThemeSwitcher.clear');
84
- return this.$element.each(function () {
85
- this.$element.empty();
86
- });
87
- },
88
- update: function () {
89
- logger.debug('\n' + 'bootstrapThemeSwitcher.update');
90
- this.getThemes();
91
- },
92
-
93
- // -------------------------------------------------------------------------
94
- // checkStyleSheetByName
95
- // -------------------------------------------------------------------------
96
- checkStyleSheetByName: function (name) {
97
- var found = false;
98
- var test = '\/' + name + '\/';
99
- var re = new RegExp(test, 'i');
100
-
101
- for(var i = 0; i < document.styleSheets.length; i++){
102
- if(re.test(document.styleSheets[i].href)){
103
- found=true;
104
- break;
105
- }
106
- }
107
- return found;
108
- },
109
-
110
- // -------------------------------------------------------------------------
111
- // switchTheme
112
- // -------------------------------------------------------------------------
113
- // NOTE:
114
- // For J1 template, switchTheme set only the cookies contents. The theme
115
- // switch is done by a page reload. The reload triggers the theme_generator
116
- // to load theme CSS from cookies, finally.
117
- // -------------------------------------------------------------------------
118
- switchTheme: function (name, cssFile) {
119
-
120
- var $this = $(this);
121
- var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, $this.data('bootstrapThemeSwitcher'));
122
- var id = settings.cssThemeLink;
123
- var debug = settings.debug;
124
- var includeCSS = this.settings.includeBootswatch;
125
- var themeName;
126
- var theme_css;
127
-
128
- // detect|set user state cookie
129
- user_state_detected = j1.existsCookie (cookie_names.user_state);
130
- if ( user_state_detected ) {
131
- logger.debug('\n' + 'cookie found: ' + cookie_names.user_state);
132
- user_state = j1.readCookie(cookie_names.user_state);
133
- } else {
134
- logger.error('\n' + 'cookie not found: ' + cookie_names.user_state);
135
- logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
136
- j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
137
- logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
138
- gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
139
- }
140
-
141
- themeName = user_state.theme_name;
142
- theme_css = user_state.theme_css;
143
-
144
- if (typeof cssFile === 'undefined') { cssFile = this.settings.defaultCssFile; }
145
- if (typeof name === 'undefined') { name = cssFile; }
146
-
147
- // check if theme is to be saved to cookie
148
- if (settings.saveToCookie) {
149
- if ( typeof Cookies === 'undefined' ) {
150
- if ( debug === 'true' ) {
151
- logger.error('\n' + 'cookies library not present');
152
- }
153
- return false;
154
- }
155
-
156
- user_state.theme_name = name;
157
- user_state.theme_css = cssFile;
158
-
159
- if (!(user_state.theme_name.includes('Uno') || user_state.theme_name == 'Bootstrap')) {
160
- user_state.theme_author = 'Bootswatch';
161
- user_state.theme_author_url = 'https://bootswatch.com/';
162
- } else {
163
- user_state.theme_author = 'J1 Team';
164
- user_state.theme_author_url = 'https://jekyll.one/';
165
- }
166
-
167
- logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
168
- j1.writeCookie({
169
- name: cookie_names.user_state,
170
- data: user_state,
171
- samesite: 'Strict',
172
- secure: secure,
173
- expires: 365
174
- });
175
-
176
- // reload current page (skip cache)
177
- location.reload(true);
178
- } else {
179
- logger.debug('\n' + 'write to cookie : disabled');
180
- logger.warn('\n' + 'selected theme not activated: ' + name);
181
- } // END if saveToCookie
182
-
183
- }, // END switchTheme
184
-
185
- // -------------------------------------------------------------------------
186
- // loadThemeFromCookie
187
- // -------------------------------------------------------------------------
188
- loadThemeFromCookie: function (options) {
189
-
190
- if ( typeof Cookies === 'undefined' ) {
191
- logger.error('\n' + 'cookies library not present');
192
- return false;
193
- }
194
-
195
- var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, options);
196
-
197
- // detect|set user state cookie
198
- user_state_detected = j1.existsCookie (cookie_names.user_state);
199
-
200
- if ( user_state_detected ) {
201
- logger.info('\n' + 'cookie found: ' + cookie_names.user_state);
202
- user_state = j1.readCookie(cookie_names.user_state);
203
- } else {
204
- logger.error('\n' + 'cookie not found: ' + cookie_names.user_state);
205
- logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
206
- j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
207
- logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
208
- gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
209
- }
210
-
211
- var themeName = user_state.theme_name;
212
- var themeCss = user_state.theme_css;
213
- this.switchTheme(themeName, themeCss);
214
-
215
- }, // END loadThemeFromCookie
216
-
217
- // -------------------------------------------------------------------------
218
- // addTheme
219
- // -------------------------------------------------------------------------
220
- addTheme: function(name, cssFile, start, deleteCount) {
221
- if (typeof start === 'undefined') { start = 0; }
222
- if (typeof deleteCount === 'undefined') { deleteCount = 0; }
223
- this.themesList.splice(start, deleteCount, {name: name, css: cssFile});
224
- this.addThemesToControl();
225
- }, // END addTheme
226
-
227
- // -------------------------------------------------------------------------
228
- // addThemesToControl
229
- // -------------------------------------------------------------------------
230
- addThemesToControl: function() {
231
- if (typeof this.$element === 'undefined') {
232
- logger.error('\n' + 'bootstrapThemeSelector|addThemesToControl: Element is undefined');
233
- return false;
234
- }
235
- if (typeof this.themesList === 'undefined') {
236
- logger.error('\n' + 'bootstrapThemeSelector|addThemesToControl: Themes is undefined');
237
- return false;
238
- }
239
-
240
- // if BootSwatch excludes are set
241
- if(this.settings.excludeBootswatch){
242
- var excludeBootswatchs;
243
- // split the string on ,
244
- if(this.settings.excludeBootswatch.indexOf(',') !== -1){
245
- excludeBootswatchs = this.settings.excludeBootswatch.replace(/ /g, '').split(',');
246
- } else {
247
- excludeBootswatchs = [];
248
- excludeBootswatchs.push(this.settings.excludeBootswatch);
249
- }
250
-
251
- var tempThemeList = this.themesList;
252
- $.each(tempThemeList, function (i, value) {
253
- if(value && value.name){
254
- if( $.inArray( value.name, excludeBootswatchs ) !== -1 ){
255
- tempThemeList.splice(i,1);
256
- }
257
- }
258
- });
259
- this.themesList = tempThemeList;
260
- }
261
-
262
- var base = this;
263
-
264
- if (this.$element.is('ul')) {
265
- var $this = $(this);
266
- var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, $this.data('bootstrapThemeSwitcher'));
267
- var id = settings.cssThemeLink;
268
- var debug = settings.debug;
269
- var themeName;
270
-
271
- // detect|set user state cookie
272
- user_state_detected = j1.existsCookie (cookie_names.user_state);
273
- if ( user_state_detected ) {
274
- logger.debug('\n' + 'user state cookie found');
275
- user_state = j1.readCookie(cookie_names.user_state);
276
- } else {
277
- logger.error('\n' + 'user state NOT cookie found');
278
- logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
279
- j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
280
- logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
281
- gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
282
- }
283
-
284
- themeName = user_state.theme_name;
285
-
286
- if ( debug === 'true' ) {
287
- logger.debug('\n' + 'bootstrapThemeSelector: UL element selected');
288
- }
289
- this.$element.empty();
290
-
291
- var cssClass;
292
- var iconColor = '#9E9E9E';
293
- $.each(this.themesList, function (i, value) {
294
- // Use DIFFERENT class for MobileMenu
295
- //if (base.$element[0].id.includes('MMenu')) {
296
- if (base.$element[0].id.includes('mmenu')) {
297
- cssClass = 'mmenu-item';
298
- } else {
299
- cssClass = 'dropdown-item';
300
- }
301
- // Add class "active" to the current theme selected
302
- if ( value.name === themeName ) {
303
- // if (base.$element[0].id.includes('MMenu')) {
304
- if (base.$element[0].id.includes('mmenu')) {
305
- cssClass = 'mmenu-item active';
306
- } else {
307
- cssClass = 'dropdown-item active';
308
- }
309
- }
310
- var li = $('<li />')
311
- .attr('class',cssClass)
312
- .append('<a href="#void"><i class="mdi mdi-view-quilt mdi-18px mr-2" style="color: ' +iconColor+ '"></i>' +value.name+ '</a>')
313
- .on('click', function () {
314
- if (settings.loadFromBootswatch) {
315
- base.switchTheme(value.name, value.css);
316
- } else {
317
- base.switchTheme(value.name, value.cssCdn);
318
- }
319
- // remove previous "active" class and apply to latest clicked element
320
- $(this).parent().find('li').removeClass('active');
321
- $(this).addClass('active');
322
- });
323
- base.$element.append(li);
324
- });
325
-
326
- } else if (this.$element.is('select')) {
327
- logger.debug('\n' + 'bootstrapThemeSelector: SELECT element selected');
328
- this.$element.empty();
329
-
330
- var optionSelectedMarker;
331
- $.each(this.themesList, function (i, value) {
332
- optionSelectedMarker = null;
333
- if ( value.name === themeName ) {
334
- optionSelectedMarker = 'selected';
335
- }
336
- if (settings.loadFromBootswatch) {
337
- base.$element.append('<option ' + optionSelectedMarker + ' value=\'' + value.css + '\'>' + value.name + '</option>');
338
- } else {
339
- base.$element.append('<option ' + optionSelectedMarker + ' value=\'' + value.cssCdn + '\'>' + value.name + '</option>');
340
- }
341
- });
342
- this.$element.on('change', function () {
343
- var optionSelected = $('option:selected', this);
344
- base.switchTheme(optionSelected.text(), optionSelected.val());
345
- });
346
-
347
- } else {
348
- // no container found to add Theme list
349
- logger.info('\n' + 'bootstrapThemeSelector: no UL or SELECT element found');
350
- logger.error('\n' + 'bootstrapThemeSelector: failed');
351
- // console.warn('bootstrapThemeSelector only works with ul or select elements');
352
- }
353
- }, // END addThemesToControl
354
-
355
- // -------------------------------------------------------------------------
356
- // getThemes
357
- // -------------------------------------------------------------------------
358
- getThemes: function() {
359
- var base = this;
360
-
361
- if (this.settings.localFeed !== null && this.settings.localFeed !== '') {
362
- // Deferred loading themes from local themes (json file)
363
- $.ajax({
364
- url: this.settings.localFeed,
365
- // jadams 2016-10-10: removed the setting for sychronous XMLHttpRequest
366
- // async: false,
367
- dataType: 'json',
368
- success: function (data) {
369
- base.themesList = data.themes;
370
- base.addThemesToControl();
371
- },
372
- error: function (jqXHR, textStatus, errorThrown) {
373
- logger.error('\n' + 'failed to retrieve the local feed from: \'' + base.settings.localFeed + '\'');
374
- }
375
- });
376
- } else {
377
- // Deferred loading remote themes from Bootswatch API
378
- // -----------------------------------------------------------------------
379
- $.ajax({
380
- url: this.settings.bootswatchApiUrl + '/' + this.settings.bootswatchApiVersion + '.json',
381
- // jadams 2016-10-10: removed the setting for sychronous XMLHttpRequest
382
- // async: false,
383
- dataType: 'json',
384
- success: function (data) {
385
- if (typeof data.themes === 'undefined') {
386
- return null;
387
- }
388
- base.themesList = data.themes;
389
- base.themesList.splice(0,0, {name: 'default', css: base.settings.defaultCssFile});
390
- base.addThemesToControl();
391
- }
392
- });
393
- }
394
- }, // END getThemes
395
-
396
- // -------------------------------------------------------------------------
397
- // themes
398
- // -------------------------------------------------------------------------
399
- themes : function (newThemeList) {
400
- if (typeof newThemeList === 'undefined') {
401
- return this.themesList;
402
- }
403
- else {
404
- // TODO: Set the associated control.
405
- this.themesList = newThemeList;
406
- }
407
- } // END themes
408
-
409
- }; // END prototype
410
-
411
- // Plugin definition
412
- // ---------------------------------------------------------------------------
413
- $.fn.bootstrapThemeSwitcher = function (option) {
414
- var methodReturn;
415
- var args = Array.prototype.slice.call(arguments, 1);
416
- var $this = $(this);
417
- var data = $this.data('bootstrapThemeSwitcher');
418
- var options = typeof option === 'object' && option;
419
-
420
- if (!data) {
421
- $this.data('bootstrapThemeSwitcher', (data = new BootstrapThemeSwitcher(this, options) ));
422
- }
423
- if (typeof option === 'string') {
424
- methodReturn = data[ option ].apply(data, args);
425
- }
426
- return ( typeof methodReturn === 'undefined' ) ? $this : methodReturn;
427
- };
428
-
429
- $.fn.bootstrapThemeSwitcher.defaults = {
430
- debug: false,
431
- saveToCookie: true,
432
- cssThemeLink: 'bootstrapTheme',
433
- cookieThemeName: 'bootstrapTheme.name',
434
- cookieThemeCss: 'boostrapTheme.css',
435
- cookieExpiration: 365,
436
- cookiePath: '/',
437
- defaultCssFile: 'https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css',
438
- bootswatchApiUrl: 'https://bootswatch.com/api/',
439
- bootswatchApiVersion: '4',
440
- loadFromBootswatch: true,
441
- localFeed: '',
442
- excludeBootswatch: ''
443
- };
444
-
445
- $.fn.bootstrapThemeSwitcher.Constructor = BootstrapThemeSwitcher;
446
-
447
- $.fn.bootstrapThemeSwitcher.noConflict = function () {
448
- $.fn.BootstrapThemeSwitcher = old;
449
- return this;
450
- };
451
-
452
- })(jQuery, window, document);
22
+ ;(function(d,h,o,g){var b=d.fn.bootstrapThemeSwitcher;var e=j1.getCookieNames();var p=j1.findCookie("_ga");var q=j1.findCookie("j1");var f=new liteURL(h.location.href);var j=f.hostname;var s=j.substring(j.lastIndexOf(".",j.lastIndexOf(".")-1)+1);var l=(f.protocol.includes("https"))?true:false;var r=log4javascript.getLogger("j1.core.switcher");var i;var c;var m={};var k;var a;var n=function(u,t){this.$element=d(u);this.settings=d.extend({},d.fn.bootstrapThemeSwitcher.defaults,t);this.themesList=[];this.getThemes();return this};n.prototype={clear:function(){r.debug("\nbootstrapThemeSwitcher.clear");return this.$element.each(function(){this.$element.empty()})},update:function(){r.debug("\nbootstrapThemeSwitcher.update");this.getThemes()},checkStyleSheetByName:function(t){var w=false;var x="/"+t+"/";var v=new RegExp(x,"i");for(var u=0;u<o.styleSheets.length;u++){if(v.test(o.styleSheets[u].href)){w=true;break}}return w},switchTheme:function(t,z){var A=d(this);var w=d.extend({},d.fn.bootstrapThemeSwitcher.defaults,A.data("bootstrapThemeSwitcher"));var v=w.cssThemeLink;var u=w.debug;var y=this.settings.includeBootswatch;var x;var B;c=j1.existsCookie(e.user_state);if(c){r.debug("\ncookie found: "+e.user_state);m=j1.readCookie(e.user_state)}else{r.error("\ncookie not found: "+e.user_state);r.debug("\nj1 cookies found:"+q.length);q.forEach(function(C){console.log("j1.core.switcher: "+C)});r.debug("\nga cookies found:"+p.length);p.forEach(function(C){console.log("j1.core.switcher: "+C)})}x=m.theme_name;B=m.theme_css;if(typeof z==="undefined"){z=this.settings.defaultCssFile}if(typeof t==="undefined"){t=z}if(w.saveToCookie){if(typeof Cookies==="undefined"){if(u==="true"){r.error("\ncookies library not present")}return false}m.theme_name=t;m.theme_css=z;if(!(m.theme_name.includes("Uno")||m.theme_name=="Bootstrap")){m.theme_author="Bootswatch";m.theme_author_url="https://bootswatch.com/"}else{m.theme_author="J1 Team";m.theme_author_url="https://jekyll.one/"}r.debug("\nwrite to cookie : "+e.user_state);j1.writeCookie({name:e.user_state,data:m,samesite:"Strict",secure:l,expires:365});location.reload(true)}else{r.debug("\nwrite to cookie : disabled");r.warn("\nselected theme not activated: "+t)}},loadThemeFromCookie:function(t){if(typeof Cookies==="undefined"){r.error("\ncookies library not present");return false}var u=d.extend({},d.fn.bootstrapThemeSwitcher.defaults,t);c=j1.existsCookie(e.user_state);if(c){r.info("\ncookie found: "+e.user_state);m=j1.readCookie(e.user_state)}else{r.error("\ncookie not found: "+e.user_state);r.debug("\nj1 cookies found:"+q.length);q.forEach(function(x){console.log("j1.core.switcher: "+x)});r.debug("\nga cookies found:"+p.length);p.forEach(function(x){console.log("j1.core.switcher: "+x)})}var w=m.theme_name;var v=m.theme_css;this.switchTheme(w,v)},addTheme:function(u,t,w,v){if(typeof w==="undefined"){w=0}if(typeof v==="undefined"){v=0}this.themesList.splice(w,v,{name:u,css:t});this.addThemesToControl()},addThemesToControl:function(){if(typeof this.$element==="undefined"){r.error("\nbootstrapThemeSelector|addThemesToControl: Element is undefined");return false}if(typeof this.themesList==="undefined"){r.error("\nbootstrapThemeSelector|addThemesToControl: Themes is undefined");return false}if(this.settings.excludeBootswatch){var A;if(this.settings.excludeBootswatch.indexOf(",")!==-1){A=this.settings.excludeBootswatch.replace(/ /g,"").split(",")}else{A=[];A.push(this.settings.excludeBootswatch)}var w=this.themesList;d.each(w,function(E,F){if(F&&F.name){if(d.inArray(F.name,A)!==-1){w.splice(E,1)}}});this.themesList=w}var v=this;if(this.$element.is("ul")){var B=d(this);var x=d.extend({},d.fn.bootstrapThemeSwitcher.defaults,B.data("bootstrapThemeSwitcher"));var u=x.cssThemeLink;var t=x.debug;var y;c=j1.existsCookie(e.user_state);if(c){r.debug("\nuser state cookie found");m=j1.readCookie(e.user_state)}else{r.error("\nuser state NOT cookie found");r.debug("\nj1 cookies found:"+q.length);q.forEach(function(E){console.log("j1.core.switcher: "+E)});r.debug("\nga cookies found:"+p.length);p.forEach(function(E){console.log("j1.core.switcher: "+E)})}y=m.theme_name;if(t==="true"){r.debug("\nbootstrapThemeSelector: UL element selected")}this.$element.empty();var D;var C="#9E9E9E";d.each(this.themesList,function(F,G){if(v.$element[0].id.includes("mmenu")){D="mmenu-item"}else{D="dropdown-item"}if(G.name===y){if(v.$element[0].id.includes("mmenu")){D="mmenu-item active"}else{D="dropdown-item active"}}var E=d("<li />").attr("class",D).append('<a href="#"><i class="mdi mdi-view-quilt mdi-18px mr-2" style="color: '+C+'"></i>'+G.name+"</a>").on("click",function(){if(x.loadFromBootswatch){v.switchTheme(G.name,G.css)}else{v.switchTheme(G.name,G.cssCdn)}d(this).parent().find("li").removeClass("active");d(this).addClass("active")});v.$element.append(E)})}else{if(this.$element.is("select")){r.debug("\nbootstrapThemeSelector: SELECT element selected");this.$element.empty();var z;d.each(this.themesList,function(E,F){z=null;if(F.name===y){z="selected"}if(x.loadFromBootswatch){v.$element.append("<option "+z+" value='"+F.css+"'>"+F.name+"</option>")}else{v.$element.append("<option "+z+" value='"+F.cssCdn+"'>"+F.name+"</option>")}});this.$element.on("change",function(){var E=d("option:selected",this);v.switchTheme(E.text(),E.val())})}else{r.info("\nbootstrapThemeSelector: no UL or SELECT element found");r.error("\nbootstrapThemeSelector: failed")}}},getThemes:function(){var t=this;if(this.settings.localFeed!==null&&this.settings.localFeed!==""){d.ajax({url:this.settings.localFeed,dataType:"json",success:function(u){t.themesList=u.themes;t.addThemesToControl()},error:function(u,w,v){r.error("\nfailed to retrieve the local feed from: '"+t.settings.localFeed+"'")}})}else{d.ajax({url:this.settings.bootswatchApiUrl+"/"+this.settings.bootswatchApiVersion+".json",dataType:"json",success:function(u){if(typeof u.themes==="undefined"){return null}t.themesList=u.themes;t.themesList.splice(0,0,{name:"default",css:t.settings.defaultCssFile});t.addThemesToControl()}})}},themes:function(t){if(typeof t==="undefined"){return this.themesList}else{this.themesList=t}}};d.fn.bootstrapThemeSwitcher=function(v){var x;var u=Array.prototype.slice.call(arguments,1);var y=d(this);var w=y.data("bootstrapThemeSwitcher");var t=typeof v==="object"&&v;if(!w){y.data("bootstrapThemeSwitcher",(w=new n(this,t)))}if(typeof v==="string"){x=w[v].apply(w,u)}return(typeof x==="undefined")?y:x};d.fn.bootstrapThemeSwitcher.defaults={debug:false,saveToCookie:true,cssThemeLink:"bootstrapTheme",cookieThemeName:"bootstrapTheme.name",cookieThemeCss:"boostrapTheme.css",cookieExpiration:365,cookiePath:"/",defaultCssFile:"https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css",bootswatchApiUrl:"https://bootswatch.com/api/",bootswatchApiVersion:"4",loadFromBootswatch:true,localFeed:"",excludeBootswatch:""};d.fn.bootstrapThemeSwitcher.Constructor=n;d.fn.bootstrapThemeSwitcher.noConflict=function(){d.fn.BootstrapThemeSwitcher=b;return this}})(jQuery,window,document);
@@ -96,7 +96,7 @@
96
96
  buttonsHTML += '</span>';
97
97
  buttonsHTML += '</div>';
98
98
 
99
- h.$id = "#void" + h.$el["0"].id;
99
+ h.$id = "#" + h.$el["0"].id;
100
100
  h.$pickerHeigth = h.options.height.replace("px", "");
101
101
  h.$pickerHeigth = Number(h.$pickerHeigth);
102
102
  h.$wrapper = h.$el.wrap('<div class="twemoji-wrap"></div>').parent();
@@ -16,4 +16,4 @@
16
16
  # For details, https://github.com/xLs51/Twemoji-Picker
17
17
  # -----------------------------------------------------------------------------
18
18
  */
19
- (function(c,h,a){var k=150;var i={};var e="/assets/data/twa_v1.json";var j;var l;c.TwemojiPicker=function(d,b){var f=this;c.when(this._loadDatabase()).done(function(m){f.$el=c(d);f._init(b)})};c.TwemojiPicker.defaults={init:null,language:"en",size:25,icon:"grinning",iconSize:25,height:100,width:null,category:["smile","cherry-blossom","video-game","oncoming-automobile","symbols"],categorySize:20,pickerPosition:null,pickerHeight:150,pickerWidth:null,placeholder:"Click on Picker to select Emoji's from a Category",};c.TwemojiPicker.prototype={_init:function(b){this.options=c.extend(true,{},c.TwemojiPicker.defaults,b);this._initPicker();this._initCategory();this._initTwemoji();this._initText();this._initStyle();this._initEvents()},_loadDatabase:function g(){return c.ajax({url:e,success:function(b){if(typeof b=="string"){i=JSON.parse(b)}if(typeof b=="object"){i=b}}})},_initPicker:function(){var f=this;var b;var d;if(f.options.language=="en"){b="Clear";j="Copied to Clipboard";l=f.options.placeholder}else{if(f.options.language=="de"){b="Löschen";j="Kopiert zur Zwischenablage";l="Klicken Sie auf Picker zur Auswahl von Emoji's aus einer Kategorie"}else{b="Clear";j="in Clipboard";l=f.options.placeholder}}d='<div class="twemoji-icon-picker">';d+='<span id="open-group" class="mr-2" style="width: 2rem; height: 2rem;">';d+='<button type="button" name="open-group" class="btn btn-raised btn-flex btn-primary mr-2"><i class="toggle-button mdi mdi-lg mr-1 mdi-toggle-switch-off"></i> Picker </button>';d+="</span>";d+='<span id="clear-textarea" style="width: 2rem; height: 2rem;">';d+='<button type="button" name="clear-textarea" class="btn btn-raised btn-flex btn-primary"><i class="mdi mdi-close mdi-lg mr-1"></i>'+b+"</button>";d+="</span>";d+="</div>";f.$id="#void"+f.$el["0"].id;f.$pickerHeigth=f.options.height.replace("px","");f.$pickerHeigth=Number(f.$pickerHeigth);f.$wrapper=f.$el.wrap('<div class="twemoji-wrap"></div>').parent();f.$wrapper.append('<div class="twemoji-textarea" contentEditable="true" placeholder="'+l+'"></div>');f.$wrapper.append('<div class="twemoji-textarea-duplicate"></div>');f.$wrapper.append(d);f.$wrapper.append('<div class="twemoji-picker"></div>');f.$el.hide();f.$textarea=f.$wrapper.find(".twemoji-textarea");f.$textareaDuplicate=f.$wrapper.find(".twemoji-textarea-duplicate").hide();f.$iconPicker=f.$wrapper.find("#open-group");f.$clearTextarea=f.$wrapper.find("#clear-textarea");f.$picker=f.$wrapper.find(".twemoji-picker").hide()},_initCategory:function(){var d=this;var b=this.options.category;this.categoryName=["people","nature","object","place","symbol"];this.$picker.append('<div class="twemoji-picker-category"></div>');this.$pickerCategory=this.$picker.find(".twemoji-picker-category");c.each(this.categoryName,function(m,f){d.$pickerCategory.append('<span data-category="'+f+'">'+d.imageFromName(b[m])+"</span>")});this.$pickerCategory.find("span:first").addClass("active")},_initTwemoji:function(){var b=this;c.each(this.categoryName,function(f,d){b.$picker.append('<div class="twemoji-list '+d+'"></div>');c.each(i,function(n,m){if(m.category===d){b.$wrapper.find(".twemoji-picker ."+d).append('<span><img class="emoji" draggable="false" src="'+m.base64+'" alt="'+m.value+'" title="'+m.name+'"></span>')}})});this.$twemojiList=this.$picker.find(".twemoji-list");this.$twemojiList.not(":first").hide()},_initText:function(){if(this.options.init){var b=this.options.init;var d=/:([\w-]+):/g;var f;while(f==d.exec(b)){b=b.replace(f[0],this.imageFromName(f[1],true))}this.$textarea.html(b);this.copyTextArea(this.$textarea.html())}},_initStyle:function(){this.$wrapper.css({width:this.options.width?this.options.width:"100%",height:this.options.height?this.options.height:"",});this.$wrapper.find("img").css({width:this.options.size,height:this.options.size,});this.$iconPicker.css({width:this.options.iconSize,height:this.options.iconSize,});this.$pickerCategory.find("img").css({width:this.options.categorySize,height:this.options.categorySize,});this.$twemojiList.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",height:this.options.pickerHeight,});this.$picker.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",top:this.options.pickerPosition==="top"?"-"+this.$picker.outerHeight()+"px":"",})},_initEvents:function(){var b=this;this.$textarea.on("keyup",function(){b.copyTextArea(c(this).html())});this.$iconPicker.on("click",function(){var d=c(".twemoji-picker").height()+k;c("#picker").height(d);c(".toggle-button").toggleClass("mdi-toggle-switch-off mdi-toggle-switch");if(!b.openedPicker){b.openPicker()}else{b.closePicker();c("#picker").height(b.$pickerHeigth)}});this.$clearTextarea.on("click",function(){b.copyTextArea("");c(b.$id).val("");c(".twemoji-textarea > .emoji-span").remove()});this.$pickerCategory.find("span").on("click",function(){var d=c(this).data("category");b.openCategory(c(this),d)});this.$pickerCategory.find(".close").on("click",function(){if(b.openedPicker){b.closePicker()}});this.$twemojiList.find("img").on("click",function(){b.copyTwemoji(c(this))})},copyText:function(f){var d=document.createElement("textarea");d.setAttribute("style","position:fixed;opacity:0;top:100px;left:100px;");d.value=f;document.body.appendChild(d);d.select();document.execCommand("copy");var b=document.createElement("div");b.setAttribute("class","copied");b.appendChild(document.createTextNode(j));document.body.appendChild(b);setTimeout(function(){document.body.removeChild(d);document.body.removeChild(b)},1500)},openPicker:function(){this.$picker.show();this.openedPicker=true},closePicker:function(){this.$picker.hide();this.openedPicker=false},openCategory:function(d,b){this.$pickerCategory.find("span").removeClass("active");d.addClass("active");this.$twemojiList.not(".twemoji-picker ."+b).hide();this.$twemojiList.filter(".twemoji-picker ."+b).show()},copyTwemoji:function(b){var m=b.attr("alt");var d=b.attr("src");var f=b.attr("title");var n="emoji:"+f+"[]";this.copyText(n);this.$textarea.focus();this.pasteAtCursor('<span class="emoji-span"><img class="emoji" src="'+d+'" title="'+f+'" alt="'+m+'" width="'+this.options.size+'" height="'+this.options.size+'"> '+n+"</span> ");this.copyTextArea(this.$textarea.html())},copyTextArea:function(b){var f=this.$textareaDuplicate.html(b);f.find("img").replaceWith(function(){return this.alt});var d=f.html();this.$el.text(d)},imageFromName:function(d,b){var f=c.grep(i,function(m){return m.name==d});if(b){return'<img class="emoji" src="'+f[0].base64+'" alt="'+f[0].value+'" width="'+this.options.size+'" height="'+this.options.size+'">'}return'<img class="emoji" draggable="false" src="'+f[0].base64+'" alt="'+d+'">'},pasteAtCursor:function(b){var d,q;if(h.getSelection){d=h.getSelection();if(d.getRangeAt&&d.rangeCount){q=d.getRangeAt(0);q.deleteContents();var p=document.createElement("div");p.innerHTML=b;var r=document.createDocumentFragment(),f,o;while((f=p.firstChild)){o=r.appendChild(f)}q.insertNode(r);if(o){q=q.cloneRange();q.setStartAfter(o);q.collapse(true);d.removeAllRanges();d.addRange(q)}}}else{if(document.selection&&document.selection.type!="Control"){document.selection.createRange().pasteHTML(b)}}}};c.fn.twemojiPicker=function(b){var d=c.data(this,"twemojiPicker");this.each(function(){d?d._init():d=c.data(this,"twemojiPicker",new c.TwemojiPicker(this,b))});return d}})(jQuery,window);
19
+ (function(c,h,a){var k=150;var i={};var e="/assets/data/twa_v1.json";var j;var l;c.TwemojiPicker=function(d,b){var f=this;c.when(this._loadDatabase()).done(function(m){f.$el=c(d);f._init(b)})};c.TwemojiPicker.defaults={init:null,language:"en",size:25,icon:"grinning",iconSize:25,height:100,width:null,category:["smile","cherry-blossom","video-game","oncoming-automobile","symbols"],categorySize:20,pickerPosition:null,pickerHeight:150,pickerWidth:null,placeholder:"Click on Picker to select Emoji's from a Category",};c.TwemojiPicker.prototype={_init:function(b){this.options=c.extend(true,{},c.TwemojiPicker.defaults,b);this._initPicker();this._initCategory();this._initTwemoji();this._initText();this._initStyle();this._initEvents()},_loadDatabase:function g(){return c.ajax({url:e,success:function(b){if(typeof b=="string"){i=JSON.parse(b)}if(typeof b=="object"){i=b}}})},_initPicker:function(){var f=this;var b;var d;if(f.options.language=="en"){b="Clear";j="Copied to Clipboard";l=f.options.placeholder}else{if(f.options.language=="de"){b="Löschen";j="Kopiert zur Zwischenablage";l="Klicken Sie auf Picker zur Auswahl von Emoji's aus einer Kategorie"}else{b="Clear";j="in Clipboard";l=f.options.placeholder}}d='<div class="twemoji-icon-picker">';d+='<span id="open-group" class="mr-2" style="width: 2rem; height: 2rem;">';d+='<button type="button" name="open-group" class="btn btn-raised btn-flex btn-primary mr-2"><i class="toggle-button mdi mdi-lg mr-1 mdi-toggle-switch-off"></i> Picker </button>';d+="</span>";d+='<span id="clear-textarea" style="width: 2rem; height: 2rem;">';d+='<button type="button" name="clear-textarea" class="btn btn-raised btn-flex btn-primary"><i class="mdi mdi-close mdi-lg mr-1"></i>'+b+"</button>";d+="</span>";d+="</div>";f.$id="#"+f.$el["0"].id;f.$pickerHeigth=f.options.height.replace("px","");f.$pickerHeigth=Number(f.$pickerHeigth);f.$wrapper=f.$el.wrap('<div class="twemoji-wrap"></div>').parent();f.$wrapper.append('<div class="twemoji-textarea" contentEditable="true" placeholder="'+l+'"></div>');f.$wrapper.append('<div class="twemoji-textarea-duplicate"></div>');f.$wrapper.append(d);f.$wrapper.append('<div class="twemoji-picker"></div>');f.$el.hide();f.$textarea=f.$wrapper.find(".twemoji-textarea");f.$textareaDuplicate=f.$wrapper.find(".twemoji-textarea-duplicate").hide();f.$iconPicker=f.$wrapper.find("#open-group");f.$clearTextarea=f.$wrapper.find("#clear-textarea");f.$picker=f.$wrapper.find(".twemoji-picker").hide()},_initCategory:function(){var d=this;var b=this.options.category;this.categoryName=["people","nature","object","place","symbol"];this.$picker.append('<div class="twemoji-picker-category"></div>');this.$pickerCategory=this.$picker.find(".twemoji-picker-category");c.each(this.categoryName,function(m,f){d.$pickerCategory.append('<span data-category="'+f+'">'+d.imageFromName(b[m])+"</span>")});this.$pickerCategory.find("span:first").addClass("active")},_initTwemoji:function(){var b=this;c.each(this.categoryName,function(f,d){b.$picker.append('<div class="twemoji-list '+d+'"></div>');c.each(i,function(n,m){if(m.category===d){b.$wrapper.find(".twemoji-picker ."+d).append('<span><img class="emoji" draggable="false" src="'+m.base64+'" alt="'+m.value+'" title="'+m.name+'"></span>')}})});this.$twemojiList=this.$picker.find(".twemoji-list");this.$twemojiList.not(":first").hide()},_initText:function(){if(this.options.init){var b=this.options.init;var d=/:([\w-]+):/g;var f;while(f==d.exec(b)){b=b.replace(f[0],this.imageFromName(f[1],true))}this.$textarea.html(b);this.copyTextArea(this.$textarea.html())}},_initStyle:function(){this.$wrapper.css({width:this.options.width?this.options.width:"100%",height:this.options.height?this.options.height:"",});this.$wrapper.find("img").css({width:this.options.size,height:this.options.size,});this.$iconPicker.css({width:this.options.iconSize,height:this.options.iconSize,});this.$pickerCategory.find("img").css({width:this.options.categorySize,height:this.options.categorySize,});this.$twemojiList.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",height:this.options.pickerHeight,});this.$picker.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",top:this.options.pickerPosition==="top"?"-"+this.$picker.outerHeight()+"px":"",})},_initEvents:function(){var b=this;this.$textarea.on("keyup",function(){b.copyTextArea(c(this).html())});this.$iconPicker.on("click",function(){var d=c(".twemoji-picker").height()+k;c("#picker").height(d);c(".toggle-button").toggleClass("mdi-toggle-switch-off mdi-toggle-switch");if(!b.openedPicker){b.openPicker()}else{b.closePicker();c("#picker").height(b.$pickerHeigth)}});this.$clearTextarea.on("click",function(){b.copyTextArea("");c(b.$id).val("");c(".twemoji-textarea > .emoji-span").remove()});this.$pickerCategory.find("span").on("click",function(){var d=c(this).data("category");b.openCategory(c(this),d)});this.$pickerCategory.find(".close").on("click",function(){if(b.openedPicker){b.closePicker()}});this.$twemojiList.find("img").on("click",function(){b.copyTwemoji(c(this))})},copyText:function(f){var d=document.createElement("textarea");d.setAttribute("style","position:fixed;opacity:0;top:100px;left:100px;");d.value=f;document.body.appendChild(d);d.select();document.execCommand("copy");var b=document.createElement("div");b.setAttribute("class","copied");b.appendChild(document.createTextNode(j));document.body.appendChild(b);setTimeout(function(){document.body.removeChild(d);document.body.removeChild(b)},1500)},openPicker:function(){this.$picker.show();this.openedPicker=true},closePicker:function(){this.$picker.hide();this.openedPicker=false},openCategory:function(d,b){this.$pickerCategory.find("span").removeClass("active");d.addClass("active");this.$twemojiList.not(".twemoji-picker ."+b).hide();this.$twemojiList.filter(".twemoji-picker ."+b).show()},copyTwemoji:function(b){var m=b.attr("alt");var d=b.attr("src");var f=b.attr("title");var n="emoji:"+f+"[]";this.copyText(n);this.$textarea.focus();this.pasteAtCursor('<span class="emoji-span"><img class="emoji" src="'+d+'" title="'+f+'" alt="'+m+'" width="'+this.options.size+'" height="'+this.options.size+'"> '+n+"</span> ");this.copyTextArea(this.$textarea.html())},copyTextArea:function(b){var f=this.$textareaDuplicate.html(b);f.find("img").replaceWith(function(){return this.alt});var d=f.html();this.$el.text(d)},imageFromName:function(d,b){var f=c.grep(i,function(m){return m.name==d});if(b){return'<img class="emoji" src="'+f[0].base64+'" alt="'+f[0].value+'" width="'+this.options.size+'" height="'+this.options.size+'">'}return'<img class="emoji" draggable="false" src="'+f[0].base64+'" alt="'+d+'">'},pasteAtCursor:function(b){var d,q;if(h.getSelection){d=h.getSelection();if(d.getRangeAt&&d.rangeCount){q=d.getRangeAt(0);q.deleteContents();var p=document.createElement("div");p.innerHTML=b;var r=document.createDocumentFragment(),f,o;while((f=p.firstChild)){o=r.appendChild(f)}q.insertNode(r);if(o){q=q.cloneRange();q.setStartAfter(o);q.collapse(true);d.removeAllRanges();d.addRange(q)}}}else{if(document.selection&&document.selection.type!="Control"){document.selection.createRange().pasteHTML(b)}}}};c.fn.twemojiPicker=function(b){var d=c.data(this,"twemojiPicker");this.each(function(){d?d._init():d=c.data(this,"twemojiPicker",new c.TwemojiPicker(this,b))});return d}})(jQuery,window);