From b95c40353995da64d1ead5113f27817b7061af1e Mon Sep 17 00:00:00 2001 From: Archos Date: Fri, 15 May 2026 17:08:27 +0200 Subject: [PATCH] =?UTF-8?q?nov=C3=A1=20verze=20phanpy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 14 +- _headers | 2 +- assets/ICONS-CRflHj3Y.js | 2 + assets/ICONS-CRflHj3Y.js.map | 1 + assets/ScheduledAtField-CaHBOIUn.js | 183 ++++++++++ assets/ScheduledAtField-CaHBOIUn.js.map | 1 + assets/__vite-browser-external-BTFjE9oW.js | 2 + .../__vite-browser-external-BTFjE9oW.js.map | 1 + assets/compose-CD1YIHyk.js | 35 ++ assets/compose-CD1YIHyk.js.map | 1 + assets/compose-CGuiwZpT.js | 2 + assets/compose-CGuiwZpT.js.map | 1 + assets/debug.module-lCOgCCsB.js | 52 +++ assets/debug.module-lCOgCCsB.js.map | 1 + assets/dom-CX5vJeUF.js | 2 + assets/dom-CX5vJeUF.js.map | 1 + assets/icons/add-circle-line-B43P3eMt.js | 1 + assets/icons/alert-line-BL0XG_H4.js | 1 + assets/icons/android-2-line-CoHj7h_E.js | 1 + assets/icons/announcement-line-CkFZ2vAo.js | 1 + .../icons/arrow-down-circle-line-BC6xnL7b.js | 1 + assets/icons/arrow-down-line-BVMbEN0S.js | 1 + assets/icons/arrow-left-line-DDvOj09W.js | 1 + assets/icons/arrow-right-line-CtGMEO_T.js | 1 + assets/icons/arrow-to-up-line-DUybGRlN.js | 1 + assets/icons/arrow-up-circle-line-GlKkAG-K.js | 1 + assets/icons/arrow-up-line-BX2wcoE3.js | 1 + assets/icons/arrows-right-line-Cx1ErUPR.js | 1 + assets/icons/at-line-C2dv2hOh.js | 1 + assets/icons/attachment-line-BUF2Y6E3.js | 1 + assets/icons/blockquote-line-DEK5ZjRs.js | 1 + assets/icons/bookmark-line-BCwbNkRc.js | 1 + assets/icons/building-5-line-DFvZ4QYP.js | 1 + assets/icons/bus-2-line-BUZmdFvy.js | 1 + assets/icons/calendar-day-line-DRXcXncA.js | 1 + assets/icons/calendar-month-line-Oy3CjCMt.js | 1 + .../icons/calendar-time-add-line-DofNvFYx.js | 1 + assets/icons/camera-line-DcNMRijZ.js | 1 + assets/icons/celebrate-line-EVpzhOjB.js | 1 + assets/icons/chart-bar-line-zaE-2xK4.js | 1 + assets/icons/chart-line-line-2LFVQyAr.js | 1 + assets/icons/chat-3-line-BSV9MfbA.js | 1 + assets/icons/check-circle-line-D6dtm50r.js | 1 + assets/icons/clipboard-line-CPRKR_VY.js | 1 + assets/icons/close-circle-line-CUZASbA4.js | 1 + assets/icons/close-line-DtOTPud4.js | 1 + assets/icons/cloud-line-BSpuKdFW.js | 1 + assets/icons/code-line-DlXOwdrE.js | 1 + assets/icons/comment-2-line-BwS40-T4.js | 1 + assets/icons/copy-2-line-Dax6pF9x.js | 1 + assets/icons/delete-2-line-9FRTUjU2.js | 1 + assets/icons/document-3-line-B9iwPDAU.js | 1 + assets/icons/document-line-B_RcOJKT.js | 1 + assets/icons/down-line-CTprRPas.js | 1 + assets/icons/edit-4-line-HgU9xPKl.js | 1 + assets/icons/emoji-2-line-D9ya1cr6.js | 1 + assets/icons/exit-line-BwJfRrMw.js | 1 + assets/icons/external-link-line-D3bZ3-56.js | 1 + assets/icons/eye-2-line-D3eph4B6.js | 1 + assets/icons/eye-close-line-_TO8Z1F6.js | 1 + assets/icons/filter-2-line-BDnDa0AL.js | 1 + assets/icons/filter-line-B76DCsUX.js | 1 + assets/icons/flag-1-line-IyW6CfDL.js | 1 + assets/icons/forbid-circle-line-DmrysCqj.js | 1 + assets/icons/formula-line-T-L2lKuv.js | 1 + assets/icons/grid-line-CilsKb03.js | 1 + assets/icons/group-line-Bd4ZmUuz.js | 1 + assets/icons/hand-finger-2-line-CJQ-9xyq.js | 1 + assets/icons/hashtag-line-DESfqYb6.js | 1 + assets/icons/heart-crack-line-DyC2wbj2.js | 1 + assets/icons/heart-line-9RGsoBXi.js | 1 + assets/icons/history-2-line-CySfm5EC.js | 1 + assets/icons/history-line-CST9L2LE.js | 1 + assets/icons/home-3-line-D4vzqQaP.js | 1 + assets/icons/information-line-BLXVX-_D.js | 1 + assets/icons/keyboard-line-CJmeDHBn.js | 1 + assets/icons/layout-4-line-kYAIuN04.js | 1 + assets/icons/layout-5-line-sRxMmZoq.js | 1 + assets/icons/left-line-D4sH6j7S.js | 1 + assets/icons/lightning-line-DoYrf0tO.js | 1 + assets/icons/link-2-line-8ivbGmkK.js | 1 + assets/icons/list-check-line-BJ3ZeAkQ.js | 1 + assets/icons/lock-line-DN6w1v7-.js | 1 + assets/icons/mail-line-BbHVifi0.js | 1 + assets/icons/moon-line-DFeGrb-Y.js | 1 + assets/icons/more-1-fill-Cf43GxQN.js | 1 + assets/icons/more-3-line-BlcZ4SRx.js | 1 + assets/icons/notification-line-BI09cXSa.js | 1 + assets/icons/pencil-line-dYQnDqu4.js | 1 + assets/icons/photo-album-line-BW2Jk_78.js | 1 + assets/icons/pin-line-DDA6ISdV.js | 1 + assets/icons/play-fill-DHxmpvKb.js | 1 + assets/icons/qrcode-2-line-nvMjGI0j.js | 1 + assets/icons/quill-pen-line-Uf0Qoa_M.js | 1 + assets/icons/quote-left-fill-CMr9uPcQ.js | 1 + assets/icons/radar-line-B5efgJrx.js | 1 + assets/icons/react-line-DcOCVmu7.js | 1 + assets/icons/refresh-2-line-Bb_f317r.js | 1 + assets/icons/right-line-Uc4gOjDG.js | 1 + assets/icons/rocket-line-8w3Kdavo.js | 1 + assets/icons/round-fill-DlOQvPWm.js | 1 + assets/icons/route-line-DRKHJPUv.js | 1 + assets/icons/rows-4-line-CdMpNGLw.js | 1 + assets/icons/scan-line-aJUI8qDj.js | 1 + assets/icons/search-2-line-Be7n4L9E.js | 1 + assets/icons/settings-3-line-CXXzy2PY.js | 1 + assets/icons/settings-6-line-BxKiem5v.js | 1 + assets/icons/share-2-line-A5I-wm5t.js | 1 + assets/icons/share-forward-line-BNq4FprS.js | 1 + assets/icons/sparkles-2-line-DPJ96NmB.js | 1 + assets/icons/sparkles-line-C0Ela4WW.js | 1 + assets/icons/time-line-CFVA3Ar4.js | 1 + assets/icons/transfer-4-line-B7yUHGO_.js | 1 + assets/icons/translate-line-BmF0jzWY.js | 1 + assets/icons/unlock-line-CrASlcBG.js | 1 + assets/icons/upload-3-line-CpSQY3O7.js | 1 + assets/icons/user-4-line-YbSxbbC3.js | 1 + assets/icons/user-add-2-line-DLtWTEC6.js | 1 + assets/icons/user-add-line-BTotiaY0.js | 1 + assets/icons/user-edit-line-Bql_AwCo.js | 1 + assets/icons/user-follow-line-0pyaOI1O.js | 1 + assets/icons/user-star-line-DClJ4Bep.js | 1 + assets/icons/user-warning-line-Cc2LgE5d.js | 1 + assets/icons/user-x-line-B7-CiYTN.js | 1 + assets/icons/volume-line-D7w7k1Eo.js | 1 + assets/icons/volume-mute-line-CaCPUcVj.js | 1 + assets/icons/walk-line-CUvwYuBY.js | 1 + assets/icons/world-2-line-BZVScxNK.js | 1 + assets/icons/zoom-in-line-C-XJT8tD.js | 1 + assets/icons/zoom-out-line-CRlNr3rA.js | 1 + assets/instances-DWjbRJHw.json | 315 ++++++++++++++++++ assets/locales/ar-SA-CUQtCVvm.js | 1 + assets/locales/ca-ES-BIWAk3U6.js | 1 + assets/locales/cs-CZ-BMB20yUr.js | 1 + assets/locales/de-DE-pQ450TNF.js | 1 + assets/locales/eo-UY-aPHdbE2y.js | 1 + assets/locales/es-ES-DEfnNKBz.js | 1 + assets/locales/eu-ES-BB4gA0Mp.js | 1 + assets/locales/fa-IR-BPZxSpf3.js | 1 + assets/locales/fi-FI-BGod9k1-.js | 1 + assets/locales/fr-FR-C97CkEZj.js | 1 + assets/locales/gl-ES-DOQqIyj9.js | 1 + assets/locales/he-IL-BisSDGh_.js | 1 + assets/locales/hu-HU-D9YlHm2Q.js | 1 + assets/locales/it-IT-C2IsuhCn.js | 1 + assets/locales/ja-JP-BeGQv-sb.js | 1 + assets/locales/kab-C3SO_A7g.js | 1 + assets/locales/ko-KR-CIIARTYr.js | 1 + assets/locales/lt-LT-DbPJTdAE.js | 1 + assets/locales/nb-NO-CEq4crr8.js | 1 + assets/locales/nl-NL-B0rcstk4.js | 1 + assets/locales/oc-FR-B7KVXFSs.js | 1 + assets/locales/pl-PL-YJzZMKd4.js | 1 + assets/locales/pseudo-LOCALE-BIvkWz10.js | 1 + assets/locales/pt-BR-DIozbx8n.js | 1 + assets/locales/pt-PT-JtjEPnaH.js | 1 + assets/locales/ru-RU-CroRraDJ.js | 1 + assets/locales/th-TH-CEo13FzR.js | 1 + assets/locales/tok-JLy1tyRM.js | 1 + assets/locales/tr-TR-BWbW_4AJ.js | 1 + assets/locales/uk-UA-dfRKe5Oq.js | 1 + assets/locales/zh-CN-Co03Wn8a.js | 1 + assets/locales/zh-TW-Bn1M2WxM.js | 1 + assets/main-DB76LgP4.js | 26 ++ assets/main-DB76LgP4.js.map | 1 + assets/mock-home-BusER0zi.js | 2 + assets/mock-home-BusER0zi.js.map | 1 + assets/polyfill-force-Dt2Q5tsa.js | 2 + assets/polyfill-force-Dt2Q5tsa.js.map | 1 + assets/pwa-viewport-BRXXRfqX.js | 20 ++ assets/pwa-viewport-BRXXRfqX.js.map | 1 + assets/style-BBdN1XWX.css | 2 + assets/temml-BKKuir3p.js | 97 ++++++ assets/temml-BKKuir3p.js.map | 1 + assets/tinyld.light.node-C3eQi5UE.js | 2 + assets/tinyld.light.node-C3eQi5UE.js.map | 1 + assets/year-in-posts-BWKSdskU.js | 3 + assets/year-in-posts-BWKSdskU.js.map | 1 + compose/index.html | 8 +- index.html | 12 +- manifest.webmanifest | 2 +- sw.js | 4 +- sw.js.map | 2 +- version.json | 2 +- 184 files changed, 934 insertions(+), 19 deletions(-) create mode 100644 assets/ICONS-CRflHj3Y.js create mode 100644 assets/ICONS-CRflHj3Y.js.map create mode 100644 assets/ScheduledAtField-CaHBOIUn.js create mode 100644 assets/ScheduledAtField-CaHBOIUn.js.map create mode 100644 assets/__vite-browser-external-BTFjE9oW.js create mode 100644 assets/__vite-browser-external-BTFjE9oW.js.map create mode 100644 assets/compose-CD1YIHyk.js create mode 100644 assets/compose-CD1YIHyk.js.map create mode 100644 assets/compose-CGuiwZpT.js create mode 100644 assets/compose-CGuiwZpT.js.map create mode 100644 assets/debug.module-lCOgCCsB.js create mode 100644 assets/debug.module-lCOgCCsB.js.map create mode 100644 assets/dom-CX5vJeUF.js create mode 100644 assets/dom-CX5vJeUF.js.map create mode 100644 assets/icons/add-circle-line-B43P3eMt.js create mode 100644 assets/icons/alert-line-BL0XG_H4.js create mode 100644 assets/icons/android-2-line-CoHj7h_E.js create mode 100644 assets/icons/announcement-line-CkFZ2vAo.js create mode 100644 assets/icons/arrow-down-circle-line-BC6xnL7b.js create mode 100644 assets/icons/arrow-down-line-BVMbEN0S.js create mode 100644 assets/icons/arrow-left-line-DDvOj09W.js create mode 100644 assets/icons/arrow-right-line-CtGMEO_T.js create mode 100644 assets/icons/arrow-to-up-line-DUybGRlN.js create mode 100644 assets/icons/arrow-up-circle-line-GlKkAG-K.js create mode 100644 assets/icons/arrow-up-line-BX2wcoE3.js create mode 100644 assets/icons/arrows-right-line-Cx1ErUPR.js create mode 100644 assets/icons/at-line-C2dv2hOh.js create mode 100644 assets/icons/attachment-line-BUF2Y6E3.js create mode 100644 assets/icons/blockquote-line-DEK5ZjRs.js create mode 100644 assets/icons/bookmark-line-BCwbNkRc.js create mode 100644 assets/icons/building-5-line-DFvZ4QYP.js create mode 100644 assets/icons/bus-2-line-BUZmdFvy.js create mode 100644 assets/icons/calendar-day-line-DRXcXncA.js create mode 100644 assets/icons/calendar-month-line-Oy3CjCMt.js create mode 100644 assets/icons/calendar-time-add-line-DofNvFYx.js create mode 100644 assets/icons/camera-line-DcNMRijZ.js create mode 100644 assets/icons/celebrate-line-EVpzhOjB.js create mode 100644 assets/icons/chart-bar-line-zaE-2xK4.js create mode 100644 assets/icons/chart-line-line-2LFVQyAr.js create mode 100644 assets/icons/chat-3-line-BSV9MfbA.js create mode 100644 assets/icons/check-circle-line-D6dtm50r.js create mode 100644 assets/icons/clipboard-line-CPRKR_VY.js create mode 100644 assets/icons/close-circle-line-CUZASbA4.js create mode 100644 assets/icons/close-line-DtOTPud4.js create mode 100644 assets/icons/cloud-line-BSpuKdFW.js create mode 100644 assets/icons/code-line-DlXOwdrE.js create mode 100644 assets/icons/comment-2-line-BwS40-T4.js create mode 100644 assets/icons/copy-2-line-Dax6pF9x.js create mode 100644 assets/icons/delete-2-line-9FRTUjU2.js create mode 100644 assets/icons/document-3-line-B9iwPDAU.js create mode 100644 assets/icons/document-line-B_RcOJKT.js create mode 100644 assets/icons/down-line-CTprRPas.js create mode 100644 assets/icons/edit-4-line-HgU9xPKl.js create mode 100644 assets/icons/emoji-2-line-D9ya1cr6.js create mode 100644 assets/icons/exit-line-BwJfRrMw.js create mode 100644 assets/icons/external-link-line-D3bZ3-56.js create mode 100644 assets/icons/eye-2-line-D3eph4B6.js create mode 100644 assets/icons/eye-close-line-_TO8Z1F6.js create mode 100644 assets/icons/filter-2-line-BDnDa0AL.js create mode 100644 assets/icons/filter-line-B76DCsUX.js create mode 100644 assets/icons/flag-1-line-IyW6CfDL.js create mode 100644 assets/icons/forbid-circle-line-DmrysCqj.js create mode 100644 assets/icons/formula-line-T-L2lKuv.js create mode 100644 assets/icons/grid-line-CilsKb03.js create mode 100644 assets/icons/group-line-Bd4ZmUuz.js create mode 100644 assets/icons/hand-finger-2-line-CJQ-9xyq.js create mode 100644 assets/icons/hashtag-line-DESfqYb6.js create mode 100644 assets/icons/heart-crack-line-DyC2wbj2.js create mode 100644 assets/icons/heart-line-9RGsoBXi.js create mode 100644 assets/icons/history-2-line-CySfm5EC.js create mode 100644 assets/icons/history-line-CST9L2LE.js create mode 100644 assets/icons/home-3-line-D4vzqQaP.js create mode 100644 assets/icons/information-line-BLXVX-_D.js create mode 100644 assets/icons/keyboard-line-CJmeDHBn.js create mode 100644 assets/icons/layout-4-line-kYAIuN04.js create mode 100644 assets/icons/layout-5-line-sRxMmZoq.js create mode 100644 assets/icons/left-line-D4sH6j7S.js create mode 100644 assets/icons/lightning-line-DoYrf0tO.js create mode 100644 assets/icons/link-2-line-8ivbGmkK.js create mode 100644 assets/icons/list-check-line-BJ3ZeAkQ.js create mode 100644 assets/icons/lock-line-DN6w1v7-.js create mode 100644 assets/icons/mail-line-BbHVifi0.js create mode 100644 assets/icons/moon-line-DFeGrb-Y.js create mode 100644 assets/icons/more-1-fill-Cf43GxQN.js create mode 100644 assets/icons/more-3-line-BlcZ4SRx.js create mode 100644 assets/icons/notification-line-BI09cXSa.js create mode 100644 assets/icons/pencil-line-dYQnDqu4.js create mode 100644 assets/icons/photo-album-line-BW2Jk_78.js create mode 100644 assets/icons/pin-line-DDA6ISdV.js create mode 100644 assets/icons/play-fill-DHxmpvKb.js create mode 100644 assets/icons/qrcode-2-line-nvMjGI0j.js create mode 100644 assets/icons/quill-pen-line-Uf0Qoa_M.js create mode 100644 assets/icons/quote-left-fill-CMr9uPcQ.js create mode 100644 assets/icons/radar-line-B5efgJrx.js create mode 100644 assets/icons/react-line-DcOCVmu7.js create mode 100644 assets/icons/refresh-2-line-Bb_f317r.js create mode 100644 assets/icons/right-line-Uc4gOjDG.js create mode 100644 assets/icons/rocket-line-8w3Kdavo.js create mode 100644 assets/icons/round-fill-DlOQvPWm.js create mode 100644 assets/icons/route-line-DRKHJPUv.js create mode 100644 assets/icons/rows-4-line-CdMpNGLw.js create mode 100644 assets/icons/scan-line-aJUI8qDj.js create mode 100644 assets/icons/search-2-line-Be7n4L9E.js create mode 100644 assets/icons/settings-3-line-CXXzy2PY.js create mode 100644 assets/icons/settings-6-line-BxKiem5v.js create mode 100644 assets/icons/share-2-line-A5I-wm5t.js create mode 100644 assets/icons/share-forward-line-BNq4FprS.js create mode 100644 assets/icons/sparkles-2-line-DPJ96NmB.js create mode 100644 assets/icons/sparkles-line-C0Ela4WW.js create mode 100644 assets/icons/time-line-CFVA3Ar4.js create mode 100644 assets/icons/transfer-4-line-B7yUHGO_.js create mode 100644 assets/icons/translate-line-BmF0jzWY.js create mode 100644 assets/icons/unlock-line-CrASlcBG.js create mode 100644 assets/icons/upload-3-line-CpSQY3O7.js create mode 100644 assets/icons/user-4-line-YbSxbbC3.js create mode 100644 assets/icons/user-add-2-line-DLtWTEC6.js create mode 100644 assets/icons/user-add-line-BTotiaY0.js create mode 100644 assets/icons/user-edit-line-Bql_AwCo.js create mode 100644 assets/icons/user-follow-line-0pyaOI1O.js create mode 100644 assets/icons/user-star-line-DClJ4Bep.js create mode 100644 assets/icons/user-warning-line-Cc2LgE5d.js create mode 100644 assets/icons/user-x-line-B7-CiYTN.js create mode 100644 assets/icons/volume-line-D7w7k1Eo.js create mode 100644 assets/icons/volume-mute-line-CaCPUcVj.js create mode 100644 assets/icons/walk-line-CUvwYuBY.js create mode 100644 assets/icons/world-2-line-BZVScxNK.js create mode 100644 assets/icons/zoom-in-line-C-XJT8tD.js create mode 100644 assets/icons/zoom-out-line-CRlNr3rA.js create mode 100644 assets/instances-DWjbRJHw.json create mode 100644 assets/locales/ar-SA-CUQtCVvm.js create mode 100644 assets/locales/ca-ES-BIWAk3U6.js create mode 100644 assets/locales/cs-CZ-BMB20yUr.js create mode 100644 assets/locales/de-DE-pQ450TNF.js create mode 100644 assets/locales/eo-UY-aPHdbE2y.js create mode 100644 assets/locales/es-ES-DEfnNKBz.js create mode 100644 assets/locales/eu-ES-BB4gA0Mp.js create mode 100644 assets/locales/fa-IR-BPZxSpf3.js create mode 100644 assets/locales/fi-FI-BGod9k1-.js create mode 100644 assets/locales/fr-FR-C97CkEZj.js create mode 100644 assets/locales/gl-ES-DOQqIyj9.js create mode 100644 assets/locales/he-IL-BisSDGh_.js create mode 100644 assets/locales/hu-HU-D9YlHm2Q.js create mode 100644 assets/locales/it-IT-C2IsuhCn.js create mode 100644 assets/locales/ja-JP-BeGQv-sb.js create mode 100644 assets/locales/kab-C3SO_A7g.js create mode 100644 assets/locales/ko-KR-CIIARTYr.js create mode 100644 assets/locales/lt-LT-DbPJTdAE.js create mode 100644 assets/locales/nb-NO-CEq4crr8.js create mode 100644 assets/locales/nl-NL-B0rcstk4.js create mode 100644 assets/locales/oc-FR-B7KVXFSs.js create mode 100644 assets/locales/pl-PL-YJzZMKd4.js create mode 100644 assets/locales/pseudo-LOCALE-BIvkWz10.js create mode 100644 assets/locales/pt-BR-DIozbx8n.js create mode 100644 assets/locales/pt-PT-JtjEPnaH.js create mode 100644 assets/locales/ru-RU-CroRraDJ.js create mode 100644 assets/locales/th-TH-CEo13FzR.js create mode 100644 assets/locales/tok-JLy1tyRM.js create mode 100644 assets/locales/tr-TR-BWbW_4AJ.js create mode 100644 assets/locales/uk-UA-dfRKe5Oq.js create mode 100644 assets/locales/zh-CN-Co03Wn8a.js create mode 100644 assets/locales/zh-TW-Bn1M2WxM.js create mode 100644 assets/main-DB76LgP4.js create mode 100644 assets/main-DB76LgP4.js.map create mode 100644 assets/mock-home-BusER0zi.js create mode 100644 assets/mock-home-BusER0zi.js.map create mode 100644 assets/polyfill-force-Dt2Q5tsa.js create mode 100644 assets/polyfill-force-Dt2Q5tsa.js.map create mode 100644 assets/pwa-viewport-BRXXRfqX.js create mode 100644 assets/pwa-viewport-BRXXRfqX.js.map create mode 100644 assets/style-BBdN1XWX.css create mode 100644 assets/temml-BKKuir3p.js create mode 100644 assets/temml-BKKuir3p.js.map create mode 100644 assets/tinyld.light.node-C3eQi5UE.js create mode 100644 assets/tinyld.light.node-C3eQi5UE.js.map create mode 100644 assets/year-in-posts-BWKSdskU.js create mode 100644 assets/year-in-posts-BWKSdskU.js.map diff --git a/404.html b/404.html index 313e879..3fc3468 100644 --- a/404.html +++ b/404.html @@ -1,4 +1,4 @@ - + @@ -11,8 +11,16 @@ +
+ + + + + + + + +
+ `,this.domRefFrame=e.querySelector(`#frame`),this.domRefImg={fallback:e.querySelector(`#fallbackPlaceholder`),webp:e.querySelector(`#webpPlaceholder`),jpeg:e.querySelector(`#jpegPlaceholder`)},this.domRefPlayButton=e.querySelector(`#playButton`)}setupComponent(){this.shadowRoot.querySelector(`slot[name=image]`).assignedNodes().length===0&&this.initImagePlaceholder(),this.domRefPlayButton.setAttribute(`aria-label`,`${this.videoPlay}: ${this.videoTitle}`),this.setAttribute(`title`,`${this.videoPlay}: ${this.videoTitle}`),(this.autoLoad||this.isYouTubeShort()||this.autoPause)&&this.initIntersectionObserver(),this.disableNoscript||this.injectSearchNoScript()}attributeChangedCallback(e,t,n){t!==n&&(e===`playlistid`&&t!==null&&t!==n&&(this.isPlaylistThumbnailLoaded=!1),this.setupComponent(),this.domRefFrame.classList.contains(`activated`)&&(this.domRefFrame.classList.remove(`activated`),this.shadowRoot.querySelector(`iframe`).remove(),this.isIframeLoaded=!1))}injectSearchNoScript(){let e=document.createElement(`noscript`);this.prepend(e),e.innerHTML=this.generateIframe()}generateIframe(e=!1){let t=+!e,n=this.autoPause?`&enablejsapi=1`:``,r=this.noCookie?`-nocookie`:``,i;return i=this.playlistId?`?listType=playlist&list=${this.playlistId}&`:`${this.videoId}?`,this.isYouTubeShort()&&(this.params=`loop=1&mute=1&modestbranding=1&playsinline=1&rel=0&enablejsapi=1&playlist=${this.videoId}`,t=1),` +`}addIframe(e=!1){if(!this.isIframeLoaded){let t=this.generateIframe(e);this.domRefFrame.insertAdjacentHTML(`beforeend`,t),this.domRefFrame.classList.add(`activated`),this.isIframeLoaded=!0,this.attemptShortAutoPlay(),this.dispatchEvent(new CustomEvent(`liteYoutubeIframeLoaded`,{detail:{videoId:this.videoId},bubbles:!0,cancelable:!0}))}}initImagePlaceholder(){this.playlistId&&!this.videoId?this.loadPlaylistThumbnail():this.testPosterImage(),this.domRefImg.fallback.setAttribute(`aria-label`,`${this.videoPlay}: ${this.videoTitle}`),this.domRefImg?.fallback?.setAttribute(`alt`,`${this.videoPlay}: ${this.videoTitle}`)}async loadPlaylistThumbnail(){if(!this.isPlaylistThumbnailLoaded){this.isPlaylistThumbnailLoaded=!0;try{let e=`https://www.youtube.com/oembed?url=https://www.youtube.com/playlist?list=${this.playlistId}&format=json`,t=await fetch(e);if(!t.ok)throw Error(`Failed to fetch playlist thumbnail: ${t.status}`);let n=await t.json();if(n.thumbnail_url){let e=n.thumbnail_url,t=e.match(/\/vi\/([^\/]+)\//);if(t){let e=t[1];this.loadThumbnailImages(e)}else this.domRefImg.fallback.src=e,this.domRefImg.fallback.loading=this.posterLoading}}catch(e){console.warn(`Failed to load playlist thumbnail:`,e)}}}loadThumbnailImages(e){let t=`https://i.ytimg.com/vi_webp/${e}/${this.posterQuality}.webp`;this.domRefImg.webp.srcset=t;let n=`https://i.ytimg.com/vi/${e}/${this.posterQuality}.jpg`;this.domRefImg.jpeg.srcset=n,this.domRefImg.fallback.src=n,this.domRefImg.fallback.loading=this.posterLoading}async testPosterImage(){setTimeout(()=>{let e=`https://i.ytimg.com/vi_webp/${this.videoId}/${this.posterQuality}.webp`,t=new Image;t.fetchPriority=`low`,t.referrerPolicy=`origin`,t.src=e,t.onload=async e=>{let t=e.target;t?.naturalHeight==90&&t?.naturalWidth==120&&(this.posterQuality=`hqdefault`),this.loadThumbnailImages(this.videoId)}},100)}initIntersectionObserver(){new IntersectionObserver((t,n)=>{t.forEach(t=>{t.isIntersecting&&!this.isIframeLoaded&&(e.warmConnections(this),this.addIframe(!0),n.unobserve(this))})},{root:null,rootMargin:`0px`,threshold:0}).observe(this),this.autoPause&&new IntersectionObserver((e,t)=>{e.forEach(e=>{e.intersectionRatio!==1&&this.shadowRoot.querySelector(`iframe`)?.contentWindow?.postMessage(`{"event":"command","func":"pauseVideo","args":""}`,`*`)})},{threshold:1}).observe(this)}attemptShortAutoPlay(){this.isYouTubeShort()&&setTimeout(()=>{this.shadowRoot.querySelector(`iframe`)?.contentWindow?.postMessage(`{"event":"command","func":"playVideo","args":""}`,`*`)},2e3)}isYouTubeShort(){return this.getAttribute(`short`)===``&&window.matchMedia(`(max-width: 40em)`).matches}static addPrefetch(e,t){let n=document.createElement(`link`);n.rel=e,n.href=t,n.crossOrigin=`true`,document.head.append(n)}static warmConnections(t){e.isPreconnected||window.liteYouTubeIsPreconnected||(e.addPrefetch(`preconnect`,`https://i.ytimg.com/`),e.addPrefetch(`preconnect`,`https://s.ytimg.com`),t.noCookie?e.addPrefetch(`preconnect`,`https://www.youtube-nocookie.com`):(e.addPrefetch(`preconnect`,`https://www.youtube.com`),e.addPrefetch(`preconnect`,`https://www.google.com`),e.addPrefetch(`preconnect`,`https://googleads.g.doubleclick.net`),e.addPrefetch(`preconnect`,`https://static.doubleclick.net`)),e.isPreconnected=!0,window.liteYouTubeIsPreconnected=!0)}};Fc.isPreconnected=!1,customElements.define(`lite-youtube`,Fc);function Ic({authors:e,hidden:t,children:n}){if(t||!e?.[0]?.account?.id)return n;let r=e[0].account;return M(`div`,{class:`card-byline`,children:[n,M(`div`,{class:`card-byline-author`,children:[M(Q,{icon:`link`,size:`s`}),` `,M(`small`,{children:M(D,{id:`4LHHK6`,components:{0:M(si,{account:r,showAvatar:!0})}})})]})]})}function Lc(e){return[`x.com`,`twitter.com`,`threads.net`,`bsky.app`,`bsky.brid.gy`,`fed.brid.gy`].includes(e)}function Rc({card:t,selfReferential:n,selfAuthor:r,instance:o}){let c=z(i),{blurhash:l,title:u,description:d,html:f,providerName:p,providerUrl:m,authorName:h,authorUrl:v,width:y,height:b,image:x,imageDescription:S,url:C,type:w,embedUrl:T,language:E,publishedAt:D,authors:O}=t,k=u||p||h,ee=y/b>=1.2?`large`:``,[te,j]=A(null);if(g(()=>{if(!k||!x||n||!ae(C))return;let e=new AbortController;return s(o,C,e.signal).then(e=>{if(!e)return;let{id:t,url:n}=e;j(`#`+n)}),()=>{e.abort()}},[k,x,n]),c.unfurledLinks[C])return null;let N=/`;\n }\n addIframe(isIntersectionObserver = false) {\n if (!this.isIframeLoaded) {\n const iframeHTML = this.generateIframe(isIntersectionObserver);\n this.domRefFrame.insertAdjacentHTML('beforeend', iframeHTML);\n this.domRefFrame.classList.add('activated');\n this.isIframeLoaded = true;\n this.attemptShortAutoPlay();\n this.dispatchEvent(new CustomEvent('liteYoutubeIframeLoaded', {\n detail: {\n videoId: this.videoId,\n },\n bubbles: true,\n cancelable: true,\n }));\n }\n }\n initImagePlaceholder() {\n if (this.playlistId && !this.videoId) {\n this.loadPlaylistThumbnail();\n }\n else {\n this.testPosterImage();\n }\n this.domRefImg.fallback.setAttribute('aria-label', `${this.videoPlay}: ${this.videoTitle}`);\n this.domRefImg?.fallback?.setAttribute('alt', `${this.videoPlay}: ${this.videoTitle}`);\n }\n async loadPlaylistThumbnail() {\n if (this.isPlaylistThumbnailLoaded) {\n return;\n }\n this.isPlaylistThumbnailLoaded = true;\n try {\n const oEmbedUrl = `https://www.youtube.com/oembed?url=https://www.youtube.com/playlist?list=${this.playlistId}&format=json`;\n const response = await fetch(oEmbedUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch playlist thumbnail: ${response.status}`);\n }\n const data = await response.json();\n if (data.thumbnail_url) {\n const thumbnailUrl = data.thumbnail_url;\n const videoIdMatch = thumbnailUrl.match(/\\/vi\\/([^\\/]+)\\//);\n if (videoIdMatch) {\n const extractedVideoId = videoIdMatch[1];\n this.loadThumbnailImages(extractedVideoId);\n }\n else {\n this.domRefImg.fallback.src = thumbnailUrl;\n this.domRefImg.fallback.loading = this.posterLoading;\n }\n }\n }\n catch (error) {\n console.warn('Failed to load playlist thumbnail:', error);\n }\n }\n loadThumbnailImages(videoId) {\n const posterUrlWebp = `https://i.ytimg.com/vi_webp/${videoId}/${this.posterQuality}.webp`;\n this.domRefImg.webp.srcset = posterUrlWebp;\n const posterUrlJpeg = `https://i.ytimg.com/vi/${videoId}/${this.posterQuality}.jpg`;\n this.domRefImg.jpeg.srcset = posterUrlJpeg;\n this.domRefImg.fallback.src = posterUrlJpeg;\n this.domRefImg.fallback.loading = this.posterLoading;\n }\n async testPosterImage() {\n setTimeout(() => {\n const webpUrl = `https://i.ytimg.com/vi_webp/${this.videoId}/${this.posterQuality}.webp`;\n const img = new Image();\n img.fetchPriority = 'low';\n img.referrerPolicy = 'origin';\n img.src = webpUrl;\n img.onload = async (e) => {\n const target = e.target;\n const noPoster = target?.naturalHeight == 90 && target?.naturalWidth == 120;\n if (noPoster) {\n this.posterQuality = 'hqdefault';\n }\n this.loadThumbnailImages(this.videoId);\n };\n }, 100);\n }\n initIntersectionObserver() {\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: 0,\n };\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if (entry.isIntersecting && !this.isIframeLoaded) {\n LiteYTEmbed.warmConnections(this);\n this.addIframe(true);\n observer.unobserve(this);\n }\n });\n }, options);\n observer.observe(this);\n if (this.autoPause) {\n const windowPause = new IntersectionObserver((e, o) => {\n e.forEach(entry => {\n if (entry.intersectionRatio !== 1) {\n this.shadowRoot\n .querySelector('iframe')\n ?.contentWindow?.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*');\n }\n });\n }, { threshold: 1 });\n windowPause.observe(this);\n }\n }\n attemptShortAutoPlay() {\n if (this.isYouTubeShort()) {\n setTimeout(() => {\n this.shadowRoot\n .querySelector('iframe')\n ?.contentWindow?.postMessage('{\"event\":\"command\",\"func\":\"' + 'playVideo' + '\",\"args\":\"\"}', '*');\n }, 2000);\n }\n }\n isYouTubeShort() {\n return (this.getAttribute('short') === '' &&\n window.matchMedia('(max-width: 40em)').matches);\n }\n static addPrefetch(kind, url) {\n const linkElem = document.createElement('link');\n linkElem.rel = kind;\n linkElem.href = url;\n linkElem.crossOrigin = 'true';\n document.head.append(linkElem);\n }\n static warmConnections(context) {\n if (LiteYTEmbed.isPreconnected || window.liteYouTubeIsPreconnected)\n return;\n LiteYTEmbed.addPrefetch('preconnect', 'https://i.ytimg.com/');\n LiteYTEmbed.addPrefetch('preconnect', 'https://s.ytimg.com');\n if (!context.noCookie) {\n LiteYTEmbed.addPrefetch('preconnect', 'https://www.youtube.com');\n LiteYTEmbed.addPrefetch('preconnect', 'https://www.google.com');\n LiteYTEmbed.addPrefetch('preconnect', 'https://googleads.g.doubleclick.net');\n LiteYTEmbed.addPrefetch('preconnect', 'https://static.doubleclick.net');\n }\n else {\n LiteYTEmbed.addPrefetch('preconnect', 'https://www.youtube-nocookie.com');\n }\n LiteYTEmbed.isPreconnected = true;\n window.liteYouTubeIsPreconnected = true;\n }\n}\nLiteYTEmbed.isPreconnected = false;\ncustomElements.define('lite-youtube', LiteYTEmbed);\n//# sourceMappingURL=lite-youtube.js.map","import { Trans } from '@lingui/react/macro';\n\nimport Icon from './icon';\nimport NameText from './name-text';\n\nfunction Byline({ authors, hidden, children }) {\n if (hidden) return children;\n if (!authors?.[0]?.account?.id) return children;\n const author = authors[0].account;\n\n return (\n
\n {children}\n \n
\n );\n}\n\nexport default Byline;\n","import '@justinribeiro/lite-youtube';\n\nimport { decodeBlurHash, getBlurHashAverageColor } from 'fast-blurhash';\nimport { useCallback, useEffect, useState } from 'preact/hooks';\nimport { useSnapshot } from 'valtio';\n\nimport getDomain from '../utils/get-domain';\nimport isMastodonLinkMaybe from '../utils/isMastodonLinkMaybe';\nimport states from '../utils/states';\nimport unfurlMastodonLink from '../utils/unfurl-link';\n\nimport Byline from './byline';\nimport Icon from './icon';\nimport RelativeTime from './relative-time';\n\n// \"Post\": Quote post + card link preview combo\n// Assume all links from these domains are \"posts\"\n// Mastodon links are \"posts\" too but they are converted to real quote posts and there's too many domains to check\n// This is just \"Progressive Enhancement\"\nfunction isCardPost(domain) {\n return [\n 'x.com',\n 'twitter.com',\n 'threads.net',\n 'bsky.app',\n 'bsky.brid.gy',\n 'fed.brid.gy',\n ].includes(domain);\n}\n\nfunction StatusCard({ card, selfReferential, selfAuthor, instance }) {\n const snapStates = useSnapshot(states);\n const {\n blurhash,\n title,\n description,\n html,\n providerName,\n providerUrl,\n authorName,\n authorUrl,\n width,\n height,\n image,\n imageDescription,\n url,\n type,\n embedUrl,\n language,\n publishedAt,\n authors,\n } = card;\n\n /* type\n link = Link OEmbed\n photo = Photo OEmbed\n video = Video OEmbed\n rich = iframe OEmbed. Not currently accepted, so won't show up in practice.\n */\n\n const hasText = title || providerName || authorName;\n const isLandscape = width / height >= 1.2;\n const size = isLandscape ? 'large' : '';\n\n const [cardStatusURL, setCardStatusURL] = useState(null);\n // const [cardStatusID, setCardStatusID] = useState(null);\n useEffect(() => {\n if (!hasText || !image || selfReferential || !isMastodonLinkMaybe(url)) {\n return;\n }\n\n const abortController = new AbortController();\n unfurlMastodonLink(instance, url, abortController.signal).then((result) => {\n if (!result) return;\n const { id, url } = result;\n setCardStatusURL('#' + url);\n\n // NOTE: This is for quote post\n // (async () => {\n // const { masto } = api({ instance });\n // const status = await masto.v1.statuses.$select(id).fetch();\n // saveStatus(status, instance);\n // setCardStatusID(id);\n // })();\n });\n\n return () => {\n abortController.abort();\n };\n }, [hasText, image, selfReferential]);\n\n // if (cardStatusID) {\n // return (\n // \n // );\n // }\n\n if (snapStates.unfurledLinks[url]) return null;\n\n const hasIframeHTML = /