BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Школа Edling - ECPv6.16.5.1//NONSGML v1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-ORIGINAL-URL:https://www.edling.com.ua
X-WR-CALDESC:Події за Школа Edling
REFRESH-INTERVAL;VALUE=DURATION:PT1H
X-Robots-Tag:noindex
X-PUBLISHED-TTL:PT1H
BEGIN:VTIMEZONE
TZID:Europe/Kyiv
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
TZNAME:EEST
DTSTART:20250330T010000
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:20251026T010000
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
TZNAME:EEST
DTSTART:20260329T010000
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:20261025T010000
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
TZNAME:EEST
DTSTART:20270328T010000
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:20271031T010000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=Europe/Kyiv:20260713T200000
DTEND;TZID=Europe/Kyiv:20260713T204500
DTSTAMP:20260624T115347Z
CREATED:20260617T080242Z
LAST-MODIFIED:20260624T115347Z
UID:10000803-1783972800-1783975500@www.edling.com.ua
SUMMARY:Blast Off: Meet Yourself / Злітаємо: знайомство з собою. ⭐Безкоштовний урок.
DESCRIPTION:Урок 1. Про що: Перший крок у світі англійської — знайомство та презентація себе. Що будемо робити: Грати у веселі інтерактивні вправи на знайомство\, розповідати про себе\, дізнаватися про однокласників\,…  \n\n\nПотрібне членство Повний доступ\n\n Ви повинні бути членом Повний доступ\, щоб отримати доступ до цього контенту. \nПриєднуйся зараз Увійти \n\nAlready a member? Увійдіть тут
URL:https://www.edling.com.ua/event/blast-off-meet-yourself-zlitayemo-znajomstvo-z-soboyu-bezkoshtovnyj-urok-5/
CATEGORIES:Школярі
ATTACH;FMTTYPE=image/jpeg:https://www.edling.com.ua/wp-content/uploads/2026/01/blast-off-meet-yourself-tec-11-16.jpg
LOCATION:https://us05web.zoom.us/j/82736742217?pwd=HKPpzExLbNJ4JlJeIz57q9IoR3Qlck.1
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Kyiv:20260715T200000
DTEND;TZID=Europe/Kyiv:20260715T204500
DTSTAMP:20260627T104046Z
CREATED:20260617T081344Z
LAST-MODIFIED:20260627T104046Z
UID:10000809-1784145600-1784148300@www.edling.com.ua
SUMMARY:🤝 Team or Solo? / Команда чи сам? 🎟️Урок за підпискою.
DESCRIPTION:Урок 19. Про що: Робота разом чи наодинці. Що будемо робити: Ділитися досвідом командної роботи\, обговорювати плюси і мінуси. Чого навчимося: Говорити про співпрацю\, аналізувати командну взаємодію. 🎧 Пройдіть короткий…  \n\n\nПотрібне членство Повний доступ\n\n Ви повинні бути членом Повний доступ\, щоб отримати доступ до цього контенту. \nПриєднуйся зараз Увійти \n\nAlready a member? Увійдіть тут
URL:https://www.edling.com.ua/event/team-or-solo-komanda-chy-sam-urok-za-pidpyskoyu/
CATEGORIES:Школярі
ATTACH;FMTTYPE=image/jpeg:https://www.edling.com.ua/wp-content/uploads/2026/03/19.1-11-16.jpg
LOCATION:https://us05web.zoom.us/j/84743248977?pwd=nNKoj8rmmHvDqD2HIJKa5TtQBzW0tY.1
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Kyiv:20260717T200000
DTEND;TZID=Europe/Kyiv:20260717T204500
DTSTAMP:20260627T104112Z
CREATED:20260617T081500Z
LAST-MODIFIED:20260627T104112Z
UID:10000810-1784318400-1784321100@www.edling.com.ua
SUMMARY:😬 What I’m Afraid Of / Чого я боюся. 🎟️Урок за підпискою.
DESCRIPTION:Урок 20. Про що: Страхи підлітків. Що будемо робити: Ділитися страхами у безпечній атмосфері\, гра «Мій страх — моя історія». Чого навчимося: Говорити про почуття\, впевнено описувати власні переживання. 🎧…  \n\n\nПотрібне членство Повний доступ\n\n Ви повинні бути членом Повний доступ\, щоб отримати доступ до цього контенту. \nПриєднуйся зараз Увійти \n\nAlready a member? Увійдіть тут
URL:https://www.edling.com.ua/event/what-i-m-afraid-of-chogo-ya-boyusya-urok-za-pidpyskoyu/
CATEGORIES:Школярі
ATTACH;FMTTYPE=image/jpeg:https://www.edling.com.ua/wp-content/uploads/2026/03/20.1-11-16.jpg
LOCATION:https://us05web.zoom.us/j/83599837170?pwd=bbnB3BB6rviPBl6LN3zfjAJRakIjrV.1
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Kyiv:20260720T200000
DTEND;TZID=Europe/Kyiv:20260720T204500
DTSTAMP:20260624T115630Z
CREATED:20260617T080530Z
LAST-MODIFIED:20260624T115630Z
UID:10000804-1784577600-1784580300@www.edling.com.ua
SUMMARY:☀️ Teen’s Day / День підлітка. ⭐Безкоштовний урок.
DESCRIPTION:Урок 2. Про що: Розповідаємо про свій звичайний день. Що будемо робити: Описувати свій день у коротких інтерактивних вправах\, дізнаватися про життя однокласників\, робити швидкі «мінідіалоги». Чого навчимося: Говорити про…  \n\n\nПотрібне членство Повний доступ\n\n Ви повинні бути членом Повний доступ\, щоб отримати доступ до цього контенту. \nПриєднуйся зараз Увійти \n\nAlready a member? Увійдіть тут
URL:https://www.edling.com.ua/event/teen-s-day-den-pidlitka-bezkoshtovnyj-urok-5/
CATEGORIES:Школярі
ATTACH;FMTTYPE=image/jpeg:https://www.edling.com.ua/wp-content/uploads/2026/01/tec-teens-day-real-life-11-16.jpg
LOCATION:https://us05web.zoom.us/j/87616841732?pwd=D4kmJmualEZaPRVwpMPr6tyfo9OQ5g.1
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Kyiv:20260722T200000
DTEND;TZID=Europe/Kyiv:20260722T204500
DTSTAMP:20260627T104149Z
CREATED:20260617T081611Z
LAST-MODIFIED:20260627T104149Z
UID:10000811-1784750400-1784753100@www.edling.com.ua
SUMMARY:💬 My Opinion Matters / Моя думка важлива. 🎟️Урок за підпискою.
DESCRIPTION:Урок 21. Про що: Особиста думка без страху помилок. Що будемо робити: Висловлювати думку в простих темах\, гра «Моя точка зору». Чого навчимося: Починати аргументовано висловлювати свою позицію англійською. 🎧…  \n\n\nПотрібне членство Повний доступ\n\n Ви повинні бути членом Повний доступ\, щоб отримати доступ до цього контенту. \nПриєднуйся зараз Увійти \n\nAlready a member? Увійдіть тут
URL:https://www.edling.com.ua/event/my-opinion-matters-moya-dumka-vazhlyva-urok-za-pidpyskoyu/
CATEGORIES:Школярі
ATTACH;FMTTYPE=image/jpeg:https://www.edling.com.ua/wp-content/uploads/2026/03/21.1-11-16.jpg
LOCATION:https://us05web.zoom.us/j/88195821285?pwd=V5WChT4AaWMkXwOb8rWcS6AF8sp9rE.1
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Kyiv:20260724T200000
DTEND;TZID=Europe/Kyiv:20260724T204500
DTSTAMP:20260627T104211Z
CREATED:20260617T081721Z
LAST-MODIFIED:20260627T104211Z
UID:10000812-1784923200-1784925900@www.edling.com.ua
SUMMARY:💡 Crazy Ideas / Божевільні ідеї. 🎟️Урок за підпискою.
DESCRIPTION:Урок 22. Про що: Ідеї без обмежень. Що будемо робити: Придумувати незвичні ідеї та ділитися ними\, гра «Що якби…?» Чого навчимося: Говорити спонтанно\, розвивати креативність. 🎧 Пройдіть короткий self-prep урок\,…  \n\n\nПотрібне членство Повний доступ\n\n Ви повинні бути членом Повний доступ\, щоб отримати доступ до цього контенту. \nПриєднуйся зараз Увійти \n\nAlready a member? Увійдіть тут
URL:https://www.edling.com.ua/event/crazy-ideas-bozhevilni-ideyi-urok-za-pidpyskoyu/
CATEGORIES:Школярі
ATTACH;FMTTYPE=image/jpeg:https://www.edling.com.ua/wp-content/uploads/2026/03/22.1-11-16.jpg
LOCATION:https://us05web.zoom.us/j/89027943075?pwd=i3NemHjLIbdD3cIBxae2IlkmoXjVSs.1
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Kyiv:20260727T200000
DTEND;TZID=Europe/Kyiv:20260727T204500
DTSTAMP:20260624T115730Z
CREATED:20260617T080721Z
LAST-MODIFIED:20260624T115730Z
UID:10000805-1785182400-1785185100@www.edling.com.ua
SUMMARY:🌟 My Crew / Моя команда. ⭐Безкоштовний урок.
DESCRIPTION:Урок 3. Про що: Люди\, які поруч і роблять життя цікавішим. Що будемо робити: Розповідати про друзів і знайомих\, робити інтерактивні вправи на опис персонажів\, дізнаватися про друзів однокласників. Чого…  \n\n\nПотрібне членство Повний доступ\n\n Ви повинні бути членом Повний доступ\, щоб отримати доступ до цього контенту. \nПриєднуйся зараз Увійти \n\nAlready a member? Увійдіть тут
URL:https://www.edling.com.ua/event/my-crew-moya-komanda-bezkoshtovnyj-urok-5/
CATEGORIES:Школярі
ATTACH;FMTTYPE=image/jpeg:https://www.edling.com.ua/wp-content/uploads/2026/01/tec_11-16_my-crew_real.jpg
LOCATION:https://us05web.zoom.us/j/86322721236?pwd=sJyaYBKtxZnvxzw8Ga0No02L1E2yvN.1
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Kyiv:20260729T200000
DTEND;TZID=Europe/Kyiv:20260729T204500
DTSTAMP:20260627T104242Z
CREATED:20260617T081825Z
LAST-MODIFIED:20260627T104242Z
UID:10000813-1785355200-1785357900@www.edling.com.ua
SUMMARY:🌍 My Life in 10 Years / Я через 10 років. 🎟️Урок за підпискою.
DESCRIPTION:Урок 23. Про що: Уявлення про майбутнє. Що будемо робити: Описувати своє життя через 10 років\, гра «Моя майбутня історія». Чого навчимося: Говорити про плани і мрії\, уявляти майбутнє англійською….  \n\n\nПотрібне членство Повний доступ\n\n Ви повинні бути членом Повний доступ\, щоб отримати доступ до цього контенту. \nПриєднуйся зараз Увійти \n\nAlready a member? Увійдіть тут
URL:https://www.edling.com.ua/event/my-life-in-10-years-ya-cherez-10-rokiv-urok-za-pidpyskoyu/
CATEGORIES:Школярі
ATTACH;FMTTYPE=image/jpeg:https://www.edling.com.ua/wp-content/uploads/2026/03/23.1-11-16.jpg
LOCATION:https://us05web.zoom.us/j/82110689625?pwd=vUKBQfhua04bz7UABkmjwv9caiZVGl.1
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Kyiv:20260731T200000
DTEND;TZID=Europe/Kyiv:20260731T204500
DTSTAMP:20260627T121332Z
CREATED:20260617T081925Z
LAST-MODIFIED:20260627T121332Z
UID:10000814-1785528000-1785530700@www.edling.com.ua
SUMMARY:🐾 Animals Around Us / Тварини навколо нас. 🎟️Урок за підпискою.
DESCRIPTION:Урок 24. Про що: Які тварини нас оточують і яку роль вони відіграють у житті людей. Що будемо робити: Обговорювати улюблених тварин\, порівнювати домашніх і диких\, ділитися історіями. Чого навчимося:…  \n\n\nПотрібне членство Повний доступ\n\n Ви повинні бути членом Повний доступ\, щоб отримати доступ до цього контенту. \nПриєднуйся зараз Увійти \n\nAlready a member? Увійдіть тут
URL:https://www.edling.com.ua/event/animals-around-us-tvaryny-navkolo-nas-urok-za-pidpyskoyu/
CATEGORIES:Школярі
ATTACH;FMTTYPE=image/jpeg:https://www.edling.com.ua/wp-content/uploads/2026/03/24.1-11-16.jpg
LOCATION:https://us05web.zoom.us/j/88969927638?pwd=f6RQkeWUUiuBq2fopMktGQbuI6eVu0.1
END:VEVENT
END:VCALENDAR
<script id="edla-tracker-inline" data-no-optimize="1" data-no-defer="1" data-no-async="1">window.EDLA_CFG={"endpoint":"https:\/\/www.edling.com.ua\/wp-json\/edling-analytics\/v1\/event","vidCookie":"edl_vid"};
(function () {
    'use strict';

    var CFG = window.EDLA_CFG || {};
    if ( ! CFG.endpoint ) return;

    var VID = CFG.vidCookie || 'edl_vid';

    function getCookie( name ) {
        var safe = name.replace( /[$()*+?.\\^|]/g, '\\$&' );
        var m = document.cookie.match( new RegExp( '(?:^|; )' + safe + '=([^;]*)' ) );
        return m ? decodeURIComponent( m[ 1 ] ) : '';
    }

    function setCookie( name, value, days ) {
        var expires = new Date( Date.now() + days * 86400000 ).toUTCString();
        document.cookie = name + '=' + encodeURIComponent( value ) +
            '; expires=' + expires + '; path=/; SameSite=Lax';
    }

    function uuid() {
        if ( window.crypto && crypto.randomUUID ) {
            return crypto.randomUUID();
        }
        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace( /[xy]/g, function ( c ) {
            var r = Math.random() * 16 | 0;
            var v = c === 'x' ? r : ( r & 0x3 | 0x8 );
            return v.toString( 16 );
        } );
    }

    function visitorId() {
        var v = getCookie( VID );
        if ( ! v ) {
            v = uuid();
            setCookie( VID, v, 365 );
        }
        return v;
    }

    function currentUtm() {
        try {
            if ( window.EdlingUTM && typeof EdlingUTM.all === 'function' ) {
                return EdlingUTM.all();
            }
        } catch ( e ) {}
        return {};
    }

    function send( event, props ) {
        if ( ! event ) return;
        var body = JSON.stringify( {
            event: event,
            vid:   visitorId(),
            props: props || {},
            utm:   currentUtm(),
            url:   location.pathname
        } );
        try {
            if ( navigator.sendBeacon ) {
                var blob = new Blob( [ body ], { type: 'application/json' } );
                if ( navigator.sendBeacon( CFG.endpoint, blob ) ) return;
            }
        } catch ( e ) {}
        try {
            fetch( CFG.endpoint, {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: body,
                keepalive: true,
                credentials: 'same-origin'
            } ).catch( function () {} );
        } catch ( e ) {}
    }

    // Публічне API для подальших продуктових подій.
    window.EdlaTrack = send;

    // visit — один раз на сесію (щоб не дублювати на кожній сторінці).
    try {
        if ( ! sessionStorage.getItem( 'edla_visit' ) ) {
            sessionStorage.setItem( 'edla_visit', '1' );
            send( 'visit', {} );
        }
    } catch ( e ) {
        send( 'visit', {} );
    }
})();</script>

