پرش به محتوا

مدیاویکی:Common.js: تفاوت میان نسخه‌ها

از ویکی داد
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
 
(۱۴ نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد)
خط ۱: خط ۱:
$( function () {
(function () {


     /*
     /* =========================================================
    * =====================================================
      سیستم تست‌های تعاملی ویکی‌داد
    * ویکی‌داد — JavaScript
      نسخه مرکزی — هماهنگ با Master ماده ۱۵
    * =====================================================
      ========================================================= */
    *
    * 1. تست‌های تعاملی
    * 2. سابقه تقنینی ماده
    * 3. شناسنامه ماده — نمایش سوابق
    *
    * =====================================================
    */


    'use strict';


    /*
    * =====================================================
    * ۱. تست‌های تعاملی
    * =====================================================
    */


    /* =========================================================
      ابزارهای کمکی
      ========================================================= */


     /*
     function getTestOptions(test) {
    * -----------------------------------------------------
    * تبدیل گزینه‌های لیست به گزینه‌های قابل کلیک
    * -----------------------------------------------------
    */


    $( '.wd-test-options' ).each( function () {
        return test.find('.wd-test-option').filter(function () {


        var container = $( this );
            return $(this).closest('.wd-test')[0] === test[0];


         container.find( 'li' ).each( function () {
         });
 
    }
 
 
    function getTestResult(test) {
 
        return test.find('.wd-test-result').filter(function () {
 
            return $(this).closest('.wd-test')[0] === test[0];
 
        }).first();
 
    }
 
 
    function getTestAnswer(test) {
 
        return test.find('.wd-test-answer').filter(function () {
 
            return $(this).closest('.wd-test')[0] === test[0];
 
        }).first();
 
    }
 
 
    function normalizeAnswer(value) {
 
        value = $.trim(value || '');
 
        /*
        * پاسخ می‌تواند مستقیماً «الف» باشد
        * یا در بعضی شرایط با فاصله/نشانه همراه باشد.
        */
        var match = value.match(
            /^(الف|ب|ج|د|ه|هـ|و)/
        );
 
        if (match) {
            return match[1];
        }
 
        return value.charAt(0);
 
    }


            $( this ).addClass(
                'wd-test-option'
            );


        } );
    /* =========================================================
      آماده‌سازی تست‌ها
      ========================================================= */


     });
     function initWikidadTests() {


        $('.wd-test').each(function () {


    /*
            var test = $(this);
    * -----------------------------------------------------
    * انتخاب گزینه
    * -----------------------------------------------------
    */


    $( document ).on(
            if (test.hasClass('wd-test-ready')) {
        'click',
                return;
        '.wd-test-option',
            }
        function () {
 
            test.addClass('wd-test-ready');


            var option = $( this );


             var box = option.closest(
             var options = getTestOptions(test);
                '.wd-test'
            );




             /*
             /*
             * اگر پاسخ صحیح قبلاً انتخاب شده،
             * اگر تست قبلاً پاسخ داده شده باشد،
             * تست تمام شده است.
             * وضعیت را حفظ می‌کنیم.
             */
             */
            if (test.hasClass('wd-test-finished')) {


            if (
                 options.prop('disabled', true);
                 box.hasClass(
                    'wd-test-finished'
                )
            ) {


                 return;
                 return;
خط ۷۷: خط ۱۰۱:


             /*
             /*
             * دریافت پاسخ صحیح
             * طراحی پایه گزینه‌ها
            *
            * رنگ‌ها مطابق طراحی ماده ۱۵
             */
             */
            options.css({


            var answer = $.trim(
                'display': 'block',
                 box.attr(
                'width': '100%',
                     'data-answer'
                'box-sizing': 'border-box',
                )
                'padding': '10px 13px',
             );
                'margin': '7px 0',
                'border': '1px solid #d9dfdc',
                'border-radius': '6px',
                'background': '#ffffff',
                'color': '#455a64',
                'cursor': 'pointer',
                'font-family': 'inherit',
                'font-size': '13.5px',
                 'line-height': '1.9',
                'text-align': 'right',
                'direction': 'rtl',
                'transition':
                     'background .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease'
 
             });




             /*
             /*
             * متن گزینه انتخاب‌شده
             * نتیجه در شروع مخفی باشد.
             */
             */
            var result = getTestResult(test);
            result.css({
                'display': 'none',
                'visibility': 'hidden',
                'opacity': '0'


             var selectedText = $.trim(
             });
                option.text()
            );




             /*
             /*
             * عناصر نتیجه
             * پاسخ و تحلیل در شروع مخفی باشد.
             */
             */
            var answer = getTestAnswer(test);
            answer.css({
                'display': 'none',
                'visibility': 'hidden',
                'opacity': '0'
            });
        });
    }
    /* =========================================================
      اجرای آماده‌سازی
      ========================================================= */
    $(document).ready(function () {
        initWikidadTests();
    });
    /* =========================================================
      افکت ساده هنگام قرار گرفتن موس روی گزینه
      ========================================================= */
    $(document).on(
        'mouseenter',
        '.wd-test:not(.wd-test-finished) .wd-test-option',
        function () {
            var option = $(this);


             var result = box.find(
             if (option.prop('disabled')) {
                '.wd-test-result'
                return;
            );
            }
 
            option.css({
 
                'background': '#faf8fc',
                'border-color': '#cfc4d9',
                'box-shadow': '0 1px 3px rgba(80,60,90,.06)'
 
            });
 
        }
    );
 
 
    $(document).on(
        'mouseleave',
        '.wd-test:not(.wd-test-finished) .wd-test-option',
        function () {


             var message = box.find(
             var option = $(this);
                '.wd-test-result-message'
            );


             var answerBox = box.find(
             if (option.prop('disabled')) {
                 '.wd-test-answer'
                 return;
             );
             }


            option.css({


            /*
                'background': '#ffffff',
            * تشخیص حرف گزینه
                'border-color': '#d9dfdc',
            */
                'box-shadow': 'none'


             var selectedLetter = '';
             });


        }
    );


            if (
                selectedText.indexOf(
                    'الف'
                ) === 0
            ) {


                selectedLetter = 'الف';
    /* =========================================================
      کلیک روی گزینه
      ========================================================= */


            } else if (
    $(document).on(
                selectedText.indexOf(
        'click',
                    'ب'
        '.wd-test-option',
                ) === 0
        function (event) {
            ) {


                selectedLetter = 'ب';
            event.preventDefault();
            event.stopPropagation();


            } else if (
                selectedText.indexOf(
                    'ج'
                ) === 0
            ) {


                selectedLetter = 'ج';
            var option = $(this);


             } else if (
             var test = option.closest('.wd-test');
                selectedText.indexOf(
                    'د'
                ) === 0
            ) {


                selectedLetter = 'د';


            /*
            * تست معتبر نیست.
            */
            if (!test.length) {
                return;
             }
             }




             /*
             /*
             * تبدیل:
             * اگر قبلاً پاسخ داده شده،
             *
             * دیگر امکان تغییر پاسخ وجود ندارد.
            * گزینه ب
            *
            * به:
            *
            * ب
             */
             */
            if (test.hasClass('wd-test-finished')) {
                return;
            }


             var correctLetter = answer
 
                .replace(
             /*
                    'گزینه',
            * جلوگیری از چندبار کلیک سریع
                    ''
            */
                )
            if (option.prop('disabled')) {
                .replace(
                 return;
                    ':',
            }
                    ''
                )
                 .trim();




             /*
             /*
             * ثبت انتخاب کاربر
             * گزینه‌های همین تست
             */
             */
            var options = getTestOptions(test);


             option.addClass(
 
                 'wd-selected'
            /*
            * پاسخ صحیح از data-answer الگوی تست
            */
             var correctAnswer = normalizeAnswer(
                 test.attr('data-answer') || ''
             );
             );




             /*
             /*
             * نمایش پیام نتیجه
             * اگر data-answer خالی بود،
            * از data-correct خود گزینه‌ها استفاده می‌کنیم.
            *
            * این fallback باعث می‌شود ساختار جدید
            * Python نیز مستقیماً قابل استفاده باشد.
             */
             */
            if (!correctAnswer) {
                var optionContainer =
                    option.closest('.wd-test-options');
                correctAnswer = normalizeAnswer(
                    optionContainer.attr('data-correct') || ''
                );


             result.show();
             }




             /*
             /*
            * =================================================
             * پاسخ انتخاب‌شده
             * پاسخ صحیح
            * =================================================
             */
             */
            var selectedAnswer = normalizeAnswer(
                option.attr('data-option') || ''
            );


            if (
                selectedLetter === correctLetter
            ) {


                option.addClass(
            /*
                     'wd-correct'
            * اگر data-option وجود نداشت،
            * از متن گزینه استخراج شود.
            */
            if (!selectedAnswer) {
 
                selectedAnswer = normalizeAnswer(
                     option.text()
                 );
                 );


            }


                 message
 
                    .removeClass(
            /*
                        'wd-result-wrong'
            * تعیین درست / غلط
                    )
            */
                    .addClass(
            var isCorrect =
                        'wd-result-correct'
                selectedAnswer === correctAnswer;
                     )
 
                    .text(
 
                        '✓ پاسخ شما صحیح است.'
            /*
                    );
            * نتیجه و پاسخ همین تست
            */
            var result = getTestResult(test);
 
            var resultMessage =
                 result.find('.wd-test-result-message').first();
 
            var answer = getTestAnswer(test);
 
 
            /* =================================================
              پاک کردن وضعیت قبلی گزینه‌ها
              ================================================= */
 
            options.css({
 
                'background': '#ffffff',
                'border-color': '#d9dfdc',
                'color': '#455a64',
                'font-weight': 'normal',
                'box-shadow': 'none'
 
            });
 
 
            /* =================================================
              مشخص کردن گزینه انتخاب‌شده
              ================================================= */
 
            if (isCorrect) {
 
                option.css({
 
                    'background': '#edf8f5',
                    'border-color': '#527d77',
                    'color': '#405b56',
                    'font-weight': 'bold',
                     'box-shadow': '0 1px 3px rgba(82,125,119,.10)'
 
                });
 
            }
 
            else {
 
                option.css({
 
                    'background': '#fff2f2',
                    'border-color': '#b44a4a',
                    'color': '#9b3838',
                    'font-weight': 'bold',
                    'box-shadow': '0 1px 3px rgba(180,74,74,.10)'
 
                });




                 /*
                 /*
                 * نمایش پاسخ و تحلیل
                 * پاسخ صحیح را نیز پیدا و سبز می‌کنیم.
                 */
                 */
                options.each(function () {
                    var item = $(this);
                    var itemAnswer =
                        normalizeAnswer(
                            item.attr('data-option') || ''
                        );
                    if (!itemAnswer) {
                        itemAnswer =
                            normalizeAnswer(
                                item.text()
                            );
                    }
                    if (itemAnswer === correctAnswer) {


                answerBox
                         item.css({
                    .stop(
                        true,
                         true
                    )
                    .slideDown(
                        250
                    );


                            'background': '#edf8f5',
                            'border-color': '#527d77',
                            'color': '#405b56',
                            'font-weight': 'bold',
                            'box-shadow':
                                '0 1px 3px rgba(82,125,119,.10)'


                /*
                        });
                * پایان تست
 
                */
                    }


                 box.addClass(
                 });
                    'wd-test-finished'
                );


             }
             }




             /*
             /* =================================================
            * =================================================
              نمایش پیام نتیجه
            * پاسخ غلط
              ================================================= */
            * =================================================
 
            */
            result.css({
 
                'display': 'block',
                'visibility': 'visible',
                'opacity': '1',
                'padding': '10px 13px',
                'border-radius': '6px'
 
            });
 
 
            if (isCorrect) {
 
                result.css({
 
                    'background': '#edf8f5',
                    'border-right': '3px solid #527d77'
 
                });
 
 
                resultMessage
                    .text('✓ پاسخ شما صحیح است.')
                    .css({
 
                        'display': 'block',
                        'visibility': 'visible',
                        'opacity': '1',
                        'color': '#527d77',
                        'font-weight': 'bold'
 
                    });
 
            }


             else {
             else {


                 option.addClass(
                 result.css({
                     'wd-wrong'
 
                 );
                     'background': '#fff5f5',
                    'border-right': '3px solid #b44a4a'
 
                 });
 
 
                resultMessage
                    .text('✕ پاسخ شما نادرست است.')
                    .css({
 
                        'display': 'block',
                        'visibility': 'visible',
                        'opacity': '1',
                        'color': '#b44a4a',
                        'font-weight': 'bold'
 
                    });
 
            }
 
 
            /* =================================================
              نمایش پاسخ صحیح و تحلیل
              ================================================= */


            if (answer.length) {


                 message
                 answer.css({
                    .removeClass(
                        'wd-result-correct'
                    )
                    .addClass(
                        'wd-result-wrong'
                    )
                    .text(
                        '✕ پاسخ شما نادرست است.'
                    );


                    'display': 'block',
                    'visibility': 'visible',
                    'opacity': '1'


                 /*
                 });
                * عمداً پاسخ صحیح را نمایش نمی‌دهیم.
                *
                * کاربر می‌تواند گزینه دیگری را انتخاب کند.
                */


             }
             }
            /* =================================================
              قفل کردن همه گزینه‌های همین تست
              ================================================= */
            options.prop('disabled', true);
            options.css({
                'cursor': 'default'
            });
            /*
            * علامت پایان تست
            */
            test
                .addClass('wd-test-finished')
                .attr('data-answered', 'true');
            /*
            * ثبت وضعیت روی خود option container
            */
            test.find('.wd-test-options').first()
                .attr('data-answered', 'true');


         }
         }
خط ۲۸۲: خط ۵۳۸:




     /*
     /* =========================================================
    * =====================================================
      مشاهده / بستن متن نسخه قانون
    * ۲. سابقه تقنینی ماده
      ========================================================= */
    * =====================================================
    *
    * دکمه:
    * «مشاهده متن»
    *
    * در کارت:
    * .wd-version-history-card
    *
    * متن:
    * .wd-version-text
    * =====================================================
    */


 
     $(document).on(
     $( document ).on(
         'click',
         'click',
         '.wd-version-toggle',
         '.wd-version-toggle',
         function () {
         function () {


             var button = $( this );
             var button = $(this);


             var card = button.closest(
             var card = button.closest(
خط ۳۲۳: خط ۵۶۶:




            /*
             if (text.is(':visible')) {
            * بستن متن
            */
 
             if (
                text.is(
                    ':visible'
                )
            ) {


                 text
                 text.stop(true, true)
                    .stop(
                     .slideUp(180);
                        true,
                        true
                    )
                     .slideUp(
                        180
                    );


                 icon.text(
                 icon.text('+');
                    '+'
                );


                 label.text(
                 label.text('مشاهده متن');
                    'مشاهده متن'
                );


             }
             }
            /*
            * باز کردن متن
            */


             else {
             else {


                 text
                 text.stop(true, true)
                    .stop(
                     .slideDown(220);
                        true,
                        true
                    )
                     .slideDown(
                        220
                    );


                 icon.text(
                 icon.text('−');
                    '−'
                );


                 label.text(
                 label.text('بستن متن');
                    'بستن متن'
                );


             }
             }
خط ۳۸۲: خط ۵۹۲:




    /*
})();
    * =====================================================
 
    * ۳. شناسنامه ماده
/* =========================================================
    * =====================================================
  WIKIDAD — Persian / Arabic / English digit normalization
    *
  در جستجوی ویکی‌داد
    * دکمه:
  1 ↔ ١ ↔ ۱
    * «مشاهده سوابق»
  ========================================================= */
    *
    * این بخش سوابق تقنینی را مستقیماً
    * داخل همان شناسنامه باز و بسته می‌کند.
    *
    * =====================================================
    */


(function () {


     $( document ).on(
     function toPersianDigits(value) {
         'click',
         if (!value) {
        '.wd-article-history-toggle',
            return value;
         function () {
         }


             var button = $( this );
        return value
             /* English digits → Persian */
            .replace(/[0-9]/g, function (digit) {
                return '۰۱۲۳۴۵۶۷۸۹'[Number(digit)];
            })


             var box = button.closest(
             /* Arabic-Indic digits → Persian */
                 '.wd-article-metadata'
            .replace(/[٠-٩]/g, function (digit) {
             );
                 return '۰۱۲۳۴۵۶۷۸۹'[digit.charCodeAt(0) - 0x0660];
             });
    }


            var history = box.find(
                '.wd-article-history-inline'
            );


            var icon = button.find(
    function normalizeSearchInput(input) {
                '.wd-article-history-toggle-icon'
        if (!input || typeof input.value !== 'string') {
             );
             return;
        }


            var label = button.find(
        var normalized = toPersianDigits(input.value);
                '.wd-article-history-toggle-label'
            );


        if (normalized !== input.value) {
            input.value = normalized;


             /*
             /* برای سیستم‌های autocomplete */
            * بستن سوابق
            input.dispatchEvent(new Event('input', {
            */
                bubbles: true
            }));
        }
    }


            if (
                history.is(
                    ':visible'
                )
            ) {


                history
    function attachSearchNormalization() {
                    .stop(
                        true,
                        true
                    )
                    .slideUp(
                        180
                    );


                icon.text(
        var inputs = document.querySelectorAll(
                    '+'
            'input[name="search"],' +
                );
            'input[type="search"],' +
            '#searchInput,' +
            '#mw-searchInput'
        );


                label.text(
        inputs.forEach(function (input) {
                    'مشاهده سوابق'
                );


            if (input.dataset.wikidadDigitNormalized === '1') {
                return;
             }
             }


            input.dataset.wikidadDigitNormalized = '1';


             /*
             /* هنگام تایپ یا Paste */
            * باز کردن سوابق
            input.addEventListener('input', function () {
            */
                normalizeSearchInput(input);
            });
 
            /* قبل از ارسال فرم */
            input.addEventListener('blur', function () {
                normalizeSearchInput(input);
            });
        });
    }


            else {


                history
    /* بارگذاری اولیه */
                    .stop(
    attachSearchNormalization();
                        true,
                        true
                    )
                    .slideDown(
                        220
                    );


                icon.text(
                    '−'
                );


                label.text(
    /* برای Vector 2022 که بعضی عناصر را بعداً می‌سازد */
                    'بستن سوابق'
    document.addEventListener('focusin', function (event) {
                );


            }
        var input = event.target;


        if (
            input &&
            input.matches &&
            input.matches(
                'input[name="search"],' +
                'input[type="search"],' +
                '#searchInput,' +
                '#mw-searchInput'
            )
        ) {
            normalizeSearchInput(input);
         }
         }
     );
     });


} );
})();

نسخهٔ کنونی تا ۲۴ سپتامبر ۲۰۲۶، ساعت ۰۳:۵۸

(function () {

    /* =========================================================
       سیستم تست‌های تعاملی ویکی‌داد
       نسخه مرکزی — هماهنگ با Master ماده ۱۵
       ========================================================= */

    'use strict';


    /* =========================================================
       ابزارهای کمکی
       ========================================================= */

    function getTestOptions(test) {

        return test.find('.wd-test-option').filter(function () {

            return $(this).closest('.wd-test')[0] === test[0];

        });

    }


    function getTestResult(test) {

        return test.find('.wd-test-result').filter(function () {

            return $(this).closest('.wd-test')[0] === test[0];

        }).first();

    }


    function getTestAnswer(test) {

        return test.find('.wd-test-answer').filter(function () {

            return $(this).closest('.wd-test')[0] === test[0];

        }).first();

    }


    function normalizeAnswer(value) {

        value = $.trim(value || '');

        /*
         * پاسخ می‌تواند مستقیماً «الف» باشد
         * یا در بعضی شرایط با فاصله/نشانه همراه باشد.
         */
        var match = value.match(
            /^(الف|ب|ج|د|ه|هـ|و)/
        );

        if (match) {
            return match[1];
        }

        return value.charAt(0);

    }


    /* =========================================================
       آماده‌سازی تست‌ها
       ========================================================= */

    function initWikidadTests() {

        $('.wd-test').each(function () {

            var test = $(this);

            if (test.hasClass('wd-test-ready')) {
                return;
            }

            test.addClass('wd-test-ready');


            var options = getTestOptions(test);


            /*
             * اگر تست قبلاً پاسخ داده شده باشد،
             * وضعیت را حفظ می‌کنیم.
             */
            if (test.hasClass('wd-test-finished')) {

                options.prop('disabled', true);

                return;

            }


            /*
             * طراحی پایه گزینه‌ها
             *
             * رنگ‌ها مطابق طراحی ماده ۱۵
             */
            options.css({

                'display': 'block',
                'width': '100%',
                'box-sizing': 'border-box',
                'padding': '10px 13px',
                'margin': '7px 0',
                'border': '1px solid #d9dfdc',
                'border-radius': '6px',
                'background': '#ffffff',
                'color': '#455a64',
                'cursor': 'pointer',
                'font-family': 'inherit',
                'font-size': '13.5px',
                'line-height': '1.9',
                'text-align': 'right',
                'direction': 'rtl',
                'transition':
                    'background .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease'

            });


            /*
             * نتیجه در شروع مخفی باشد.
             */
            var result = getTestResult(test);

            result.css({

                'display': 'none',
                'visibility': 'hidden',
                'opacity': '0'

            });


            /*
             * پاسخ و تحلیل در شروع مخفی باشد.
             */
            var answer = getTestAnswer(test);

            answer.css({

                'display': 'none',
                'visibility': 'hidden',
                'opacity': '0'

            });

        });

    }


    /* =========================================================
       اجرای آماده‌سازی
       ========================================================= */

    $(document).ready(function () {

        initWikidadTests();

    });


    /* =========================================================
       افکت ساده هنگام قرار گرفتن موس روی گزینه
       ========================================================= */

    $(document).on(
        'mouseenter',
        '.wd-test:not(.wd-test-finished) .wd-test-option',
        function () {

            var option = $(this);

            if (option.prop('disabled')) {
                return;
            }

            option.css({

                'background': '#faf8fc',
                'border-color': '#cfc4d9',
                'box-shadow': '0 1px 3px rgba(80,60,90,.06)'

            });

        }
    );


    $(document).on(
        'mouseleave',
        '.wd-test:not(.wd-test-finished) .wd-test-option',
        function () {

            var option = $(this);

            if (option.prop('disabled')) {
                return;
            }

            option.css({

                'background': '#ffffff',
                'border-color': '#d9dfdc',
                'box-shadow': 'none'

            });

        }
    );


    /* =========================================================
       کلیک روی گزینه
       ========================================================= */

    $(document).on(
        'click',
        '.wd-test-option',
        function (event) {

            event.preventDefault();
            event.stopPropagation();


            var option = $(this);

            var test = option.closest('.wd-test');


            /*
             * تست معتبر نیست.
             */
            if (!test.length) {
                return;
            }


            /*
             * اگر قبلاً پاسخ داده شده،
             * دیگر امکان تغییر پاسخ وجود ندارد.
             */
            if (test.hasClass('wd-test-finished')) {
                return;
            }


            /*
             * جلوگیری از چندبار کلیک سریع
             */
            if (option.prop('disabled')) {
                return;
            }


            /*
             * گزینه‌های همین تست
             */
            var options = getTestOptions(test);


            /*
             * پاسخ صحیح از data-answer الگوی تست
             */
            var correctAnswer = normalizeAnswer(
                test.attr('data-answer') || ''
            );


            /*
             * اگر data-answer خالی بود،
             * از data-correct خود گزینه‌ها استفاده می‌کنیم.
             *
             * این fallback باعث می‌شود ساختار جدید
             * Python نیز مستقیماً قابل استفاده باشد.
             */
            if (!correctAnswer) {

                var optionContainer =
                    option.closest('.wd-test-options');

                correctAnswer = normalizeAnswer(
                    optionContainer.attr('data-correct') || ''
                );

            }


            /*
             * پاسخ انتخاب‌شده
             */
            var selectedAnswer = normalizeAnswer(
                option.attr('data-option') || ''
            );


            /*
             * اگر data-option وجود نداشت،
             * از متن گزینه استخراج شود.
             */
            if (!selectedAnswer) {

                selectedAnswer = normalizeAnswer(
                    option.text()
                );

            }


            /*
             * تعیین درست / غلط
             */
            var isCorrect =
                selectedAnswer === correctAnswer;


            /*
             * نتیجه و پاسخ همین تست
             */
            var result = getTestResult(test);

            var resultMessage =
                result.find('.wd-test-result-message').first();

            var answer = getTestAnswer(test);


            /* =================================================
               پاک کردن وضعیت قبلی گزینه‌ها
               ================================================= */

            options.css({

                'background': '#ffffff',
                'border-color': '#d9dfdc',
                'color': '#455a64',
                'font-weight': 'normal',
                'box-shadow': 'none'

            });


            /* =================================================
               مشخص کردن گزینه انتخاب‌شده
               ================================================= */

            if (isCorrect) {

                option.css({

                    'background': '#edf8f5',
                    'border-color': '#527d77',
                    'color': '#405b56',
                    'font-weight': 'bold',
                    'box-shadow': '0 1px 3px rgba(82,125,119,.10)'

                });

            }

            else {

                option.css({

                    'background': '#fff2f2',
                    'border-color': '#b44a4a',
                    'color': '#9b3838',
                    'font-weight': 'bold',
                    'box-shadow': '0 1px 3px rgba(180,74,74,.10)'

                });


                /*
                 * پاسخ صحیح را نیز پیدا و سبز می‌کنیم.
                 */
                options.each(function () {

                    var item = $(this);

                    var itemAnswer =
                        normalizeAnswer(
                            item.attr('data-option') || ''
                        );


                    if (!itemAnswer) {

                        itemAnswer =
                            normalizeAnswer(
                                item.text()
                            );

                    }


                    if (itemAnswer === correctAnswer) {

                        item.css({

                            'background': '#edf8f5',
                            'border-color': '#527d77',
                            'color': '#405b56',
                            'font-weight': 'bold',
                            'box-shadow':
                                '0 1px 3px rgba(82,125,119,.10)'

                        });

                    }

                });

            }


            /* =================================================
               نمایش پیام نتیجه
               ================================================= */

            result.css({

                'display': 'block',
                'visibility': 'visible',
                'opacity': '1',
                'padding': '10px 13px',
                'border-radius': '6px'

            });


            if (isCorrect) {

                result.css({

                    'background': '#edf8f5',
                    'border-right': '3px solid #527d77'

                });


                resultMessage
                    .text('✓ پاسخ شما صحیح است.')
                    .css({

                        'display': 'block',
                        'visibility': 'visible',
                        'opacity': '1',
                        'color': '#527d77',
                        'font-weight': 'bold'

                    });

            }

            else {

                result.css({

                    'background': '#fff5f5',
                    'border-right': '3px solid #b44a4a'

                });


                resultMessage
                    .text('✕ پاسخ شما نادرست است.')
                    .css({

                        'display': 'block',
                        'visibility': 'visible',
                        'opacity': '1',
                        'color': '#b44a4a',
                        'font-weight': 'bold'

                    });

            }


            /* =================================================
               نمایش پاسخ صحیح و تحلیل
               ================================================= */

            if (answer.length) {

                answer.css({

                    'display': 'block',
                    'visibility': 'visible',
                    'opacity': '1'

                });

            }


            /* =================================================
               قفل کردن همه گزینه‌های همین تست
               ================================================= */

            options.prop('disabled', true);

            options.css({

                'cursor': 'default'

            });


            /*
             * علامت پایان تست
             */
            test
                .addClass('wd-test-finished')
                .attr('data-answered', 'true');


            /*
             * ثبت وضعیت روی خود option container
             */
            test.find('.wd-test-options').first()
                .attr('data-answered', 'true');


        }
    );


    /* =========================================================
       مشاهده / بستن متن نسخه قانون
       ========================================================= */

    $(document).on(
        'click',
        '.wd-version-toggle',
        function () {

            var button = $(this);

            var card = button.closest(
                '.wd-version-history-card'
            );

            var text = card.find(
                '.wd-version-text'
            );

            var icon = button.find(
                '.wd-version-toggle-icon'
            );

            var label = button.find(
                '.wd-version-toggle-label'
            );


            if (text.is(':visible')) {

                text.stop(true, true)
                    .slideUp(180);

                icon.text('+');

                label.text('مشاهده متن');

            }

            else {

                text.stop(true, true)
                    .slideDown(220);

                icon.text('−');

                label.text('بستن متن');

            }

        }
    );


})();

/* =========================================================
   WIKIDAD — Persian / Arabic / English digit normalization
   در جستجوی ویکی‌داد
   1 ↔ ١ ↔ ۱
   ========================================================= */

(function () {

    function toPersianDigits(value) {
        if (!value) {
            return value;
        }

        return value
            /* English digits → Persian */
            .replace(/[0-9]/g, function (digit) {
                return '۰۱۲۳۴۵۶۷۸۹'[Number(digit)];
            })

            /* Arabic-Indic digits → Persian */
            .replace(/[٠-٩]/g, function (digit) {
                return '۰۱۲۳۴۵۶۷۸۹'[digit.charCodeAt(0) - 0x0660];
            });
    }


    function normalizeSearchInput(input) {
        if (!input || typeof input.value !== 'string') {
            return;
        }

        var normalized = toPersianDigits(input.value);

        if (normalized !== input.value) {
            input.value = normalized;

            /* برای سیستم‌های autocomplete */
            input.dispatchEvent(new Event('input', {
                bubbles: true
            }));
        }
    }


    function attachSearchNormalization() {

        var inputs = document.querySelectorAll(
            'input[name="search"],' +
            'input[type="search"],' +
            '#searchInput,' +
            '#mw-searchInput'
        );

        inputs.forEach(function (input) {

            if (input.dataset.wikidadDigitNormalized === '1') {
                return;
            }

            input.dataset.wikidadDigitNormalized = '1';

            /* هنگام تایپ یا Paste */
            input.addEventListener('input', function () {
                normalizeSearchInput(input);
            });

            /* قبل از ارسال فرم */
            input.addEventListener('blur', function () {
                normalizeSearchInput(input);
            });
        });
    }


    /* بارگذاری اولیه */
    attachSearchNormalization();


    /* برای Vector 2022 که بعضی عناصر را بعداً می‌سازد */
    document.addEventListener('focusin', function (event) {

        var input = event.target;

        if (
            input &&
            input.matches &&
            input.matches(
                'input[name="search"],' +
                'input[type="search"],' +
                '#searchInput,' +
                '#mw-searchInput'
            )
        ) {
            normalizeSearchInput(input);
        }
    });

})();