1
0
mirror of https://github.com/moodle/moodle.git synced 2025-03-30 21:42:42 +02:00
moodle/lib/amd/build/showhidesettings.min.js.map
Andrew Nicols 0a4047ab31 MDL-73915 js: Switch amd minification to terser
Unfortunately the babel minify-mangle plugin seems to be abandoned and
in certain circumstances can be very buggy. The only safe options are to
disable it, or to switch to a different minification library.

Not minifying our javascript is not ideal, so this commit updates the
javascript tasks to use a rollup, combined with babel, and terser.

Babel still converts code from ES/UMD/AMD to AMD modules with the
relevant browser support, whilst terser minifies the code.

The rollup bundler handles tracking and creation of sourcemaps, and
supports better parallelisation of the tasks.

Since the upgrade to Node LTS/Gallium requires an upgrade to @babel/core
and eslint, which change the built files anyway, this seems like the
ideal time to make this change.
2022-02-23 08:55:09 +08:00

1 line
16 KiB
Plaintext

{"version":3,"file":"showhidesettings.min.js","sources":["../src/showhidesettings.js"],"sourcesContent":["/**\n * Show/hide admin settings based on other settings selected\n *\n * @copyright 2018 Davo Smith, Synergy Learning\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['jquery'], function($) {\n var dependencies;\n\n // -------------------------------------------------\n // Support functions, used by dependency functions.\n // -------------------------------------------------\n\n /**\n * Check to see if the given element is the hidden element that makes sure checkbox\n * elements always submit a value.\n * @param {jQuery} $el\n * @returns {boolean}\n */\n function isCheckboxHiddenElement($el) {\n return ($el.is('input[type=hidden]') && $el.siblings('input[type=checkbox][name=\"' + $el.attr('name') + '\"]').length);\n }\n\n /**\n * Check to see if this is a radio button with the wrong value (i.e. a radio button from\n * the group we are interested in, but not the specific one we wanted).\n * @param {jQuery} $el\n * @param {string} value\n * @returns {boolean}\n */\n function isWrongRadioButton($el, value) {\n return ($el.is('input[type=radio]') && $el.attr('value') !== value);\n }\n\n /**\n * Is this element relevant when we're looking for checked / not checked status?\n * @param {jQuery} $el\n * @param {string} value\n * @returns {boolean}\n */\n function isCheckedRelevant($el, value) {\n return (!isCheckboxHiddenElement($el) && !isWrongRadioButton($el, value));\n }\n\n /**\n * Is this an unchecked radio button? (If it is, we want to skip it, as\n * we're only interested in the value of the radio button that is checked)\n * @param {jQuery} $el\n * @returns {boolean}\n */\n function isUncheckedRadioButton($el) {\n return ($el.is('input[type=radio]') && !$el.prop('checked'));\n }\n\n /**\n * Is this an unchecked checkbox?\n * @param {jQuery} $el\n * @returns {boolean}\n */\n function isUncheckedCheckbox($el) {\n return ($el.is('input[type=checkbox]') && !$el.prop('checked'));\n }\n\n /**\n * Is this a multi-select select element?\n * @param {jQuery} $el\n * @returns {boolean}\n */\n function isMultiSelect($el) {\n return ($el.is('select') && $el.prop('multiple'));\n }\n\n /**\n * Does the multi-select exactly match the list of values provided?\n * @param {jQuery} $el\n * @param {array} values\n * @returns {boolean}\n */\n function multiSelectMatches($el, values) {\n var selected = $el.val() || [];\n if (!values.length) {\n // No values - nothing to match against.\n return false;\n }\n if (selected.length !== values.length) {\n // Different number of expected and actual values - cannot possibly be a match.\n return false;\n }\n for (var i in selected) {\n if (selected.hasOwnProperty(i)) {\n if (values.indexOf(selected[i]) === -1) {\n return false; // Found a non-matching value - give up immediately.\n }\n }\n }\n // Didn't find a non-matching value, so we have a match.\n return true;\n }\n\n // -------------------------------\n // Specific dependency functions.\n // -------------------------------\n\n var depFns = {\n notchecked: function($dependon, value) {\n var hide = false;\n value = String(value);\n $dependon.each(function(idx, el) {\n var $el = $(el);\n if (isCheckedRelevant($el, value)) {\n hide = hide || !$el.prop('checked');\n }\n });\n return hide;\n },\n\n checked: function($dependon, value) {\n var hide = false;\n value = String(value);\n $dependon.each(function(idx, el) {\n var $el = $(el);\n if (isCheckedRelevant($el, value)) {\n hide = hide || $el.prop('checked');\n }\n });\n return hide;\n },\n\n noitemselected: function($dependon) {\n var hide = false;\n $dependon.each(function(idx, el) {\n var $el = $(el);\n hide = hide || ($el.prop('selectedIndex') === -1);\n });\n return hide;\n },\n\n eq: function($dependon, value) {\n var hide = false;\n var hiddenVal = false;\n value = String(value);\n $dependon.each(function(idx, el) {\n var $el = $(el);\n if (isUncheckedRadioButton($el)) {\n // For radio buttons, we're only interested in the one that is checked.\n return;\n }\n if (isCheckboxHiddenElement($el)) {\n // This is the hidden input that is part of the checkbox setting.\n // We will use this value, if the associated checkbox is unchecked.\n hiddenVal = ($el.val() === value);\n return;\n }\n if (isUncheckedCheckbox($el)) {\n // Checkbox is not checked - hide depends on the 'unchecked' value stored in\n // the associated hidden element, which we have already found, above.\n hide = hide || hiddenVal;\n return;\n }\n if (isMultiSelect($el)) {\n // Expect a list of values to match, separated by '|' - all of them must\n // match the values selected.\n var values = value.split('|');\n hide = multiSelectMatches($el, values);\n return;\n }\n // All other element types - just compare the value directly.\n hide = hide || ($el.val() === value);\n });\n return hide;\n },\n\n 'in': function($dependon, value) {\n var hide = false;\n var hiddenVal = false;\n var values = value.split('|');\n $dependon.each(function(idx, el) {\n var $el = $(el);\n if (isUncheckedRadioButton($el)) {\n // For radio buttons, we're only interested in the one that is checked.\n return;\n }\n if (isCheckboxHiddenElement($el)) {\n // This is the hidden input that is part of the checkbox setting.\n // We will use this value, if the associated checkbox is unchecked.\n hiddenVal = (values.indexOf($el.val()) > -1);\n return;\n }\n if (isUncheckedCheckbox($el)) {\n // Checkbox is not checked - hide depends on the 'unchecked' value stored in\n // the associated hidden element, which we have already found, above.\n hide = hide || hiddenVal;\n return;\n }\n if (isMultiSelect($el)) {\n // For multiselect, we check to see if the list of values provided matches the list selected.\n hide = multiSelectMatches($el, values);\n return;\n }\n // All other element types - check to see if the value is in the list.\n hide = hide || (values.indexOf($el.val()) > -1);\n });\n return hide;\n },\n\n defaultCondition: function($dependon, value) { // Not equal.\n var hide = false;\n var hiddenVal = false;\n value = String(value);\n $dependon.each(function(idx, el) {\n var $el = $(el);\n if (isUncheckedRadioButton($el)) {\n // For radio buttons, we're only interested in the one that is checked.\n return;\n }\n if (isCheckboxHiddenElement($el)) {\n // This is the hidden input that is part of the checkbox setting.\n // We will use this value, if the associated checkbox is unchecked.\n hiddenVal = ($el.val() !== value);\n return;\n }\n if (isUncheckedCheckbox($el)) {\n // Checkbox is not checked - hide depends on the 'unchecked' value stored in\n // the associated hidden element, which we have already found, above.\n hide = hide || hiddenVal;\n return;\n }\n if (isMultiSelect($el)) {\n // Expect a list of values to match, separated by '|' - all of them must\n // match the values selected to *not* hide the element.\n var values = value.split('|');\n hide = !multiSelectMatches($el, values);\n return;\n }\n // All other element types - just compare the value directly.\n hide = hide || ($el.val() !== value);\n });\n return hide;\n }\n };\n\n /**\n * Find the element with the given name\n * @param {String} name\n * @returns {*|jQuery|HTMLElement}\n */\n function getElementsByName(name) {\n // For the array elements, we use [name^=\"something[\"] to find the elements that their name begins with 'something['/\n // This is to find both name = 'something[]' and name='something[index]'.\n return $('[name=\"' + name + '\"],[name^=\"' + name + '[\"]');\n }\n\n /**\n * Check to see whether a particular condition is met\n * @param {*|jQuery|HTMLElement} $dependon\n * @param {String} condition\n * @param {mixed} value\n * @returns {Boolean}\n */\n function checkDependency($dependon, condition, value) {\n if (typeof depFns[condition] === \"function\") {\n return depFns[condition]($dependon, value);\n }\n return depFns.defaultCondition($dependon, value);\n }\n\n /**\n * Show / hide the elements that depend on some elements.\n */\n function updateDependencies() {\n // Process all dependency conditions.\n var toHide = {};\n $.each(dependencies, function(dependonname) {\n var dependon = getElementsByName(dependonname);\n $.each(dependencies[dependonname], function(condition, values) {\n $.each(values, function(value, elements) {\n var hide = checkDependency(dependon, condition, value);\n $.each(elements, function(idx, elToHide) {\n if (toHide.hasOwnProperty(elToHide)) {\n toHide[elToHide] = toHide[elToHide] || hide;\n } else {\n toHide[elToHide] = hide;\n }\n });\n });\n });\n });\n\n // Update the hidden status of all relevant elements.\n $.each(toHide, function(elToHide, hide) {\n getElementsByName(elToHide).each(function(idx, el) {\n var $parent = $(el).closest('.form-item');\n if ($parent.length) {\n if (hide) {\n $parent.hide();\n } else {\n $parent.show();\n }\n }\n });\n });\n }\n\n /**\n * Initialise the event handlers.\n */\n function initHandlers() {\n $.each(dependencies, function(depname) {\n var $el = getElementsByName(depname);\n if ($el.length) {\n $el.on('change', updateDependencies);\n }\n });\n updateDependencies();\n }\n\n /**\n * Hide the 'this setting may be hidden' messages.\n */\n function hideDependencyInfo() {\n $('.form-dependenton').hide();\n }\n\n return {\n init: function(opts) {\n dependencies = opts.dependencies;\n initHandlers();\n hideDependencyInfo();\n }\n };\n});"],"names":["define","$","dependencies","isCheckboxHiddenElement","$el","is","siblings","attr","length","isCheckedRelevant","value","isWrongRadioButton","isUncheckedRadioButton","prop","isUncheckedCheckbox","isMultiSelect","multiSelectMatches","values","selected","val","i","hasOwnProperty","indexOf","depFns","notchecked","$dependon","hide","String","each","idx","el","checked","noitemselected","eq","hiddenVal","split","defaultCondition","getElementsByName","name","updateDependencies","toHide","dependonname","dependon","condition","elements","checkDependency","elToHide","$parent","closest","show","init","opts","depname","on"],"mappings":"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"}