@jant/core 0.6.16 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -11
- package/bin/commands/assets/upload.js +192 -15
- package/bin/commands/import-site.js +60 -4
- package/bin/commands/reset-password.js +21 -8
- package/bin/commands/site/snapshot/export.js +1 -1
- package/bin/commands/site/snapshot/import.js +1 -1
- package/bin/lib/d1-query.js +5 -16
- package/bin/lib/node-env.js +40 -4
- package/bin/lib/site-selection.js +85 -29
- package/bin/lib/wrangler-cli.js +28 -2
- package/bin/lib/wrangler-json.js +35 -0
- package/dist/{app-C7_4oab9.js → app-K_Aa1MMn.js} +52476 -13330
- package/dist/client/.vite/manifest.json +255 -90
- package/dist/client/_assets/chunks/confirm-D7GrwsCN.js +45 -0
- package/dist/client/_assets/chunks/create-editor-CD3FhrOB.js +257 -0
- package/dist/client/_assets/chunks/{native-DpcrFAPh.js → emoji-mart-C4RpRKcU.js} +716 -1
- package/dist/client/_assets/chunks/footnote-rail-CmeoVtnU.js +1 -0
- package/dist/client/_assets/chunks/heic-to-CuP2Qlsw.js +1 -0
- package/dist/client/_assets/chunks/jant-locale-picker-DL6mIOT5.js +69 -0
- package/dist/client/_assets/chunks/lit-DW8VmJAT.js +2 -0
- package/dist/client/_assets/chunks/mediabunny-DRaCQ1r-.js +31 -0
- package/dist/client/_assets/chunks/rolldown-runtime-hePW80VL.js +1 -0
- package/dist/client/_assets/chunks/settings-paths-BcdySNx6.js +84 -0
- package/dist/client/_assets/chunks/site-header-nav-DzXsFk05.js +1 -0
- package/dist/client/_assets/chunks/slug-format-CRXO1AL5.js +1 -0
- package/dist/client/_assets/chunks/slugify-373citbs.js +1 -0
- package/dist/client/_assets/chunks/sortable-list-CgaL2jCs.js +2 -0
- package/dist/client/_assets/chunks/types-D5iF3H1a.js +1 -0
- package/dist/client/_assets/chunks/unsafe-html-B5ZEXaxg.js +1 -0
- package/dist/client/_assets/chunks/unsafe-svg-0QCkP0vZ.js +2 -0
- package/dist/client/_assets/client-GiYENVw8.css +2 -0
- package/dist/client/_assets/client-VnFxJN7G.js +295 -0
- package/dist/client/_assets/client-auth-k8gJ6QJj.js +828 -0
- package/dist/client/_assets/client-author-DQ8R-8KR.css +2 -0
- package/dist/client/_assets/client-compose-B_kDtWkW.js +2004 -0
- package/dist/client/_assets/client-manage-M90aSTOk.js +2170 -0
- package/dist/client/_assets/client-settings-DfYs9n1F.js +1112 -0
- package/dist/{export-Dl5KCiEs.js → github-sync-BPAvT999.js} +2254 -107
- package/dist/index.js +2 -5
- package/dist/node.js +5 -7
- package/package.json +3 -3
- package/src/__tests__/auth-session-freshness.test.ts +57 -0
- package/src/__tests__/basecoat-variants.test.ts +121 -0
- package/src/__tests__/bin/assets-upload.test.ts +68 -0
- package/src/__tests__/export-hugo-build.test.ts +260 -0
- package/src/__tests__/export-service.test.ts +231 -0
- package/src/__tests__/helpers/component-css.ts +91 -0
- package/src/__tests__/helpers/db.ts +33 -0
- package/src/__tests__/helpers/export-fixtures.ts +3 -0
- package/src/__tests__/stylesheet-audience.test.ts +159 -0
- package/src/__tests__/stylesheet-breakpoints.test.ts +183 -0
- package/src/app.tsx +71 -16
- package/src/auth.ts +18 -1
- package/src/client/__tests__/collection-page-actions.test.ts +51 -2
- package/src/client/__tests__/compose-bridge-image-upload.test.ts +196 -0
- package/src/client/__tests__/compose-bridge-video-poster.test.ts +159 -0
- package/src/client/__tests__/compose-bridge.test.ts +272 -0
- package/src/client/__tests__/compose-launch.test.ts +62 -1
- package/src/client/__tests__/compose-shortcuts.test.ts +38 -9
- package/src/client/__tests__/compose-triggers.test.ts +90 -0
- package/src/client/__tests__/copy-field.test.ts +162 -0
- package/src/client/__tests__/custom-url-menu.test.ts +127 -6
- package/src/client/__tests__/image-processor.test.ts +324 -2
- package/src/client/__tests__/lazy-entries.test.ts +92 -0
- package/src/client/__tests__/media-scroll-hint.test.ts +155 -0
- package/src/client/__tests__/runtime-paths.test.ts +84 -0
- package/src/client/__tests__/smart-collection-page-actions.test.ts +158 -0
- package/src/client/__tests__/toast.test.ts +23 -0
- package/src/client/__tests__/video-processor-probe.test.ts +175 -0
- package/src/client/__tests__/video-processor.test.ts +181 -0
- package/src/client/audio-processor.ts +24 -15
- package/src/client/audio-waveform.ts +49 -0
- package/src/client/collection-dialog-host.ts +72 -0
- package/src/client/collection-navigation.ts +51 -16
- package/src/client/collection-page-actions.ts +26 -0
- package/src/client/components/__tests__/jant-collection-dialog.test.ts +329 -0
- package/src/client/components/__tests__/jant-collection-directory.test.ts +274 -10
- package/src/client/components/__tests__/jant-collection-form.test.ts +59 -178
- package/src/client/components/__tests__/jant-command-palette.test.ts +28 -0
- package/src/client/components/__tests__/jant-compose-dialog-draft-storage.test.ts +340 -0
- package/src/client/components/__tests__/jant-compose-dialog.test.ts +1250 -53
- package/src/client/components/__tests__/jant-compose-editor.test.ts +544 -40
- package/src/client/components/__tests__/jant-compose-fullscreen.test.ts +0 -1
- package/src/client/components/__tests__/jant-locale-picker.test.ts +207 -0
- package/src/client/components/__tests__/jant-nav-manager.test.ts +234 -15
- package/src/client/components/__tests__/jant-post-menu.test.ts +413 -2
- package/src/client/components/__tests__/jant-post-picker.test.ts +197 -0
- package/src/client/components/__tests__/jant-settings-avatar.test.ts +15 -12
- package/src/client/components/__tests__/jant-settings-general.test.ts +541 -172
- package/src/client/components/__tests__/jant-settings-language.test.ts +851 -0
- package/src/client/components/__tests__/jant-smart-collection-dialog.test.ts +665 -0
- package/src/client/components/collection-dialog-types.ts +49 -0
- package/src/client/components/collection-manager-types.ts +32 -1
- package/src/client/components/collection-types.ts +1 -15
- package/src/client/components/compose-types.ts +75 -1
- package/src/client/components/jant-collection-dialog.ts +722 -0
- package/src/client/components/jant-collection-directory.ts +567 -182
- package/src/client/components/jant-collection-form.ts +53 -232
- package/src/client/components/jant-command-palette.ts +100 -49
- package/src/client/components/jant-compose-dialog.ts +1486 -707
- package/src/client/components/jant-compose-editor.ts +673 -336
- package/src/client/components/jant-compose-fullscreen.ts +51 -43
- package/src/client/components/jant-config-editor.ts +65 -53
- package/src/client/components/jant-confirm-dialog.ts +13 -11
- package/src/client/components/jant-locale-picker.ts +418 -0
- package/src/client/components/jant-media-lightbox.ts +146 -136
- package/src/client/components/jant-nav-manager.ts +690 -366
- package/src/client/components/jant-post-menu.ts +1086 -282
- package/src/client/components/jant-post-picker.ts +324 -0
- package/src/client/components/jant-repo-picker.ts +138 -106
- package/src/client/components/jant-settings-avatar.ts +31 -27
- package/src/client/components/jant-settings-general.ts +617 -543
- package/src/client/components/jant-settings-language.ts +1087 -0
- package/src/client/components/jant-smart-collection-dialog.ts +1021 -0
- package/src/client/components/jant-text-preview.ts +94 -86
- package/src/client/components/nav-manager-types.ts +62 -1
- package/src/client/components/settings-types.ts +14 -29
- package/src/client/components/smart-collection-conditions.ts +285 -0
- package/src/client/components/smart-collection-dialog-types.ts +68 -0
- package/src/client/compose-bridge.ts +214 -141
- package/src/client/compose-launch.ts +76 -2
- package/src/client/compose-shortcuts.ts +6 -8
- package/src/client/compose-triggers.ts +50 -0
- package/src/client/copy-field.ts +108 -0
- package/src/client/custom-url-menu.ts +60 -4
- package/src/client/icons.ts +14 -0
- package/src/client/image-plan.ts +165 -0
- package/src/client/image-processor.ts +195 -117
- package/src/client/image-worker-client.ts +45 -0
- package/src/client/image-worker.ts +135 -0
- package/src/client/lazy-entries.ts +95 -0
- package/src/client/lazy-slugify.ts +2 -2
- package/src/client/media-scroll-hint.ts +43 -2
- package/src/client/mediabunny.ts +29 -0
- package/src/client/post-picker.ts +41 -0
- package/src/client/runtime-paths.ts +74 -1
- package/src/client/settings-bridge.ts +4 -10
- package/src/client/site-header-nav.js +18 -6
- package/src/client/smart-collection-dialog-host.ts +116 -0
- package/src/client/smart-collection-page-actions.ts +208 -0
- package/src/client/tiptap/__tests__/bubble-menu.test.ts +110 -0
- package/src/client/tiptap/__tests__/floating-position.test.ts +136 -1
- package/src/client/tiptap/__tests__/inline-image-upload.test.ts +37 -0
- package/src/client/tiptap/bubble-menu.ts +47 -16
- package/src/client/tiptap/floating-position.ts +216 -2
- package/src/client/tiptap/inline-image-upload.ts +7 -3
- package/src/client/tiptap/link-toolbar.ts +22 -9
- package/src/client/toast.ts +13 -0
- package/src/client/types/vite-worker.d.ts +12 -0
- package/src/client/upload-with-metadata.ts +3 -13
- package/src/client/video-processor.ts +351 -107
- package/src/client-auth.ts +14 -31
- package/src/client-compose.ts +19 -0
- package/src/client-manage.ts +13 -0
- package/src/client-settings.ts +14 -0
- package/src/client-site.ts +10 -3
- package/src/client.ts +4 -0
- package/src/db/__tests__/backfill-nav-label-mirrors.test.ts +149 -0
- package/src/db/__tests__/schema-enum-sources.test.ts +33 -0
- package/src/db/__tests__/smart-collection-placement.test.ts +402 -0
- package/src/db/backfills/0006_clear_mirrored_page_nav_labels.sql +31 -0
- package/src/db/migrations/0032_married_tomas.sql +3 -0
- package/src/db/migrations/0033_busy_johnny_storm.sql +198 -0
- package/src/db/migrations/0034_cheerful_rumiko_fujikawa.sql +35 -0
- package/src/db/migrations/meta/0032_snapshot.json +2582 -0
- package/src/db/migrations/meta/0033_snapshot.json +2816 -0
- package/src/db/migrations/meta/0034_snapshot.json +2816 -0
- package/src/db/migrations/meta/_journal.json +21 -0
- package/src/db/migrations/pg/0030_abandoned_nighthawk.sql +3 -0
- package/src/db/migrations/pg/0031_strong_ultimatum.sql +128 -0
- package/src/db/migrations/pg/0032_furry_multiple_man.sql +6 -0
- package/src/db/migrations/pg/meta/0030_snapshot.json +3329 -0
- package/src/db/migrations/pg/meta/0031_snapshot.json +3660 -0
- package/src/db/migrations/pg/meta/0032_snapshot.json +3660 -0
- package/src/db/migrations/pg/meta/_journal.json +21 -0
- package/src/db/pg/schema.ts +195 -27
- package/src/db/post-visibility.ts +117 -0
- package/src/db/schema.ts +222 -27
- package/src/i18n/__tests__/detect.test.ts +26 -81
- package/src/i18n/__tests__/supported-locales.test.ts +83 -0
- package/src/i18n/context.tsx +12 -2
- package/src/i18n/detect.ts +7 -66
- package/src/i18n/locales/glossary.zh-Hans.yml +44 -4
- package/src/i18n/locales/glossary.zh-Hant.yml +44 -4
- package/src/i18n/locales/public/en.po +490 -158
- package/src/i18n/locales/public/en.ts +1 -1
- package/src/i18n/locales/public/zh-Hans.po +487 -155
- package/src/i18n/locales/public/zh-Hans.ts +1 -1
- package/src/i18n/locales/public/zh-Hant.po +487 -155
- package/src/i18n/locales/public/zh-Hant.ts +1 -1
- package/src/i18n/locales/settings/en.po +551 -69
- package/src/i18n/locales/settings/en.ts +1 -1
- package/src/i18n/locales/settings/zh-Hans.po +597 -115
- package/src/i18n/locales/settings/zh-Hans.ts +1 -1
- package/src/i18n/locales/settings/zh-Hant.po +610 -128
- package/src/i18n/locales/settings/zh-Hant.ts +1 -1
- package/src/i18n/locales.ts +94 -0
- package/src/i18n/middleware.ts +12 -2
- package/src/i18n/supported-locales.ts +80 -0
- package/src/lib/__tests__/api-settings.test.ts +11 -2
- package/src/lib/__tests__/asset-path.test.ts +92 -0
- package/src/lib/__tests__/deferred.test.ts +90 -0
- package/src/lib/__tests__/discover-ping.test.ts +89 -0
- package/src/lib/__tests__/discover.test.ts +410 -0
- package/src/lib/__tests__/feed-policy.test.ts +26 -0
- package/src/lib/__tests__/feed.test.ts +1526 -15
- package/src/lib/__tests__/filter-dimensions.test.ts +341 -0
- package/src/lib/__tests__/hosted-signin.test.ts +1 -1
- package/src/lib/__tests__/http-cache.test.ts +162 -0
- package/src/lib/__tests__/jant-docs-dev.test.ts +21 -0
- package/src/lib/__tests__/jant-docs.test.ts +23 -0
- package/src/lib/__tests__/lang-detect.test.ts +231 -0
- package/src/lib/__tests__/media-helpers.test.ts +81 -0
- package/src/lib/__tests__/navigation.test.ts +135 -1
- package/src/lib/__tests__/resolve-config.test.ts +64 -3
- package/src/lib/__tests__/schemas.test.ts +42 -4
- package/src/lib/__tests__/site-unavailable-page.test.ts +25 -0
- package/src/lib/__tests__/slug.test.ts +70 -0
- package/src/lib/__tests__/slugify.test.ts +85 -0
- package/src/lib/__tests__/storage.test.ts +32 -0
- package/src/lib/__tests__/thread-fold.test.ts +113 -0
- package/src/lib/__tests__/upload-sideload.test.ts +14 -0
- package/src/lib/__tests__/url-fetch.test.ts +1 -2
- package/src/lib/__tests__/url.test.ts +78 -72
- package/src/lib/__tests__/view-language.test.ts +413 -0
- package/src/lib/__tests__/worker-response-cache.test.ts +90 -0
- package/src/lib/address.ts +57 -0
- package/src/lib/api-posts.ts +12 -0
- package/src/lib/asset-path.ts +98 -1
- package/src/lib/build-env.ts +16 -0
- package/src/lib/collection-groups.ts +5 -1
- package/src/lib/collection-paths.ts +3 -10
- package/src/lib/constants.ts +28 -3
- package/src/lib/copy-field.ts +36 -0
- package/src/lib/crypto.ts +40 -0
- package/src/lib/csp-builder.ts +2 -1
- package/src/lib/deferred.ts +79 -0
- package/src/lib/discover-ping.ts +141 -0
- package/src/lib/discover.ts +437 -0
- package/src/lib/env.ts +134 -0
- package/src/lib/errors.ts +33 -0
- package/src/lib/feed-policy.ts +236 -2
- package/src/lib/feed.ts +926 -73
- package/src/lib/filter-dimensions.ts +1349 -0
- package/src/lib/github-sync-site-config.ts +3 -0
- package/src/lib/hosted-signin.ts +1 -1
- package/src/lib/http-cache.ts +148 -0
- package/src/lib/hugo-markdown.ts +16 -0
- package/src/lib/icons.ts +9 -2
- package/src/lib/ids.ts +3 -0
- package/src/lib/jant-docs.ts +42 -0
- package/src/lib/lang-detect.ts +308 -0
- package/src/lib/media-helpers.ts +13 -1
- package/src/lib/navigation.ts +78 -11
- package/src/lib/pagination.ts +28 -24
- package/src/lib/per-language-surfaces.ts +67 -0
- package/src/lib/post-meta.ts +19 -0
- package/src/lib/render.tsx +55 -7
- package/src/lib/resolve-config.ts +53 -5
- package/src/lib/schemas.ts +201 -10
- package/src/lib/site-header-fragment.tsx +2 -1
- package/src/lib/site-unavailable-page.ts +47 -0
- package/src/lib/slug.ts +51 -7
- package/src/lib/slugify.ts +113 -0
- package/src/lib/startup-config.ts +4 -6
- package/src/lib/storage.ts +7 -0
- package/src/lib/summary.ts +50 -0
- package/src/lib/thread-fold.ts +161 -0
- package/src/lib/time.ts +32 -0
- package/src/lib/timeline.ts +42 -1
- package/src/lib/tiptap-render.ts +1 -2
- package/src/lib/upload.ts +16 -13
- package/src/lib/url.ts +139 -86
- package/src/lib/version.ts +10 -8
- package/src/lib/view-language.ts +436 -0
- package/src/lib/view.ts +51 -23
- package/src/lib/viewer-context.ts +62 -0
- package/src/middleware/__tests__/auth.test.ts +70 -2
- package/src/middleware/__tests__/cache-control.test.ts +71 -3
- package/src/middleware/__tests__/onboarding.test.ts +76 -5
- package/src/middleware/__tests__/secure-headers.test.ts +1 -1
- package/src/middleware/__tests__/session.test.ts +181 -33
- package/src/middleware/auth.ts +50 -31
- package/src/middleware/cache-control.ts +75 -10
- package/src/middleware/config.ts +6 -6
- package/src/middleware/error-handler.ts +12 -0
- package/src/middleware/onboarding.ts +32 -10
- package/src/middleware/secure-headers.ts +1 -1
- package/src/middleware/session.ts +96 -8
- package/src/node/__tests__/cli-migrate.test.ts +21 -19
- package/src/node/__tests__/cli-reset-password.test.ts +81 -8
- package/src/node/__tests__/cli-runtime-target.test.ts +48 -1
- package/src/node/__tests__/cli-site-selection.test.ts +128 -38
- package/src/node/__tests__/runtime.test.ts +37 -0
- package/src/node/index.ts +1 -0
- package/src/preset.css +76 -22
- package/src/routes/__tests__/feed-validator.test.ts +156 -0
- package/src/routes/api/__tests__/collections.test.ts +114 -0
- package/src/routes/api/__tests__/discover.test.ts +222 -0
- package/src/routes/api/__tests__/nav-items.test.ts +212 -2
- package/src/routes/api/__tests__/post-translations.test.ts +829 -0
- package/src/routes/api/__tests__/settings.test.ts +24 -3
- package/src/routes/api/__tests__/telegram.test.ts +6 -5
- package/src/routes/api/collections.ts +49 -6
- package/src/routes/api/custom-urls.ts +0 -1
- package/src/routes/api/discover.ts +95 -0
- package/src/routes/api/export.ts +3 -0
- package/src/routes/api/internal/__tests__/sites.test.ts +42 -2
- package/src/routes/api/nav-items.ts +55 -8
- package/src/routes/api/posts.ts +159 -0
- package/src/routes/api/public/__tests__/archive.test.ts +111 -0
- package/src/routes/api/public/archive.ts +77 -81
- package/src/routes/api/public/posts.ts +23 -6
- package/src/routes/api/smart-collections.ts +132 -0
- package/src/routes/api/telegram.ts +2 -40
- package/src/routes/api/uploads.ts +1 -2
- package/src/routes/auth/__tests__/setup-auth.test.ts +137 -0
- package/src/routes/auth/__tests__/setup-discover.test.ts +204 -0
- package/src/routes/auth/__tests__/setup-flow.test.ts +270 -0
- package/src/routes/auth/__tests__/setup-page.test.tsx +329 -0
- package/src/routes/auth/__tests__/setup-steps.test.ts +310 -0
- package/src/routes/auth/__tests__/setup.test.ts +278 -26
- package/src/routes/auth/__tests__/signin.test.ts +135 -0
- package/src/routes/auth/setup.tsx +934 -186
- package/src/routes/auth/signin.tsx +10 -8
- package/src/routes/compose.tsx +5 -0
- package/src/routes/dash/__tests__/custom-urls-archive.test.ts +44 -0
- package/src/routes/dash/__tests__/custom-urls-page.test.ts +49 -0
- package/src/routes/dash/__tests__/delete-account.test.ts +106 -0
- package/src/routes/dash/__tests__/settings-discover.test.ts +213 -0
- package/src/routes/dash/custom-urls.tsx +1 -37
- package/src/routes/dash/settings.tsx +502 -41
- package/src/routes/discover-announce.ts +96 -0
- package/src/routes/feed/__tests__/feed.test.ts +165 -2
- package/src/routes/feed/feed.ts +69 -40
- package/src/routes/feed/sitemap.ts +95 -11
- package/src/routes/pages/__tests__/archive-indexing.test.ts +200 -0
- package/src/routes/pages/__tests__/archive-params.test.ts +370 -6
- package/src/routes/pages/__tests__/collection-routing.test.ts +16 -0
- package/src/routes/pages/__tests__/collections-feed-links.test.ts +72 -0
- package/src/routes/pages/__tests__/collections.test.ts +9 -3
- package/src/routes/pages/__tests__/custom-archive-url.test.ts +119 -0
- package/src/routes/pages/__tests__/feed-autodiscovery.test.ts +148 -0
- package/src/routes/pages/__tests__/language-routing.test.ts +679 -0
- package/src/routes/pages/__tests__/post-preview-partial.test.ts +96 -0
- package/src/routes/pages/__tests__/smart-collection.test.ts +298 -0
- package/src/routes/pages/__tests__/subscribe.test.ts +248 -0
- package/src/routes/pages/archive.tsx +471 -369
- package/src/routes/pages/collection.tsx +94 -96
- package/src/routes/pages/collections.tsx +38 -50
- package/src/routes/pages/featured.tsx +32 -13
- package/src/routes/pages/home.tsx +25 -6
- package/src/routes/pages/language.tsx +113 -0
- package/src/routes/pages/latest.tsx +26 -16
- package/src/routes/pages/new.tsx +3 -0
- package/src/routes/pages/page.tsx +178 -17
- package/src/routes/pages/partials.tsx +41 -0
- package/src/routes/pages/search.tsx +18 -3
- package/src/routes/pages/smart-collection.tsx +340 -0
- package/src/routes/pages/subscribe.tsx +182 -0
- package/src/runtime/__tests__/index.test.ts +19 -0
- package/src/runtime/__tests__/node.test.ts +129 -4
- package/src/runtime/cloudflare.ts +21 -2
- package/src/runtime/index.ts +27 -1
- package/src/runtime/node.ts +18 -1
- package/src/runtime/site.ts +95 -24
- package/src/services/__tests__/auth.test.ts +116 -7
- package/src/services/__tests__/collection.test.ts +108 -4
- package/src/services/__tests__/language.test.ts +495 -0
- package/src/services/__tests__/navigation.test.ts +213 -10
- package/src/services/__tests__/path.test.ts +180 -0
- package/src/services/__tests__/post-language.test.ts +830 -0
- package/src/services/__tests__/post.test.ts +46 -9
- package/src/services/__tests__/settings.test.ts +228 -17
- package/src/services/__tests__/site-admin.test.ts +5 -5
- package/src/services/__tests__/smart-collection.test.ts +651 -0
- package/src/services/about-page.ts +22 -1
- package/src/services/auth.ts +51 -49
- package/src/services/bootstrap.ts +188 -38
- package/src/services/collection-directory-position.ts +76 -0
- package/src/services/collection.ts +331 -46
- package/src/services/custom-url.ts +27 -22
- package/src/services/export-theme/assets/client-site.css +1 -1
- package/src/services/export-theme/assets/client-site.js +123 -123
- package/src/services/export-theme/layouts/_default/rss.xml +77 -1
- package/src/services/export-theme/layouts/partials/feed-post-content.xml +105 -2
- package/src/services/export-theme/layouts/partials/media-gallery.html +35 -21
- package/src/services/export-theme/layouts/partials/pagination.html +14 -13
- package/src/services/export-theme/layouts/partials/post-card.html +8 -4
- package/src/services/export-theme/layouts/partials/reply.html +2 -1
- package/src/services/export-theme/layouts/partials/thread-preview.html +40 -30
- package/src/services/export-theme/styles/main.css +13 -1
- package/src/services/export.ts +278 -19
- package/src/services/index.ts +34 -3
- package/src/services/language.ts +412 -0
- package/src/services/mcp.ts +3 -1
- package/src/services/media.ts +14 -6
- package/src/services/navigation.ts +429 -67
- package/src/services/path.ts +221 -6
- package/src/services/post.ts +1021 -152
- package/src/services/search.ts +39 -2
- package/src/services/settings.ts +238 -43
- package/src/services/site-admin.ts +24 -7
- package/src/services/site.ts +77 -1
- package/src/services/smart-collection.ts +636 -0
- package/src/services/telegram.ts +20 -22
- package/src/services/upload-session.ts +1 -3
- package/src/style-author.css +27 -0
- package/src/styles/components-author.css +1622 -0
- package/src/styles/components.css +24 -1571
- package/src/styles/site-media.css +16 -2
- package/src/styles/tokens.css +82 -12
- package/src/styles/ui-author.css +7602 -0
- package/src/styles/ui.css +1087 -7219
- package/src/types/app-context.ts +7 -0
- package/src/types/bindings.ts +3 -0
- package/src/types/config.ts +94 -15
- package/src/types/constants.ts +188 -16
- package/src/types/entities.ts +87 -1
- package/src/types/operations.ts +64 -2
- package/src/types/props.ts +157 -31
- package/src/types/views.ts +55 -1
- package/src/ui/__tests__/font-themes.test.ts +52 -12
- package/src/ui/compose/ComposeDialog.tsx +201 -7
- package/src/ui/compose/ComposePrompt.tsx +1 -5
- package/src/ui/compose/__tests__/ComposeDialog.test.tsx +125 -0
- package/src/ui/dash/appearance/AdvancedContent.tsx +2 -2
- package/src/ui/dash/appearance/CodeInjectionContent.tsx +12 -16
- package/src/ui/dash/appearance/NavigationContent.tsx +117 -16
- package/src/ui/dash/appearance/__tests__/NavigationContent.test.tsx +33 -11
- package/src/ui/dash/appearance/__tests__/system-nav-descriptions.test.ts +44 -0
- package/src/ui/dash/appearance/system-nav-descriptions.ts +75 -0
- package/src/ui/dash/settings/AccountMenuContent.tsx +2 -2
- package/src/ui/dash/settings/ApiTokensContent.tsx +2 -1
- package/src/ui/dash/settings/ConfigEditorContent.tsx +35 -16
- package/src/ui/dash/settings/GeneralContent.tsx +275 -113
- package/src/ui/dash/settings/LanguageContent.tsx +409 -0
- package/src/ui/dash/settings/SettingsRootContent.tsx +19 -1
- package/src/ui/dash/settings/__tests__/GeneralContent.test.tsx +324 -4
- package/src/ui/dash/settings/__tests__/LanguageContent.test.tsx +144 -0
- package/src/ui/dash/settings/__tests__/discover-copy.test.ts +66 -0
- package/src/ui/dash/settings/discover-copy.ts +116 -0
- package/src/ui/feed/LinkCard.tsx +55 -45
- package/src/ui/feed/NoteCard.tsx +9 -4
- package/src/ui/feed/PostStatusBadges.tsx +90 -43
- package/src/ui/feed/QuoteCard.tsx +55 -30
- package/src/ui/feed/ThreadPreview.tsx +6 -2
- package/src/ui/feed/__tests__/thread-preview.test.ts +13 -16
- package/src/ui/feed/__tests__/timeline-cards.test.ts +314 -49
- package/src/ui/feed/thread-preview-state.ts +20 -6
- package/src/ui/font-themes.ts +39 -29
- package/src/ui/layouts/BaseLayout.tsx +155 -10
- package/src/ui/layouts/SiteLayout.tsx +192 -34
- package/src/ui/layouts/__tests__/BaseLayout.test.tsx +196 -17
- package/src/ui/layouts/__tests__/SiteLayout.test.tsx +109 -85
- package/src/ui/pages/ArchivePage.tsx +282 -289
- package/src/ui/pages/CollectionPage.tsx +86 -76
- package/src/ui/pages/CollectionsPage.tsx +5 -0
- package/src/ui/pages/ComposePage.tsx +8 -0
- package/src/ui/pages/PostPage.tsx +47 -0
- package/src/ui/pages/SearchPage.tsx +3 -3
- package/src/ui/pages/SmartCollectionPage.tsx +434 -0
- package/src/ui/pages/SubscribePage.tsx +236 -0
- package/src/ui/pages/__tests__/ArchivePage.test.tsx +65 -9
- package/src/ui/pages/__tests__/collections-directory-rows.test.tsx +92 -0
- package/src/ui/pages/__tests__/collections-view-links.test.tsx +81 -0
- package/src/ui/shared/CollectionDirectory.tsx +178 -3
- package/src/ui/shared/CollectionsManager.tsx +70 -17
- package/src/ui/shared/CopyField.tsx +127 -0
- package/src/ui/shared/EmptyPostContent.tsx +23 -0
- package/src/ui/shared/MediaGallery.tsx +125 -46
- package/src/ui/shared/Pagination.tsx +20 -5
- package/src/ui/shared/PostFooter.tsx +20 -11
- package/src/ui/shared/__tests__/archive-labels.test.ts +100 -0
- package/src/ui/shared/__tests__/media-gallery.test.ts +210 -2
- package/src/ui/shared/__tests__/navigation-labels.test.ts +16 -22
- package/src/ui/shared/__tests__/pagination.test.ts +38 -24
- package/src/ui/shared/__tests__/post-footer.test.ts +32 -0
- package/src/ui/shared/archive-labels.ts +98 -0
- package/src/ui/shared/collection-management-labels.ts +94 -16
- package/src/ui/shared/navigation-labels.ts +45 -71
- package/src/ui/shared/post-article-attributes.ts +2 -0
- package/src/ui/shared/smart-collection-labels.ts +343 -0
- package/dist/app-C75Zc8dD.js +0 -6
- package/dist/client/_assets/chunks/heic-to-DUUaO23q.js +0 -1
- package/dist/client/_assets/chunks/module-DcsAZQZ_.js +0 -716
- package/dist/client/_assets/chunks/url-CU9pEbk5.js +0 -1
- package/dist/client/_assets/client-Bq0vre8Y.js +0 -296
- package/dist/client/_assets/client-D3VZyG4L.css +0 -2
- package/dist/client/_assets/client-auth-F2rb9WfF.js +0 -5571
- package/dist/env-BPYViDJJ.js +0 -281
- package/dist/github-api-BNF35Lkx.js +0 -176
- package/dist/github-app-DdiD-bC4.js +0 -275
- package/dist/github-sync-Bqg62IvV.js +0 -4
- package/dist/github-sync-HdK2EgvJ.js +0 -431
- package/dist/url-CbLAtlZe.js +0 -900
- package/src/client/__tests__/collection-created-notice.test.ts +0 -36
- package/src/client/__tests__/collection-form-bridge.test.ts +0 -216
- package/src/client/__tests__/post-form-bridge.test.ts +0 -82
- package/src/client/collection-created-notice.ts +0 -66
- package/src/client/collection-form-bridge.ts +0 -191
- package/src/client/components/__tests__/jant-post-form.test.ts +0 -193
- package/src/client/components/jant-post-form.ts +0 -422
- package/src/client/components/post-form-template.ts +0 -352
- package/src/client/components/post-form-types.ts +0 -96
- package/src/client/media-metadata.ts +0 -247
- package/src/client/post-form-bridge.ts +0 -193
- package/src/ui/pages/CollectionEditorPage.tsx +0 -175
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./chunks/url-CU9pEbk5.js";var t=`🖕JS_DS🚀`,n=t.slice(0,5),r=t.slice(4),i=`datastar-fetch`,a=`datastar-signal-patch`,o=Object.hasOwn??Object.prototype.hasOwnProperty.call,s=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),c=e=>{for(let t in e)if(o(e,t))return!1;return!0},l=(e,t)=>{for(let n in e){let r=e[n];s(r)||Array.isArray(r)?l(r,t):e[n]=t(r)}},u=e=>{let t={};for(let[n,r]of e){let e=n.split(`.`),i=e.pop(),a=e.reduce((e,t)=>e[t]??={},t);a[i]=r}return t},d=[],f=[],p=0,m=0,h=0,ee,g,_=0,v=()=>{p++},y=()=>{--p||(re(),T())},b=e=>{ee=g,g=e},x=()=>{g=ee,ee=void 0},S=e=>ce.bind(0,{previousValue:e,t:e,e:1}),te=Symbol(`computed`),ne=e=>{let t=le.bind(0,{e:17,getter:e});return t[te]=1,t},C=e=>{let t={d:e,e:2};g&&de(t,g),b(t),v();try{t.d()}finally{y(),x()}return ue.bind(0,t)},re=()=>{for(;m<h;){let e=f[m];f[m++]=void 0,se(e,e.e&=-65)}m=0,h=0},w=e=>`getter`in e?ie(e):ae(e,e.t),ie=e=>{b(e),me(e);try{let t=e.t;return t!==(e.t=e.getter(t))}finally{x(),he(e)}},ae=(e,t)=>(e.e=1,e.previousValue!==(e.previousValue=t)),oe=e=>{let t=e.e;if(!(t&64)){e.e=t|64;let n=e.r;n?oe(n.o):f[h++]=e}},se=(e,t)=>{if(t&16||t&32&&ge(e.s,e)){b(e),me(e),v();try{e.d()}finally{y(),x(),he(e)}return}t&32&&(e.e=t&-33);let n=e.s;for(;n;){let e=n.c,t=e.e;t&64&&se(e,e.e=t&-65),n=n.i}},ce=(e,...t)=>{if(t.length){if(e.t!==(e.t=t[0])){e.e=17;let t=e.r;return t&&(pe(t),p||re()),!0}return!1}let n=e.t;if(e.e&16&&ae(e,n)){let t=e.r;t&&_e(t)}return g&&de(e,g),n},le=e=>{let t=e.e;if(t&16||t&32&&ge(e.s,e)){if(ie(e)){let t=e.r;t&&_e(t)}}else t&32&&(e.e=t&-33);return g&&de(e,g),e.t},ue=e=>{let t=e.s;for(;t;)t=fe(t,e);let n=e.r;n&&fe(n),e.e=0},de=(e,t)=>{let n=t.a;if(n&&n.c===e)return;let r=n?n.i:t.s;if(r&&r.c===e){r.m=_,t.a=r;return}let i=e.p;if(i&&i.m===_&&i.o===t)return;let a=t.a=e.p={m:_,c:e,o:t,l:n,i:r,u:i};r&&(r.l=a),n?n.i=a:t.s=a,i?i.n=a:e.r=a},fe=(e,t=e.o)=>{let n=e.c,r=e.l,i=e.i,a=e.n,o=e.u;if(i?i.l=r:t.a=r,r?r.i=i:t.s=i,a?a.u=o:n.p=o,o)o.n=a;else if(!(n.r=a))if(`getter`in n){let e=n.s;if(e){n.e=17;do e=fe(e,n);while(e)}}else `previousValue`in n||ue(n);return i},pe=e=>{let t=e.n,n;e:for(;;){let r=e.o,i=r.e;if(i&60?i&12?i&4?!(i&48)&&ve(e,r)?(r.e=i|40,i&=1):i=0:r.e=i&-9|32:i=0:r.e=i|32,i&2&&oe(r),i&1){let i=r.r;if(i){let r=(e=i).n;r&&(n={t,f:n},t=r);continue}}if(e=t){t=e.n;continue}for(;n;)if(e=n.t,n=n.f,e){t=e.n;continue e}break}},me=e=>{_++,e.a=void 0,e.e=e.e&-57|4},he=e=>{let t=e.a,n=t?t.i:e.s;for(;n;)n=fe(n,e);e.e&=-5},ge=(e,t)=>{let n,r=0,i=!1;e:for(;;){let a=e.c,o=a.e;if(t.e&16)i=!0;else if((o&17)==17){if(w(a)){let e=a.r;e.n&&_e(e),i=!0}}else if((o&33)==33){(e.n||e.u)&&(n={t:e,f:n}),e=a.s,t=a,++r;continue}if(!i){let t=e.i;if(t){e=t;continue}}for(;r--;){let r=t.r,a=r.n;if(a?(e=n.t,n=n.f):e=r,i){if(w(t)){a&&_e(r),t=e.o;continue}i=!1}else t.e&=-33;if(t=e.o,e.i){e=e.i;continue e}}return i}},_e=e=>{do{let t=e.o,n=t.e;(n&48)==32&&(t.e=n|16,n&2&&oe(t))}while(e=e.n)},ve=(e,t)=>{let n=t.a;for(;n;){if(n===e)return!0;n=n.l}return!1},ye=e=>{let t=Te,n=e.split(`.`);for(let e of n){if(t==null||!o(t,e))return;t=t[e]}return t},be=(e,t=``)=>{let n=Array.isArray(e);if(n||s(e)){let r=n?[]:{};for(let n in e)r[n]=S(be(e[n],`${t+n}.`));let i=S(0);return new Proxy(r,{get(e,a){if(!(a===`toJSON`&&!o(r,a)))return n&&a in Array.prototype?(i(),r[a]):typeof a==`symbol`?r[a]:((!o(r,a)||r[a]()==null)&&(r[a]=S(``),T(t+a,``),i(i()+1)),r[a]())},set(e,a,c){let l=t+a;if(n&&a===`length`){let e=r[a]-c;if(r[a]=c,e>0){let e={};for(let t=c;t<r[a];t++)e[t]=null;T(t.slice(0,-1),e),i(i()+1)}}else if(o(r,a))if(c==null)delete r[a];else if(o(c,te))r[a]=c,T(l,``);else{let e=r[a](),t=`${l}.`;if(s(e)&&s(c)){for(let n in e)o(c,n)||(delete e[n],T(t+n,null));for(let t in c){let n=c[t];e[t]!==n&&(e[t]=n)}}else r[a](be(c,t))&&T(l,c)}else c!=null&&(o(c,te)?(r[a]=c,T(l,``)):(r[a]=S(be(c,`${l}.`)),T(l,c)),i(i()+1));return!0},deleteProperty(e,t){return delete r[t],i(i()+1),!0},ownKeys(){return i(),Reflect.ownKeys(r)},has(e,t){return i(),t in r}})}return e},T=(e,t)=>{if(e!==void 0&&t!==void 0&&d.push([e,t]),!p&&d.length){let e=u(d);d.length=0,document.dispatchEvent(new CustomEvent(a,{detail:e}))}},xe=(e,{ifMissing:t}={})=>{v();for(let n in e)e[n]==null?t||delete Te[n]:Se(e[n],n,Te,``,t);y()},E=(e,t)=>xe(u(e),t),Se=(e,t,n,r,i)=>{if(s(e)){o(n,t)&&(s(n[t])||Array.isArray(n[t]))||(n[t]={});for(let a in e)e[a]==null?i||delete n[t][a]:Se(e[a],a,n[t],`${r+t}.`,i)}else i&&o(n,t)||(n[t]=e)},Ce=e=>typeof e==`string`?RegExp(e.replace(/^\/|\/$/g,``)):e,we=({include:e=/.*/,exclude:t=/(?!)/}={},n=Te)=>{let r=Ce(e),i=Ce(t),a=[],o=[[n,``]];for(;o.length;){let[e,t]=o.pop();for(let n in e){let c=t+n;s(e[n])?o.push([e[n],`${c}.`]):r.test(c)&&!i.test(c)&&a.push([c,ye(c)])}}return u(a)},Te=be({}),Ee=e=>e instanceof HTMLElement||e instanceof SVGElement||e instanceof MathMLElement,De=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/([a-z])([0-9]+)/gi,`$1-$2`).replace(/([0-9]+)([a-z])/gi,`$1-$2`).replace(/[\s_]+/g,`-`).toLowerCase(),Oe=e=>De(e).replace(/-/g,`_`),ke=e=>{try{return JSON.parse(e)}catch{return Function(`return (${e})`)()}},Ae={camel:e=>e.replace(/-[a-z]/g,e=>e[1].toUpperCase()),snake:e=>e.replace(/-/g,`_`),pascal:e=>e[0].toUpperCase()+Ae.camel(e.slice(1))},D=(e,t,n=`camel`)=>{for(let r of t.get(`case`)||[n])e=Ae[r]?.(e)||e;return e},je=e=>`data-${e}`,Me=`https://data-star.dev/errors`,Ne=(e,t,n={})=>{Object.assign(n,e);let r=Error();return r.message=`${t}
|
|
2
|
-
More info: ${Me}/${Oe(t)}?${new URLSearchParams({metadata:JSON.stringify(n)}).toString()}
|
|
3
|
-
Context: ${JSON.stringify(n,null,2)}`,r},Pe=new Map,Fe=new Map,Ie=new Map,Le=new Proxy({},{get:(e,t)=>Pe.get(t)?.apply,has:(e,t)=>Pe.has(t),ownKeys:()=>Reflect.ownKeys(Pe),set:()=>!1,deleteProperty:()=>!1}),Re=new Map,ze=[],Be=new Set,Ve=new WeakSet,O=e=>{ze.push(e),ze.length===1&&setTimeout(()=>{for(let e of ze)Be.add(e.name),Fe.set(e.name,e);ze.length=0,Xe(),Be.clear()})},k=e=>{Pe.set(e.name,e)};document.addEventListener(i,e=>{let t=Ie.get(e.detail.type);t&&t.apply({error:Ne.bind(0,{plugin:{type:`watcher`,name:t.name},element:{id:e.target.id,tag:e.target.tagName}})},e.detail.argsRaw)});var He=e=>{Ie.set(e.name,e)},Ue=e=>{for(let t of e){let e=Re.get(t);if(e&&Re.delete(t))for(let t of e.values())for(let e of t.values())e()}},We=je(`ignore`),Ge=`[${We}]`,Ke=e=>e.hasAttribute(`${We}__self`)||!!e.closest(Ge),qe=(e,t)=>{for(let n of e)if(!Ke(n))for(let e in n.dataset)Ze(n,e.replace(/[A-Z]/g,`-$&`).toLowerCase(),n.dataset[e],t)},Je=new MutationObserver(e=>{for(let{target:t,type:n,attributeName:r,addedNodes:i,removedNodes:a}of e)if(n===`childList`){for(let e of a)Ee(e)&&(Ue([e]),Ue(e.querySelectorAll(`*`)));for(let e of i)Ee(e)&&(qe([e]),qe(e.querySelectorAll(`*`)))}else if(n===`attributes`&&r.startsWith(`data-`)&&Ee(t)&&!Ke(t)){let e=r.slice(5),n=t.getAttribute(r);if(n===null){let n=Re.get(t);if(n){let t=n.get(e);if(t){for(let e of t.values())e();n.delete(e)}}}else Ze(t,e,n)}}),Ye=e=>{let[t,...n]=e.split(`__`),[r,i]=t.split(/:(.+)/),a=new Map;for(let e of n){let[t,...n]=e.split(`.`);a.set(t,new Set(n))}return{pluginName:r,key:i,mods:a}},Xe=(e=document.documentElement,t=!0)=>{Ee(e)&&qe([e],!0),qe(e.querySelectorAll(`*`),!0),t&&(Je.observe(e,{subtree:!0,childList:!0,attributes:!0}),Ve.add(e))},Ze=(e,t,n,r)=>{{let i=t,{pluginName:a,key:o,mods:s}=Ye(i),c=Fe.get(a);if((!r||Be.has(a))&&c){let t={el:e,rawKey:i,mods:s,error:Ne.bind(0,{plugin:{type:`attribute`,name:c.name},element:{id:e.id,tag:e.tagName},expression:{rawKey:i,key:o,value:n}}),key:o,value:n,loadedPluginNames:{actions:new Set(Pe.keys()),attributes:new Set(Fe.keys())},rx:void 0},r=c.requirement&&(typeof c.requirement==`string`?c.requirement:c.requirement.key)||`allowed`,a=c.requirement&&(typeof c.requirement==`string`?c.requirement:c.requirement.value)||`allowed`,l=o!=null&&o!==``,u=n!=null&&n!==``;if(l){if(r===`denied`)throw t.error(`KeyNotAllowed`)}else if(r===`must`)throw t.error(`KeyRequired`);if(u){if(a===`denied`)throw t.error(`ValueNotAllowed`)}else if(a===`must`)throw t.error(`ValueRequired`);if(r===`exclusive`||a===`exclusive`){if(l&&u)throw t.error(`KeyAndValueProvided`);if(!l&&!u)throw t.error(`KeyOrValueRequired`)}let d=new Map;if(u){let r;t.rx=(...t)=>(r||=Qe(n,{returnsValue:c.returnsValue,argNames:c.argNames,cleanups:d}),r(e,...t))}let f=c.apply(t);f&&d.set(`attribute`,f);let p=Re.get(e);if(p){let e=p.get(i);if(e)for(let t of e.values())t()}else p=new Map,Re.set(e,p);p.set(i,d)}}},Qe=(e,{returnsValue:t=!1,argNames:i=[],cleanups:a=new Map}={})=>{let o=``;if(t){let t=e.trim().match(/(\/(\\\/|[^/])*\/|"(\\"|[^"])*"|'(\\'|[^'])*'|`(\\`|[^`])*`|\(\s*((function)\s*\(\s*\)|(\(\s*\))\s*=>)\s*(?:\{[\s\S]*?\}|[^;){]*)\s*\)\s*\(\s*\)|[^;])+/gm);if(t){let e=t.length-1,n=t[e].trim();n.startsWith(`return`)||(t[e]=`return (${n});`),o=t.join(`;
|
|
4
|
-
`)}}else o=e.trim();let s=new Map,c=RegExp(`(?:${n})(.*?)(?:${r})`,`gm`),l=0;for(let e of o.matchAll(c)){let t=e[1],i=`__escaped${l++}`;s.set(i,t),o=o.replace(n+t+r,i)}o=o.replace(/\$\['([a-zA-Z_$\d][\w$]*)'\]/g,`$$$1`).replace(/\$([a-zA-Z_\d]\w*(?:[.-]\w+)*)/g,(e,t)=>t.split(`.`).reduce((e,t)=>`${e}['${t}']`,`$`)),o=o.replaceAll(/@([A-Za-z_$][\w$]*)\(/g,`__action("$1",evt,`);for(let[e,t]of s)o=o.replace(e,t);try{let t=Function(`el`,`$`,`__action`,`evt`,...i,o);return(n,...r)=>{let i=(t,r,...i)=>{let s=Ne.bind(0,{plugin:{type:`action`,name:t},element:{id:n.id,tag:n.tagName},expression:{fnContent:o,value:e}}),c=Le[t];if(c)return c({el:n,evt:r,error:s,cleanups:a},...i);throw s(`UndefinedAction`)};try{return t(n,Te,i,void 0,...r)}catch(t){throw console.error(t),Ne({element:{id:n.id,tag:n.tagName},expression:{fnContent:o,value:e},error:t.message},`ExecuteExpression`)}}}catch(t){throw console.error(t),Ne({expression:{fnContent:o,value:e},error:t.message},`GenerateExpression`)}};k({name:`peek`,apply(e,t){b();try{return t()}finally{x()}}}),k({name:`setAll`,apply(e,t,n){b();let r=we(n);l(r,()=>t),xe(r),x()}}),k({name:`toggleAll`,apply(e,t){b();let n=we(t);l(n,e=>!e),xe(n),x()}});var $e=(e,t,n=!0)=>k({name:e,apply:async({el:r,evt:i,error:a,cleanups:o},s,{selector:c,headers:l,contentType:u=`json`,filterSignals:{include:d=/.*/,exclude:f=/(^|\.)_/}={},openWhenHidden:p=n,payload:m,requestCancellation:h=`auto`,retry:ee=`auto`,retryInterval:g=1e3,retryScaler:_=2,retryMaxWaitMs:v=3e4,retryMaxCount:y=10}={})=>{let S=h instanceof AbortController?h:new AbortController;h===`auto`&&(o.get(`@${e}`)?.(),o.set(`@${e}`,async()=>{S.abort(),await Promise.resolve()}));let te=null;try{if(!s?.length)throw a(`FetchNoUrlProvided`,{action:k});let e={Accept:`text/event-stream, text/html, application/json`,"Datastar-Request":!0};u===`json`&&(e[`Content-Type`]=`application/json`);let n=Object.assign({},e,l),o={method:t,headers:n,openWhenHidden:p,retry:ee,retryInterval:g,retryScaler:_,retryMaxWaitMs:v,retryMaxCount:y,signal:S.signal,onopen:async e=>{e.status>=400&&A(nt,r,{status:e.status.toString()})},onmessage:e=>{if(!e.event.startsWith(`datastar`))return;let t=e.event,n={};for(let t of e.data.split(`
|
|
5
|
-
`)){let e=t.indexOf(` `),r=t.slice(0,e),i=t.slice(e+1);(n[r]||=[]).push(i)}A(t,r,Object.fromEntries(Object.entries(n).map(([e,t])=>[e,t.join(`
|
|
6
|
-
`)])))},onerror:e=>{if(at(e))throw e(`FetchExpectedTextEventStream`,{url:s});e&&(console.error(e.message),A(rt,r,{message:e.message}))}},h=new URL(s,document.baseURI),ne=new URLSearchParams(h.search);if(u===`json`){b(),m=m===void 0?we({include:d,exclude:f}):m,x();let e=JSON.stringify(m);t===`GET`?ne.set(`datastar`,e):o.body=e}else if(u===`form`){let e=c?document.querySelector(c):r.closest(`form`);if(!e)throw a(`FetchFormNotFound`,{action:k,selector:c});if(!e.noValidate&&!e.checkValidity()){e.reportValidity();return}let s=new FormData(e),l=r;if(r===e&&i instanceof SubmitEvent)l=i.submitter;else{let t=e=>e.preventDefault();e.addEventListener(`submit`,t),te=()=>{e.removeEventListener(`submit`,t)}}if(l instanceof HTMLButtonElement){let e=l.getAttribute(`name`);e&&s.append(e,l.value)}let u=e.getAttribute(`enctype`)===`multipart/form-data`;u||(n[`Content-Type`]=`application/x-www-form-urlencoded`);let d=new URLSearchParams(s);if(t===`GET`)for(let[e,t]of d)ne.append(e,t);else u?o.body=s:o.body=d}else throw a(`FetchInvalidContentType`,{action:k,contentType:u});A(et,r,{}),h.search=ne.toString();try{await dt(h.toString(),r,o)}catch(e){if(!at(e))throw a(`FetchFailed`,{method:t,url:s,error:e.message})}}finally{A(tt,r,{}),te?.(),o.delete(`@${e}`)}}});$e(`get`,`GET`,!1),$e(`patch`,`PATCH`),$e(`post`,`POST`),$e(`put`,`PUT`),$e(`delete`,`DELETE`);var et=`started`,tt=`finished`,nt=`error`,rt=`retrying`,it=`retries-failed`,A=(e,t,n)=>document.dispatchEvent(new CustomEvent(i,{detail:{type:e,el:t,argsRaw:n}})),at=e=>`${e}`.includes(`text/event-stream`),ot=async(e,t)=>{let n=e.getReader(),r=await n.read();for(;!r.done;)t(r.value),r=await n.read()},st=e=>{let t,n,r,i=!1;return a=>{t?t=lt(t,a):(t=a,n=0,r=-1);let o=t.length,s=0;for(;n<o;){i&&=(t[n]===10&&(s=++n),!1);let a=-1;for(;n<o&&a===-1;++n)switch(t[n]){case 58:r===-1&&(r=n-s);break;case 13:i=!0;case 10:a=n;break}if(a===-1)break;e(t.subarray(s,a),r),s=n,r=-1}s===o?t=void 0:s&&(t=t.subarray(s),n-=s)}},ct=(e,t,n)=>{let r=ut(),i=new TextDecoder;return(a,o)=>{if(!a.length)n?.(r),r=ut();else if(o>0){let n=i.decode(a.subarray(0,o)),s=o+(a[o+1]===32?2:1),c=i.decode(a.subarray(s));switch(n){case`data`:r.data=r.data?`${r.data}
|
|
7
|
-
${c}`:c;break;case`event`:r.event=c;break;case`id`:e(r.id=c);break;case`retry`:{let e=+c;Number.isNaN(e)||t(r.retry=e);break}}}}},lt=(e,t)=>{let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n},ut=()=>({data:``,event:``,id:``,retry:void 0}),dt=(e,t,{signal:n,headers:r,onopen:i,onmessage:a,onclose:o,onerror:s,openWhenHidden:c,fetch:l,retry:u=`auto`,retryInterval:d=1e3,retryScaler:f=2,retryMaxWaitMs:p=3e4,retryMaxCount:m=10,responseOverrides:h,...ee})=>new Promise((g,_)=>{let v={...r},y,b=()=>{y.abort(),document.hidden||w()};c||document.addEventListener(`visibilitychange`,b);let x,S=()=>{document.removeEventListener(`visibilitychange`,b),clearTimeout(x),y.abort()};n?.addEventListener(`abort`,()=>{S(),g()});let te=l||window.fetch,ne=i||(()=>{}),C=0,re=d,w=async()=>{y=new AbortController;let n=y.signal;try{let r=await te(e,{...ee,headers:v,signal:n});await ne(r);let i=async(e,n,r,i,...a)=>{let o={[r]:await n.text()};for(let e of a){let t=n.headers.get(`datastar-${De(e)}`);if(i){let n=i[e];n&&(t=typeof n==`string`?n:JSON.stringify(n))}t&&(o[e]=t)}A(e,t,o),S(),g()},s=r.status,c=s===204,l=s>=300&&s<400,f=s>=400&&s<600;if(s!==200){if(o?.(),u!==`never`&&!c&&!l&&(u===`always`||u===`error`&&f)){clearTimeout(x),x=setTimeout(w,d);return}S(),g();return}C=0,d=re;let p=r.headers.get(`Content-Type`);if(p?.includes(`text/html`))return await i(`datastar-patch-elements`,r,`elements`,h,`selector`,`mode`,`namespace`,`useViewTransition`);if(p?.includes(`application/json`))return await i(`datastar-patch-signals`,r,`signals`,h,`onlyIfMissing`);if(p?.includes(`text/javascript`)){let e=document.createElement(`script`),t=r.headers.get(`datastar-script-attributes`);if(t)for(let[n,r]of Object.entries(JSON.parse(t)))e.setAttribute(n,r);e.textContent=await r.text(),document.head.appendChild(e),S();return}if(await ot(r.body,st(ct(e=>{e?v[`last-event-id`]=e:delete v[`last-event-id`]},e=>{re=d=e},a))),o?.(),u===`always`&&!l){clearTimeout(x),x=setTimeout(w,d);return}S(),g()}catch(r){if(!n.aborted)try{let n=s?.(r)||d;clearTimeout(x),x=setTimeout(w,n),d=Math.min(d*f,p),++C>=m?(A(it,t,{}),S(),_(`Max retries reached.`)):console.error(`Datastar failed to reach ${e.toString()} retrying in ${n}ms.`)}catch(e){S(),_(e)}}};w()});O({name:`attr`,requirement:{value:`must`},returnsValue:!0,apply({el:e,key:t,rx:n}){let r=(t,n)=>{n===``||n===!0?e.setAttribute(t,``):n===!1||n==null?e.removeAttribute(t):typeof n==`string`?e.setAttribute(t,n):e.setAttribute(t,JSON.stringify(n))},i=t?()=>{a.disconnect(),r(t,n()),a.observe(e,{attributeFilter:[t]})}:()=>{a.disconnect();let t=n(),i=Object.keys(t);for(let e of i)r(e,t[e]);a.observe(e,{attributeFilter:i})},a=new MutationObserver(i),o=C(i);return()=>{a.disconnect(),o()}}});var ft=/^data:(?<mime>[^;]+);base64,(?<contents>.*)$/,pt=Symbol(`empty`),mt=je(`bind`);O({name:`bind`,requirement:`exclusive`,apply({el:e,key:t,mods:n,value:r,error:i}){let a=t==null?r:D(t,n),o=(e,t)=>t===`number`?+e.value:e.value,s=t=>{e.value=`${t}`};if(e instanceof HTMLInputElement)switch(e.type){case`range`:case`number`:o=(e,t)=>t===`string`?e.value:+e.value;break;case`checkbox`:o=(e,t)=>e.value===`on`?t===`string`?e.checked?e.value:``:e.checked:t===`boolean`?e.checked:e.checked?e.value:``,s=t=>{e.checked=typeof t==`string`?t===e.value:t};break;case`radio`:e.getAttribute(`name`)?.length||e.setAttribute(`name`,a),o=(e,t)=>e.checked?t===`number`?+e.value:e.value:pt,s=t=>{e.checked=t===(typeof t==`number`?+e.value:e.value)};break;case`file`:{let t=()=>{let t=[...e.files||[]],n=[];Promise.all(t.map(e=>new Promise(t=>{let r=new FileReader;r.onload=()=>{if(typeof r.result!=`string`)throw i(`InvalidFileResultType`,{resultType:typeof r.result});let t=r.result.match(ft);if(!t?.groups)throw i(`InvalidDataUri`,{result:r.result});n.push({name:e.name,contents:t.groups.contents,mime:t.groups.mime})},r.onloadend=()=>t(),r.readAsDataURL(e)}))).then(()=>{E([[a,n]])})};return e.addEventListener(`change`,t),e.addEventListener(`input`,t),()=>{e.removeEventListener(`change`,t),e.removeEventListener(`input`,t)}}}else if(e instanceof HTMLSelectElement){if(e.multiple){let t=new Map;o=e=>[...e.selectedOptions].map(e=>{let n=t.get(e.value);return n===`string`||n==null?e.value:+e.value}),s=n=>{for(let r of e.options)n.includes(r.value)?(t.set(r.value,`string`),r.selected=!0):n.includes(+r.value)?(t.set(r.value,`number`),r.selected=!0):r.selected=!1}}}else e instanceof HTMLTextAreaElement||(o=e=>`value`in e?e.value:e.getAttribute(`value`),s=t=>{`value`in e?e.value=t:e.setAttribute(`value`,t)});let c=ye(a),l=typeof c,u=a;if(Array.isArray(c)&&!(e instanceof HTMLSelectElement&&e.multiple)){let n=t||r,i=document.querySelectorAll(`[${mt}\\:${CSS.escape(n)}],[${mt}="${CSS.escape(n)}"]`),a=[],s=0;for(let t of i){if(a.push([`${u}.${s}`,o(t,`none`)]),e===t)break;s++}E(a,{ifMissing:!0}),u=`${u}.${s}`}else E([[u,o(e,l)]],{ifMissing:!0});let d=()=>{let t=ye(u);if(t!=null){let n=o(e,typeof t);n!==pt&&E([[u,n]])}};e.addEventListener(`input`,d),e.addEventListener(`change`,d);let f=C(()=>{s(ye(u))});return()=>{f(),e.removeEventListener(`input`,d),e.removeEventListener(`change`,d)}}}),O({name:`class`,requirement:{value:`must`},returnsValue:!0,apply({key:e,el:t,mods:n,rx:r}){e&&=D(e,n,`kebab`);let i,a=()=>{o.disconnect(),i=e?{[e]:r()}:r();for(let e in i){let n=e.split(/\s+/).filter(e=>e.length>0);if(i[e])for(let e of n)t.classList.contains(e)||t.classList.add(e);else for(let e of n)t.classList.contains(e)&&t.classList.remove(e)}o.observe(t,{attributeFilter:[`class`]})},o=new MutationObserver(a),s=C(a);return()=>{o.disconnect(),s();for(let e in i){let n=e.split(/\s+/).filter(e=>e.length>0);for(let e of n)t.classList.remove(e)}}}}),O({name:`computed`,requirement:{value:`must`},returnsValue:!0,apply({key:e,mods:t,rx:n,error:r}){if(e)E([[D(e,t),ne(n)]]);else{let e=Object.assign({},n());l(e,e=>{if(typeof e==`function`)return ne(e);throw r(`ComputedExpectedFunction`)}),xe(e)}}}),O({name:`effect`,requirement:{key:`denied`,value:`must`},apply:({rx:e})=>C(e)}),O({name:`indicator`,requirement:`exclusive`,apply({el:e,key:t,mods:n,value:r}){let a=t==null?r:D(t,n);E([[a,!1]]);let o=t=>{let{type:n,el:r}=t.detail;if(r===e)switch(n){case et:E([[a,!0]]);break;case tt:E([[a,!1]]);break}};return document.addEventListener(i,o),()=>{E([[a,!1]]),document.removeEventListener(i,o)}}});var ht=e=>{if(!e||e.size<=0)return 0;for(let t of e){if(t.endsWith(`ms`))return+t.replace(`ms`,``);if(t.endsWith(`s`))return t.replace(`s`,``)*1e3;try{return Number.parseFloat(t)}catch{}}return 0},gt=(e,t,n=!1)=>e?e.has(t.toLowerCase()):n,_t=(e,t)=>(...n)=>{setTimeout(()=>{e(...n)},t)},vt=(e,t,n=!0,r=!1,i=!1)=>{let a=null,o=0;return(...s)=>{n&&!o?(e(...s),a=null):a=s,(!o||i)&&(o&&clearTimeout(o),o=setTimeout(()=>{r&&a!==null&&e(...a),a=null,o=0},t))}},yt=(e,t)=>{let n=t.get(`delay`);if(n){let t=ht(n);e=_t(e,t)}let r=t.get(`debounce`);if(r){let t=ht(r),n=gt(r,`leading`,!1),i=!gt(r,`notrailing`,!1);e=vt(e,t,n,i,!0)}let i=t.get(`throttle`);if(i){let t=ht(i),n=!gt(i,`noleading`,!1),r=gt(i,`trailing`,!1);e=vt(e,t,n,r)}return e},bt=!!document.startViewTransition,xt=(e,t)=>{if(t.has(`viewtransition`)&&bt){let t=e;e=(...e)=>document.startViewTransition(()=>t(...e))}return e};O({name:`init`,requirement:{key:`denied`,value:`must`},apply({rx:e,mods:t}){let n=()=>{v(),e(),y()};n=xt(n,t);let r=0,i=t.get(`delay`);i&&(r=ht(i),r>0&&(n=_t(n,r))),n()}}),O({name:`json-signals`,requirement:{key:`denied`},apply({el:e,value:t,mods:n}){let r=n.has(`terse`)?0:2,i={};t&&(i=ke(t));let a=()=>{o.disconnect(),e.textContent=JSON.stringify(we(i),null,r),o.observe(e,{childList:!0,characterData:!0,subtree:!0})},o=new MutationObserver(a),s=C(a);return()=>{o.disconnect(),s()}}}),O({name:`on`,requirement:`must`,argNames:[`evt`],apply({el:e,key:t,mods:n,rx:r}){let o=e;n.has(`window`)&&(o=window);let s=e=>{e&&(n.has(`prevent`)&&e.preventDefault(),n.has(`stop`)&&e.stopPropagation()),v(),r(e),y()};s=xt(s,n),s=yt(s,n);let c={capture:n.has(`capture`),passive:n.has(`passive`),once:n.has(`once`)};if(n.has(`outside`)){o=document;let t=s;s=n=>{e.contains(n?.target)||t(n)}}let l=D(t,n,`kebab`);if((l===i||l===a)&&(o=document),e instanceof HTMLFormElement&&l===`submit`){let e=s;s=t=>{t?.preventDefault(),e(t)}}return o.addEventListener(l,s,c),()=>{o.removeEventListener(l,s)}}});var St=(e,t,n)=>Math.max(t,Math.min(n,e)),Ct=new WeakSet;O({name:`on-intersect`,requirement:{key:`denied`,value:`must`},apply({el:e,mods:t,rx:n}){let r=()=>{v(),n(),y()};r=xt(r,t),r=yt(r,t);let i={threshold:0};t.has(`full`)?i.threshold=1:t.has(`half`)?i.threshold=.5:t.get(`threshold`)&&(i.threshold=St(Number(t.get(`threshold`)),0,100)/100);let a=t.has(`exit`),o=new IntersectionObserver(t=>{for(let n of t)n.isIntersecting!==a&&(r(),o&&Ct.has(e)&&o.disconnect())},i);return o.observe(e),t.has(`once`)&&Ct.add(e),()=>{t.has(`once`)||Ct.delete(e),o&&=(o.disconnect(),null)}}}),O({name:`on-interval`,requirement:{key:`denied`,value:`must`},apply({mods:e,rx:t}){let n=()=>{v(),t(),y()};n=xt(n,e);let r=1e3,i=e.get(`duration`);i&&(r=ht(i),gt(i,`leading`,!1)&&n());let a=setInterval(n,r);return()=>{clearInterval(a)}}}),O({name:`on-signal-patch`,requirement:{value:`must`},argNames:[`patch`],returnsValue:!0,apply({el:e,key:t,mods:n,rx:r,error:i}){if(t&&t!==`filter`)throw i(`KeyNotAllowed`);let o=je(`${this.name}-filter`),s=e.getAttribute(o),l={};s&&(l=ke(s));let u=!1,d=yt(e=>{if(u)return;let t=we(l,e.detail);if(!c(t)){u=!0,v();try{r(t)}finally{y(),u=!1}}},n);return document.addEventListener(a,d),()=>{document.removeEventListener(a,d)}}}),O({name:`ref`,requirement:`exclusive`,apply({el:e,key:t,mods:n,value:r}){E([[t==null?r:D(t,n),e]])}});var wt=`none`,Tt=`display`;O({name:`show`,requirement:{key:`denied`,value:`must`},returnsValue:!0,apply({el:e,rx:t}){let n=()=>{r.disconnect(),t()?e.style.display===wt&&e.style.removeProperty(Tt):e.style.setProperty(Tt,wt),r.observe(e,{attributeFilter:[`style`]})},r=new MutationObserver(n),i=C(n);return()=>{r.disconnect(),i()}}}),O({name:`signals`,returnsValue:!0,apply({key:e,mods:t,rx:n}){let r=t.has(`ifmissing`);e?(e=D(e,t),E([[e,n?.()]],{ifMissing:r})):xe(Object.assign({},n?.()),{ifMissing:r})}}),O({name:`style`,requirement:{value:`must`},returnsValue:!0,apply({key:e,el:t,rx:n}){let{style:r}=t,i=new Map,a=(e,t)=>{let n=i.get(e);!t&&t!==0?n!==void 0&&(n?r.setProperty(e,n):r.removeProperty(e)):(n===void 0&&i.set(e,r.getPropertyValue(e)),r.setProperty(e,String(t)))},o=()=>{if(s.disconnect(),e)a(e,n());else{let e=n();for(let[t,n]of i)t in e||(n?r.setProperty(t,n):r.removeProperty(t));for(let t in e)a(De(t),e[t])}s.observe(t,{attributeFilter:[`style`]})},s=new MutationObserver(o),c=C(o);return()=>{s.disconnect(),c();for(let[e,t]of i)t?r.setProperty(e,t):r.removeProperty(e)}}}),O({name:`text`,requirement:{key:`denied`,value:`must`},returnsValue:!0,apply({el:e,rx:t}){let n=()=>{r.disconnect(),e.textContent=`${t()}`,r.observe(e,{childList:!0,characterData:!0,subtree:!0})},r=new MutationObserver(n),i=C(n);return()=>{r.disconnect(),i()}}});var Et=(e,t)=>e.includes(t),Dt=[`remove`,`outer`,`inner`,`replace`,`prepend`,`append`,`before`,`after`],Ot=[`html`,`svg`,`mathml`];He({name:`datastar-patch-elements`,apply(e,{selector:t=``,mode:n=`outer`,namespace:r=`html`,useViewTransition:i=``,elements:a=``}){if(!Et(Dt,n))throw e.error(`PatchElementsInvalidMode`,{mode:n});if(!t&&n!==`outer`&&n!==`replace`)throw e.error(`PatchElementsExpectedSelector`);if(!Et(Ot,r))throw e.error(`PatchElementsInvalidNamespace`,{namespace:r});let o={selector:t,mode:n,namespace:r,useViewTransition:i.trim()===`true`,elements:a};bt&&i?document.startViewTransition(()=>kt(e,o)):kt(e,o)}});var kt=({error:e},{selector:t,mode:n,namespace:r,elements:i})=>{let a=i.replace(/<svg(\s[^>]*>|>)([\s\S]*?)<\/svg>/gim,``),o=/<\/html>/.test(a),s=/<\/head>/.test(a),c=/<\/body>/.test(a),l=r===`svg`?`svg`:r===`mathml`?`math`:``,u=l?`<${l}>${i}</${l}>`:i,d=new DOMParser().parseFromString(o||s||c?i:`<body><template>${u}</template></body>`,`text/html`),f=document.createDocumentFragment();if(o)f.appendChild(d.documentElement);else if(s&&c)f.appendChild(d.head),f.appendChild(d.body);else if(s)f.appendChild(d.head);else if(c)f.appendChild(d.body);else if(l){let e=d.querySelector(`template`).content.querySelector(l);for(let t of e.childNodes)f.appendChild(t)}else f=d.querySelector(`template`).content;if(!t&&(n===`outer`||n===`replace`))for(let t of f.children){let r;if(t instanceof HTMLHtmlElement)r=document.documentElement;else if(t instanceof HTMLBodyElement)r=document.body;else if(t instanceof HTMLHeadElement)r=document.head;else if(r=document.getElementById(t.id),!r){console.warn(e(`PatchElementsNoTargetsFound`),{element:{id:t.id}});continue}Nt(n,t,[r])}else{let r=document.querySelectorAll(t);if(!r.length){console.warn(e(`PatchElementsNoTargetsFound`),{selector:t});return}Nt(n,f,r)}},At=new WeakSet;for(let e of document.querySelectorAll(`script`))At.add(e);var jt=e=>{let t=e instanceof HTMLScriptElement?[e]:e.querySelectorAll(`script`);for(let e of t)if(!At.has(e)){let t=document.createElement(`script`);for(let{name:n,value:r}of e.attributes)t.setAttribute(n,r);t.text=e.text,e.replaceWith(t),At.add(t)}},Mt=(e,t,n)=>{for(let r of e){let e=t.cloneNode(!0);jt(e),r[n](e)}},Nt=(e,t,n)=>{switch(e){case`remove`:for(let e of n)e.remove();break;case`outer`:case`inner`:for(let r of n)Bt(r,t.cloneNode(!0),e),jt(r);break;case`replace`:Mt(n,t,`replaceWith`);break;case`prepend`:case`append`:case`before`:case`after`:Mt(n,t,e)}},j=new Map,Pt=new Set,Ft=new Map,It=new Set,Lt=document.createElement(`div`);Lt.hidden=!0;var Rt=je(`ignore-morph`),zt=`[${Rt}]`,Bt=(e,t,n=`outer`)=>{if(Ee(e)&&Ee(t)&&e.hasAttribute(Rt)&&t.hasAttribute(Rt)||e.parentElement?.closest(zt))return;let r=document.createElement(`div`);r.append(t),document.body.insertAdjacentElement(`afterend`,Lt);let i=e.querySelectorAll(`[id]`);for(let{id:e,tagName:t}of i)Ft.has(e)?It.add(e):Ft.set(e,t);e instanceof Element&&e.id&&(Ft.has(e.id)?It.add(e.id):Ft.set(e.id,e.tagName)),Pt.clear();let a=r.querySelectorAll(`[id]`);for(let{id:e,tagName:t}of a)Pt.has(e)?It.add(e):Ft.get(e)===t&&Pt.add(e);for(let e of It)Pt.delete(e);Ft.clear(),It.clear(),j.clear();let o=n===`outer`?e.parentElement:e;Jt(o,i),Jt(r,a),Vt(o,r,n===`outer`?e:null,e.nextSibling),Lt.remove()},Vt=(e,t,n=null,r=null)=>{e instanceof HTMLTemplateElement&&t instanceof HTMLTemplateElement&&(e=e.content,t=t.content),n??=e.firstChild;for(let i of t.childNodes){if(n&&n!==r){let e=Ht(i,n,r);if(e){if(e!==n){let t=n;for(;t&&t!==e;){let e=t;t=t.nextSibling,Wt(e)}}qt(e,i),n=e.nextSibling;continue}}if(i instanceof Element&&Pt.has(i.id)){let t=document.getElementById(i.id),r=t;for(;r=r.parentNode;){let e=j.get(r);e&&(e.delete(i.id),e.size||j.delete(r))}Gt(e,t,n),qt(t,i),n=t.nextSibling;continue}if(j.has(i)){let t=i.namespaceURI,r=i.tagName,a=t&&t!==`http://www.w3.org/1999/xhtml`?document.createElementNS(t,r):document.createElement(r);e.insertBefore(a,n),qt(a,i),n=a.nextSibling}else{let t=document.importNode(i,!0);e.insertBefore(t,n),n=t.nextSibling}}for(;n&&n!==r;){let e=n;n=n.nextSibling,Wt(e)}},Ht=(e,t,n)=>{let r=null,i=e.nextSibling,a=0,o=0,s=j.get(e)?.size||0,c=t;for(;c&&c!==n;){if(Ut(c,e)){let t=!1,n=j.get(c),i=j.get(e);if(i&&n){for(let e of n)if(i.has(e)){t=!0;break}}if(t)return c;if(!r&&!j.has(c)){if(!s)return c;r=c}}if(o+=j.get(c)?.size||0,o>s)break;r===null&&i&&Ut(c,i)&&(a++,i=i.nextSibling,a>=2&&(r=void 0)),c=c.nextSibling}return r||null},Ut=(e,t)=>e.nodeType===t.nodeType&&e.tagName===t.tagName&&(!e.id||e.id===t.id),Wt=e=>{j.has(e)?Gt(Lt,e,null):e.parentNode?.removeChild(e)},Gt=Wt.call.bind(Lt.moveBefore??Lt.insertBefore),Kt=je(`preserve-attr`),qt=(e,t)=>{let n=t.nodeType;if(n===1){let n=e,r=t,i=n.hasAttribute(`data-scope-children`);if(n.hasAttribute(Rt)&&r.hasAttribute(Rt))return e;n instanceof HTMLInputElement&&r instanceof HTMLInputElement&&r.type!==`file`?r.getAttribute(`value`)!==n.getAttribute(`value`)&&(n.value=r.getAttribute(`value`)??``):n instanceof HTMLTextAreaElement&&r instanceof HTMLTextAreaElement&&(r.value!==n.value&&(n.value=r.value),n.firstChild&&n.firstChild.nodeValue!==r.value&&(n.firstChild.nodeValue=r.value));let a=(t.getAttribute(Kt)??``).split(` `);for(let{name:e,value:t}of r.attributes)n.getAttribute(e)!==t&&!a.includes(e)&&n.setAttribute(e,t);for(let e=n.attributes.length-1;e>=0;e--){let{name:t}=n.attributes[e];!r.hasAttribute(t)&&!a.includes(t)&&n.removeAttribute(t)}i&&!n.hasAttribute(`data-scope-children`)&&n.setAttribute(`data-scope-children`,``),n.isEqualNode(r)||Vt(n,r),i&&n.dispatchEvent(new CustomEvent(`datastar:scope-children`,{bubbles:!1}))}return(n===8||n===3)&&e.nodeValue!==t.nodeValue&&(e.nodeValue=t.nodeValue),e},Jt=(e,t)=>{for(let n of t)if(Pt.has(n.id)){let t=n;for(;t&&t!==e;){let e=j.get(t);e||(e=new Set,j.set(t,e)),e.add(n.id),t=t.parentElement}}};He({name:`datastar-patch-signals`,apply({error:e},{signals:t,onlyIfMissing:n}){if(t){let e=n?.trim()===`true`;xe(ke(t),{ifMissing:e})}else throw e(`PatchSignalsExpectedSignals`)}});var Yt=`/_assets`;function Xt(e){let t=e.trim().replace(/\/+$/,``);return t?t.startsWith(`http://`)||t.startsWith(`https://`)||t.startsWith(`/`)?t:`/${t}`:Yt}function Zt(e,t=Yt){let n=Xt(t),r=e.replace(/^\/+/,``);return r?`${n}/${r}`:n}function Qt(e,t=Yt){let n=Xt(t);return e===n||e.startsWith(`${n}/`)}function $t(e,t){if(t.startsWith(`http://`)||t.startsWith(`https://`)){if(!Qt(e))return e;let n=e.slice(Yt.length).replace(/^\/+/,``),r=t.replace(/\/+$/,``);return n?`${r}/${n}`:r}return Qt(e,t)||!Qt(e)?e:Zt(e.slice(Yt.length).replace(/^\/+/,``),t)}function en(){return document.documentElement.dataset.sitePathPrefix||``}function tn(){return document.documentElement.dataset.assetBasePath||Yt}function nn(t){return Qt(t)?$t(t,tn()):e(t,en())}function rn(e){if(typeof e==`string`){if(/^https?:\/\//.test(e)){let t=new URL(e);return t.origin===window.location.origin?(t.pathname=nn(t.pathname),t.toString()):e}return nn(e)}if(e instanceof URL){if(e.origin!==window.location.origin)return e;let t=new URL(e.toString());return t.pathname=nn(t.pathname),t}let t=new URL(e.url);return t.origin===window.location.origin?(t.pathname=nn(t.pathname),new Request(t.toString(),e)):e}function an(){let e=globalThis.fetch;if(e.__jantPrefixed)return;let t=(t,n)=>e(rn(t),n);t.__jantPrefixed=!0,globalThis.fetch=t}var M=null,on=0,N=!1,sn=null,cn=null,ln=0;function P(e){return!isFinite(e)||e<0?`0:00`:`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function F(e){return e.querySelector(`audio.media-audio-el`)}function un(e){return e.querySelector(`[data-audio-range]`)}function dn(e){return e.querySelector(`[data-audio-waveform]`)}function fn(e,t){let n=`${(t*100).toFixed(1)}%`;e.style.background=`linear-gradient(to right, var(--site-text-primary) ${n}, transparent ${n})`}var I=new WeakMap,pn=new WeakSet;async function mn(e,t){let n=await(await fetch(e)).arrayBuffer(),r=new AudioContext;try{let e=(await r.decodeAudioData(n)).getChannelData(0),i=Math.max(1,Math.floor(e.length/t)),a=Array(t);for(let n=0;n<t;n++){let t=0,r=n*i,o=Math.min(r+i,e.length);for(let n=r;n<o;n++){let r=Math.abs(e[n]);r>t&&(t=r)}a[n]=t}let o=0;for(let e of a)e>o&&(o=e);if(o>0)for(let e=0;e<t;e++)a[e]/=o;return a}finally{await r.close()}}function hn(e=document){let t=e.querySelectorAll(`[data-audio-peaks]`),n=[];for(let e of t){let t=e.dataset.audioPeaks;if(!t)continue;let r=e.closest(`.media-audio-card`);if(!(!r||I.has(r)))try{let e=JSON.parse(t);if(!Array.isArray(e))continue;I.set(r,e),r.classList.add(`has-waveform`),n.push(r)}catch{}}n.length>0&&requestAnimationFrame(()=>{for(let e of n)_n(e,0)})}async function gn(e){if(I.has(e)||pn.has(e))return;pn.add(e);let t=e.querySelector(`audio.media-audio-el source`),n=dn(e);if(!t?.src||!n)return;let r=n.getBoundingClientRect().width,i=Math.max(20,Math.floor(r/3));try{let n=await mn(t.src,i);I.set(e,n),e.classList.add(`has-waveform`);let r=F(e),a=r?.duration??0;_n(e,r&&isFinite(a)&&a>0?r.currentTime/a:0)}catch{}}function _n(e,t){let n=I.get(e),r=dn(e);if(!n||!r)return;let i=window.devicePixelRatio||1,a=r.getBoundingClientRect(),o=Math.round(a.width*i),s=Math.round(a.height*i);if(o===0||s===0)return;(r.width!==o||r.height!==s)&&(r.width=o,r.height=s);let c=r.getContext(`2d`);if(!c)return;c.clearRect(0,0,o,s);let l=n.length,u=o/l,d=Math.max(1,Math.round(u*.6)),f=Math.round(2*i),p=s*.85,m=getComputedStyle(r).getPropertyValue(`--site-text-primary`).trim()||`#000`;for(let e=0;e<l;e++){let r=Math.round(e*u+(u-d)/2),a=Math.max(f,Math.round(n[e]*p)),o=Math.round((s-a)/2);c.globalAlpha=(e+.5)/l<=t?.9:.2,c.fillStyle=m;let h=Math.min(d/2,i);c.beginPath(),c.roundRect(r,o,d,a,h),c.fill()}c.globalAlpha=1}function vn(e,t){let{currentTime:n,duration:r}=t,i=isFinite(r)&&r>0,a=i?n/r:0;if(!N){let t=un(e);t&&i&&(t.value=String(Math.round(a*1e3)),fn(t,a)),I.has(e)&&_n(e,a);let o=e.querySelector(`[data-audio-time]`);o&&(o.textContent=i?`${P(n)} / ${P(r)}`:P(n))}}function yn(){if(!M)return;let e=F(M);!e||e.paused||(vn(M,e),on=requestAnimationFrame(yn))}function bn(){if(M){let e=F(M);e&&!e.paused&&e.pause(),M.classList.remove(`is-playing`),M=null}cancelAnimationFrame(on)}async function xn(e){let t=F(e);if(t)if(M&&M!==e&&bn(),t.paused){M=e,e.classList.add(`is-playing`);try{await t.play()}catch{e.classList.remove(`is-playing`),M=null;return}on=requestAnimationFrame(yn),gn(e)}else t.pause(),e.classList.remove(`is-playing`),cancelAnimationFrame(on),M=null}function Sn(e){let t=e.closest(`.media-audio-card`);if(!t)return;let n=F(t);if(!n)return;let r=Number(e.value)/1e3,i=n.duration;isFinite(i)&&i>0&&(n.currentTime=r*i)}function Cn(e,t){let n=e.getBoundingClientRect();ln=Math.max(0,Math.min(1,(t.clientX-n.left)/n.width));let r=e.closest(`.media-audio-card`);if(!r)return;_n(r,ln);let i=F(r),a=r.querySelector(`[data-audio-time]`);if(i&&a){let e=i.duration;isFinite(e)&&e>0&&(a.textContent=`${P(ln*e)} / ${P(e)}`)}}async function wn(e){let t=e.closest(`.media-audio-card`);if(!t)return;let n=F(t);if(n)if(n.paused){M&&M!==t&&bn(),M=t,t.classList.add(`is-playing`);try{await n.play()}catch{t.classList.remove(`is-playing`),M=null;return}let e=n.duration;isFinite(e)&&e>0&&(n.currentTime=ln*e),on=requestAnimationFrame(yn),gn(t)}else{let e=n.duration;isFinite(e)&&e>0&&(n.currentTime=ln*e)}}document.addEventListener(`pointerdown`,e=>{let t=e.target;t.matches(`[data-audio-range]`)?(N=!0,sn=t):t.matches(`[data-audio-waveform]`)&&(N=!0,cn=t,Cn(t,e))},!0),document.addEventListener(`pointermove`,e=>{N&&cn&&Cn(cn,e)},!0),document.addEventListener(`pointerup`,()=>{N&&(sn?(Sn(sn),sn=null):cn&&=(wn(cn),null)),N=!1},!0),document.addEventListener(`pointercancel`,()=>{sn=null,cn=null,N=!1},!0),document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-audio-play]`);if(!t)return;e.preventDefault();let n=t.closest(`.media-audio-card`);n&&xn(n)}),document.addEventListener(`input`,e=>{let t=e.target;if(!t.matches(`[data-audio-range]`))return;let n=t.closest(`.media-audio-card`);if(!n)return;let r=F(n);if(!r)return;let i=Number(t.value)/1e3;fn(t,i);let a=r.duration,o=n.querySelector(`[data-audio-time]`);o&&isFinite(a)&&a>0&&(o.textContent=`${P(i*a)} / ${P(a)}`)},!0),document.addEventListener(`ended`,e=>{let t=e.target;if(!t.closest)return;let n=t.closest(`.media-audio-card`);if(!n)return;n.classList.remove(`is-playing`),cancelAnimationFrame(on),M=null;let r=un(n);r&&(r.value=`0`,fn(r,0)),I.has(n)&&_n(n,0);let i=n.querySelector(`[data-audio-time]`);i&&(i.textContent=`0:00`)},!0),document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,()=>hn()):hn();var Tn=`jant:media-lightbox-toggle`,En=`jant:media-video-playback-intent`,Dn=new Set;function On(e){let t=e?.trim();return!!t&&Dn.has(t)}function kn(e,t){let n=e?.trim();n&&(t?Dn.add(n):Dn.delete(n),document.dispatchEvent(new CustomEvent(En,{detail:{mediaId:n,paused:t}})))}var An=`75% 0px`,jn=.6,Mn=.25,Nn=160,L=new Set,Pn=new WeakMap,Fn=new WeakSet,R=null,z=null,B=null,In=!1,Ln=null,Rn=null,zn=null;function Bn(e){return e.length===0?null:[...e].sort((e,t)=>t.visibleArea===e.visibleArea?e.centerDistance===t.centerDistance?t.intersectionRatio-e.intersectionRatio:e.centerDistance-t.centerDistance:t.visibleArea-e.visibleArea)[0]??null}function Vn(){return{x:(globalThis.innerWidth||document.documentElement.clientWidth||0)/2,y:(globalThis.innerHeight||document.documentElement.clientHeight||0)/2}}function Hn(e){return Pn.get(e)}function Un(e){return On(e)}function Wn(e){return Un(e.dataset.feedVideoId)}function Gn(e){return e.closest(`.media-video-wrap`)?.querySelector(`[data-feed-video-mute-toggle]`)??null}function Kn(e){let t=Gn(e);if(!t)return;let n=B!==e||e.muted;t.dataset.muted=n?`true`:`false`,t.setAttribute(`aria-label`,n?`Play with sound`:`Mute video`)}function qn(){for(let e of L)Kn(e)}function Jn(e){if(Fn.has(e))return;let t=e.dataset.videoSrc;t&&(e.getAttribute(`src`)!==t&&(e.src=t),e.load(),Fn.add(e))}function V(e){e?.pause()}function Yn(e){if(Wn(e)){V(e);return}Jn(e),e.muted=B!==e,e.playsInline=!0,e.loop=!0,Kn(e),e.play().catch(()=>{})}function Xn(){for(let e of L)e.isConnected||(Rn?.unobserve(e),zn?.unobserve(e),L.delete(e),e===R&&(R=null),e===z&&(z=null),e===B&&(B=null))}function Zn(){if(Ln=null,Xn(),document.hidden||In){V(R);return}let e=[];for(let t of L){let n=Hn(t);n&&(Wn(t)||n.intersectionRatio<jn||e.push({video:t,...n}))}let t=null;if(z?.isConnected&&!Wn(z)){let e=Hn(z);e&&e.intersectionRatio>Mn?t=z:(!e||e.intersectionRatio<=Mn)&&(z=null)}else z&&Wn(z)&&(z=null);if(t||=Bn(e)?.video??null,!t){let e=R?Hn(R):void 0;if(R&&!Wn(R)&&e&&e.intersectionRatio>Mn)return;V(R),R=null;return}t!==R&&(V(R),R=t),Yn(t);for(let e of L)e!==t&&(V(e),Kn(e))}function Qn(){Ln!==null&&globalThis.clearTimeout(Ln),Ln=globalThis.setTimeout(Zn,Nn)}function $n(e){let t=Vn();for(let n of e){let e=n.target,r=n.boundingClientRect,i=r.left+r.width/2,a=r.top+r.height/2,o=n.intersectionRect.width*n.intersectionRect.height,s=Math.hypot(i-t.x,a-t.y);Pn.set(e,{intersectionRatio:n.intersectionRatio,visibleArea:o,centerDistance:s})}Qn()}function er(e){for(let t of e)t.isIntersecting&&Jn(t.target)}function tr(){Rn&&zn||globalThis.IntersectionObserver!==void 0&&(Rn=new globalThis.IntersectionObserver($n,{threshold:[0,Mn,jn,1]}),zn=new globalThis.IntersectionObserver(er,{rootMargin:An,threshold:0}))}function nr(e){L.has(e)||(tr(),!(!Rn||!zn)&&(L.add(e),Rn.observe(e),zn.observe(e),Gn(e)?.addEventListener(`click`,rr),Kn(e)))}function rr(e){e.preventDefault(),e.stopPropagation();let t=e.currentTarget.closest(`.media-video-wrap`)?.querySelector(`[data-feed-short-video]`);if(!t)return;let n=t.dataset.feedVideoId?.trim();n&&kn(n,!1),z=t,B!==t||t.muted?(B&&B!==t&&(B.muted=!0),B=t,R!==t&&(V(R),R=t),Yn(t)):(B=null,t.muted=!0,Kn(t)),qn(),Qn()}function ir(e=document){let t=e.querySelectorAll(`[data-feed-short-video]`);for(let e of t)nr(e);Qn()}document.addEventListener(Tn,e=>{In=e.detail?.open===!0,In&&V(R),Qn()}),document.addEventListener(En,e=>{let t=e.detail,n=t?.mediaId?.trim();if(!(!n||typeof t.paused!=`boolean`)){for(let e of L)e.dataset.feedVideoId?.trim()===n&&t.paused&&(V(e),R===e&&(R=null),z===e&&(z=null));Qn()}}),document.addEventListener(`visibilitychange`,()=>{document.hidden&&V(R),Qn()}),document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,()=>ir(),{once:!0}):queueMicrotask(()=>ir());var ar=4;function or(e){return e.querySelector(`[data-post-media]`)}function sr(e){let t=or(e);if(!t)return;let{scrollLeft:n,scrollWidth:r,clientWidth:i}=t;e.classList.toggle(`can-scroll-start`,n>ar),e.classList.toggle(`can-scroll-end`,n+i<r-ar)}function cr(e){return Math.max(160,Math.round(e.clientWidth*.85))}function lr(e,t){e.scrollBy({left:t*cr(e),behavior:`smooth`})}function ur(e){if(e.dataset.scrollHintReady===`1`)return;let t=or(e);t&&(e.dataset.scrollHintReady=`1`,sr(e),t.addEventListener(`scroll`,()=>sr(e),{passive:!0}),e.querySelector(`.media-gallery-nav-prev`)?.addEventListener(`click`,()=>lr(t,-1)),e.querySelector(`.media-gallery-nav-next`)?.addEventListener(`click`,()=>lr(t,1)),t.addEventListener(`keydown`,e=>{if(e.target===t)switch(e.key){case`ArrowRight`:e.preventDefault(),lr(t,1);break;case`ArrowLeft`:e.preventDefault(),lr(t,-1);break;case`Home`:e.preventDefault(),t.scrollTo({left:0,behavior:`smooth`});break;case`End`:e.preventDefault(),t.scrollTo({left:t.scrollWidth,behavior:`smooth`});break}}))}function dr(){document.querySelectorAll(`.media-gallery-scroll-wrap`).forEach(ur)}var fr=new globalThis.MutationObserver(e=>{for(let t of e)for(let e of t.addedNodes)e instanceof HTMLElement&&(e.matches(`.media-gallery-scroll-wrap`)&&ur(e),e.querySelectorAll(`.media-gallery-scroll-wrap`).forEach(ur))});document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,()=>{dr(),fr.observe(document.body,{childList:!0,subtree:!0})}):(dr(),fr.observe(document.body,{childList:!0,subtree:!0}));var pr=new Set([`email`,`number`,`password`,`search`,`tel`,`text`,`url`]);function mr(e){return e instanceof HTMLInputElement?!e.disabled&&!e.readOnly&&pr.has(e.type.toLowerCase()):!1}function hr(e){return e.querySelector(`button[type="submit"]:not([disabled]), input[type="submit"]:not([disabled]), button:not([type]):not([disabled])`)}function gr(e){return e.querySelector(`button[type="submit"], input[type="submit"], button:not([type])`)!==null}document.addEventListener(`keydown`,e=>{if(e.key!==`Enter`||e.defaultPrevented||e.isComposing||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey||!mr(e.target))return;let t=e.target.form;if(!(t instanceof HTMLFormElement)||!t.hasAttribute(`data-on:submit__prevent`))return;let n=hr(t);if(!(!n&&gr(t))){if(e.preventDefault(),n){t.requestSubmit(n);return}t.requestSubmit()}});var _r=globalThis,vr=_r.ShadowRoot&&(_r.ShadyCSS===void 0||_r.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,yr=Symbol(),br=new WeakMap,xr=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==yr)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(vr&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=br.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&br.set(t,e))}return e}toString(){return this.cssText}},Sr=e=>new xr(typeof e==`string`?e:e+``,void 0,yr),Cr=(e,t)=>{if(vr)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=_r.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},wr=vr?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return Sr(t)})(e):e,{is:Tr,defineProperty:Er,getOwnPropertyDescriptor:Dr,getOwnPropertyNames:Or,getOwnPropertySymbols:kr,getPrototypeOf:Ar}=Object,jr=globalThis,Mr=jr.trustedTypes,Nr=Mr?Mr.emptyScript:``,Pr=jr.reactiveElementPolyfillSupport,Fr=(e,t)=>e,Ir={toAttribute(e,t){switch(t){case Boolean:e=e?Nr:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},Lr=(e,t)=>!Tr(e,t),Rr={attribute:!0,type:String,converter:Ir,reflect:!1,useDefault:!1,hasChanged:Lr};Symbol.metadata??=Symbol(`metadata`),jr.litPropertyMetadata??=new WeakMap;var zr=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=Rr){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&Er(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=Dr(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??Rr}static _$Ei(){if(this.hasOwnProperty(Fr(`elementProperties`)))return;let e=Ar(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Fr(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Fr(`properties`))){let e=this.properties,t=[...Or(e),...kr(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(wr(e))}else e!==void 0&&t.push(wr(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Cr(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?Ir:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?Ir:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??Lr)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};zr.elementStyles=[],zr.shadowRootOptions={mode:`open`},zr[Fr(`elementProperties`)]=new Map,zr[Fr(`finalized`)]=new Map,Pr?.({ReactiveElement:zr}),(jr.reactiveElementVersions??=[]).push(`2.1.2`);var Br=globalThis,Vr=e=>e,Hr=Br.trustedTypes,Ur=Hr?Hr.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,Wr=`$lit$`,H=`lit$${Math.random().toFixed(9).slice(2)}$`,Gr=`?`+H,Kr=`<${Gr}>`,U=document,qr=()=>U.createComment(``),Jr=e=>e===null||typeof e!=`object`&&typeof e!=`function`,Yr=Array.isArray,Xr=e=>Yr(e)||typeof e?.[Symbol.iterator]==`function`,Zr=`[
|
|
8
|
-
\f\r]`,Qr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,$r=/-->/g,ei=/>/g,W=RegExp(`>|${Zr}(?:([^\\s"'>=/]+)(${Zr}*=${Zr}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),ti=/'/g,ni=/"/g,ri=/^(?:script|style|textarea|title)$/i,ii=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),G=ii(1),ai=ii(2),K=Symbol.for(`lit-noChange`),q=Symbol.for(`lit-nothing`),oi=new WeakMap,J=U.createTreeWalker(U,129);function si(e,t){if(!Yr(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return Ur===void 0?t:Ur.createHTML(t)}var ci=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=Qr;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===Qr?c[1]===`!--`?o=$r:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=W):(ri.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=W):o=ei:o===W?c[0]===`>`?(o=i??Qr,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?W:c[3]===`"`?ni:ti):o===ni||o===ti?o=W:o===$r||o===ei?o=Qr:(o=W,i=void 0);let d=o===W&&e[t+1].startsWith(`/>`)?` `:``;a+=o===Qr?n+Kr:l>=0?(r.push(s),n.slice(0,l)+Wr+n.slice(l)+H+d):n+H+(l===-2?t:d)}return[si(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},li=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=ci(t,n);if(this.el=e.createElement(l,r),J.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=J.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(Wr)){let t=u[o++],n=i.getAttribute(e).split(H),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?pi:r[1]===`?`?mi:r[1]===`@`?hi:fi}),i.removeAttribute(e)}else e.startsWith(H)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(ri.test(i.tagName)){let e=i.textContent.split(H),t=e.length-1;if(t>0){i.textContent=Hr?Hr.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],qr()),J.nextNode(),c.push({type:2,index:++a});i.append(e[t],qr())}}}else if(i.nodeType===8)if(i.data===Gr)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(H,e+1))!==-1;)c.push({type:7,index:a}),e+=H.length-1}a++}}static createElement(e,t){let n=U.createElement(`template`);return n.innerHTML=e,n}};function Y(e,t,n=e,r){if(t===K)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=Jr(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=Y(e,i._$AS(e,t.values),i,r)),t}var ui=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??U).importNode(t,!0);J.currentNode=r;let i=J.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new di(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new gi(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=J.nextNode(),a++)}return J.currentNode=U,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},di=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=q,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=Y(this,e,t),Jr(e)?e===q||e==null||e===``?(this._$AH!==q&&this._$AR(),this._$AH=q):e!==this._$AH&&e!==K&&this._(e):e._$litType$===void 0?e.nodeType===void 0?Xr(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==q&&Jr(this._$AH)?this._$AA.nextSibling.data=e:this.T(U.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=li.createElement(si(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new ui(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=oi.get(e.strings);return t===void 0&&oi.set(e.strings,t=new li(e)),t}k(t){Yr(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(qr()),this.O(qr()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=Vr(e).nextSibling;Vr(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},fi=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=q,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=q}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=Y(this,e,t,0),a=!Jr(e)||e!==this._$AH&&e!==K,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=Y(this,r[n+o],t,o),s===K&&(s=this._$AH[o]),a||=!Jr(s)||s!==this._$AH[o],s===q?e=q:e!==q&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===q?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},pi=class extends fi{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===q?void 0:e}},mi=class extends fi{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==q)}},hi=class extends fi{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=Y(this,e,t,0)??q)===K)return;let n=this._$AH,r=e===q&&n!==q||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==q&&(n===q||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},gi=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){Y(this,e)}},_i={M:Wr,P:H,A:Gr,C:1,L:ci,R:ui,D:Xr,V:Y,I:di,H:fi,N:mi,U:hi,B:pi,F:gi},vi=Br.litHtmlPolyfillSupport;vi?.(li,di),(Br.litHtmlVersions??=[]).push(`3.3.2`);var yi=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new di(t.insertBefore(qr(),e),e,void 0,n??{})}return i._$AI(e),i},bi=globalThis,X=class extends zr{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=yi(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return K}};X._$litElement$=!0,X.finalized=!0,bi.litElementHydrateSupport?.({LitElement:X});var xi=bi.litElementPolyfillSupport;xi?.({LitElement:X}),(bi.litElementVersions??=[]).push(`4.2.2`);function Si(e){if(!(!Number.isFinite(e)||!e||e<=0))return Math.ceil(e)}function Ci(e){if(!e.mimeType?.startsWith(`video/`)||!Number.isFinite(e.durationSeconds)||!e.durationSeconds||e.durationSeconds<=0||e.durationSeconds>15)return!1;let t=e.size;return!(typeof t==`number`&&t>12582912)}var wi=640,Ti=8,Ei=72,Di=16,Oi=704,ki=.9,Ai=.85;function Z(e){if(!(!Number.isFinite(e)||!e||e<=0))return e}function ji(){return{width:globalThis.innerWidth||document.documentElement.clientWidth||0,height:globalThis.innerHeight||document.documentElement.clientHeight||0}}function Mi(e,t){let n=e<=wi?Ti:Ei;return{width:Math.max(0,e-n*2),height:Math.max(0,t-Di*2)}}function Ni(e,t,n){let r=Z(e?.width),i=Z(e?.height);if(!r||!i)return null;let a=Mi(t,n);if(a.width<=0||a.height<=0)return null;let o=Math.min(a.width/r,a.height/i);return{width:Math.max(1,Math.round(r*o)),height:Math.max(1,Math.round(i*o))}}function Pi(e,t,n){if(!e||e.mimeType?.startsWith(`video/`)||!Z(e.width)||!Z(e.height)||t<=0||n<=0)return!1;let r=Z(e.width),i=Z(e.height);if(!r||!i)return!1;let a=t<=wi,o=Mi(t,n),s=o.width,c=o.height;if(s<=0||c<=0)return!1;let l=r/i,u=Math.min(s,c*l);return l<ki&&u<(a?s:Math.min(s,Oi))*Ai}var Fi=class extends X{static properties={_images:{state:!0},_currentIndex:{state:!0},_open:{state:!0},_viewportWidth:{state:!0},_viewportHeight:{state:!0},_videoCurrentTime:{state:!0},_videoDuration:{state:!0},_videoMuted:{state:!0},_videoPaused:{state:!0},_imageZoomed:{state:!0}};createRenderRoot(){return this.innerHTML=``,this}constructor(){super();let e=ji();this._images=[],this._currentIndex=0,this._open=!1,this._viewportWidth=e.width,this._viewportHeight=e.height,this._videoCurrentTime=0,this._videoDuration=0,this._videoMuted=!1,this._videoPaused=!1,this._imageZoomed=!1}connectedCallback(){super.connectedCallback(),document.addEventListener(`click`,this.#e),window.addEventListener(`resize`,this.#l),this.#u()}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`click`,this.#e),window.removeEventListener(`resize`,this.#l)}open(e,t){this.#u(),this.#d(),this._images=e,this._currentIndex=Math.max(0,Math.min(t,e.length-1)),this.#m(this._images[this._currentIndex]),this._imageZoomed=!1,this._open=!0,document.dispatchEvent(new CustomEvent(Tn,{detail:{open:!0}})),this.updateComplete.then(()=>{this.querySelector(`.media-lightbox`)?.showModal(),this.#f()})}close(){this.#d(),this.querySelector(`.media-lightbox`)?.close(),this._open=!1,document.dispatchEvent(new CustomEvent(Tn,{detail:{open:!1}}))}#e=e=>{let t=e.target,n=t.closest(`[data-post-media] a[data-lightbox-index]`);if(n){let t=n.closest(`[data-lightbox-group]`);if(!t)return;e.preventDefault();let r=parseInt(n.dataset.lightboxIndex??`0`,10);try{let e=JSON.parse(t.dataset.lightboxGroup??`[]`);e.length>0&&this.open(e,r)}catch{}return}let r=t.closest(`[data-post-body] img`);if(r){e.preventDefault();let t=r.closest(`[data-post-body]`);if(!t)return;let n=Array.from(t.querySelectorAll(`img`)),i=n.map(e=>({url:e.src,alt:e.alt||``,width:Z(e.naturalWidth||Number(e.getAttribute(`width`))),height:Z(e.naturalHeight||Number(e.getAttribute(`height`)))})),a=n.indexOf(r);i.length>0&&this.open(i,Math.max(0,a))}};#t(){this._images.length<=1||(this.#d(),this._imageZoomed=!1,this._currentIndex=(this._currentIndex-1+this._images.length)%this._images.length)}#n(){this._images.length<=1||(this.#d(),this._imageZoomed=!1,this._currentIndex=(this._currentIndex+1)%this._images.length)}#r=e=>{let t=this._images[this._currentIndex];Pi(t,this._viewportWidth,this._viewportHeight)&&(e.stopPropagation(),this._imageZoomed=!this._imageZoomed)};#i=e=>{let t=e,n=e.target;if(t.key===`Escape`){e.preventDefault(),this.close();return}if(n instanceof HTMLInputElement||n instanceof HTMLButtonElement||n instanceof HTMLVideoElement)return;if(!this._images[this._currentIndex]?.mimeType?.startsWith(`video/`)){t.key===`ArrowLeft`?(e.preventDefault(),this.#t()):t.key===`ArrowRight`&&(e.preventDefault(),this.#n());return}let r=this.querySelector(`.media-lightbox-video`);r&&this.#a(t,r)};#a(e,t){let n=Number.isFinite(t.duration)&&t.duration>0?t.duration:null,r=e=>{let r=n==null?Math.max(0,e):Math.max(0,Math.min(e,n));t.currentTime=r,this._videoCurrentTime=r},i=e.key,a=i.toLowerCase();if(i===` `||a===`k`)e.preventDefault(),this.#x(t);else if(i===`ArrowLeft`)e.preventDefault(),r(t.currentTime-2);else if(i===`ArrowRight`)e.preventDefault(),r(t.currentTime+2);else if(i===`Home`)e.preventDefault(),r(0);else if(i===`End`)n!=null&&(e.preventDefault(),r(n));else if(i.length===1&&i>=`0`&&i<=`9`)n!=null&&(e.preventDefault(),r(Number(i)/10*n));else if(i===`ArrowUp`)e.preventDefault(),t.volume=Math.min(1,t.volume+.05);else if(i===`ArrowDown`)e.preventDefault(),t.volume=Math.max(0,t.volume-.05);else if(a===`m`){e.preventDefault();let n=!t.muted;t.muted=n,this._videoMuted=n}else a===`f`&&(e.preventDefault(),this.#o(t))}#o(e){let t=document,n=e;if(document.fullscreenElement??t.webkitFullscreenElement){document.exitFullscreen?document.exitFullscreen().catch(()=>{}):t.webkitExitFullscreen?.();return}e.requestFullscreen?e.requestFullscreen().catch(()=>{}):n.webkitRequestFullscreen?n.webkitRequestFullscreen():n.webkitEnterFullscreen&&n.webkitEnterFullscreen()}#s=e=>{let t=e.target;(t===e.currentTarget||t.classList.contains(`media-lightbox-content`)||t.classList.contains(`media-lightbox-stage`))&&this.close()};#c=()=>{this.#d(),this._open&&document.dispatchEvent(new CustomEvent(Tn,{detail:{open:!1}})),this._open=!1};#l=()=>{this.#u()};#u(){let e=ji();e.width===this._viewportWidth&&e.height===this._viewportHeight||(this._viewportWidth=e.width,this._viewportHeight=e.height)}#d(){this.querySelector(`.media-lightbox-video`)?.pause()}#f(){this.querySelector(`.media-lightbox-content`)?.focus()}#p=()=>{this.querySelector(`.media-lightbox-content`)?.focus({preventScroll:!0})};#m(e){this._videoCurrentTime=0,this._videoDuration=e?.durationSeconds&&e.durationSeconds>0?e.durationSeconds:0,this._videoMuted=!1,this._videoPaused=On(e?.id)}#h(){let e=this._images[this._currentIndex];if(!Ci(e)){this.#m(e);return}let t=this.querySelector(`.media-lightbox-video`);if(t){if(t.currentTime=0,t.muted=this._videoMuted,this._videoPaused=On(e.id),this._videoPaused){t.pause();return}t.play().catch(()=>{this._videoPaused=!0})}}#g=e=>{let t=e.currentTarget;Number.isFinite(t.duration)&&t.duration>0&&(this._videoDuration=t.duration),this._videoCurrentTime=t.currentTime,t.muted=this._videoMuted};#_=e=>{let t=e.currentTarget;this._videoCurrentTime=t.currentTime,Number.isFinite(t.duration)&&t.duration>0&&(this._videoDuration=t.duration)};#v=()=>{this._videoPaused=!1};#y=()=>{this._videoPaused=!0};#b(e){let t=this._images[this._currentIndex],n=t?.id?.trim();!n||!Ci(t)||kn(n,e)}#x(e){if(e.paused){this._videoPaused=!1,this.#b(!1),e.play().catch(()=>{this._videoPaused=!0,this.#b(!0)});return}e.pause(),this._videoPaused=!0,this.#b(!0)}#S=()=>{let e=this.querySelector(`.media-lightbox-video`);e&&this.#x(e)};#C=e=>{let t=e.currentTarget,n=this.querySelector(`.media-lightbox-video`),r=Number.parseFloat(t.value);!n||!Number.isFinite(r)||r<0||(n.currentTime=r,this._videoCurrentTime=r)};#w=()=>{this._videoMuted=!this._videoMuted;let e=this.querySelector(`.media-lightbox-video`);e&&(e.muted=this._videoMuted)};updated(e){if(super.updated(e),!this._open||!e.has(`_currentIndex`)&&!e.has(`_open`)&&!e.has(`_imageZoomed`))return;let t=this.querySelector(`.media-lightbox-stage`);t&&(t.scrollTop=0,t.scrollLeft=0,(e.has(`_currentIndex`)||e.has(`_open`))&&(this.#h(),this.#f()))}render(){if(!this._open)return q;let e=this._images[this._currentIndex],t=this._images.length>1,n=e?.mimeType?.startsWith(`video/`),r=Ci(e),i=Pi(e,this._viewportWidth,this._viewportHeight),a=i&&this._imageZoomed,o=r?Ni(e,this._viewportWidth,this._viewportHeight):null,s=r&&!!o&&o.height>o.width,c=o?`--media-lightbox-short-width:${o.width}px;--media-lightbox-short-height:${o.height}px;`:q,l=this._videoDuration>0?this._videoDuration:e?.durationSeconds??1,u=Math.min(this._videoCurrentTime,l),d=l>0?u/l*100:0;return G`
|
|
9
|
-
<dialog
|
|
10
|
-
class=${`media-lightbox${r?` media-lightbox-short`:``}`}
|
|
11
|
-
@keydown=${this.#i}
|
|
12
|
-
@click=${this.#s}
|
|
13
|
-
@close=${this.#c}
|
|
14
|
-
>
|
|
15
|
-
<div class="media-lightbox-content" tabindex="-1">
|
|
16
|
-
<button
|
|
17
|
-
type="button"
|
|
18
|
-
class="media-lightbox-close"
|
|
19
|
-
@click=${()=>this.close()}
|
|
20
|
-
aria-label="Close"
|
|
21
|
-
>
|
|
22
|
-
<svg
|
|
23
|
-
width="20"
|
|
24
|
-
height="20"
|
|
25
|
-
viewBox="0 0 24 24"
|
|
26
|
-
fill="none"
|
|
27
|
-
stroke="currentColor"
|
|
28
|
-
stroke-width="2"
|
|
29
|
-
stroke-linecap="round"
|
|
30
|
-
stroke-linejoin="round"
|
|
31
|
-
>
|
|
32
|
-
<path d="M18 6 6 18" />
|
|
33
|
-
<path d="m6 6 12 12" />
|
|
34
|
-
</svg>
|
|
35
|
-
</button>
|
|
36
|
-
|
|
37
|
-
${t?G`<div class="media-lightbox-counter">
|
|
38
|
-
${this._currentIndex+1} / ${this._images.length}
|
|
39
|
-
</div>`:q}
|
|
40
|
-
<div
|
|
41
|
-
class=${`media-lightbox-stage${a?` media-lightbox-stage-scroll`:``}`}
|
|
42
|
-
>
|
|
43
|
-
${n?r?G`<div
|
|
44
|
-
class=${`media-lightbox-short-frame${o?` media-lightbox-short-frame-contained`:``}${s?` media-lightbox-short-frame-portrait`:` media-lightbox-short-frame-landscape`}`}
|
|
45
|
-
style=${c}
|
|
46
|
-
>
|
|
47
|
-
<div class="media-lightbox-short-viewport">
|
|
48
|
-
<video
|
|
49
|
-
class="media-lightbox-video media-lightbox-video-short"
|
|
50
|
-
src=${e?.url??``}
|
|
51
|
-
poster=${e?.posterUrl??``}
|
|
52
|
-
?autoplay=${!this._videoPaused}
|
|
53
|
-
playsinline
|
|
54
|
-
loop
|
|
55
|
-
?muted=${this._videoMuted}
|
|
56
|
-
@click=${this.#S}
|
|
57
|
-
@focus=${this.#p}
|
|
58
|
-
@loadedmetadata=${this.#g}
|
|
59
|
-
@timeupdate=${this.#_}
|
|
60
|
-
@play=${this.#v}
|
|
61
|
-
@pause=${this.#y}
|
|
62
|
-
></video>
|
|
63
|
-
</div>
|
|
64
|
-
<div
|
|
65
|
-
class=${`media-lightbox-short-controls${s?` media-lightbox-short-controls-portrait`:``}`}
|
|
66
|
-
>
|
|
67
|
-
<button
|
|
68
|
-
type="button"
|
|
69
|
-
class="media-lightbox-short-playback"
|
|
70
|
-
@click=${this.#S}
|
|
71
|
-
aria-label=${this._videoPaused?`Play video`:`Pause video`}
|
|
72
|
-
>
|
|
73
|
-
<svg
|
|
74
|
-
width="16"
|
|
75
|
-
height="16"
|
|
76
|
-
viewBox="0 0 24 24"
|
|
77
|
-
fill="currentColor"
|
|
78
|
-
aria-hidden="true"
|
|
79
|
-
>
|
|
80
|
-
${this._videoPaused?ai`<path d="M8 5v14l11-7z" />`:ai`<path d="M6 5h4v14H6zM14 5h4v14h-4z" />`}
|
|
81
|
-
</svg>
|
|
82
|
-
</button>
|
|
83
|
-
<input
|
|
84
|
-
class="media-lightbox-short-progress"
|
|
85
|
-
type="range"
|
|
86
|
-
min="0"
|
|
87
|
-
max=${l}
|
|
88
|
-
step="0.01"
|
|
89
|
-
.value=${String(u)}
|
|
90
|
-
style=${`--media-progress:${d}%`}
|
|
91
|
-
aria-label="Video progress"
|
|
92
|
-
@input=${this.#C}
|
|
93
|
-
/>
|
|
94
|
-
<button
|
|
95
|
-
type="button"
|
|
96
|
-
class="media-lightbox-short-mute"
|
|
97
|
-
@click=${this.#w}
|
|
98
|
-
aria-label=${this._videoMuted?`Unmute video`:`Mute video`}
|
|
99
|
-
>
|
|
100
|
-
<svg
|
|
101
|
-
width="16"
|
|
102
|
-
height="16"
|
|
103
|
-
viewBox="0 0 48 48"
|
|
104
|
-
fill="currentColor"
|
|
105
|
-
color="#fff"
|
|
106
|
-
aria-hidden="true"
|
|
107
|
-
>
|
|
108
|
-
${this._videoMuted?ai`
|
|
109
|
-
<path d="M1.5 13.3c-.8 0-1.5.7-1.5 1.5v18.4c0 .8.7 1.5 1.5 1.5h8.7l12.9 12.9c.9.9 2.5.3 2.5-1v-9.8c0-.4-.2-.8-.4-1.1l-22-22c-.3-.3-.7-.4-1.1-.4h-.6zm46.8 31.4-5.5-5.5C44.9 36.6 48 31.4 48 24c0-11.4-7.2-17.4-7.2-17.4-.6-.6-1.6-.6-2.2 0L37.2 8c-.6.6-.6 1.6 0 2.2 0 0 5.7 5 5.7 13.8 0 5.4-2.1 9.3-3.8 11.6L35.5 32c1.1-1.7 2.3-4.4 2.3-8 0-6.8-4.1-10.3-4.1-10.3-.6-.6-1.6-.6-2.2 0l-1.4 1.4c-.6.6-.6 1.6 0 2.2 0 0 2.6 2 2.6 6.7 0 1.8-.4 3.2-.9 4.3L25.5 22V1.4c0-1.3-1.6-1.9-2.5-1L13.5 10 3.3-.3c-.6-.6-1.5-.6-2.1 0L-.2 1.1c-.6.6-.6 1.5 0 2.1L4 7.6l26.8 26.8 13.9 13.9c.6.6 1.5.6 2.1 0l1.4-1.4c.7-.6.7-1.6.1-2.2z" />
|
|
110
|
-
`:ai`
|
|
111
|
-
<path d="M1.5 13.3c-.8 0-1.5.7-1.5 1.5v18.4c0 .8.7 1.5 1.5 1.5h8.7l12.9 12.9c.9.9 2.5.3 2.5-1V1.4c0-1.3-1.6-1.9-2.5-1L10.2 13.3H1.5z" />
|
|
112
|
-
<path d="M30.1 15.9c-.6-.6-.6-1.6 0-2.2l1.4-1.4c.6-.6 1.6-.6 2.2 0 0 0 4.1 3.5 4.1 11.7s-4.1 11.7-4.1 11.7c-.6.6-1.6.6-2.2 0l-1.4-1.4c-.6-.6-.6-1.6 0-2.2 0 0 2.6-2 2.6-8.1s-2.6-8.1-2.6-8.1z" />
|
|
113
|
-
<path d="M37.2 8c-.6-.6-.6-1.6 0-2.2l1.4-1.4c.6-.6 1.6-.6 2.2 0 0 0 5.7 5.1 5.7 19.6s-5.7 19.6-5.7 19.6c-.6.6-1.6.6-2.2 0L37.2 42c-.6-.6-.6-1.6 0-2.2 0 0 4.3-4.4 4.3-15.8S37.2 8 37.2 8z" />
|
|
114
|
-
`}
|
|
115
|
-
</svg>
|
|
116
|
-
</button>
|
|
117
|
-
</div>
|
|
118
|
-
</div>`:G`<video
|
|
119
|
-
class="media-lightbox-video"
|
|
120
|
-
src=${e?.url??``}
|
|
121
|
-
poster=${e?.posterUrl??``}
|
|
122
|
-
controls
|
|
123
|
-
autoplay
|
|
124
|
-
playsinline
|
|
125
|
-
@focus=${this.#p}
|
|
126
|
-
></video>`:G`<img
|
|
127
|
-
class=${`media-lightbox-img${i?` media-lightbox-img-zoomable`:``}${a?` media-lightbox-img-scroll`:``}`}
|
|
128
|
-
src=${e?.url??``}
|
|
129
|
-
alt=${e?.alt??``}
|
|
130
|
-
@click=${this.#r}
|
|
131
|
-
/>`}
|
|
132
|
-
</div>
|
|
133
|
-
${t?G`
|
|
134
|
-
<button
|
|
135
|
-
type="button"
|
|
136
|
-
class="media-lightbox-nav media-lightbox-nav-prev"
|
|
137
|
-
@click=${()=>this.#t()}
|
|
138
|
-
aria-label="Previous"
|
|
139
|
-
>
|
|
140
|
-
<svg
|
|
141
|
-
width="24"
|
|
142
|
-
height="24"
|
|
143
|
-
viewBox="0 0 24 24"
|
|
144
|
-
fill="none"
|
|
145
|
-
stroke="currentColor"
|
|
146
|
-
stroke-width="2"
|
|
147
|
-
stroke-linecap="round"
|
|
148
|
-
stroke-linejoin="round"
|
|
149
|
-
>
|
|
150
|
-
<path d="m15 18-6-6 6-6" />
|
|
151
|
-
</svg>
|
|
152
|
-
</button>
|
|
153
|
-
<button
|
|
154
|
-
type="button"
|
|
155
|
-
class="media-lightbox-nav media-lightbox-nav-next"
|
|
156
|
-
@click=${()=>this.#n()}
|
|
157
|
-
aria-label="Next"
|
|
158
|
-
>
|
|
159
|
-
<svg
|
|
160
|
-
width="24"
|
|
161
|
-
height="24"
|
|
162
|
-
viewBox="0 0 24 24"
|
|
163
|
-
fill="none"
|
|
164
|
-
stroke="currentColor"
|
|
165
|
-
stroke-width="2"
|
|
166
|
-
stroke-linecap="round"
|
|
167
|
-
stroke-linejoin="round"
|
|
168
|
-
>
|
|
169
|
-
<path d="m9 18 6-6-6-6" />
|
|
170
|
-
</svg>
|
|
171
|
-
</button>
|
|
172
|
-
`:q}
|
|
173
|
-
</div>
|
|
174
|
-
</dialog>
|
|
175
|
-
`}};customElements.define(`jant-media-lightbox`,Fi);var Ii={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Li=e=>(...t)=>({_$litDirective$:e,values:t}),Ri=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},zi=class extends Ri{constructor(e){if(super(e),this.it=q,e.type!==Ii.CHILD)throw Error(this.constructor.directiveName+`() can only be used in child bindings`)}render(e){if(e===q||e==null)return this._t=void 0,this.it=e;if(e===K)return e;if(typeof e!=`string`)throw Error(this.constructor.directiveName+`() called with a non-string value`);if(e===this.it)return this._t;this.it=e;let t=[e];return t.raw=t,this._t={_$litType$:this.constructor.resultType,strings:t,values:[]}}};zi.directiveName=`unsafeHTML`,zi.resultType=1;var Bi=Li(zi),Vi=`jant.pendingToast`;function Hi(){let e=[...document.querySelectorAll(`dialog[open]`)];try{let t=e.filter(e=>e.matches(`:modal`));if(t.length>0)return t}catch{}return e}function Ui(e){let t=Hi().at(-1)??document.body;e.parentElement!==t&&t.appendChild(e)}function Wi(e){Ui(e),typeof e.showPopover==`function`&&(e.matches(`:popover-open`)&&document.querySelector(`dialog[open]`)&&e.hidePopover(),e.matches(`:popover-open`)||e.showPopover())}function Gi(){let e=document.getElementById(`toast-container`);if(e)return e;if(!document.body)return null;let t=document.createElement(`div`);return t.id=`toast-container`,t.className=`toast-container`,t.setAttribute(`popover`,`manual`),t.setAttribute(`aria-live`,`polite`),t.setAttribute(`aria-relevant`,`additions text`),document.body.appendChild(t),t}function Ki(){try{return globalThis.sessionStorage!==void 0}catch{return!1}}function qi(){if(!Ki())return null;let e=globalThis.sessionStorage.getItem(Vi);if(!e)return null;try{let t=JSON.parse(e);return typeof t.message!=`string`||t.type!==`success`&&t.type!==`error`||t.action&&(typeof t.action.label!=`string`||typeof t.action.href!=`string`)?(globalThis.sessionStorage.removeItem(Vi),null):{message:t.message,type:t.type,action:t.action}}catch{return globalThis.sessionStorage.removeItem(Vi),null}}var Ji={success:`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><path d="m9 11 3 3L22 4"/></svg>`,error:`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6M9 9l6 6"/></svg>`},Yi=3e3,Xi=5e3,Zi=1e3;function Qi(e,t,n,r){e.innerHTML=Ji[t];let i=document.createElement(`span`);if(i.textContent=n,e.appendChild(i),r){let t=document.createElement(`a`);t.href=r.href,t.className=`toast-action`,t.textContent=r.label,e.appendChild(t)}}function $i(e,t){let n=t,r=0,i=null,a=!1,o=!1,s=()=>{i!==null&&(clearTimeout(i),i=null,n=Math.max(n-(Date.now()-r),Zi))},c=()=>{i===null&&(r=Date.now(),i=setTimeout(()=>{e.classList.add(`toast-out`),e.addEventListener(`animationend`,()=>e.remove())},n))},l=()=>{a||o?s():c()};e.addEventListener(`pointerenter`,()=>{a=!0,l()}),e.addEventListener(`pointerleave`,()=>{a=!1,l()}),e.addEventListener(`focusin`,()=>{o=!0,l()}),e.addEventListener(`focusout`,()=>{o=!1,l()}),c()}function Q(e,t=`success`){if(!e)return;let n=Gi();if(!n)return;Wi(n);let r=document.createElement(`div`);r.className=`toast toast-${t}`,Qi(r,t,e),n.appendChild(r),$i(r,Yi)}function ea(e,t,n=`success`){if(!e)return;let r=Gi();if(!r)return;Wi(r);let i=document.createElement(`div`);i.className=`toast toast-${n}`,Qi(i,n,e,t),r.appendChild(i),$i(i,Xi)}function ta(e,t,n=`success`){let r=Gi();if(!r)return null;Wi(r);let i=document.createElement(`div`);return i.className=`toast toast-${n}`,i.id=`toast-${e}`,Qi(i,n,t),r.appendChild(i),i}function na(e,t){let n=document.getElementById(`toast-${e}`);if(!n)return;let r=n.querySelector(`span`);r&&(r.textContent=t)}function ra(e,t,n=`success`){let r=document.getElementById(`toast-${e}`);if(!r){Q(t,n);return}r.className=`toast toast-${n}`,r.replaceChildren(),Qi(r,n,t),$i(r,Yi)}function ia(e,t=`success`,n){!e||!Ki()||globalThis.sessionStorage.setItem(Vi,JSON.stringify({message:e,type:t,action:n}))}function aa(){let e=qi();return!e||!Gi()?!1:(globalThis.sessionStorage.removeItem(Vi),e.action?ea(e.message,e.action,e.type):Q(e.message,e.type),!0)}function oa(){document.addEventListener(`close`,e=>{let t=e.target;if(!(t instanceof HTMLDialogElement))return;let n=document.getElementById(`toast-container`);!n||!t.contains(n)||Wi(n)},!0)}function sa(){let e=()=>{aa()};if(document.readyState===`loading`){document.addEventListener(`DOMContentLoaded`,e,{once:!0});return}e()}oa(),sa();var ca=class extends X{static properties={_open:{state:!0},_html:{state:!0},_loading:{state:!0},_copied:{state:!0},_linkCopied:{state:!0}};#e=``;#t=``;#n=null;#r=null;#i=null;createRenderRoot(){return this.innerHTML=``,this}constructor(){super(),this._open=!1,this._html=``,this._loading=!1,this._copied=!1,this._linkCopied=!1}connectedCallback(){super.connectedCallback(),document.addEventListener(`click`,this.#s),this.#a()}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`click`,this.#s)}async#a(){let e=document.querySelector(`.text-preview-dialog--ssr`),t=document.getElementById(`text-preview-autoopen`);if(!(!e&&!t))try{let n=JSON.parse(t?.textContent||`{}`);t?.remove();let r=e?.querySelector(`.text-preview-body`),i=r?.innerHTML||``,a=r?.innerText||``;this.#t=n.shareHref?`${globalThis.location.origin}${n.shareHref}`:``,this.#r=n.postHref||null,this.#i=n.postTitle||null,this._html=i,this.#e=a,this._open=!0,document.body.style.overflow=`hidden`,await this.updateComplete,this.requestUpdate(),this.querySelector(`.text-preview-dialog`)?.showModal(),this.querySelector(`.text-preview-content`)?.focus(),e?.remove(),n.mediaId&&this.#o(n.mediaId)}catch{e?.remove()}}async#o(e){try{let t=await fetch(`/api/media/${e}/content`);if(!t.ok||!(t.headers.get(`Content-Type`)||``).includes(`application/json`))return;let n=await t.json();n.markdown&&(this.#e=n.markdown,this.requestUpdate())}catch{}}#s=e=>{let t=e.target.closest(`[data-text-preview-id]`);if(!t)return;e.preventDefault();let n=t.dataset.textPreviewId;n&&this.#c(n,t.dataset.textPreviewHref??``,t)};async#c(e,t,n){this.#n=n,this.#t=t?`${globalThis.location.origin}${t}`:``,this._loading=!0,this._open=!0,document.body.style.overflow=`hidden`,await this.updateComplete,this.querySelector(`.text-preview-dialog`)?.showModal(),this.querySelector(`.text-preview-content`)?.focus();try{let t=await fetch(`/api/media/${e}/content`);if(!t.ok)throw Error(`Fetch failed`);if((t.headers.get(`Content-Type`)||``).includes(`application/json`)){let e=await t.json();this._html=e.html??``,this.#e=e.markdown??``}else{let e=await t.text();this._html=e;let n=document.createElement(`div`);n.innerHTML=e,this.#e=n.innerText.trim()}}catch{this._html=`<p>Failed to load content.</p>`,this.#e=``}finally{this._loading=!1}}#l(){if(this.querySelector(`.text-preview-dialog`)?.close(),document.body.style.overflow=``,this._open=!1,this._html=``,this.#e=``,this.#t=``,this._copied=!1,this._linkCopied=!1,this.#r){let e=this.#r;this.#r=null,globalThis.history.replaceState(null,``,e),this.#i&&=(document.title=this.#i,null)}let e=this.#n;this.#n=null,queueMicrotask(()=>{e?.isConnected&&e.focus()})}async#u(){if(this.#e)try{await globalThis.navigator.clipboard.writeText(this.#e),this._copied=!0,Q(`Copied.`),setTimeout(()=>{this._copied=!1},2e3)}catch{Q(`Could not copy.`,`error`)}}async#d(){if(this.#t)try{await globalThis.navigator.clipboard.writeText(this.#t),this._linkCopied=!0,Q(`Link copied.`),setTimeout(()=>{this._linkCopied=!1},2e3)}catch{Q(`Could not copy.`,`error`)}}#f=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),this.#l())};render(){return this._open?G`
|
|
176
|
-
<dialog
|
|
177
|
-
class="text-preview-dialog"
|
|
178
|
-
@cancel=${e=>{e.preventDefault(),this.#l()}}
|
|
179
|
-
@keydown=${this.#f}
|
|
180
|
-
@click=${e=>{e.target.tagName===`DIALOG`&&this.#l()}}
|
|
181
|
-
>
|
|
182
|
-
<div class="text-preview-content" tabindex="-1">
|
|
183
|
-
<div class="text-preview-toolbar">
|
|
184
|
-
<button
|
|
185
|
-
type="button"
|
|
186
|
-
class="text-preview-btn"
|
|
187
|
-
@click=${()=>this.#l()}
|
|
188
|
-
title="Close"
|
|
189
|
-
aria-label="Close"
|
|
190
|
-
>
|
|
191
|
-
<svg
|
|
192
|
-
width="16"
|
|
193
|
-
height="16"
|
|
194
|
-
viewBox="0 0 24 24"
|
|
195
|
-
fill="none"
|
|
196
|
-
stroke="currentColor"
|
|
197
|
-
stroke-width="2"
|
|
198
|
-
stroke-linecap="round"
|
|
199
|
-
stroke-linejoin="round"
|
|
200
|
-
>
|
|
201
|
-
<path d="M18 6 6 18M6 6l12 12" />
|
|
202
|
-
</svg>
|
|
203
|
-
</button>
|
|
204
|
-
<div class="text-preview-toolbar-actions">
|
|
205
|
-
${this.#t?G`<button
|
|
206
|
-
type="button"
|
|
207
|
-
class="text-preview-btn"
|
|
208
|
-
@click=${()=>this.#d()}
|
|
209
|
-
?disabled=${this._loading}
|
|
210
|
-
title="Copy link"
|
|
211
|
-
aria-label="Copy shareable link"
|
|
212
|
-
>
|
|
213
|
-
${this._linkCopied?G`<svg
|
|
214
|
-
width="16"
|
|
215
|
-
height="16"
|
|
216
|
-
viewBox="0 0 24 24"
|
|
217
|
-
fill="none"
|
|
218
|
-
stroke="currentColor"
|
|
219
|
-
stroke-width="2"
|
|
220
|
-
stroke-linecap="round"
|
|
221
|
-
stroke-linejoin="round"
|
|
222
|
-
>
|
|
223
|
-
<path d="M20 6 9 17l-5-5" />
|
|
224
|
-
</svg>`:G`<svg
|
|
225
|
-
width="16"
|
|
226
|
-
height="16"
|
|
227
|
-
viewBox="0 0 24 24"
|
|
228
|
-
fill="none"
|
|
229
|
-
stroke="currentColor"
|
|
230
|
-
stroke-width="2"
|
|
231
|
-
stroke-linecap="round"
|
|
232
|
-
stroke-linejoin="round"
|
|
233
|
-
>
|
|
234
|
-
<path
|
|
235
|
-
d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"
|
|
236
|
-
/>
|
|
237
|
-
<path
|
|
238
|
-
d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"
|
|
239
|
-
/>
|
|
240
|
-
</svg>`}
|
|
241
|
-
</button>`:q}
|
|
242
|
-
<button
|
|
243
|
-
type="button"
|
|
244
|
-
class="text-preview-btn"
|
|
245
|
-
@click=${()=>this.#u()}
|
|
246
|
-
?disabled=${this._loading||!this.#e}
|
|
247
|
-
title="Copy text"
|
|
248
|
-
aria-label="Copy text content"
|
|
249
|
-
>
|
|
250
|
-
${this._copied?G`<svg
|
|
251
|
-
width="16"
|
|
252
|
-
height="16"
|
|
253
|
-
viewBox="0 0 24 24"
|
|
254
|
-
fill="none"
|
|
255
|
-
stroke="currentColor"
|
|
256
|
-
stroke-width="2"
|
|
257
|
-
stroke-linecap="round"
|
|
258
|
-
stroke-linejoin="round"
|
|
259
|
-
>
|
|
260
|
-
<path d="M20 6 9 17l-5-5" />
|
|
261
|
-
</svg>`:G`<svg
|
|
262
|
-
width="16"
|
|
263
|
-
height="16"
|
|
264
|
-
viewBox="0 0 24 24"
|
|
265
|
-
fill="none"
|
|
266
|
-
stroke="currentColor"
|
|
267
|
-
stroke-width="2"
|
|
268
|
-
stroke-linecap="round"
|
|
269
|
-
stroke-linejoin="round"
|
|
270
|
-
>
|
|
271
|
-
<rect width="14" height="14" x="8" y="8" rx="2" />
|
|
272
|
-
<path
|
|
273
|
-
d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"
|
|
274
|
-
/>
|
|
275
|
-
</svg>`}
|
|
276
|
-
</button>
|
|
277
|
-
</div>
|
|
278
|
-
</div>
|
|
279
|
-
${this._loading?G`<div class="text-preview-loading">
|
|
280
|
-
<svg
|
|
281
|
-
class="animate-spin size-5"
|
|
282
|
-
viewBox="0 0 24 24"
|
|
283
|
-
fill="none"
|
|
284
|
-
stroke="currentColor"
|
|
285
|
-
stroke-width="2"
|
|
286
|
-
stroke-linecap="round"
|
|
287
|
-
stroke-linejoin="round"
|
|
288
|
-
>
|
|
289
|
-
<path d="M21 12a9 9 0 1 1-6.219-8.56" />
|
|
290
|
-
</svg>
|
|
291
|
-
</div>`:G`<div class="text-preview-body prose">
|
|
292
|
-
${Bi(this._html)}
|
|
293
|
-
</div>`}
|
|
294
|
-
</div>
|
|
295
|
-
</dialog>
|
|
296
|
-
`:q}};customElements.define(`jant-text-preview`,ca);var la=8;function ua(e,t){let n=Number.parseFloat(e);return Number.isFinite(n)?n:t}function da(e){return ua(getComputedStyle(e).getPropertyValue(`--site-thread-context-max-height`).trim(),240)}function fa(e){if(e.dataset.threadContextToggleBound===`1`)return;e.dataset.threadContextToggleBound=`1`;let t=e.previousElementSibling;if(!(t instanceof HTMLElement)||t.dataset.threadContext===void 0)return;let n=e.querySelector(`.thread-context-toggle-label`),r=e.dataset.labelMore??`Show more`,i=e.dataset.labelLess??`Show less`,a=!1,o=t=>{e.setAttribute(`aria-expanded`,t?`true`:`false`),n&&(n.textContent=t?i:r)},s=()=>Array.from(t.querySelectorAll(`img`)).every(e=>e.complete),c=()=>{if(a)return;let n=da(t),r=t.scrollHeight>n+la;t.dataset.collapsed===void 0&&(t.dataset.collapsed=``),r?(e.hidden=!1,o(!1)):s()&&(e.hidden=!0)};if(c(),t.querySelectorAll(`img`).forEach(e=>{e.complete||(e.addEventListener(`load`,c,{once:!0}),e.addEventListener(`error`,c,{once:!0}))}),`ResizeObserver`in globalThis){let e=0;new globalThis.ResizeObserver(()=>{cancelAnimationFrame(e),e=requestAnimationFrame(c)}).observe(t)}let l=()=>{let e=!1,n=r=>{e||r&&r.propertyName!==`max-height`||(e=!0,t.removeEventListener(`transitionend`,n),t.dataset.collapsed===void 0&&(t.style.maxHeight=``))};t.addEventListener(`transitionend`,n),window.setTimeout(n,600)};e.addEventListener(`click`,()=>{a=!0,t.dataset.collapsed===void 0?(t.style.maxHeight=`${t.scrollHeight}px`,t.offsetHeight,requestAnimationFrame(()=>{t.dataset.collapsed=``,t.style.maxHeight=``}),o(!1)):(t.style.maxHeight=`${t.scrollHeight}px`,t.offsetHeight,delete t.dataset.collapsed,o(!0)),l()})}function pa(e=document){e.querySelectorAll(`[data-thread-context-toggle]`).forEach(fa)}function ma(e){let t=e.closest(`.thread-group-detail`);return t?t.querySelector(`.thread-detail-item`)===e:!1}function ha(){return globalThis.location.hash===`#continue`}function ga(e=document){let t=e.querySelector(`[data-post-current]`);if(!(t instanceof HTMLElement))return;let n=ha();if(globalThis.location.hash&&!n)return;let r=n?`auto`:`smooth`,i=ma(t);requestAnimationFrame(()=>{i&&!n||t.scrollIntoView({behavior:r,block:`start`})})}document.addEventListener(`DOMContentLoaded`,()=>{pa(document),ga(document)});function _a(e){return e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey}function va(e,t){t&&(e.textContent=t)}function ya(e){let t=e.target;if(!(t instanceof globalThis.Element))return;let n=t.closest(`a[data-note-expand]`);if(!n||_a(e))return;let r=n.closest(`article[data-post]`),i=r?.querySelector(`[data-post-body]`);if(!(!r||!i||!i.querySelector(`[data-note-break]`))){if(e.preventDefault(),i.hasAttribute(`data-note-clamp`)){i.removeAttribute(`data-note-clamp`),n.setAttribute(`aria-expanded`,`true`),va(n,n.dataset.labelLess);return}i.setAttribute(`data-note-clamp`,``),n.setAttribute(`aria-expanded`,`false`),va(n,n.dataset.labelMore),r.getBoundingClientRect().top<0&&typeof r.scrollIntoView==`function`&&r.scrollIntoView({block:`start`})}}document.addEventListener(`click`,ya),document.querySelectorAll(`.archive-chip-dropdown`).forEach(e=>{let t=e.querySelector(`:scope > button`),n=e.querySelector(`:scope > [data-popover]`),r=n?n.querySelector(`[role="listbox"]`):null;if(!t||!n||!r)return;let i=Array.from(r.querySelectorAll(`[role="option"]`)),a=e.classList.contains(`archive-chip-media`),o=e.dataset.filterKey,s=new Set;a&&i.forEach(e=>{!e.dataset.navigate&&e.getAttribute(`aria-selected`)===`true`&&s.add(e.dataset.value)});let c=new Set(s),l=()=>{document.dispatchEvent(new CustomEvent(`basecoat:popover`,{detail:{source:e}})),n.setAttribute(`aria-hidden`,`false`),t.setAttribute(`aria-expanded`,`true`),a&&(c=new Set(s))},u=(e=!0)=>{if(n.getAttribute(`aria-hidden`)!==`true`&&(n.setAttribute(`aria-hidden`,`true`),t.setAttribute(`aria-expanded`,`false`),e&&t.focus(),a&&o&&(s.size!==c.size||[...s].some(e=>!c.has(e))))){let e=new URL(window.location.href),t=[...s];t.length>0?e.searchParams.set(o,t.join(`,`)):e.searchParams.delete(o),e.searchParams.delete(`hasMedia`),e.searchParams.delete(`page`),window.location.href=e.pathname+(e.search||``)}};t.addEventListener(`click`,e=>{e.target.closest(`.archive-chip-clear`)||(t.getAttribute(`aria-expanded`)===`true`?u():l())}),document.addEventListener(`click`,t=>{e.contains(t.target)||u(!1)}),document.addEventListener(`basecoat:popover`,t=>{t.detail.source!==e&&u(!1)}),r.addEventListener(`click`,e=>{let t=e.target.closest(`[role="option"]`);if(t){if(t.dataset.navigate){let e=t.dataset.value;typeof e==`string`&&e.startsWith(`/`)&&(window.location.href=e);return}if(a){let e=t.dataset.value;s.has(e)?(s.delete(e),t.removeAttribute(`aria-selected`)):(s.add(e),t.setAttribute(`aria-selected`,`true`))}else{let e=t.dataset.value;typeof e==`string`&&e.startsWith(`/`)&&(window.location.href=e)}}});let d=-1,f=e=>{d>-1&&i[d]&&i[d].classList.remove(`active`),d=e,d>-1&&i[d]&&(i[d].classList.add(`active`),i[d].scrollIntoView({block:`nearest`}))};r.addEventListener(`mousemove`,e=>{let t=e.target.closest(`[role="option"]`);if(t){let e=i.indexOf(t);e!==-1&&e!==d&&f(e)}}),r.addEventListener(`mouseleave`,()=>{f(-1)}),t.addEventListener(`keydown`,e=>{let t=n.getAttribute(`aria-hidden`)===`false`;if(e.key===`Escape`){t&&(e.preventDefault(),u());return}if(!t&&[`ArrowDown`,`ArrowUp`].includes(e.key)){e.preventDefault(),l();return}t&&(e.preventDefault(),e.key===`ArrowDown`?f(Math.min(d+1,i.length-1)):e.key===`ArrowUp`?f(Math.max(d-1,0)):e.key===`Enter`&&d>-1&&(i[d].click(),!a&&!i[d].dataset.navigate&&u()))})});var ba=new WeakMap,xa=new WeakMap;function Sa(e){let t=e.querySelector(`.site-header-more-btn`),n=e.querySelector(`.site-header-more-popover`);if(!t||!n||t.dataset.moreInitialized===`true`)return;t.dataset.moreInitialized=`true`;let r=new AbortController,i=r.signal;ba.set(t,r);function a(){n.setAttribute(`aria-hidden`,`false`),t.setAttribute(`aria-expanded`,`true`),document.dispatchEvent(new CustomEvent(`basecoat:popover`,{detail:{source:t.parentElement}}))}function o(e=!1){n.setAttribute(`aria-hidden`,`true`),t.setAttribute(`aria-expanded`,`false`),e&&t.focus()}t.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),t.getAttribute(`aria-expanded`)===`true`?o():a()},{signal:i}),document.addEventListener(`click`,e=>{e.target instanceof Node&&(t.parentElement?.contains(e.target)||o())},{signal:i}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&n.getAttribute(`aria-hidden`)===`false`&&o(!0)},{signal:i}),document.addEventListener(`basecoat:popover`,e=>{e.detail?.source!==t.parentElement&&o()},{signal:i})}var Ca=`jant:nav-fresh-visits`;function wa(){let e=document.createElement(`span`);return e.className=`site-header-link-fresh`,e.setAttribute(`aria-hidden`,`true`),e.textContent=`*`,e}function Ta(e){try{let t=JSON.parse(localStorage.getItem(Ca)||`{}`),n=location.pathname,r=e.querySelectorAll(`[data-fresh-at]`);for(let e of r){let r=new URL(e.href).pathname,i=parseInt(e.dataset.freshAt,10);if(r===n)t[r]=Math.floor(Date.now()/1e3);else{let n=t[r];if(!n||n<i){let t=e.querySelector(`svg`);e.insertBefore(wa(),t)}}}localStorage.setItem(Ca,JSON.stringify(t))}catch{}}function Ea(e=document){let t=e.querySelector(`.site-header-hamburger`),n=e.querySelector(`#site-nav-drawer`),r=e.querySelector(`.site-nav-drawer-backdrop`),i=n?.querySelector(`.site-nav-drawer-close`);if(Ta(e),Sa(e),!t||!n||!r||t.dataset.drawerInitialized===`true`)return;t.dataset.drawerInitialized=`true`;let a=new AbortController,o=a.signal;xa.set(t,a);function s(){n.setAttribute(`aria-hidden`,`false`),n.removeAttribute(`inert`),r.setAttribute(`aria-hidden`,`false`),t.setAttribute(`aria-expanded`,`true`),document.documentElement.classList.add(`drawer-open`);let e=n.querySelector(`.site-nav-drawer-close`)??n.querySelector(`a[href], button`);e&&e.focus()}function c(e=!0){n.setAttribute(`aria-hidden`,`true`),r.setAttribute(`aria-hidden`,`true`),t.setAttribute(`aria-expanded`,`false`),document.documentElement.classList.remove(`drawer-open`),n.addEventListener(`transitionend`,()=>{n.getAttribute(`aria-hidden`)===`true`&&n.setAttribute(`inert`,``)},{once:!0,signal:o}),e&&t.focus()}t.addEventListener(`click`,()=>{t.getAttribute(`aria-expanded`)===`true`?c():s()},{signal:o}),i?.addEventListener(`click`,()=>c(),{signal:o}),r.addEventListener(`click`,()=>c(),{signal:o}),n.addEventListener(`click`,e=>{e.target instanceof Element&&e.target.closest(`a[href]`)&&c(!1)},{signal:o}),n.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),c())},{signal:o})}function Da(e=document){for(let t of e.querySelectorAll(`.site-header-more-btn`))ba.get(t)?.abort(),ba.delete(t),delete t.dataset.moreInitialized;for(let t of e.querySelectorAll(`.site-header-hamburger`))xa.get(t)?.abort(),xa.delete(t),delete t.dataset.drawerInitialized;document.documentElement.classList.remove(`drawer-open`)}Ea();function Oa(e=document){e.querySelectorAll(`.collection-sort-menu`).forEach(e=>{if(e.dataset.collectionSortMenuInitialized===`true`)return;let t=e.querySelector(`:scope > .collection-sort-trigger`),n=e.querySelector(`:scope > [data-popover]`),r=n?.querySelector(`[data-collection-sort-options]`);if(!(t instanceof HTMLButtonElement)||!n||!r)return;let i=(e=!1)=>{n.getAttribute(`aria-hidden`)!==`true`&&(n.setAttribute(`aria-hidden`,`true`),t.setAttribute(`aria-expanded`,`false`),e&&t.focus())},a=()=>{document.dispatchEvent(new CustomEvent(`basecoat:popover`,{detail:{source:e}})),n.setAttribute(`aria-hidden`,`false`),t.setAttribute(`aria-expanded`,`true`)};t.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),t.getAttribute(`aria-expanded`)===`true`?i(!1):a()}),t.addEventListener(`keydown`,e=>{if(e.key===`Escape`){e.preventDefault(),i(!0);return}if(e.key===`ArrowDown`){e.preventDefault(),t.getAttribute(`aria-expanded`)!==`true`&&a();let n=r.querySelector(`a[href]`);n instanceof HTMLElement&&n.focus()}}),n.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),i(!0))}),document.addEventListener(`click`,t=>{t.target instanceof Node&&(e.contains(t.target)||i(!1))}),document.addEventListener(`basecoat:popover`,t=>{t.detail?.source!==e&&i(!1)}),e.dataset.collectionSortMenuInitialized=`true`})}Oa();var ka=[`[data-post-view] [data-page="post"] [data-post-body].post-detail-body`,`[data-timeline-item] article[data-post] > [data-post-body].prose`].join(`, `),Aa=`[data-post-view], [data-timeline-item]`,ja=`--jant-footnote-rail-enabled`,Ma=12,Na=160,Pa=.5,Fa=.5,$=new Map,Ia=!1;function La(e,t){return Number.isFinite(e)?e:t}function Ra(e,t){let n=Math.max(0,La(t,Ma)),r=[],i=0;for(let[t,a]of e.entries()){let e=Math.max(0,La(a.anchorTop,0)),o=Math.max(0,La(a.blockSize,0)),s=t===0?e:Math.max(e,i+n);r.push(s),i=s+o}return{offsets:r,blockSize:i}}function za(e){if(!e.startsWith(`#`)||e.length===1)return null;try{return decodeURIComponent(e.slice(1))}catch{return e.slice(1)}}function Ba(e,t){return(e.getAttribute(`role`)??``).split(/\s+/).includes(t)}function Va(e){let t=Array.from(e.children).filter(e=>e instanceof HTMLElement&&e.classList.contains(`footnote-endnotes`)&&Ba(e,`doc-endnotes`));if(t.length!==1)return null;let n=t[0];if(!n)return null;let r=Array.from(n.children).filter(e=>e instanceof globalThis.HTMLOListElement&&e.classList.contains(`footnote-list`));if(r.length!==1)return null;let i=r[0];if(!i)return null;let a=Array.from(i.children).filter(e=>e instanceof globalThis.HTMLLIElement&&e.classList.contains(`footnote`));if(a.length===0||a.length!==i.children.length)return null;let o=new Map;for(let e of a){if(!e.id||o.has(e.id)||document.getElementById(e.id)!==e)return null;o.set(e.id,e)}let s=new Map;for(let t of e.querySelectorAll(`a[role~="doc-noteref"][href^="#"]`)){let e=za(t.getAttribute(`href`)??``);e&&o.has(e)&&!s.has(e)&&s.set(e,t)}let c=[];for(let e of a){let t=s.get(e.id);if(!t)return null;c.push({reference:t,note:e})}return{section:n,list:i,pairs:c}}function Ha(e){return La((Array.isArray(e.contentBoxSize)?e.contentBoxSize[0]:e.contentBoxSize)?.inlineSize??e.contentRect.width,0)}function Ua(e){return`${Math.round(e*1e3)/1e3}px`}function Wa(e){e.body.classList.remove(`footnote-rail-measuring`,`footnote-rail-ready`),e.body.style.removeProperty(`min-block-size`),e.list.style.removeProperty(`--footnote-rail-block-size`);for(let{note:t}of e.pairs)t.style.removeProperty(`--footnote-rail-y`),t.style.removeProperty(`--footnote-rail-number`)}function Ga(e){let t=e.list.start;for(let{note:n}of e.pairs)n.hasAttribute(`value`)&&(t=n.value),n.style.setProperty(`--footnote-rail-number`,`"${t}"`),t+=1}function Ka(e){let t=Number.parseFloat(getComputedStyle(e).rowGap);return Number.isFinite(t)?t:Ma}function qa(e,t){return Math.max(0,t-e)<=Math.max(Na,e*Pa)+Fa}function Ja(e){if(e.correctedInitialHash)return;e.correctedInitialHash=!0;let t=za(globalThis.location.hash);if(!t)return;let n=e.pairs.find(({note:e})=>e.id===t)?.note;n&&requestAnimationFrame(()=>{e.body.classList.contains(`footnote-rail-ready`)&&n.scrollIntoView({behavior:`auto`,block:`nearest`})})}function Ya(e){return!Ia&&getComputedStyle(e).getPropertyValue(ja).trim()===`1`}function Xa(e){if(!e.body.isConnected){Qa(e);return}if(!Ya(e.body)){Wa(e);return}Wa(e),e.body.classList.add(`footnote-rail-measuring`),Ga(e);let t=e.body.getBoundingClientRect(),n=Math.max(0,t.height),r=e.pairs.map(({reference:e,note:n})=>({anchorTop:e.getBoundingClientRect().top-t.top,blockSize:n.getBoundingClientRect().height}));if(r.some(({blockSize:e})=>e<=Fa)){Wa(e);return}let i=Ra(r,Ka(e.list));if(!qa(n,i.blockSize)){Wa(e);return}for(let[t,{note:n}]of e.pairs.entries())n.style.setProperty(`--footnote-rail-y`,Ua(i.offsets[t]??0));e.list.style.setProperty(`--footnote-rail-block-size`,Ua(i.blockSize)),e.body.style.setProperty(`min-block-size`,Ua(Math.max(n,i.blockSize))),e.body.classList.remove(`footnote-rail-measuring`),e.body.classList.add(`footnote-rail-ready`),Ja(e)}function Za(e){e.rafId===0&&(e.rafId=requestAnimationFrame(()=>{e.rafId=0,Xa(e)}))}function Qa(e){e.rafId!==0&&cancelAnimationFrame(e.rafId),e.observer.disconnect(),e.abortController.abort(),Wa(e),$.delete(e.body)}function $a(e,t){return e.section===t.section&&e.list===t.list&&e.pairs.length===t.pairs.length&&e.pairs.every((e,n)=>e.note===t.pairs[n]?.note&&e.reference===t.pairs[n]?.reference)}function eo(e,t){if(!(`ResizeObserver`in globalThis))return null;let n=e.closest(Aa);if(!n)return null;let r=new AbortController,i=new globalThis.ResizeObserver(t=>{let r=$.get(e);if(!r)return;let i=!1;for(let e of t)if(e.target===n){let t=Ha(e);(r.containerInlineSize===null||Math.abs(r.containerInlineSize-t)>Fa)&&(r.containerInlineSize=t,i=!0)}else i=!0;i&&Za(r)}),a={body:e,container:n,...t,observer:i,abortController:r,rafId:0,containerInlineSize:null,correctedInitialHash:!1};i.observe(n);for(let n of e.children)n!==t.section&&i.observe(n);for(let t of e.querySelectorAll(`img`))t.complete||(t.addEventListener(`load`,()=>Za(a),{once:!0,signal:r.signal}),t.addEventListener(`error`,()=>Za(a),{once:!0,signal:r.signal}));return $.set(e,a),Za(a),a}function to(e){let t=[];return e instanceof globalThis.Element&&e.matches(ka)&&t.push(e),t.push(...e.querySelectorAll(ka)),t}function no(e=document){for(let e of $.values())e.body.isConnected||Qa(e);for(let t of to(e)){let e=Va(t),n=$.get(t);if(!e){n&&Qa(n);continue}if(n&&$a(n,e)){Za(n);continue}n&&Qa(n),eo(t,e)}}function ro(){for(let e of $.values())Za(e)}globalThis.addEventListener(`beforeprint`,()=>{Ia=!0;for(let e of $.values())Wa(e)}),globalThis.addEventListener(`afterprint`,()=>{Ia=!1,ro()}),document.fonts&&(document.fonts.ready.then(ro),document.fonts.addEventListener(`loadingdone`,ro)),document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,()=>no(document),{once:!0}):no(document),an(),document.documentElement.dataset.jantVersion=`0.6.16-31fe43de750ab168`;export{hn as C,ir as S,X as _,ia as a,G as b,Q as c,zi as d,Bi as f,Si as g,Ii as h,pa as i,ea as l,Ri as m,Da as n,ra as o,Li as p,Ea as r,ta as s,no as t,na as u,q as v,nn as w,_i as x,K as y};
|