var/cache/dev/twig/1e/1ea14e6f20e3d4a31aef2b3028985545760b49accd42ef19cc629965675dd8d1.php line 34

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\CoreExtension;
  6. use Twig\Extension\SandboxExtension;
  7. use Twig\Markup;
  8. use Twig\Sandbox\SecurityError;
  9. use Twig\Sandbox\SecurityNotAllowedTagError;
  10. use Twig\Sandbox\SecurityNotAllowedFilterError;
  11. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  12. use Twig\Source;
  13. use Twig\Template;
  14. /* @Twig/base_js.html.twig */
  15. class __TwigTemplate_41775f073e6f8d42d504d816e3eb45eb2d6076d22eed76987df3a0911ef6349f extends Template
  16. {
  17.     private $source;
  18.     private $macros = [];
  19.     public function __construct(Environment $env)
  20.     {
  21.         parent::__construct($env);
  22.         $this->source $this->getSourceContext();
  23.         $this->parent false;
  24.         $this->blocks = [
  25.         ];
  26.     }
  27.     protected function doDisplay(array $context, array $blocks = [])
  28.     {
  29.         $macros $this->macros;
  30.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  31.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""@Twig/base_js.html.twig"));
  32.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  33.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""@Twig/base_js.html.twig"));
  34.         // line 1
  35.         $__internal_compile_0 = (("The template \"" $this->getTemplateName()) . "\" is deprecated since Symfony 4.4, will be removed in 5.0.");
  36.         trigger_deprecation('''',         $__internal_compile_0." in \"@Twig/base_js.html.twig\" at line 1.");
  37.         // line 4
  38.         yield "<script";
  39.         if ((array_key_exists("csp_script_nonce"$context) && (isset($context["csp_script_nonce"]) || array_key_exists("csp_script_nonce"$context) ? $context["csp_script_nonce"] : (function () { throw new RuntimeError('Variable "csp_script_nonce" does not exist.'4$this->source); })()))) {
  40.             yield " nonce=\"";
  41.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["csp_script_nonce"]) || array_key_exists("csp_script_nonce"$context) ? $context["csp_script_nonce"] : (function () { throw new RuntimeError('Variable "csp_script_nonce" does not exist.'4$this->source); })()), "html"nulltrue);
  42.             yield "\"";
  43.         }
  44.         yield ">/*<![CDATA[*/
  45.     ";
  46.         // line 8
  47.         yield "
  48.     Sfjs = (function() {
  49.         \"use strict\";
  50.         if ('classList' in document.documentElement) {
  51.             var hasClass = function (el, cssClass) { return el.classList.contains(cssClass); };
  52.             var removeClass = function(el, cssClass) { el.classList.remove(cssClass); };
  53.             var addClass = function(el, cssClass) { el.classList.add(cssClass); };
  54.             var toggleClass = function(el, cssClass) { el.classList.toggle(cssClass); };
  55.         } else {
  56.             var hasClass = function (el, cssClass) { return el.className.match(new RegExp('\\\\b' + cssClass + '\\\\b')); };
  57.             var removeClass = function(el, cssClass) { el.className = el.className.replace(new RegExp('\\\\b' + cssClass + '\\\\b'), ' '); };
  58.             var addClass = function(el, cssClass) { if (!hasClass(el, cssClass)) { el.className += \" \" + cssClass; } };
  59.             var toggleClass = function(el, cssClass) { hasClass(el, cssClass) ? removeClass(el, cssClass) : addClass(el, cssClass); };
  60.         }
  61.         var addEventListener;
  62.         var el = document.createElement('div');
  63.         if (!('addEventListener' in el)) {
  64.             addEventListener = function (element, eventName, callback) {
  65.                 element.attachEvent('on' + eventName, callback);
  66.             };
  67.         } else {
  68.             addEventListener = function (element, eventName, callback) {
  69.                 element.addEventListener(eventName, callback, false);
  70.             };
  71.         }
  72.         return {
  73.             addEventListener: addEventListener,
  74.             createTabs: function() {
  75.                 var tabGroups = document.querySelectorAll('.sf-tabs:not([data-processed=true])');
  76.                 /* create the tab navigation for each group of tabs */
  77.                 for (var i = 0; i < tabGroups.length; i++) {
  78.                     var tabs = tabGroups[i].querySelectorAll(':scope > .tab');
  79.                     var tabNavigation = document.createElement('ul');
  80.                     tabNavigation.className = 'tab-navigation';
  81.                     var selectedTabId = 'tab-' + i + '-0'; /* select the first tab by default */
  82.                     for (var j = 0; j < tabs.length; j++) {
  83.                         var tabId = 'tab-' + i + '-' + j;
  84.                         var tabTitle = tabs[j].querySelector('.tab-title').innerHTML;
  85.                         var tabNavigationItem = document.createElement('li');
  86.                         tabNavigationItem.setAttribute('data-tab-id', tabId);
  87.                         if (hasClass(tabs[j], 'active')) { selectedTabId = tabId; }
  88.                         if (hasClass(tabs[j], 'disabled')) { addClass(tabNavigationItem, 'disabled'); }
  89.                         tabNavigationItem.innerHTML = tabTitle;
  90.                         tabNavigation.appendChild(tabNavigationItem);
  91.                         var tabContent = tabs[j].querySelector('.tab-content');
  92.                         tabContent.parentElement.setAttribute('id', tabId);
  93.                     }
  94.                     tabGroups[i].insertBefore(tabNavigation, tabGroups[i].firstChild);
  95.                     addClass(document.querySelector('[data-tab-id=\"' + selectedTabId + '\"]'), 'active');
  96.                 }
  97.                 /* display the active tab and add the 'click' event listeners */
  98.                 for (i = 0; i < tabGroups.length; i++) {
  99.                     tabNavigation = tabGroups[i].querySelectorAll(':scope >.tab-navigation li');
  100.                     for (j = 0; j < tabNavigation.length; j++) {
  101.                         tabId = tabNavigation[j].getAttribute('data-tab-id');
  102.                         document.getElementById(tabId).querySelector('.tab-title').className = 'hidden';
  103.                         if (hasClass(tabNavigation[j], 'active')) {
  104.                             document.getElementById(tabId).className = 'block';
  105.                         } else {
  106.                             document.getElementById(tabId).className = 'hidden';
  107.                         }
  108.                         tabNavigation[j].addEventListener('click', function(e) {
  109.                             var activeTab = e.target || e.srcElement;
  110.                             /* needed because when the tab contains HTML contents, user can click */
  111.                             /* on any of those elements instead of their parent '<li>' element */
  112.                             while (activeTab.tagName.toLowerCase() !== 'li') {
  113.                                 activeTab = activeTab.parentNode;
  114.                             }
  115.                             /* get the full list of tabs through the parent of the active tab element */
  116.                             var tabNavigation = activeTab.parentNode.children;
  117.                             for (var k = 0; k < tabNavigation.length; k++) {
  118.                                 var tabId = tabNavigation[k].getAttribute('data-tab-id');
  119.                                 document.getElementById(tabId).className = 'hidden';
  120.                                 removeClass(tabNavigation[k], 'active');
  121.                             }
  122.                             addClass(activeTab, 'active');
  123.                             var activeTabId = activeTab.getAttribute('data-tab-id');
  124.                             document.getElementById(activeTabId).className = 'block';
  125.                         });
  126.                     }
  127.                     tabGroups[i].setAttribute('data-processed', 'true');
  128.                 }
  129.             },
  130.             createToggles: function() {
  131.                 var toggles = document.querySelectorAll('.sf-toggle:not([data-processed=true])');
  132.                 for (var i = 0; i < toggles.length; i++) {
  133.                     var elementSelector = toggles[i].getAttribute('data-toggle-selector');
  134.                     var element = document.querySelector(elementSelector);
  135.                     addClass(element, 'sf-toggle-content');
  136.                     if (toggles[i].hasAttribute('data-toggle-initial') && toggles[i].getAttribute('data-toggle-initial') == 'display') {
  137.                         addClass(toggles[i], 'sf-toggle-on');
  138.                         addClass(element, 'sf-toggle-visible');
  139.                     } else {
  140.                         addClass(toggles[i], 'sf-toggle-off');
  141.                         addClass(element, 'sf-toggle-hidden');
  142.                     }
  143.                     addEventListener(toggles[i], 'click', function(e) {
  144.                         e.preventDefault();
  145.                         if ('' !== window.getSelection().toString()) {
  146.                             /* Don't do anything on text selection */
  147.                             return;
  148.                         }
  149.                         var toggle = e.target || e.srcElement;
  150.                         /* needed because when the toggle contains HTML contents, user can click */
  151.                         /* on any of those elements instead of their parent '.sf-toggle' element */
  152.                         while (!hasClass(toggle, 'sf-toggle')) {
  153.                             toggle = toggle.parentNode;
  154.                         }
  155.                         var element = document.querySelector(toggle.getAttribute('data-toggle-selector'));
  156.                         toggleClass(toggle, 'sf-toggle-on');
  157.                         toggleClass(toggle, 'sf-toggle-off');
  158.                         toggleClass(element, 'sf-toggle-hidden');
  159.                         toggleClass(element, 'sf-toggle-visible');
  160.                         /* the toggle doesn't change its contents when clicking on it */
  161.                         if (!toggle.hasAttribute('data-toggle-alt-content')) {
  162.                             return;
  163.                         }
  164.                         if (!toggle.hasAttribute('data-toggle-original-content')) {
  165.                             toggle.setAttribute('data-toggle-original-content', toggle.innerHTML);
  166.                         }
  167.                         var currentContent = toggle.innerHTML;
  168.                         var originalContent = toggle.getAttribute('data-toggle-original-content');
  169.                         var altContent = toggle.getAttribute('data-toggle-alt-content');
  170.                         toggle.innerHTML = currentContent !== altContent ? altContent : originalContent;
  171.                     });
  172.                     /* Prevents from disallowing clicks on links inside toggles */
  173.                     var toggleLinks = toggles[i].querySelectorAll('a');
  174.                     for (var j = 0; j < toggleLinks.length; j++) {
  175.                         addEventListener(toggleLinks[j], 'click', function(e) {
  176.                             e.stopPropagation();
  177.                         });
  178.                     }
  179.                     toggles[i].setAttribute('data-processed', 'true');
  180.                 }
  181.             },
  182.             createFilters: function() {
  183.                 document.querySelectorAll('[data-filters] [data-filter]').forEach(function (filter) {
  184.                     var filters = filter.closest('[data-filters]'),
  185.                         type = 'choice',
  186.                         name = filter.dataset.filter,
  187.                         ucName = name.charAt(0).toUpperCase()+name.slice(1),
  188.                         list = document.createElement('ul'),
  189.                         values = filters.dataset['filter'+ucName] || filters.querySelectorAll('[data-filter-'+name+']'),
  190.                         labels = {},
  191.                         defaults = null,
  192.                         indexed = {},
  193.                         processed = {};
  194.                     if (typeof values === 'string') {
  195.                         type = 'level';
  196.                         labels = values.split(',');
  197.                         values = values.toLowerCase().split(',');
  198.                         defaults = values.length - 1;
  199.                     }
  200.                     addClass(list, 'filter-list');
  201.                     addClass(list, 'filter-list-'+type);
  202.                     values.forEach(function (value, i) {
  203.                         if (value instanceof HTMLElement) {
  204.                             value = value.dataset['filter'+ucName];
  205.                         }
  206.                         if (value in processed) {
  207.                             return;
  208.                         }
  209.                         var option = document.createElement('li'),
  210.                             label = i in labels ? labels[i] : value,
  211.                             active = false,
  212.                             matches;
  213.                         if ('' === label) {
  214.                             option.innerHTML = '<em>(none)</em>';
  215.                         } else {
  216.                             option.innerText = label;
  217.                         }
  218.                         option.dataset.filter = value;
  219.                         option.setAttribute('title', 1 === (matches = filters.querySelectorAll('[data-filter-'+name+'=\"'+value+'\"]').length) ? 'Matches 1 row' : 'Matches '+matches+' rows');
  220.                         indexed[value] = i;
  221.                         list.appendChild(option);
  222.                         addEventListener(option, 'click', function () {
  223.                             if ('choice' === type) {
  224.                                 filters.querySelectorAll('[data-filter-'+name+']').forEach(function (row) {
  225.                                     if (option.dataset.filter === row.dataset['filter'+ucName]) {
  226.                                         toggleClass(row, 'filter-hidden-'+name);
  227.                                     }
  228.                                 });
  229.                                 toggleClass(option, 'active');
  230.                             } else if ('level' === type) {
  231.                                 if (i === this.parentNode.querySelectorAll('.active').length - 1) {
  232.                                     return;
  233.                                 }
  234.                                 this.parentNode.querySelectorAll('li').forEach(function (currentOption, j) {
  235.                                     if (j <= i) {
  236.                                         addClass(currentOption, 'active');
  237.                                         if (i === j) {
  238.                                             addClass(currentOption, 'last-active');
  239.                                         } else {
  240.                                             removeClass(currentOption, 'last-active');
  241.                                         }
  242.                                     } else {
  243.                                         removeClass(currentOption, 'active');
  244.                                         removeClass(currentOption, 'last-active');
  245.                                     }
  246.                                 });
  247.                                 filters.querySelectorAll('[data-filter-'+name+']').forEach(function (row) {
  248.                                     if (i < indexed[row.dataset['filter'+ucName]]) {
  249.                                         addClass(row, 'filter-hidden-'+name);
  250.                                     } else {
  251.                                         removeClass(row, 'filter-hidden-'+name);
  252.                                     }
  253.                                 });
  254.                             }
  255.                         });
  256.                         if ('choice' === type) {
  257.                             active = null === defaults || 0 <= defaults.indexOf(value);
  258.                         } else if ('level' === type) {
  259.                             active = i <= defaults;
  260.                             if (active && i === defaults) {
  261.                                 addClass(option, 'last-active');
  262.                             }
  263.                         }
  264.                         if (active) {
  265.                             addClass(option, 'active');
  266.                         } else {
  267.                             filters.querySelectorAll('[data-filter-'+name+'=\"'+value+'\"]').forEach(function (row) {
  268.                                 toggleClass(row, 'filter-hidden-'+name);
  269.                             });
  270.                         }
  271.                         processed[value] = true;
  272.                     });
  273.                     if (1 < list.childNodes.length) {
  274.                         filter.appendChild(list);
  275.                         filter.dataset.filtered = '';
  276.                     }
  277.                 });
  278.             }
  279.         };
  280.     })();
  281.     Sfjs.addEventListener(document, 'DOMContentLoaded', function() {
  282.         Sfjs.createTabs();
  283.         Sfjs.createToggles();
  284.         Sfjs.createFilters();
  285.     });
  286. /*]]>*/</script>
  287. ";
  288.         
  289.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  290.         
  291.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  292.         return; yield '';
  293.     }
  294.     /**
  295.      * @codeCoverageIgnore
  296.      */
  297.     public function getTemplateName()
  298.     {
  299.         return "@Twig/base_js.html.twig";
  300.     }
  301.     /**
  302.      * @codeCoverageIgnore
  303.      */
  304.     public function isTraitable()
  305.     {
  306.         return false;
  307.     }
  308.     /**
  309.      * @codeCoverageIgnore
  310.      */
  311.     public function getDebugInfo()
  312.     {
  313.         return array (  56 => 8,  47 => 4,  44 => 1,);
  314.     }
  315.     public function getSourceContext()
  316.     {
  317.         return new Source("{% deprecated 'The template \"' ~ _self ~'\" is deprecated since Symfony 4.4, will be removed in 5.0.' %}
  318. {# This file is based on WebProfilerBundle/Resources/views/Profiler/base_js.html.twig.
  319.    If you make any change in this file, verify the same change is needed in the other file. #}
  320. <script{% if csp_script_nonce is defined and csp_script_nonce %} nonce=\"{{ csp_script_nonce }}\"{% endif %}>/*<![CDATA[*/
  321.     {# Caution: the contents of this file are processed by Twig before loading
  322.                 them as JavaScript source code. Always use '/*' comments instead
  323.                 of '//' comments to avoid impossible-to-debug side-effects #}
  324.     Sfjs = (function() {
  325.         \"use strict\";
  326.         if ('classList' in document.documentElement) {
  327.             var hasClass = function (el, cssClass) { return el.classList.contains(cssClass); };
  328.             var removeClass = function(el, cssClass) { el.classList.remove(cssClass); };
  329.             var addClass = function(el, cssClass) { el.classList.add(cssClass); };
  330.             var toggleClass = function(el, cssClass) { el.classList.toggle(cssClass); };
  331.         } else {
  332.             var hasClass = function (el, cssClass) { return el.className.match(new RegExp('\\\\b' + cssClass + '\\\\b')); };
  333.             var removeClass = function(el, cssClass) { el.className = el.className.replace(new RegExp('\\\\b' + cssClass + '\\\\b'), ' '); };
  334.             var addClass = function(el, cssClass) { if (!hasClass(el, cssClass)) { el.className += \" \" + cssClass; } };
  335.             var toggleClass = function(el, cssClass) { hasClass(el, cssClass) ? removeClass(el, cssClass) : addClass(el, cssClass); };
  336.         }
  337.         var addEventListener;
  338.         var el = document.createElement('div');
  339.         if (!('addEventListener' in el)) {
  340.             addEventListener = function (element, eventName, callback) {
  341.                 element.attachEvent('on' + eventName, callback);
  342.             };
  343.         } else {
  344.             addEventListener = function (element, eventName, callback) {
  345.                 element.addEventListener(eventName, callback, false);
  346.             };
  347.         }
  348.         return {
  349.             addEventListener: addEventListener,
  350.             createTabs: function() {
  351.                 var tabGroups = document.querySelectorAll('.sf-tabs:not([data-processed=true])');
  352.                 /* create the tab navigation for each group of tabs */
  353.                 for (var i = 0; i < tabGroups.length; i++) {
  354.                     var tabs = tabGroups[i].querySelectorAll(':scope > .tab');
  355.                     var tabNavigation = document.createElement('ul');
  356.                     tabNavigation.className = 'tab-navigation';
  357.                     var selectedTabId = 'tab-' + i + '-0'; /* select the first tab by default */
  358.                     for (var j = 0; j < tabs.length; j++) {
  359.                         var tabId = 'tab-' + i + '-' + j;
  360.                         var tabTitle = tabs[j].querySelector('.tab-title').innerHTML;
  361.                         var tabNavigationItem = document.createElement('li');
  362.                         tabNavigationItem.setAttribute('data-tab-id', tabId);
  363.                         if (hasClass(tabs[j], 'active')) { selectedTabId = tabId; }
  364.                         if (hasClass(tabs[j], 'disabled')) { addClass(tabNavigationItem, 'disabled'); }
  365.                         tabNavigationItem.innerHTML = tabTitle;
  366.                         tabNavigation.appendChild(tabNavigationItem);
  367.                         var tabContent = tabs[j].querySelector('.tab-content');
  368.                         tabContent.parentElement.setAttribute('id', tabId);
  369.                     }
  370.                     tabGroups[i].insertBefore(tabNavigation, tabGroups[i].firstChild);
  371.                     addClass(document.querySelector('[data-tab-id=\"' + selectedTabId + '\"]'), 'active');
  372.                 }
  373.                 /* display the active tab and add the 'click' event listeners */
  374.                 for (i = 0; i < tabGroups.length; i++) {
  375.                     tabNavigation = tabGroups[i].querySelectorAll(':scope >.tab-navigation li');
  376.                     for (j = 0; j < tabNavigation.length; j++) {
  377.                         tabId = tabNavigation[j].getAttribute('data-tab-id');
  378.                         document.getElementById(tabId).querySelector('.tab-title').className = 'hidden';
  379.                         if (hasClass(tabNavigation[j], 'active')) {
  380.                             document.getElementById(tabId).className = 'block';
  381.                         } else {
  382.                             document.getElementById(tabId).className = 'hidden';
  383.                         }
  384.                         tabNavigation[j].addEventListener('click', function(e) {
  385.                             var activeTab = e.target || e.srcElement;
  386.                             /* needed because when the tab contains HTML contents, user can click */
  387.                             /* on any of those elements instead of their parent '<li>' element */
  388.                             while (activeTab.tagName.toLowerCase() !== 'li') {
  389.                                 activeTab = activeTab.parentNode;
  390.                             }
  391.                             /* get the full list of tabs through the parent of the active tab element */
  392.                             var tabNavigation = activeTab.parentNode.children;
  393.                             for (var k = 0; k < tabNavigation.length; k++) {
  394.                                 var tabId = tabNavigation[k].getAttribute('data-tab-id');
  395.                                 document.getElementById(tabId).className = 'hidden';
  396.                                 removeClass(tabNavigation[k], 'active');
  397.                             }
  398.                             addClass(activeTab, 'active');
  399.                             var activeTabId = activeTab.getAttribute('data-tab-id');
  400.                             document.getElementById(activeTabId).className = 'block';
  401.                         });
  402.                     }
  403.                     tabGroups[i].setAttribute('data-processed', 'true');
  404.                 }
  405.             },
  406.             createToggles: function() {
  407.                 var toggles = document.querySelectorAll('.sf-toggle:not([data-processed=true])');
  408.                 for (var i = 0; i < toggles.length; i++) {
  409.                     var elementSelector = toggles[i].getAttribute('data-toggle-selector');
  410.                     var element = document.querySelector(elementSelector);
  411.                     addClass(element, 'sf-toggle-content');
  412.                     if (toggles[i].hasAttribute('data-toggle-initial') && toggles[i].getAttribute('data-toggle-initial') == 'display') {
  413.                         addClass(toggles[i], 'sf-toggle-on');
  414.                         addClass(element, 'sf-toggle-visible');
  415.                     } else {
  416.                         addClass(toggles[i], 'sf-toggle-off');
  417.                         addClass(element, 'sf-toggle-hidden');
  418.                     }
  419.                     addEventListener(toggles[i], 'click', function(e) {
  420.                         e.preventDefault();
  421.                         if ('' !== window.getSelection().toString()) {
  422.                             /* Don't do anything on text selection */
  423.                             return;
  424.                         }
  425.                         var toggle = e.target || e.srcElement;
  426.                         /* needed because when the toggle contains HTML contents, user can click */
  427.                         /* on any of those elements instead of their parent '.sf-toggle' element */
  428.                         while (!hasClass(toggle, 'sf-toggle')) {
  429.                             toggle = toggle.parentNode;
  430.                         }
  431.                         var element = document.querySelector(toggle.getAttribute('data-toggle-selector'));
  432.                         toggleClass(toggle, 'sf-toggle-on');
  433.                         toggleClass(toggle, 'sf-toggle-off');
  434.                         toggleClass(element, 'sf-toggle-hidden');
  435.                         toggleClass(element, 'sf-toggle-visible');
  436.                         /* the toggle doesn't change its contents when clicking on it */
  437.                         if (!toggle.hasAttribute('data-toggle-alt-content')) {
  438.                             return;
  439.                         }
  440.                         if (!toggle.hasAttribute('data-toggle-original-content')) {
  441.                             toggle.setAttribute('data-toggle-original-content', toggle.innerHTML);
  442.                         }
  443.                         var currentContent = toggle.innerHTML;
  444.                         var originalContent = toggle.getAttribute('data-toggle-original-content');
  445.                         var altContent = toggle.getAttribute('data-toggle-alt-content');
  446.                         toggle.innerHTML = currentContent !== altContent ? altContent : originalContent;
  447.                     });
  448.                     /* Prevents from disallowing clicks on links inside toggles */
  449.                     var toggleLinks = toggles[i].querySelectorAll('a');
  450.                     for (var j = 0; j < toggleLinks.length; j++) {
  451.                         addEventListener(toggleLinks[j], 'click', function(e) {
  452.                             e.stopPropagation();
  453.                         });
  454.                     }
  455.                     toggles[i].setAttribute('data-processed', 'true');
  456.                 }
  457.             },
  458.             createFilters: function() {
  459.                 document.querySelectorAll('[data-filters] [data-filter]').forEach(function (filter) {
  460.                     var filters = filter.closest('[data-filters]'),
  461.                         type = 'choice',
  462.                         name = filter.dataset.filter,
  463.                         ucName = name.charAt(0).toUpperCase()+name.slice(1),
  464.                         list = document.createElement('ul'),
  465.                         values = filters.dataset['filter'+ucName] || filters.querySelectorAll('[data-filter-'+name+']'),
  466.                         labels = {},
  467.                         defaults = null,
  468.                         indexed = {},
  469.                         processed = {};
  470.                     if (typeof values === 'string') {
  471.                         type = 'level';
  472.                         labels = values.split(',');
  473.                         values = values.toLowerCase().split(',');
  474.                         defaults = values.length - 1;
  475.                     }
  476.                     addClass(list, 'filter-list');
  477.                     addClass(list, 'filter-list-'+type);
  478.                     values.forEach(function (value, i) {
  479.                         if (value instanceof HTMLElement) {
  480.                             value = value.dataset['filter'+ucName];
  481.                         }
  482.                         if (value in processed) {
  483.                             return;
  484.                         }
  485.                         var option = document.createElement('li'),
  486.                             label = i in labels ? labels[i] : value,
  487.                             active = false,
  488.                             matches;
  489.                         if ('' === label) {
  490.                             option.innerHTML = '<em>(none)</em>';
  491.                         } else {
  492.                             option.innerText = label;
  493.                         }
  494.                         option.dataset.filter = value;
  495.                         option.setAttribute('title', 1 === (matches = filters.querySelectorAll('[data-filter-'+name+'=\"'+value+'\"]').length) ? 'Matches 1 row' : 'Matches '+matches+' rows');
  496.                         indexed[value] = i;
  497.                         list.appendChild(option);
  498.                         addEventListener(option, 'click', function () {
  499.                             if ('choice' === type) {
  500.                                 filters.querySelectorAll('[data-filter-'+name+']').forEach(function (row) {
  501.                                     if (option.dataset.filter === row.dataset['filter'+ucName]) {
  502.                                         toggleClass(row, 'filter-hidden-'+name);
  503.                                     }
  504.                                 });
  505.                                 toggleClass(option, 'active');
  506.                             } else if ('level' === type) {
  507.                                 if (i === this.parentNode.querySelectorAll('.active').length - 1) {
  508.                                     return;
  509.                                 }
  510.                                 this.parentNode.querySelectorAll('li').forEach(function (currentOption, j) {
  511.                                     if (j <= i) {
  512.                                         addClass(currentOption, 'active');
  513.                                         if (i === j) {
  514.                                             addClass(currentOption, 'last-active');
  515.                                         } else {
  516.                                             removeClass(currentOption, 'last-active');
  517.                                         }
  518.                                     } else {
  519.                                         removeClass(currentOption, 'active');
  520.                                         removeClass(currentOption, 'last-active');
  521.                                     }
  522.                                 });
  523.                                 filters.querySelectorAll('[data-filter-'+name+']').forEach(function (row) {
  524.                                     if (i < indexed[row.dataset['filter'+ucName]]) {
  525.                                         addClass(row, 'filter-hidden-'+name);
  526.                                     } else {
  527.                                         removeClass(row, 'filter-hidden-'+name);
  528.                                     }
  529.                                 });
  530.                             }
  531.                         });
  532.                         if ('choice' === type) {
  533.                             active = null === defaults || 0 <= defaults.indexOf(value);
  534.                         } else if ('level' === type) {
  535.                             active = i <= defaults;
  536.                             if (active && i === defaults) {
  537.                                 addClass(option, 'last-active');
  538.                             }
  539.                         }
  540.                         if (active) {
  541.                             addClass(option, 'active');
  542.                         } else {
  543.                             filters.querySelectorAll('[data-filter-'+name+'=\"'+value+'\"]').forEach(function (row) {
  544.                                 toggleClass(row, 'filter-hidden-'+name);
  545.                             });
  546.                         }
  547.                         processed[value] = true;
  548.                     });
  549.                     if (1 < list.childNodes.length) {
  550.                         filter.appendChild(list);
  551.                         filter.dataset.filtered = '';
  552.                     }
  553.                 });
  554.             }
  555.         };
  556.     })();
  557.     Sfjs.addEventListener(document, 'DOMContentLoaded', function() {
  558.         Sfjs.createTabs();
  559.         Sfjs.createToggles();
  560.         Sfjs.createFilters();
  561.     });
  562. /*]]>*/</script>
  563. ""@Twig/base_js.html.twig""/home/u405565514/domains/ourhoneybee.eu/public_html/honeybee_main/vendor/symfony/twig-bundle/Resources/views/base_js.html.twig");
  564.     }
  565. }