PageSourceSearch

https://cerkezkoy.bel.tr/erisebilirlik/accessibility.js

js cerkezkoy.bel.tr collected 2026-09-24 10:14:02 UTC 47,829 bytes, 1,047 lines download raw bytes

1!(function(e) {
2    "use strict";
3    var t,
4        a,
5        n,
6        i,
7        s = [],
8        c = [],
9        r = [],
10        o = [],
11        d = 1.1,
12        l = 1,
13        p = 1,
14        u = [];
15
16    function h(e, t) {
17        (this.prepend = e), (this.append = t);
18    }
19
20    function g(e, t) {
21        (this.name = e), (this.language = t);
22    }
23
24    function f() {
25        for (var e = speechSynthesis.getVoices(), t = 0; t < e.length; t++)
26            u.push(new g(e[t].name, e[t].lang));
27    }
28    if (
29        (f(),
30            "undefined" != typeof speechSynthesis &&
31            void 0 !== speechSynthesis.onvoiceschanged &&
32            (speechSynthesis.onvoiceschanged = f),
33            "speechSynthesis" in window)
34    ) {
35        var v = new SpeechSynthesisUtterance();
36        window.speechSynthesis.cancel();
37    }
38    var m = /chrome/i.test(navigator.userAgent),
39        $ = /edge/i.test(navigator.userAgent),
40        y = m && !$,
41        k = {
42            speak: function(u) {
43                var g,
44                    f,
45                    m,
46                    $ = this;
47                e.extend({}, e.fn.articulate.defaults, u),
48                    e(".accSpeakingArea").removeClass("accSpeakingArea"),
49                    e().articulate("isSpeaking") && e().articulate("stop");
50                var k = "",
51                    E = {
52                        q: new h("", ""),
53                        ol: new h("", ""),
54                        ul: new h("", ""),
55                        blockquote: new h("", ""),
56                        img: new h("", ""),
57                        table: new h("", ""),
58                        figure: new h("", ""),
59                    },
60                    _ = [
61                        "audio",
62                        "button",
63                        "canvas",
64                        "code",
65                        "del",
66                        "dialog",
67                        "dl",
68                        "embed",
69                        "form",
70                        "head",
71                        "iframe",
72                        "meter",
73                        "nav",
74                        "noscript",
75                        "object",
76                        "s",
77                        "script",
78                        "select",
79                        "style",
80                        "textarea",
81                        "video",
82                    ];
83                if (!("speechSynthesis" in window)) {
84                    alert("Sorry, your browser doesn't support Web Speech API.");
85                    return;
86                }
87                return window.speechSynthesis.speaking ?
88                    void 0 :
89                    (this.each(function() {
90                            e(this).addClass("accSpeakingArea"),
91                                (f = (function e(t) {
92                                    var a, n;
93                                    for (var i in (c.length > 0 &&
94                                            c.forEach((e) => {
95                                                var t = _.indexOf(e);
96                                                t > -1 && _.splice(t, 1);
97                                            }),
98                                            _.forEach((e) => {
99                                                jQuery(t)
100                                                    .find(e)
101                                                    .addBack(e)
102                                                    .not("[data-articulate-recognize]")
103                                                    .each(function() {
104                                                        jQuery(this).html("");
105                                                    });
106                                            }),
107                                            s.length > 0 &&
108                                            s.forEach((e) => {
109                                                jQuery(t)
110                                                    .find(e)
111                                                    .addBack(e)
112                                                    .not("[data-articulate-recognize]")
113                                                    .each(function() {
114                                                        jQuery(this).html("");
115                                                    });
116                                            }),
117                                            jQuery(t)
118                                            .find("[data-articulate-ignore]")
119                                            .addBack("[data-articulate-ignore]")
120                                            .each(function() {
121                                                jQuery(this).html("");
122                                            }),
123                                            jQuery(t)
124                                            .find("[data-articulate-prepend]")
125                                            .addBack("[data-articulate-prepend]")
126                                            .each(function() {
127                                                (a = jQuery(this).data("articulate-prepend")),
128                                                jQuery(this).prepend(a + " ");
129                                            }),
130                                            jQuery(t)
131                                            .find("[data-articulate-append]")
132                                            .addBack("[data-articulate-append]")
133                                            .each(function() {
134                                                (a = jQuery(this).data("articulate-append")),
135                                                jQuery(this).append(" " + a);
136                                            }),
137                                            E))
138                                        jQuery(t)
139                                        .find(i)
140                                        .each(function() {
141                                            o[i] ?
142                                                (jQuery(this).prepend(o[i].prepend + " "),
143                                                    jQuery(this).append(" " + o[i].append)) :
144                                                (jQuery(this).prepend(E[i].prepend + " "),
145                                                    jQuery(this).append(" " + E[i].append));
146                                        });
147                                    return (
148                                        jQuery(t)
149                                        .find("h1,h2,h3,h4,h5,h6,li,p")
150                                        .addBack("h1,h2,h3,h4,h5,h6,li,p")
151                                        .each(function() {
152                                            jQuery(this).append(". ");
153                                        }),
154                                        jQuery(t)
155                                        .find("br")
156                                        .each(function() {
157                                            jQuery(this).after(", ");
158                                        }),
159                                        jQuery(t)
160                                        .find("figure")
161                                        .addBack("figure")
162                                        .each(function() {
163                                            (a = jQuery(this).find("figcaption").html()),
164                                            (n = o.figure ? o.figure.prepend : E.figure.prepend),
165                                            void 0 !== a &&
166                                                "" !== a &&
167                                                jQuery(
168                                                    "<div>" + n + " " + a + ".</div>"
169                                                ).insertBefore(this),
170                                                jQuery(this).remove();
171                                        }),
172                                        jQuery(t)
173                                        .find("img")
174                                        .addBack("img")
175                                        .each(function() {
176                                            a = jQuery(this).attr("alt");
177                                            var e = jQuery(this).parent(),
178                                                t = e.get(0).tagName;
179                                            (n = o.img ? o.img.prepend : E.img.prepend),
180                                            void 0 !== a &&
181                                                "" !== a &&
182                                                ("PICTURE" == t ?
183                                                    jQuery(
184                                                        "<div>" + n + " " + a + ".</div>"
185                                                    ).insertBefore(e) :
186                                                    jQuery(
187                                                        "<div>" + n + " " + a + ".</div>"
188                                                    ).insertBefore(this)),
189                                                jQuery(this).remove();
190                                        }),
191                                        jQuery(t)
192                                        .find("table")
193                                        .addBack("table")
194                                        .each(function() {
195                                            (a = jQuery(this).find("caption").text()),
196                                            (n = o.table ? o.table.prepend : E.table.prepend),
197                                            void 0 !== a &&
198                                                "" !== a &&
199                                                jQuery(
200                                                    "<div>" + n + " " + a + ".</div>"
201                                                ).insertBefore(this),
202                                                jQuery(this).remove();
203                                        }),
204                                        jQuery(t)
205                                        .find("[data-articulate-swap]")
206                                        .addBack("[data-articulate-swap]")
207                                        .each(function() {
208                                            (a = jQuery(this).data("articulate-swap")),
209                                            jQuery(this).text(a);
210                                        }),
211                                        jQuery(t)
212                                        .find("[data-articulate-spell]")
213                                        .addBack("[data-articulate-spell]")
214                                        .each(function() {
215                                            (a = jQuery(this).text().split("").join(" ")),
216                                            jQuery(this).text(a);
217                                        }),
218                                        t
219                                    );
220                                })((g = e(this).clone()))),
221                                (k =
222                                    k +
223                                    " " +
224                                    (m = (function e(t) {
225                                        for (
226                                            var a, n, i, s, c; -
227                                            1 != t.indexOf("<!-- <articulate>") &&
228                                            ((a = t.indexOf("<!-- <articulate>")),
229                                                -1 != (n = t.indexOf("</articulate> -->", a)));
230
231                                        )
232                                            (i = t.substring(a + 17, n)),
233                                            (t =
234                                                (s = t.substring(0, a)) +
235                                                " " +
236                                                i +
237                                                " " +
238                                                (c = t.substring(n + 17)));
239                                        (t = (t = t.replace(/<!--[\s\S]*?-->/g, "")).replace(
240                                            /(<([^>]+)>)/gi,
241                                            ""
242                                        )),
243                                        r.forEach((e, a) => {
244                                                if (a % 2 == 0) {
245                                                    let n = r[a + 1] + " ",
246                                                        i = RegExp(
247                                                            e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"),
248                                                            "gi"
249                                                        );
250                                                    t = t.replace(i, n);
251                                                }
252                                            }),
253                                            (t = (t = (t = o.q ?
254                                                (t = t.replace(/“/g, o.q.prepe
254nd + " ")).replace(
255                                                    /”/g,
256                                                    " " + o.q.append
257                                                ) :
258                                                (t = t.replace(/“/g, E.q.prepend + " ")).replace(
259                                                    /”/g,
260                                                    " " + E.q.append
261                                                )).replace(/—/g, ", ")).replace(/--/g, ", "));
262                                        let d = document.createElement("textarea");
263                                        return (
264                                            (d.innerHTML = t),
265                                            (t = (t = (t = (t = (t = (t = d.value).replace(
266                                                /(\r\n|\n|\r)/gm,
267                                                ""
268                                            )).replace(/  +/g, " ")).replace(/\.\./g, ".")).replace(
269                                                /,,/g,
270                                                ","
271                                            )).replace(/ ,/g, ","))
272                                        );
273                                    })((f = jQuery(f).html()))));
274                        }),
275                        (d = void 0 !== t ? t : 1.1),
276                        (l = void 0 !== a ? a : 1),
277                        (p = void 0 !== n ? n : 1),
278                        ((v = new SpeechSynthesisUtterance()).lang =
279                            document.getElementsByTagName("html")[0].lang),
280                        (v.text = k),
281                        (v.rate = d),
282                        (v.pitch = l),
283                        (v.volume = p),
284                        y &&
285                        (v.voice = speechSynthesis.getVoices().filter(function(e) {
286                            return "native" == e.name;
287                        })[0]),
288                        void 0 !== i &&
289                        (v.voice = speechSynthesis.getVoices().filter(function(e) {
290                            return e.name == i;
291                        })[0]),
292                        window.speechSynthesis.speak(v),
293                        v.addEventListener("end", () => {
294                            e($).removeClass("accSpeakingArea");
295                        }),
296                        this);
297            },
298            pause: function() {
299                return window.speechSynthesis.pause(), this;
300            },
301            resume: function() {
302                return window.speechSynthesis.resume(), this;
303            },
304            stop: function() {
305                return window.speechSynthesis.cancel(), this;
306            },
307            enabled: function() {
308                return "speechSynthesis" in window;
309            },
310            isSpeaking: function() {
311                return window.speechSynthesis.speaking;
312            },
313            isPaused: function() {
314                return window.speechSynthesis.paused;
315            },
316            rate: function(e) {
317                return (
318                    void 0 !== e && e >= 0.1 && e <= 10 ?
319                    (t = e) :
320                    void 0 === e && ((t = void 0), (d = 1.1)),
321                    this
322                );
323            },
324            pitch: function(e) {
325                return (
326                    void 0 !== e && e >= 0.1 && e <= 2 ?
327                    (a = e) :
328                    void 0 === e && ((a = void 0), (l = 1)),
329                    this
330                );
331            },
332            volume: function(e) {
333                return (
334                    void 0 !== e && e >= 0 && e <= 1 ?
335                    (n = e) :
336                    void 0 === e && ((n = void 0), (p = 1)),
337                    this
338                );
339            },
340            ignore: function(...e) {
341                return (s = e), this;
342            },
343            recognize: function(...e) {
344                return (c = e), this;
345            },
346            replace: function(...e) {
347                return (r = e), this;
348            },
349            customize: function(...e) {
350                return (
351                    0 === e.length ?
352                    (o = []) :
353                    2 === e.length && ["img", "table", "figure"].includes(e[0]) ?
354                    (o[e[0]] = new h(e[1])) :
355                    3 === e.length && ["q", "ol", "ul", "blockquote"].includes(e[0]) ?
356                    (o[e[0]] = new h(e[1], e[2])) :
357                    console.log("Error: Invalid customization parameters."),
358                    this
359                );
360            },
361            getVoices: function(t, a = "Choose a Different Voice") {
362                if (0 === arguments.length) return u;
363                let n = e(t);
364                return (
365                    n.append(
366                        `<select id='voiceSelect'><option value='none'>${a}</option></select>`
367                    ),
368                    u.forEach((e) => {
369                        n.find("select").append(
370                            `<option value='${e.name}' data-articulate-language='${e.language}'>${e.name} (${e.language})</option>`
371                        );
372                    }),
373                    n.on("change", function() {
374                        e(this)
375                            .find("option:selected")
376                            .each(function() {
377                                "none" !== e(this).val() && (i = e(this).val());
378                            });
379                    }),
380                    this
381                );
382            },
383            setVoice: function(e, t) {
384                if (arguments.length < 2) return this;
385                if ("name" === e) i = u.find((e) => e.name === t)?.name;
386                else if ("language" === e) {
387                    let a = t.toUpperCase();
388                    i =
389                        2 === a.length ?
390                        u.find((e) => e.language.substring(0, 2).toUpperCase() === a)
391                        ?.name :
392                        u.find((e) => e.language === a)?.name;
393                }
394                return this;
395            },
396        };
397    (e.fn.articulate = function(t) {
398        return k[t] ?
399            k[t].apply(this, Array.prototype.slice.call(arguments, 1)) :
400            "object" != typeof t && t ?
401            void e.error("Method " + t + " does not exist") :
402            k.speak.apply(this, arguments);
403    }),
404    document.addEventListener("DOMContentLoaded", function() {
405		const accessibilityMenuHTML = `
406    <!--start:: ERİŞİLEBİLİRLİK MENÜSÜ-->
407
408    <button
409      class="accessibility-toggle-button"
410      id="accessibilityToggle"
411      aria-label="Erişilebilirlik Menüsünü Aç"
412    >
413      <svg
414        xmlns="http://www.w3.org/2000/svg"
415        viewBox="0 0 122.88 122.88"
416        role="img"
417      >
418        <title>Erişilebilirlik Menüsü İkonu</title>
419        <path
420          d="M61.44,0A61.46,61.46,0,1,1,18,18,61.21,61.21,0,0,1,61.44,0Zm-.39,74.18L52.1,98.91a4.94,4.94,0,0,1-2.58,2.83A5,5,0,0,1,42.7,95.5l6.24-17.28a26.3,26.3,0,0,0,1.17-4,40.64,40.64,0,0,0,.54-4.18c.24-2.53.41-5.27.54-7.9s.22-5.18.29-7.29c.09-2.63-.62-2.8-2.73-3.3l-.44-.1-18-3.39A5,5,0,0,1,27.08,46a5,5,0,0,1,5.05-7.74l19.34,3.63c.77.07,1.52.16,2.31.25a57.64,57.64,0,0,0,7.18.53A81.13,81.13,0,0,0,69.9,42c.9-.1,1.75-.21,2.6-.29l18.25-3.42A5,5,0,0,1,94.5,39a5,5,0,0,1,1.3,7,5,5,0,0,1-3.21,2.09L75.15,51.37c-.58.13-1.1.22-1.56.29-1.82.31-2.72.47-2.61,3.06.08,1.89.31,4.15.61,6.51.35,2.77.81,5.71,1.29,8.4.31,1.77.6,3.19,1,4.55s.79,2.75,1.39,4.42l6.11,16.9a5,5,0,0,1-6.82,6.24,4.94,4.94,0,0,1-2.58-2.83L63,74.23,62,72.4l-1,1.78Zm.39-53.52a8.83,8.83,0,1,1-6.24,2.59,8.79,8.79,0,0,1,6.24-2.59Zm36.35,4.43a51.42,51.42,0,1,0,15,36.35,51.27,51.27,0,0,0-15-36.35Z"
421        ></path>
422      </svg>
423    </button>
424    <div id="accessibilityPanel" class="ac-panel">
425      <div class="ac-panel--header">
426        <h5 class="ac-panel--header__title" id="acPanel">
427          Erişilebilirlik Menüsü  [CTRL+ Y]
428        </h5>
429        <button
430          id="accessibilityCloseButton"
431          type="button"
432          class="ac-panel--close-button"
433          aria-label="Kapat"
434        ></button>
435      </div>
436      <div class="ac-panel--body d-flex flex-column">
437        <div class="ac-panel--wrapper">
438            <button
439              class="ac-box span-2 speak-group"
440              id="speakButton"
441              data-acc-option="screen-reader"
442            >
443              <svg
444                xmlns="http://www.w3.org/2000/svg"
445                width="24"
446                height="24"
447                viewBox="0 0 24 24"
448                fill="none"
449                stroke="currentColor"
450                stroke-width="2"
451                stroke-linecap="round"
452                stroke-linejoin="round"
453              >
454                <path
455                  d="M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v3"
456                ></path>
457                <polyline points="14 2 14 8 20 8"></polyline>
458                <path d="m7 10-3 2H2v4h2l3 2v-8Z"></path>
459                <path d="M11 11c.64.8 1 1.87 1 3s-.36 2.2-1 3"></path>
460              </svg>
461             <div>Ekran Okuyucu</div>
462              <svg class="play-button" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none"
463                stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
464                <title>Başlat</title>
465                <circle cx="12" cy="12" r="10"></circle>
466                <polygon points="10 8 16 12 10 16 10 8"></polygon>
467              </svg>
468              <svg class="stop-button" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none"
469                stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
470                <title>Durdur</title>
471                <circle cx="12" cy="12" r="10"></circle>
472                <rect x="9" y="9" width="6" height="6" rx="1"></rect>
473              </svg>
474            </button>
475            <button
476            class="ac-box speak-group"
477            id="selectSpeakButton"
478            data-acc-option="select-reader"
479          >
480            <svg
481              xmlns="http://www.w3.org/2000/svg"
482              width="24"
483              height="24"
484              viewBox="0 0 24 24"
485              fill="none"
486              stroke="currentColor"
487              stroke-width="2"
488              stroke-linecap="round"
489              stroke-linejoin="round"
490            >
491              <path
492                d="M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v3"
493              ></path>
494              <polyline points="14 2 14 8 20 8"></polyline>
495              <path d="m7 10-3 2H2v4h2l3 2v-8Z"></path>
496              <path d="M11 11c.64.8 1 1.87 1 3s-.36 2.2-1 3"></path>
497            </svg>
498           <div>Seçili Alan Okuyucu</div>
499           <svg class="play-button" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none"
500           stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
501           <title>Başlat</title>
502           <circle cx="12" cy="12" r="10"></circle>
503           <polygon points="10 8 16 12 10 16 10 8"></polygon>
504         </svg>
505         <svg class="stop-button" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none"
506           stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
507           <title>Durdur</title>
508           <circle cx="12" cy="12" r="10"></circle>
509           <rect x="9" y="9" width="6" height="6" rx="1"></rect>
510         </svg>              
511        </button>
512            <button
513              class="ac-box speak-group"  
514              data-acc-option="hover-reader"
515            >
516            <svg data-v-14c8c335="" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
517              stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
518              <path
519                d="M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z">
520              </path>
521              <path d="M5 3a2 2 0 0 0-2 2"></path>
522              <path d="M19 3a2 2 0 0 1 2 2"></path>
523              <path d="M5 21a2 2 0 0 1-2-2"></path>
524              <path d="M9 3h1"></path>
525              <path d="M9 21h2"></path>
526              <path d="M14 3h1"></path>
527              <path d="M3 9v1"></path>
528              <path d="M21 9v2"></path>
529              <path d="M3 14v1"></path>
530            </svg>
531              <div>Üzerine Gelinen Metni Oku</div>
532          </button>
533            <button class="ac-box" data-acc-option="highlight-links">
534              <svg
535                xmlns="http://www.w3.org/2000/svg"
536                width="24"
537                height="24"
538                viewBox="0 0 24 24"
539                fill="none"
540                stroke="currentColor"
541                stroke-width="2"
542                stroke-linecap="round"
543                stroke-linejoin="round"
544              >
545                <title>Bağlantı Vurgula İkonu</title>
546                <path
547                  d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"
548                ></path>
549                <path
550                  d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"
551                ></path>
552              </svg>
553             <div>Bağlantı Vurgula</div>
554            </button>
555            <button class="ac-box" data-acc-option="remove-images">
556              <svg data-v-14c8c335="" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
557                stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
558                <line x1="2" x2="22" y1="2" y2="22"></line>
559                <path d="M10.41 10.41a2 2 0 1 1-2.83-2.83"></path>
560                <line x1="13.5" x2="6" y1="13.5" y2="21"></line>
561                <line x1="18" x2="21" y1="12" y2="15"></line>
562                <path d="M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59"></path>
563                <path d="M21 15V5a2 2 0 0 0-2-2H9"></path>
564              </svg>
565             <div>Resimleri Gizle</div>
566            </button>
567            <button class="ac-box" data-acc-option="bigger-text">
568              <svg
569                xmlns="http://www.w3.org/2000/svg"
570                width="24"
571                height="24"
572                viewBox="0 0 24 24"
573                fill="none"
574                stroke="currentColor"
575                stroke-width="2"
576                stroke-linecap="round"
577                stroke-linejoin="round"
578              >
579                <title>Metni Büyüt İkonu</title>
580                <polyline points="4 7 4 4 20 4 20 7"></polyline>
581                <line x1="9" y1="20" x2="15" y2="20"></line>
582                <line x1="12" y1="4" x2="12" y2="20"></line>
583              </svg>
584             <div>Büyük Metin</div>
585            </button>
586            <button class="ac-box" data-acc-option="align-text-left">
587              <svg
588                xmlns="http://www.w3.org/2000/svg"
589                width="24"
590                height="24"
591                viewBox="0 0 24 24"
592                fill="none"
593                stroke="currentColor"
594                stroke-width="2"
595                stroke-linecap="round"
596                stroke-linejoin="round"
597              >
598                <line x1="21" y1="6" x2="3" y2="6"></line>
599                <line x1="15" y1="12" x2="3" y2="12"></line>
600                <line x1="17" y1="18" x2="3" y2="18"></line>
601              </svg>
602             <div>Metni Sola Hizala</div>
603            </button>
604            <button class="ac-box" data-acc-option="line-height">
605              <svg
606                xmlns="http://www.w3.org/2000/svg"
607                width="24"
608                height="24"
609                viewBox="0 0 24 24"
610                fill="none"
611                stroke="currentColor"
612                stroke-width="2"
613                stroke-linecap="round"
614                stroke-linejoin="round"
615              >
616              <path stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 10V5m0 0L4 7m2-2 2 2m-2 7v5m0 0 2-2m-2 2-2-2m8-10h8m0 5h-8m0 5h8"></path>
617              </svg>
618             <div>Satır Aralığı</div>
619            </button>
620            <button class="ac-box hide-on-sm" data-acc-option="bigger-cursor">
621              <svg
622                xmlns="http://www.w3.org/2000/svg"
623                width="24"
624                height="24"
625                viewBox="0 0 24 24"
626                fill="none"
627                stroke="currentColor"
628                stroke-width="2"
629                stroke-linecap="round"
630                stroke-linejoin="round"
631              >
632                <path d="m9 9 5 12 1.774-5.226L21 14 9 9z"></path>
633                <path d="m16.071 16.071 4.243 4.243"></path>
634                <path
635                  d="m7.188 2.239.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656-2.12 2.122"
636                ></path>
637              </svg>
638             <div>İmleç</div>
639            </button>
640            <button class="ac-box hide-on-sm" data-acc-option="reading-guide">
641              <svg
642                xmlns="http://www.w3.org/2000/svg"
643                width="24"
644                height="24"
645                viewBox="0 0 24 24"
646                fill="none"
647                stroke="currentColor"
648                stroke-width="2"
649                stroke-linecap="round"
650                stroke-linejoin="round"
651              >
652                <path d="M8 3H2v15h7c1.7 0 3 1.3 3 3V7c0-2.2-1.8-4-4-4Z"></path>
653                <path d="m16 12 2 2 4-4"></path>
654                <path
655                  d="M22 6V3h-6c-2.2 0-4 1.8-4 4v14c0-1.7 1.3-3 3-3h7v-2.3"
656                ></path>
657              </svg>
658             <div>Okuma Kılavuzu</div>
659            </button>
660            <button class="ac-box hide-on-sm" data-acc-option="reading-mask">
661              <svg
662                xmlns="http://www.w3.org/2000/svg"
663                width="24"
664                height="24"
665                viewBox="0 0 24 24"
666                fill="none"
667                stroke="currentColor"
668                stroke-width="2"
669                stroke-linecap="round"
670                stroke-linejoin="round"
671              >
672                <path
673                  d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"
674                ></path>
675                <polyline points="14 2 14 8 20 8"></polyline>
676                <path d="M8 13h2"></path>
677                <path d="M8 17h2"></path>
678                <path d="M14 13h2"></path>
679                <path d="M14 17h2"></path>
680              </svg>
681             <div>Okuma Maskesi</div>
682            </button>
683            <button class="ac-box" data-acc-option="dyslexic-friendly">
684              <svg
685                xmlns="http://www.w3.org/2000/svg"
686                width="24"
687                height="24"
688                viewBox="0 0 24 24"
689                fill="none"
690                stroke="currentColor"
691                stroke-width="2"
692                stroke-linecap="round"
693                stroke-linejoin="round"
694              >
695                <path d="M4 20h16"></path>
696                <path d="m6 16 6-12 6 12"></path>
697                <path d="M8 12h8"></path>
698              </svg>
699             <div>Disleksi Dostu</div>
700            </button>
701            <button class="ac-box" data-acc-option="contrast">
702              <svg
703                xmlns="http://www.w3.org/2000/svg"
704                width="24"
705                height="24"
706                viewBox="0 0 24 24"
707                fill="none"
708                stroke="currentColor"
709                stroke-width="2"
710                stroke-linecap="round"
711                stroke-linejoin="round"
712              >
713                <circle cx="12" cy="12" r="10"></circle>
714                <path d="M12 18a6 6 0 0 0 0-12v12z"></path>
715              </svg>
716             <div>Kontrast</div>
717            </button>
718            <button class="ac-box" data-acc-option="blue-light-filter">
719              <svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none"
720                stroke-linecap="round" stroke-linejoin="round">
721                <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path>
722                <circle cx="12" cy="12" r="3"></circle>
723              </svg>
724             <div>Mavi Işık Filtresi</div>
725            </button>
726            <button class="ac-box" data-acc-option="desaturate">
727              <svg
728                xmlns="http://www.w3.org/2000/svg"
729                width="24"
730                height="24"
731                viewBox="0 0 24 24"
732                fill="none"
733                stroke="currentColor"
734                stroke-width="2"
735                stroke-linecap="round"
736                stroke-linejoin="round"
737              >
738                <path d="M12 10V2"></path>
739                <path d="m4.93 10.93 1.41 1.41"></path>
740                <path d="M2 18h2"></path>
741                <path d="M20 18h2"></path>
742                <path d="m19.07 10.93-1.41 1.41"></path>
743                <path d="M22 22H2"></path>
744                <path d="m16 6-4 4-4-4"></path>
745                <path d="M16 18a4 4 0 0 0-8 0"></path>
746              </svg>
747             <div>Solgunlaştırma</div>
748            </button>
749            <button class="ac-box" data-acc-option="low-saturation">
750              <svg
751                xmlns="http://www.w3.org/2000/svg"
752                width="24"
753                height="24"
754                viewBox="0 0 24 24"
755                fill="none"
756                stroke="currentColor"
757                stroke-width="2"
758                stroke-linecap="round"
759                stroke-linejoin="round"
760              >
761                <path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8z"></path>
762                <path d="M12 8a2.828 2.828 0 1 0 4 4"></path>
763                <path d="M12 2v2"></path>
764                <path d="M12 20v2"></path>
765                <path d="m4.93 4.93 1.41 1.41"></path>
766                <path d="m17.66 17.66 1.41 1.41"></path>
767                <path d="M2 12h2"></path>
768                <path d="M20 12h2"></path>
769                <path d="m6.34 17.66-1.41 1.41"></path>
770                <path d="m19.07 4.93-1.41 1.41"></path>
771              </svg>
772             <div>Düşük Doygunluk</div>
773            </button>
774            <button class="ac-box" data-acc-option="high-saturation">
775              <svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none"
776                stroke-linecap="round" stroke-linejoin="round" class="css-i6dzq1">
777                <path d="M17 18a5 5 0 0 0-10 0"></path>
778                <line x1="12" y1="9" x2="12" y2="2"></line>
779                <line x1="4.22" y1="10.22" x2="5.64" y2="11.64"></line>
780                <line x1="1" y1="18" x2="3" y2="18"></line>
781                <line x1="21" y1="18" x2="23" y2="18"></line>
782                <line x1="18.36" y1="11.64" x2="19.78" y2="10.22"></line>
783                <line x1="23" y1="22" x2="1" y2="22"></line>
784                <polyline points="16 5 12 9 8 5"></polyline>
785              </svg>
786             <div>Yüksek Doygunluk</div>
787            </button>
788        </div>
789      </div>
790      <button id="clearSettings" class="ac-clear-button">
791        <svg
792          xmlns="http://www.w3.org/2000/svg"
793          width="24"
794          height="24"
795          viewBox="0 0 24 24"
796          fill="none"
797          stroke="currentColor"
798          stroke-width="2"
799          stroke-linecap="round"
800          stroke-linejoin="round"
801        >
802          <path d="M3 2v6h6"></path>
803          <path d="M21 12A9 9 0 0 0 6 5.3L3 8"></path>
804          <path d="M21 22v-6h-6"></path>
805          <path d="M3 12a9 9 0 0 0 15 6.7l3-2.7"></path>
806        </svg>
807        Erişilebilirlik Ayarlarını Temizle
808      </button>
809      <div style="text-align:right;padding:4px 12px 6px;">
810        <a href="https://www.diciwall.com" target="_blank" rel="noopener" style="font-size:10px;color:#888;text-decoration:none;">powered by diciwall</a>
811      </div>
812    </div>
813    <div id="readingFocusTop" class="reading-focus-overlay-top"></div>
814    <div id="readingFocusBottom" class="reading-focus-overlay-bottom"></div>
815    <div id="readingGuideLine" class="reading-guide-line"></div>
816
817`;
818		document.body.insertAdjacentHTML('beforeend', accessibilityMenuHTML);
819        let t = document.getElementsByTagName("html")[0],
820            a = document.getElementById("accessibilityPanel"),
821            n = document.getElementById("accessibilityToggle"),
822            i = document.getElementById("accessibilityCloseButton"),
823            s = document.getElementById("readingFocusTop"),
824            c = document.getElementById("readingFocusBottom"),
825            r = document.getElementById("readingGuideLine"),
826            o = document.querySelectorAll(".ac-box"),
827            d = document.getElementById("clearSettings"),
828            l = document.getElementById("speakButton");
829			
830	    let hasLang = speechSynthesis.getVoices().some(v => v.lang.startsWith(document.getElementsByTagName("html")[0].lang)); 
831        document.querySelectorAll(".speak-group").forEach(btn => btn.classList.toggle("d-none", !hasLang));
832
833        document.addEventListener('keydown', function(e) {
834            // Check if Ctrl + Y was pressed (e.key === 'y' for lowercase, 'Y' for uppercase)
835            if (e.ctrlKey && (e.key === 'y' || e.key === 'Y')) {
836                e.preventDefault(); // Prevent default browser behavior
837                a.classList.toggle("show");
838                localStorage.setItem("accPanel", a.classList.contains("show") ? "1" : "0");
839            }
840
841            if (e.code === 'Space') {
842                e.preventDefault(); // Prevent default browser behavior
843
844                if ("speechSynthesis" in window) {
845
846                    if ("speechSynthesis" in window) { 
847                        if (window.speechSynthesis.speaking && !window.speechSynthesis.paused) {
848                            window.speechSynthesis.pause();
849                        } else if (window.speechSynthesis.paused) { 
850                            window.speechSynthesis.resume();
851                        }
852
853                    }
854                }
855            }
856
857
858        });
859
860
861        const optionGroups = {
862            vision: ["contrast", "desaturate", "low-saturation", "high-saturation","blue-light-filter"],
863            reader: ["screen-reader", "select-reader", "hover-reader"],
864            reading: ["reading-guide", "reading-mask"],
865        };
866
867        // Add hover reader functionality
868        const handleHoverRead = (event) => {
869            if (t.classList.contains("hover-reader")) {
870                const text = event.target.innerText;
871                const accSpeakingAreas = document.querySelectorAll('.accSpeakingArea');
872                accSpeakingAreas.forEach((element) => {
873                    element.classList.remove('accSpeakingArea');
874                });
875                event.target.classList.add("accSpeakingArea");
876                if (text && text.trim().length > 0) {
877                    if ("speechSynthesis" in window) {
878                        window.speechSynthesis.cancel();
879                        const utterance = new SpeechSynthesisUtterance(text.trim());
880                        utterance.lang = "tr-TR";
881                        window.speechSynthesis.speak(utterance);
882                    }
883                }
884            }
885        };
886
887
888        document.addEventListener("mouseover", handleHoverRead);
889
890        const stopReading = () => {
891            if (!t.classList.contains("hover-reader")) {
892                if ("speechSynthesis" in window) {
893                    window.speechSynthesis.cancel();
894                }
895            }
896        };
897
898
899        // Function to check if option belongs to a group
900        const getOptionGroup = (option) => {
901            for (let group in optionGroups) {
902                if (optionGroups[group].includes(option)) {
903                    return group;
904                }
905            }
906            return null;
907        };
908
909        // Function to deactivate other options in the same group
910        const deactivateGroupOptions = (activeOption) => {
911            const group = getOptionGroup(activeOption);
912            if (!group) return;
913
914            optionGroups[group].forEach(option => {
915                if (option !== activeOption) {
916                    t.classList.remove(option);
917                    document.querySelector(`[data-acc-option="${option}"]`)?.classList.remove("active");
918                    localStorage.setItem(option, "0");
919                    if (option === "hover-reader") {
920                        stopReading();
921                    }
922                }
923            });
924        };
925
926
927        const updateAccessibilityToggle = () => {
928            const activeOptions = Array.from(o).filter(el => el.classList.contains('active'));
929            if (activeOptions.length > 0) {
930                n.classList.add('has-active-options');
931                // Create or update the indicator badge
932                let badge = n.querySelector('.active-options-badge');
933                if (!badge) {
934                    badge = document.createElement('span');
935                    badge.className = 'active-options-badge';
936                    badge.ariaLabel = "Aktif Olan Özellik Sayısı"
937                    n.appendChild(badge);
938                }
939                badge.textContent = activeOptions.length;
940            } else {
941                n.classList.remove('has-active-options');
942                const badge = n.querySelector('.active-options-badge');
943                if (badge) badge.remove();
944            }
945        };
946
947
948
949        o.forEach((e) => {
950            let a = e.getAttribute("data-acc-option");
951            if ("1" === localStorage.getItem(a)) {
952                e.classList.add("active");
953                t.classList.add(a);
954                deactivateGroupOptions(a);
955            }
956        });
957        updateAccessibilityToggle();
958        "1" === localStorage.getItem("accPanel") && a.classList.add("show");
959
960
961        o.forEach((e) => {
962            e.addEventListener("click", function() {
963                let a = e.getAttribute("data-acc-option");
964                if (t.classList.contains(a)) {
965                    // Deactivate option
966                    t.classList.remove(a);
967                    e.classList.remove("active");
968                    localStorage.setItem(a, "0");
969                    const accSpeakingAreas = document.querySelectorAll('.accSpeakingArea');
970                    accSpeakingAreas.forEach((element) => {
971                        element.classList.remove('accSpeakingArea');
972                    });
973
974                    stopReading();
975
976                } else {
977                    deactivateGroupOptions(a);
978                    t.classList.add(a);
979                    e.classList.add("active");
980                    localStorage.setItem(a, "1");
981                }
982                updateAccessibilityToggle();
983            });
984        });
985
986
987
988        n.addEventListener("click", function() {
989            a.classList.toggle("show");
990            localStorage.setItem("accPanel", a.classList.contains("show") ? "1" : "0");
991        });
992
993        i.addEventListener("click", function() {
994            a.classList.toggle("show");
995            localStorage.setItem("accPanel", "0");
996        });
997
998        let p = (e) => {
999            t.classList.contains("reading-guide") &&
1000                ((r.style.left = e.pageX + "px"),
1001                    (r.style.top = e.pageY - 12 + "px"));
1002        };
1003
1004        document.addEventListener("mousemove", p);
1005
1006        let u = (e) => {
1007            t.classList.contains("reading-mask") &&
1008                ((s.style.height = `calc(${e.clientY}px - 40px)`),
1009                    (c.style.height = `calc((100vh - ${e.clientY}px) - 40px)`));
1010        };
1011
1012        let h = (a) => {
1013
1014            t.classList.contains("select-reader") &&
1015                e(a.target)
1016                .articulate("ignore", ".content")
1017                .articulate("rate", 0.8)
1018                .articulate("pitch", 0.2)
1019                .articulate("speak");
1020        };
1021
1022        let g = (a) => {
1023            t.classList.contains("screen-reader") ?
1024                e(".speak-area")
1025                .articulate("rate", 0.8)
1026                .articulate("pitch", 0.2)
1027                .articulate("speak") :
1028                e(".speak-area").articulate("stop");
1029        };
1030
1031        document.addEventListener("mousemove", u);
1032        document.addEventListener("click", h);
1033        document.addEventListener("focusin", h);
1034        window.addEventListener("load", g);
1035        l.addEventListener("click", g);
1036
1037        d.addEventListener("click", function() {
1038            t.className = "";
1039            o.forEach((e) => {
1040                e.classList.remove("active");
1041                localStorage.removeItem(e.getAttribute("data-acc-option"));
1042            });
1043            localStorage.removeItem("accPanel");
1044            updateAccessibilityToggle();
1045        });
1046    });
1047})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.