generic-skin 2.3.3 → 2.3.7

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.
@@ -1,9 +1,9 @@
1
1
  const FNR = {
2
- execFn: function(callback) {
2
+ execFn: (callback) => {
3
3
  document.addEventListener('forumReady', callback, false);
4
4
  },
5
5
  forum: {
6
- getColors: function() {
6
+ getColors: () => {
7
7
  return Object.values(forumColours)
8
8
  .map((item) => {
9
9
  return {
@@ -12,7 +12,7 @@ const FNR = {
12
12
  }
13
13
  });
14
14
  },
15
- getLatest: function(filterArray, limit) {
15
+ getTopics: (array, limit) => {
16
16
  return new Promise((resolve, reject) => {
17
17
  const addContent = (elmt) => {
18
18
  const titleElmnt = $(elmt).find('.topictitle');
@@ -40,7 +40,7 @@ const FNR = {
40
40
  const getPage = (url) => {
41
41
  $.get(url, (data) => {
42
42
  $(data).find('.ipbform').find('tbody').find('tr').each(function() {
43
- if (finalArray.length < limit && filterArray.indexOf(parseInt($(this).find('.row2 + .row2:not(.centered) a').attr('href').split('/f')[1].split('-')[0])) === -1) {
43
+ if (finalArray.length < limit && array.indexOf(parseInt($(this).find('.row2 + .row2:not(.centered) a').attr('href').split('/f')[1].split('-')[0])) === -1) {
44
44
  addContent(this);
45
45
  }
46
46
  });
@@ -58,15 +58,15 @@ const FNR = {
58
58
  getPage('/latest?change_version=invision');
59
59
  });
60
60
  },
61
- getMembers: function(option) {
61
+ getMembers: (option) => {
62
62
  return new Promise((resolve, reject) => {
63
63
  let members = [];
64
64
 
65
65
  const getUserData = (user, color) => {
66
66
  return {
67
- user: $(user).find('.avatar-mini a span strong').text(),
68
- id: $(user).find('.avatar-mini a').attr('href').split('?')[0],
69
- img: $(user).find('.avatar-mini a img').attr('src'),
67
+ user: $(user).find('.membername span').text().trim(),
68
+ id: $(user).find('.popupmenu .popupmenu-item a').attr('href').split('?')[0],
69
+ img: $(user).find('.mini-avatar img').attr('src'),
70
70
  color: color
71
71
  };
72
72
  };
@@ -74,13 +74,13 @@ const FNR = {
74
74
  const getUsersPage = (page) => {
75
75
  let users = [];
76
76
 
77
- $(page).find('#memberlist tbody tr').each(function() {
78
- const group = FNR.utility.getGroup($(this).find('.avatar-mini a span').attr('style').split('color:')[1]);
77
+ $(page).find('.member-list .member').each(function() {
78
+ const group = FNR.utility.getGroup($(this).find('.membername span').attr('style').split('color:')[1]);
79
79
 
80
80
  if (option) {
81
81
  users.push(getUserData(this, group));
82
82
  } else {
83
- if (group !== 'unknown' && group !== 'narracion') {
83
+ if (group !== 'unknown' && group !== forumConfig.skinOptions.adminGroup) {
84
84
  users.push(getUserData(this, group));
85
85
  }
86
86
  }
@@ -110,7 +110,7 @@ const FNR = {
110
110
  getPage('/memberlist?change_version=invision');
111
111
  });
112
112
  },
113
- getGroups: function(cache) {
113
+ getGroups: (cache) => {
114
114
  const getData = () => {
115
115
  return new Promise((resolve, reject) => {
116
116
  $.get('/groups?change_version=invision', (data) => {
@@ -122,7 +122,7 @@ const FNR = {
122
122
  name: $(this).find('a').text().trim(),
123
123
  color: $(this).find('a').css('color'),
124
124
  url: Vue.filter('url-to-normal')($(this).find('a').attr('href')),
125
- count: parseInt($(this).find('div > span').text())
125
+ count: parseInt($(this).find('div > span').text()) - 1
126
126
  });
127
127
  });
128
128
 
@@ -150,7 +150,7 @@ const FNR = {
150
150
 
151
151
  return readGroupsCache();
152
152
  },
153
- getAffiliates: function() {
153
+ getAffiliates: () => {
154
154
  return new Promise((resolve, reject) => {
155
155
  const tops = forumConfig.affiliatesMax;
156
156
 
@@ -177,111 +177,207 @@ const FNR = {
177
177
  });
178
178
  },
179
179
  },
180
- content: {
181
- post: {
182
- getPost: function(url) {
183
- return new Promise((resolve, reject) => {
184
- $.get(Vue.filter('url-to-invision')(url), (data) => {
185
- const post = $(data).find("#p" + url.split("#")[1]);
186
-
187
- resolve({
188
- author: {
189
- text: post.find(".author a").text(),
190
- color: post.find(".author a span").css("color"),
191
- url: Vue.filter('url-to-normal')(post.find(".author a").attr("href")),
192
- },
193
- content: post.find(".post-entry > div").html(),
194
- date: post.find(".author").html().split("</a>")[1],
195
- });
180
+ content: {
181
+ isAutosave: () => {
182
+ if (document.post === undefined) return false;
183
+ else return _userdata.user_id !== -1 && document.post.mode.value === 'reply' && document.post.t !== undefined
184
+ },
185
+ getPost: (url) => {
186
+ return new Promise((resolve, reject) => {
187
+ $.get(Vue.filter('url-to-invision')(url), (data) => {
188
+ const post = $(data).find("#p" + url.split("#")[1]);
189
+
190
+ resolve({
191
+ author: {
192
+ text: post.find(".author a").text(),
193
+ color: post.find(".author a span").css("color"),
194
+ url: Vue.filter('url-to-normal')(post.find(".author a").attr("href")),
195
+ },
196
+ content: post.find(".post-entry > div").html(),
197
+ date: post.find(".author").html().split("</a>")[1],
196
198
  });
197
199
  });
198
- },
199
- getLast: function(url) {
200
- return new Promise((resolve, reject) => {
201
- $.get(Vue.filter('url-to-invision')(url), (data) => {
202
- const url = $(data).find('.pagination.topic-options').children().last().prev().attr('href') || false;
203
- const self = data;
204
-
205
- const processData = (data) => {
206
- const getLast = (page) => {
207
- return $(page).find('.post').parent().children().last().prev();
208
- };
209
-
210
- const check = getLast(data).find('.author a').text() !== '';
211
-
212
- return {
213
- author: {
214
- text: (check) ? getLast(data).find('.author a').text() : 'Invitado',
215
- color: (check) ? getLast(data).find('.author a span').css('color') : '#bdbdbd',
216
- url: (check) ? getLast(data).find('.author a').attr('href').replace('?change_version=invision', '') : '#'
217
- },
218
- locate: {
219
- text: $(data).find('#navstrip').find('li').last().text(),
220
- url: $(data).find('#navstrip').find('li').last().find('a').attr('href').replace('?change_version=invision', '')
221
- },
222
- url: getLast(data).find('.postbody-head h3 a').attr('href').replace('?change_version=invision', ''),
223
- content: getLast(data).find('.post-entry > div').html(),
224
- date: (check) ? getLast(data).find('.author').html().split('</a>')[1].trim() : getLast(data).find('.author').html().split('Invitado')[1].trim()
225
- };
226
- };
200
+ });
201
+ },
202
+ genPost: (id, content) => {
203
+ return new Promise((resolve, reject) => {
204
+ let save = document.createElement('iframe');
227
205
 
228
- if (url) {
229
- $.get(url, (data) => {
230
- resolve(processData(data));
231
- });
232
- } else {
233
- resolve(processData(self));
234
- }
235
- });
206
+ save.id = 'forum-save';
207
+ save.src = '/post?t=' + id + '&mode=reply&change_version=invision';
208
+ save.width = 0;
209
+ save.height = 0;
210
+ save.onload = () => {
211
+ saveDOM.onload = () => {
212
+ $('#forum-save').remove();
213
+
214
+ console.clear();
215
+
216
+ resolve(true);
217
+ };
218
+
219
+ $('#forum-save').contents().find('.subtitle:contains("Mensaje")').next().find('textarea').val(content);
220
+ $('#forum-save').contents().find('.formbuttonrow.center input[value="Enviar"]').click();
221
+ };
222
+
223
+ document.querySelector('body > header').prepend(save);
224
+
225
+ const saveDOM = document.getElementById('forum-save');
226
+ });
227
+ },
228
+ genTopic: (id, name, content) => {
229
+ return new Promise((resolve, reject) => {
230
+ let save = document.createElement('iframe');
231
+
232
+ save.id = 'forum-save';
233
+ save.src = '/post?f=' + id + '&mode=newtopic&change_version=invision';
234
+ save.width = 0;
235
+ save.height = 0;
236
+ save.onload = () => {
237
+ saveDOM.onload = () => {
238
+ $('#forum-save').remove();
239
+
240
+ console.clear();
241
+
242
+ resolve(true);
243
+ };
244
+
245
+ $('#forum-save').contents().find('dl dt:contains("Título del tema")').parent().find('input').val(name);
246
+ $('#forum-save').contents().find('.subtitle:contains("Mensaje")').next().find('textarea').val(content);
247
+ $('#forum-save').contents().find('.formbuttonrow.center input[value="Enviar"]').click();
248
+ };
249
+
250
+ document.querySelector('body > header').prepend(save);
251
+
252
+ const saveDOM = document.getElementById('forum-save');
253
+ });
254
+ }
255
+ },
256
+ user: {
257
+ getUrl: (name) => {
258
+ let character =
259
+ name !== undefined ? encodeURIComponent(name)
260
+ .replace(/[!'()]/g, escape)
261
+ .replace(/\*/g, "%2A") :
262
+ _userdata.user_id;
263
+
264
+ return "/profile?mode=viewprofile&u=" + character;
265
+ },
266
+ getLevel: () => {
267
+ return new Promise((resolve, reject) => {
268
+ switch (_userdata.user_level) {
269
+ case 2:
270
+ resolve('mod');
271
+ case 1:
272
+ resolve('admin');
273
+ case 0:
274
+ return -1 == _userdata.user_id ? resolve('guest') : resolve('user');
275
+ }
276
+ });
277
+ },
278
+ getGroup: () => {
279
+ return new Promise((resolve, reject) => {
280
+ FNR.user.getLevel().then((status) => {
281
+ if (status === 'guest') {
282
+ resolve('unknown');
283
+ } else {
284
+ FNR.user.getProfile(_userdata.user_id, .25).then((data) => {
285
+ resolve(data['colour']);
286
+ });
287
+ }
236
288
  });
237
- }
289
+ });
238
290
  },
239
- topic: {
240
- genTopic: function(id, name, content) {
291
+ getProfile: (name, time) => {
292
+ const character = name != undefined ? FNR.user.getUrl(name) : FNR.user.getUrl();
293
+ const cache = time || 5;
294
+
295
+ const processData = (content) => {
296
+ if (content.find('a').length) return Vue.filter('url-to-normal')(content.find('a').attr('href'));
297
+ else if (content.find('table').length) return content.find('table').html();
298
+ else if (content.find('img').length) return content.find('img').attr('src');
299
+ else if (content.find('textarea').length) return content.find('textarea').val();
300
+ else if (content.find('span').length) return content.find('span').text().trim();
301
+ else if (content.text().trim() === '-') return '';
302
+ else return content.text();
303
+ };
304
+
305
+ const getData = () => {
241
306
  return new Promise((resolve, reject) => {
242
- let save = document.createElement('iframe');
307
+ $.get(character + '&change_version=invision', (data) => {
308
+ let user = {};
243
309
 
244
- save.id = 'forum-save';
245
- save.src = '/post?f=' + id + '&mode=newtopic&change_version=invision';
246
- save.width = 0;
247
- save.height = 0;
248
- save.onload = () => {
249
- saveDOM.onload = () => {
250
- $('#forum-save').remove();
310
+ user['name'] = $(data).find('.maintitle h1 span').text();
311
+ user['lastvisit'] = $(data).find('dt:contains("Última visita")').parent().find('dd').text();
312
+ user['colour'] = FNR.utility.getGroup($(data).find('.maintitle h1 span').css('color').replace('rgb(', 'rgb_').replace(/, /g, '_').replace(')', ''));
313
+ user['avatar'] = $(data).find('.real_avatar img').attr('src');
251
314
 
252
- console.clear();
315
+ user['links'] = {
316
+ profile: '/u' + character.split('&u=')[1],
317
+ mp: '/privmsg?mode=post&u=' + character.split('&u=')[1],
318
+ };
253
319
 
254
- resolve(true);
320
+ user['messages'] = {
321
+ public: parseInt($(data).find('span:contains("Mensajes")').parent().parent().find('dd > div').text()) || 0,
322
+ private: parseInt($(data).find('dt:contains("Mensajes privados")').parent().find('dd').text()) || 0
255
323
  };
256
324
 
257
- $('#forum-save').contents().find('dl dt:contains("Título del tema")').parent().find('input').val(name);
258
- $('#forum-save').contents().find('.subtitle:contains("Mensaje")').next().find('textarea').val(content);
259
- $('#forum-save').contents().find('.formbuttonrow.center input[value="Enviar"]').click();
260
- };
325
+ user['fields'] = {};
261
326
 
262
- document.querySelector('body > header').prepend(save);
327
+ $(data).find('dl[id^="field_id"]').each(function() {
328
+ if ($(this).find('dt span').text() !== '') {
329
+ if ($(this).find('dt span').text() === 'Mensajes') return;
263
330
 
264
- const saveDOM = document.getElementById('forum-save');
331
+ user.fields[FNR.utility.genSlug($(this).find('dt span').text())] = {
332
+ name: $(this).find('dt span').text(),
333
+ content: processData($(this).find('dd .field_uneditable'))
334
+ }
335
+ }
336
+ });
337
+
338
+ $(data).find('.ipbform2 > dl').each(function() {
339
+ if ($(this).find('dt span').length && $(this).find('dt span').text() !== '') {
340
+ if ($(this).find('dt span').text() === 'Mensajes') return;
341
+
342
+ user.fields[FNR.utility.genSlug($(this).find('dt span').text())] = {
343
+ name: $(this).find('dt span').text(),
344
+ content: processData($(this).find('dd'))
345
+ }
346
+ }
347
+ });
348
+
349
+ user.fields['rango'] = {
350
+ name: 'Rango',
351
+ content: $(data).find('dt:contains("Rango:")').parent().find('dd').text()
352
+ }
353
+
354
+ resolve(user);
355
+ });
265
356
  });
266
- },
267
- isAutosave: function() {
268
- if (document.post === undefined) return false;
269
- else return _userdata.user_id !== -1 && document.post.mode.value === 'reply' && document.post.t !== undefined
270
- }
271
- }
272
- },
273
- user: {
274
- getLevel: function() {
275
- switch (_userdata.user_level) {
276
- case 2:
277
- return 'mod';
278
- case 1:
279
- return 'admin';
280
- case 0:
281
- return -1 == _userdata.user_id ? 'guest' : 'user';
282
- }
357
+ };
358
+
359
+ const readUserCache = (dat) => {
360
+ const id = "userInfo" + dat;
361
+
362
+ return new Promise((resolve, reject) => {
363
+ FNR.cache.useData(id, cache).then(
364
+ (result) => {
365
+ resolve(result);
366
+ },
367
+ (err) => {
368
+ getData().then((data) => {
369
+ FNR.cache.setData(id, data);
370
+
371
+ resolve(data);
372
+ });
373
+ }
374
+ );
375
+ });
376
+ };
377
+
378
+ return readUserCache(name);
283
379
  },
284
- changeAccount: function(out, username, password) {
380
+ changeAccount: (out, username, password) => {
285
381
  return new Promise((resolve, reject) => {
286
382
  let save = document.createElement('iframe');
287
383
 
@@ -311,16 +407,7 @@ const FNR = {
311
407
  });
312
408
  },
313
409
  profile: {
314
- getUrl: function(name) {
315
- let character =
316
- name !== undefined ? encodeURIComponent(name)
317
- .replace(/[!'()]/g, escape)
318
- .replace(/\*/g, "%2A") :
319
- _userdata.user_id;
320
-
321
- return "/profile?mode=viewprofile&u=" + character;
322
- },
323
- getData: function(array) {
410
+ getData: (array) => {
324
411
  return new Promise((resolve, reject) => {
325
412
  $.get('/profile?change_version=invision&mode=editprofile', (data) => {
326
413
  const fields = data;
@@ -385,7 +472,7 @@ const FNR = {
385
472
  });
386
473
  });
387
474
  },
388
- setData: function(array) {
475
+ setData: (array) => {
389
476
  return new Promise((resolve, reject) => {
390
477
  const resolveSetter = () => {
391
478
  $('#forum-save').remove();
@@ -449,96 +536,7 @@ const FNR = {
449
536
  const saveDOM = document.getElementById('forum-save');
450
537
  });
451
538
  },
452
- getAll: function(name, time) {
453
- const character = name != undefined ? FNR.user.profile.getUrl(name) : FNR.user.profile.getUrl();
454
- const cache = time || 5;
455
-
456
- const processData = (content) => {
457
- if (content.find('a').length) return Vue.filter('url-to-normal')(content.find('a').attr('href'));
458
- else if (content.find('table').length) return content.find('table').html();
459
- else if (content.find('img').length) return content.find('img').attr('src');
460
- else if (content.find('textarea').length) return content.find('textarea').val();
461
- else if (content.find('span').length) return content.find('span').text().trim();
462
- else if (content.text().trim() === '-') return '';
463
- else return content.text();
464
- };
465
-
466
- const getData = () => {
467
- return new Promise((resolve, reject) => {
468
- $.get(character + '&change_version=invision', (data) => {
469
- let user = {};
470
-
471
- user['name'] = $(data).find('.maintitle h1 span').text();
472
- user['lastvisit'] = $(data).find('dt:contains("Última visita")').parent().find('dd').text();
473
- user['colour'] = FNR.utility.getGroup($(data).find('.maintitle h1 span').css('color').replace('rgb(', 'rgb_').replace(/, /g, '_').replace(')', ''));
474
- user['avatar'] = $(data).find('.real_avatar img').attr('src');
475
-
476
- user['links'] = {
477
- profile: '/u' + character.split('&u=')[1],
478
- mp: '/privmsg?mode=post&u=' + character.split('&u=')[1],
479
- };
480
-
481
- user['messages'] = {
482
- public: parseInt($(data).find('span:contains("Mensajes")').parent().parent().find('dd > div').text()) || 0,
483
- private: parseInt($(data).find('dt:contains("Mensajes privados")').parent().find('dd').text()) || 0
484
- };
485
-
486
- user['fields'] = {};
487
-
488
- $(data).find('dl[id^="field_id"]').each(function() {
489
- if ($(this).find('dt span').text() !== '') {
490
- if ($(this).find('dt span').text() === 'Mensajes') return;
491
-
492
- user.fields[FNR.utility.genSlug($(this).find('dt span').text())] = {
493
- name: $(this).find('dt span').text(),
494
- content: processData($(this).find('dd .field_uneditable'))
495
- }
496
- }
497
- });
498
-
499
- $(data).find('.ipbform2 > dl').each(function() {
500
- if ($(this).find('dt span').length && $(this).find('dt span').text() !== '') {
501
- if ($(this).find('dt span').text() === 'Mensajes') return;
502
-
503
- user.fields[FNR.utility.genSlug($(this).find('dt span').text())] = {
504
- name: $(this).find('dt span').text(),
505
- content: processData($(this).find('dd'))
506
- }
507
- }
508
- });
509
-
510
- user.fields['rango'] = {
511
- name: 'Rango',
512
- content: $(data).find('dt:contains("Rango:")').parent().find('dd').text()
513
- }
514
-
515
- resolve(user);
516
- });
517
- });
518
- };
519
-
520
- const readUserCache = (dat) => {
521
- const id = "userInfo" + dat;
522
-
523
- return new Promise((resolve, reject) => {
524
- FNR.cache.useData(id, cache).then(
525
- (result) => {
526
- resolve(result);
527
- },
528
- (err) => {
529
- getData().then((data) => {
530
- FNR.cache.setData(id, data);
531
-
532
- resolve(data);
533
- });
534
- }
535
- );
536
- });
537
- };
538
-
539
- return readUserCache(name);
540
- },
541
- getDrafts: function() {
539
+ getDrafts: () => {
542
540
  return new Promise((resolve, reject) => {
543
541
  $.get('/search?search_id=draftsearch&change_version=invision', (data) => {
544
542
  if (parseFloat($(data).find('.maintitle > h3').text()) !== 0) {
@@ -570,7 +568,11 @@ const FNR = {
570
568
  }
571
569
  },
572
570
  cache: {
573
- setData: function(id, data, time) {
571
+ getData: (id) => {
572
+ if (localStorage.getItem(forumData.prefix + '_' + id) === null) return false;
573
+ else return JSON.parse(localStorage.getItem(forumData.prefix + '_' + id)).content;
574
+ },
575
+ setData: (id, data, time) => {
574
576
  let cur_date = time === -1 ? 'undefined' : new Date().getTime();
575
577
 
576
578
  localStorage.setItem(
@@ -581,15 +583,11 @@ const FNR = {
581
583
  })
582
584
  );
583
585
  },
584
- getData: function(id) {
585
- if (localStorage.getItem(forumData.prefix + '_' + id) === null) return false;
586
- else return JSON.parse(localStorage.getItem(forumData.prefix + '_' + id)).content;
587
- },
588
- delData: function(id) {
586
+ delData: (id) => {
589
587
  if (localStorage.getItem(forumData.prefix + '_' + id) === null) return false;
590
588
  else return localStorage.removeItem(forumData.prefix + '_' + id);
591
589
  },
592
- useData: function(id, time) {
590
+ useData: (id, time) => {
593
591
  return new Promise((resolve, reject) => {
594
592
  let item = localStorage.getItem(forumData.prefix + '_' + id),
595
593
  cur_date = new Date(),
@@ -604,7 +602,7 @@ const FNR = {
604
602
  },
605
603
  },
606
604
  utility: {
607
- genSlug: function(text, alt) {
605
+ genSlug: (text, alt) => {
608
606
  const slug = (Q) => {
609
607
  const R = '\xE0\xE1\xE4\xE2\xE8\xE9\xEB\xEA\xEC\xED\xEF\xEE\xF2\xF3\xF6\xF4\xF9\xFA\xFC\xFB\xF1\xE7\xB7/_,:;';
610
608
  Q = Q.trim().toLowerCase();
@@ -616,10 +614,10 @@ const FNR = {
616
614
 
617
615
  return slug(text).replace(/-/g, replace);
618
616
  },
619
- genArray: function(string) {
617
+ genArray: (string) => {
620
618
  return JSON.parse(string.replace(/`/g, '"'));
621
619
  },
622
- genValidation: function(array) {
620
+ genValidation: (array) => {
623
621
  let final = '';
624
622
 
625
623
  [].forEach.call(array, (item) => {
@@ -640,7 +638,7 @@ const FNR = {
640
638
 
641
639
  return final;
642
640
  },
643
- getGroup: function(color) {
641
+ getGroup: (color) => {
644
642
  const returnHexVer = (code) => {
645
643
  let status = 'unknown';
646
644
 
@@ -669,7 +667,7 @@ const FNR = {
669
667
  }
670
668
  },
671
669
  html: {
672
- genModal: function(title, content, buttons) {
670
+ genModal: (title, content, buttons) => {
673
671
  if (title === '' || title === undefined || title === null) return;
674
672
  if (content === '' || content === undefined || content === null) return;
675
673
 
@@ -706,7 +704,7 @@ const FNR = {
706
704
 
707
705
  document.getElementById('forum-modal').innerHTML = final;
708
706
  },
709
- genPrompt: function(title, content, placeholder, text) {
707
+ genPrompt: (title, content, placeholder, text) => {
710
708
  if (title === '' || title === undefined || title === null) return;
711
709
  if (content === '' || content === undefined || content === null) return;
712
710
 
@@ -741,7 +739,7 @@ const FNR = {
741
739
  };
742
740
  });
743
741
  },
744
- genNotification: function(title, content, icon, url) {
742
+ genNotification: (title, content, icon, url) => {
745
743
  if (title === '' || title === undefined || title === null) return;
746
744
  if (content === '' || content === undefined || content === null) return;
747
745
  if (content.length > 50) return;
@@ -799,7 +797,7 @@ const FNR = {
799
797
  }
800
798
  },
801
799
  behaviour: {
802
- genWiki: function() {
800
+ genWiki: () => {
803
801
  if (document.querySelector('.wiki-cascade')) {
804
802
  [].forEach.call(document.getElementsByClassName('wiki-cascade'), (item) => {
805
803
  item.onclick = () => {
@@ -843,7 +841,7 @@ const FNR = {
843
841
  };
844
842
  }
845
843
  },
846
- genDropeable: function() {
844
+ genDropeable: () => {
847
845
  if (document.querySelector('.is-dropeable')) {
848
846
  [].forEach.call(document.getElementsByClassName('is-dropeable'), (item) => {
849
847
  item.onclick = () => {