HEX
Server: LiteSpeed
System: Linux 111n6.sieutocviet.page 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
User: nhathuocat (1048)
PHP: 7.4.30
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/nhathuocat/public_html/wp-content/plugins/fixed-toc/admin/widget/widget-script.js
'use strict';
(function($) {
  // Toggle fields
  (function() {
    // Set data
    var data = {

      contents_header_font_family: {
        contents_header_customize_font_family: {
          type: 'select',
          val: 'customize',
          increase: 1
        }
      },

      contents_list_font_family: {
        contents_list_customize_font_family: {
          type: 'select',
          val: 'customize',
          increase: 1
        }
      },

      contents_list_nested: {
        contents_list_strong_1st: {type: 'check', val: true, increase: 1},
        contents_list_colexp: {type: 'check', val: true, increase: 1},
        contents_list_sub_icon: {type: 'check', val: true, increase: 1 / 2},
        contents_list_colexp_init_state: {
          type: 'check',
          val: true,
          increase: 1 / 4
        },
        contents_list_accordion: {type: 'check', val: true, increase: 0.3334}
      },

      contents_list_colexp: {
        contents_list_sub_icon: {type: 'check', val: true, increase: 1 / 2},
        contents_list_colexp_init_state: {
          type: 'check',
          val: true,
          increase: 1 / 4
        },
        contents_list_accordion: {type: 'check', val: true, increase: 0.3334}
      },

      contents_list_sub_icon: {
        contents_list_accordion: {type: 'check', val: true, increase: 0.3334},
        contents_list_colexp_init_state: {
          type: 'check',
          val: true,
          increase: 1 / 4
        }
      },

      contents_list_accordion: {
        contents_list_colexp_init_state: {
          type: 'check',
          val: false,
          increase: 1 / 4
        }
      }

    }; // End data

    // Detect input value
    // noinspection DuplicatedCode
    var detectInput = {
      isIncrease: function(type, $trigger, val) {
        var result = false;
        switch (type) {
          case 'check' : {
            result = this.check($trigger, val);
            break;
          }

          case 'multi_check' : {
            result = this.multiCheck($trigger, val);
            break;
          }

          case 'select' : {
            result = this.select($trigger, val);
            break;
          }
        }
        return result;
      },

      check: function($trigger, val) {
        var checked = false;
        if ($trigger.is(':checked')) {
          checked = true;
        }
        return val == checked;
      },

      multiCheck: function($trigger, val) {
        var checked = false;
        $trigger.each(function() {
          if ($(this).is(':checked')) {
            checked = (-1 !== val.indexOf($(this).val()));
          }
        });
        return checked;
      },

      select: function($trigger, val) {
        return val == $trigger.val();
      }
    }; // End detect

    // Control
    var control = {
      fields: {},

      toggleFields: function(index) {
        this.setFields(index);
        $.each(data, function(k, v) {
          var $trigger = control.getTrigger(k, index);
          control.toggle(v, index);

          $trigger.on('change', function() {
            control.setFields(index);
            control.toggle(v, index);
          });
        });
      },

      toggle: function(targets, index) {
        // noinspection JSUnusedLocalSymbols
        $.each(this.fields, function(k, v) {
          var $target = control.getTarget(k, index);
          if (1 <= control.fields[k]) {
            $target.show(200);
          } else {
            $target.hide(200);
          }
        });
      },

      setFields: function(index) {
        this.fields = {};
        $.each(data, function(triggerName, targets) {
          var $trigger = control.getTrigger(triggerName, index);
          // noinspection DuplicatedCode
          $.each(targets, function(targetName, v) {
            var visibility = 0;
            if (undefined !== control.fields[targetName]) {
              visibility = control.fields[targetName];
            }

            if (detectInput.isIncrease(v.type, $trigger, v.val)) {
              visibility = visibility + parseFloat(v.increase);
            } else {
              visibility = 0;
            }

            control.fields[targetName] = visibility;
          });
        });
      },

      getTrigger: function(triggerName, index) {
        return $('#div-widget-fixedtoc-' + index + '-' + triggerName).
            find('input:not([type="hidden"]), textarea, select');
      },

      getTarget: function(targetName, index) {
        return $('#div-widget-fixedtoc-' + index + '-' + targetName);
      }

    }; // End control

    function initToggleFields(widget) {
      if (!widget.length) {
        return;
      }

      var id = widget.attr('id');
      var match = id.match(/fixedtoc-(\d)$/i);
      if (match) {
        var index = match[1];
        control.toggleFields(index);
      }
    }

    function onFormUpdate(event, widget) {
      initToggleFields(widget);
    }

    $(document).on('widget-added widget-updated', onFormUpdate);

    $(document).ready(function() {
      $('#widgets-right .widget').each(function() {
        initToggleFields($(this));
      });
    });

  })(); // End toggle fields.

  // Color Picker
  (function() {
    function initColorPicker(widget) {
      // noinspection JSUnresolvedFunction
      widget.find('.fixedtoc-color-field').wpColorPicker({
        change: _.throttle(function() { // For Customizer
          $(this).trigger('change');
        })
      });
    }

    function onFormUpdate(event, widget) {
      initColorPicker(widget);
    }

    $(document).on('widget-added widget-updated', onFormUpdate);

    $(document).ready(function() {
      $('#widgets-right .widget:has(.fixedtoc-color-field)').each(function() {
        initColorPicker($(this));
      });
    });
  })();

})(jQuery);