<!-- EDL_TTS_MARKER_HEAD -->

<style>
/* ===== Edling TTS Minimal UI ===== */

/* Force tight spacing even if LMS/theme adds margins */
.edl-phrase,
.edl-ua{
  display:block !important;
  margin:0 !important;
  padding:0 !important;
  line-height:1.35 !important;
}

/* EN line */
.edl-phrase{
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
  font-size:18px !important;
}

/* Make UA sit close to EN */
.edl-phrase + .edl-ua{
  margin-top:2px !important;      /* EN -> UA */
  padding-left:10px !important;
  border-left:2px solid #e5e7eb !important;
}

/* Space between pairs (UA -> next EN) */
.edl-ua + .edl-phrase{
  margin-top:16px !important;     /* between pairs */
}

/* EN text */
.edl-text{
  line-height:1.35 !important;
}

/* Button */
.edl-tts{
  font-size:18px !important;
  text-decoration:none !important;
  cursor:pointer !important;
  user-select:none !important;
}

.edl-tts:hover{
  opacity:0.8 !important;
}

/* UA style */
.edl-ua{
  font-size:14px !important;
  color:#6b7280 !important;
}
</style>

<script>
(function () {
  if (window.__EDL_TTS_INIT__) return;
  window.__EDL_TTS_INIT__ = true;

  if (!('speechSynthesis' in window) || !('SpeechSynthesisUtterance' in window)) {
    console.warn('[EDL TTS] Not supported');
    return;
  }

  // Remove emojis / pictographs / flags / variation-selectors so TTS doesn't read them aloud.
  // Uses numeric code-point checks (no \u{} escapes — those get mangled inside PHP heredoc).
  function stripEmoji(s) {
    try {
      var str = String(s);
      var out = '';
      for (var i = 0; i < str.length;) {
        var cp = str.codePointAt(i);
        var size = cp > 0xFFFF ? 2 : 1;
        var isEmoji =
          (cp >= 0x1F000 && cp <= 0x1FAFF) ||  // emoji & pictographs
          (cp >= 0x2600  && cp <= 0x27BF)  ||  // misc symbols & dingbats
          (cp >= 0x2190  && cp <= 0x21FF)  ||  // arrows
          (cp >= 0x2B00  && cp <= 0x2BFF)  ||  // misc symbols/arrows
          (cp >= 0x1F1E6 && cp <= 0x1F1FF) ||  // regional indicators (flags)
          cp === 0xFE0F  ||                     // variation selector-16
          cp === 0x200D;                        // zero-width joiner
        if (!isEmoji) out += String.fromCodePoint(cp);
        i += size;
      }
      return out.replace(/\s+/g, ' ').trim();
    } catch (e) {
      return String(s);
    }
  }

  function speak(text, rate) {
    try {
      text = stripEmoji(text);
      if (!text) return;
      window.speechSynthesis.cancel();
      var u = new SpeechSynthesisUtterance(text);
      u.lang = 'en-US';
      u.rate = (typeof rate === 'number' && !isNaN(rate)) ? rate : 0.9;
      u.pitch = 1.0;
      u.volume = 1.0;
      setTimeout(function () {
        window.speechSynthesis.speak(u);
      }, 0);
    } catch (e) {
      console.warn('[EDL TTS] error', e);
    }
  }

  document.addEventListener('click', function (e) {
    var target = e.target;
    if (!target || !target.closest) return;

    // 1) Speak-links: href="#tts=<encoded>&r=<rate>" — survive sanitized community feeds
    //    (class/data-* get stripped by wp_kses, but <a href> is whitelisted).
    var link = target.closest('a[href*="#tts="]');
    if (link) {
      var raw = link.getAttribute('href') || link.href || '';
      var hashIdx = raw.indexOf('#tts=');
      if (hashIdx !== -1) {
        e.preventDefault();
        e.stopPropagation();
        try {
          var params = new URLSearchParams(raw.slice(hashIdx + 1));
          var t = (params.get('tts') || '').trim();
          var r = params.get('r') ? Number(params.get('r')) : undefined;
          if (t) speak(t, r);
        } catch (err) {
          console.warn('[EDL TTS] href parse error', err);
        }
        return;
      }
    }

    // 2) Explicit .edl-tts elements (lessons) — original behaviour
    var el = target.closest('.edl-tts');
    if (!el) return;

    if (el.tagName === 'A') e.preventDefault();

    var text = (el.getAttribute('data-text') || '').trim();
    if (!text) return;

    var rateAttr = el.getAttribute('data-rate');
    var rate = rateAttr ? Number(rateAttr) : undefined;

    speak(text, rate);
  }, true);

  console.log('[EDL TTS] ready');
})();
</script>
