diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c825df16..6a577e11 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ permissions: env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" NODE_VERSION: "26" - PNPM_VERSION: "11.13.1" + PNPM_VERSION: "11.19.0" concurrency: group: ci-${{ github.ref }} @@ -44,7 +44,7 @@ jobs: CLICKCLACK_POSTGRES_TEST_DSN: postgres://clickclack:clickclack@127.0.0.1:5432/clickclack_test?sslmode=disable steps: - name: Check out - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false @@ -86,7 +86,7 @@ jobs: timeout-minutes: 15 steps: - name: Check out - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false @@ -136,11 +136,11 @@ jobs: - typescript runs-on: ubuntu-latest container: - image: mcr.microsoft.com/playwright:v1.61.1-noble + image: mcr.microsoft.com/playwright:v1.62.1-noble timeout-minutes: 20 steps: - name: Check out - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false @@ -179,7 +179,7 @@ jobs: timeout-minutes: 20 steps: - name: Check out - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false diff --git a/.github/workflows/crabbox-hydrate.yml b/.github/workflows/crabbox-hydrate.yml index 3fb3dc83..fb066df5 100644 --- a/.github/workflows/crabbox-hydrate.yml +++ b/.github/workflows/crabbox-hydrate.yml @@ -31,7 +31,7 @@ permissions: env: NODE_VERSION: "26" - PNPM_VERSION: "11.13.1" + PNPM_VERSION: "11.19.0" jobs: hydrate: @@ -39,7 +39,7 @@ jobs: runs-on: [self-hosted, crabbox, openclaw, clickclack, "${{ inputs.crabbox_runner_label }}"] timeout-minutes: 120 steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: ref: ${{ inputs.ref || github.ref }} diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml index 18b70ee9..0c850b11 100644 --- a/.github/workflows/desktop.yml +++ b/.github/workflows/desktop.yml @@ -15,7 +15,7 @@ permissions: env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" NODE_VERSION: "26" - PNPM_VERSION: "11.13.1" + PNPM_VERSION: "11.19.0" CSC_IDENTITY_AUTO_DISCOVERY: "false" concurrency: @@ -54,7 +54,7 @@ jobs: timeout-minutes: 30 steps: - name: Check out - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false diff --git a/.github/workflows/fakeco-aws.yml b/.github/workflows/fakeco-aws.yml index 5db2dabd..6d314f9f 100644 --- a/.github/workflows/fakeco-aws.yml +++ b/.github/workflows/fakeco-aws.yml @@ -63,7 +63,7 @@ jobs: FAKECO_DATA_KMS_KEY_ARN: ${{ vars.FAKECO_DATA_KMS_KEY_ARN }} steps: - name: Check out protected main - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 persist-credentials: false @@ -96,7 +96,7 @@ jobs: node deploy/fakeco/aws/owner.mjs validate-profile - name: Configure exact target-account role - uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # v6.2.2 + uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # v6.2.3 with: allowed-account-ids: ${{ vars.FAKECO_AWS_ACCOUNT_ID }} aws-region: us-west-2 diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index d82ec588..42b8b9b7 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -31,7 +31,7 @@ jobs: url: ${{ steps.deployment.outputs.page_url }} steps: - name: Check out - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1103cfef..75155b83 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ permissions: env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" NODE_VERSION: "26" - PNPM_VERSION: "11.13.1" + PNPM_VERSION: "11.19.0" jobs: release: @@ -28,7 +28,7 @@ jobs: contents: write steps: - name: Check out - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 persist-credentials: false @@ -98,7 +98,7 @@ jobs: CSC_IDENTITY_AUTO_DISCOVERY: "false" steps: - name: Check out - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false ref: ${{ inputs.tag_name || github.ref }} @@ -166,7 +166,7 @@ jobs: contents: write steps: - name: Check out trusted verifier - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false ref: ${{ github.workflow_sha }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 09aec871..f64d7f03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,14 @@ # Changelog -## 0.2.2 - Unreleased +## 0.3.0 - Unreleased +- Added coherent conversation organization and attention tools: topic selection and filtered timelines plus per-channel all, mentions-only, and muted notification preferences across web, desktop, Pushover, API, and SDK surfaces. Thanks @PollyBot13 and @jjjhenriksen. + +## 0.2.2 - 2026-08-01 + +- Updated Go, web, desktop, Cloudflare, CI action, package-manager, and container-base dependencies. +- Fixed bot topic endpoints accepting cross-workspace list and create operations by enforcing the token workspace scope. Thanks @ShiroKSH. +- Fixed right-aligned messages rendering Markdown lists and blockquotes outside the message bubble. Thanks @jjjhenriksen. - Added optional human-readable channel display titles while preserving slug-based routing and uniqueness. - Added agent-friendly CLI commands for adding and removing message reactions through the existing public APIs, with exact JSON output and terminal-safe human output. Thanks @PollyBot13. - Removed the redundant "Open in ClickClack" link from embedded channel headers, leaving external navigation to the host's own control. diff --git a/Dockerfile b/Dockerfile index 011376d7..1899b7c0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ -FROM node:26-alpine@sha256:e88a35be04478413b7c71c455cd9865de9b9360e1f43456be5951032d7ac1a66 AS web +FROM node:26-alpine@sha256:233761595746769ebfdb6090f44fc7cdf818ae0ce62d2b37e0367723b9823e36 AS web ARG CLICKCLACK_WEB_VERSION=dev ENV CLICKCLACK_WEB_VERSION=$CLICKCLACK_WEB_VERSION WORKDIR /src -RUN npm install -g pnpm@11.13.1 +RUN npm install -g pnpm@11.19.0 COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY apps/web/package.json apps/web/package.json COPY packages/protocol/package.json packages/protocol/package.json diff --git a/Dockerfile.cloudflare b/Dockerfile.cloudflare index 3e2cee44..09e7f1c6 100644 --- a/Dockerfile.cloudflare +++ b/Dockerfile.cloudflare @@ -1,8 +1,8 @@ -FROM node:26-alpine@sha256:e88a35be04478413b7c71c455cd9865de9b9360e1f43456be5951032d7ac1a66 AS web +FROM node:26-alpine@sha256:233761595746769ebfdb6090f44fc7cdf818ae0ce62d2b37e0367723b9823e36 AS web ARG CLICKCLACK_WEB_VERSION=cloudflare ENV CLICKCLACK_WEB_VERSION=$CLICKCLACK_WEB_VERSION WORKDIR /src -RUN npm install -g pnpm@11.13.1 +RUN npm install -g pnpm@11.19.0 COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY apps/web/package.json apps/web/package.json COPY packages/protocol/package.json packages/protocol/package.json diff --git a/apps/api/internal/httpapi/authz_test.go b/apps/api/internal/httpapi/authz_test.go index 8e3c2c72..2ed7419d 100644 --- a/apps/api/internal/httpapi/authz_test.go +++ b/apps/api/internal/httpapi/authz_test.go @@ -53,6 +53,8 @@ func TestHTTPUnauthorizedRoutes(t *testing.T) { {http.MethodPost, "/api/messages/msg_missing/thread/replies", `{"body":"x"}`}, {http.MethodPost, "/api/messages/msg_missing/reactions", `{"emoji":"x"}`}, {http.MethodDelete, "/api/messages/msg_missing/reactions/x", ""}, + {http.MethodGet, "/api/channels/chn_missing/notification-settings", ""}, + {http.MethodPatch, "/api/channels/chn_missing/notification-settings", `{"preference":"muted"}`}, {http.MethodGet, "/api/realtime/events?workspace_id=wsp_missing", ""}, {http.MethodGet, "/api/realtime/ws?workspace_id=wsp_missing", ""}, {http.MethodGet, "/api/search?workspace_id=wsp_missing&q=x", ""}, @@ -214,12 +216,23 @@ func TestHTTPBotTokenWorkspaceIsolation(t *testing.T) { expectStatusWithBearer(t, token.Token, http.MethodGet, server.URL+"/api/workspaces/"+otherWorkspace.ID, nil, http.StatusForbidden) expectStatusWithBearer(t, token.Token, http.MethodGet, server.URL+"/api/workspaces/"+otherWorkspace.ID+"/channels", nil, http.StatusForbidden) expectStatusWithBearer(t, token.Token, http.MethodPost, server.URL+"/api/workspaces/"+otherWorkspace.ID+"/channels", strings.NewReader(`{"name":"hidden"}`), http.StatusForbidden) + expectStatusWithBearer(t, token.Token, http.MethodGet, server.URL+"/api/workspaces/"+otherWorkspace.ID+"/topics", nil, http.StatusForbidden) + expectStatusWithBearer(t, token.Token, http.MethodPost, server.URL+"/api/workspaces/"+otherWorkspace.ID+"/topics", strings.NewReader(`{"channel_id":"`+otherChannel.ID+`","name":"hidden"}`), http.StatusForbidden) + otherTopics, err := st.ListTopics(ctx, otherWorkspace.ID, owner.ID) + if err != nil { + t.Fatal(err) + } + if len(otherTopics) != 0 { + t.Fatalf("bot token created a topic outside its workspace scope: %#v", otherTopics) + } expectStatusWithBearer(t, token.Token, http.MethodGet, server.URL+"/api/search?workspace_id="+otherWorkspace.ID+"&q=scope", nil, http.StatusForbidden) expectStatusWithBearer(t, token.Token, http.MethodGet, server.URL+"/api/realtime/events?workspace_id="+otherWorkspace.ID, nil, http.StatusForbidden) expectStatusWithBearer(t, token.Token, http.MethodPost, server.URL+"/api/dms", strings.NewReader(`{"workspace_id":"`+otherWorkspace.ID+`","member_ids":[]}`), http.StatusForbidden) expectStatusWithBearer(t, token.Token, http.MethodGet, server.URL+"/api/routes/"+otherWorkspace.RouteID+"/"+otherChannel.RouteID, nil, http.StatusForbidden) expectStatusWithBearer(t, token.Token, http.MethodGet, server.URL+"/api/channels/"+otherChannel.ID+"/messages", nil, http.StatusForbidden) expectStatusWithBearer(t, token.Token, http.MethodPost, server.URL+"/api/channels/"+otherChannel.ID+"/messages", strings.NewReader(`{"body":"nope"}`), http.StatusForbidden) + expectStatusWithBearer(t, token.Token, http.MethodGet, server.URL+"/api/channels/"+otherChannel.ID+"/notification-settings", nil, http.StatusForbidden) + expectStatusWithBearer(t, token.Token, http.MethodPatch, server.URL+"/api/channels/"+otherChannel.ID+"/notification-settings", strings.NewReader(`{"preference":"muted"}`), http.StatusForbidden) expectStatusWithBearer(t, token.Token, http.MethodPost, server.URL+"/api/channels/"+otherChannel.ID+"/read", strings.NewReader(`{"seq":1}`), http.StatusForbidden) expectStatusWithBearer(t, token.Token, http.MethodPost, server.URL+"/api/hooks/mattermost/"+otherChannel.ID, strings.NewReader(`{"text":"nope"}`), http.StatusForbidden) expectStatusWithBearer(t, token.Token, http.MethodPost, server.URL+"/api/hooks/slash/"+otherChannel.ID, strings.NewReader(`command=/nope`), http.StatusForbidden) diff --git a/apps/api/internal/httpapi/channel_notifications.go b/apps/api/internal/httpapi/channel_notifications.go new file mode 100644 index 00000000..9733c643 --- /dev/null +++ b/apps/api/internal/httpapi/channel_notifications.go @@ -0,0 +1,73 @@ +package httpapi + +import ( + "errors" + "net/http" + + "github.com/go-chi/chi/v5" + "github.com/openclaw/clickclack/apps/api/internal/store" +) + +func (s *Server) getChannelNotificationSettings(w http.ResponseWriter, r *http.Request) { + actor, err := s.currentActor(r) + if err != nil { + writeError(w, http.StatusUnauthorized, err) + return + } + if err := actor.requireScope("messages:read"); err != nil { + writeError(w, http.StatusForbidden, err) + return + } + channelID := chi.URLParam(r, "channel_id") + if !s.requireBotChannelWorkspace(w, r, actor, channelID) { + return + } + preference, err := s.store.GetChannelNotificationPreference( + r.Context(), + channelID, + actor.user.ID, + ) + if err != nil { + writeStoreError(w, err) + return + } + writeJSON(w, http.StatusOK, map[string]string{"preference": preference}) +} + +func (s *Server) updateChannelNotificationSettings(w http.ResponseWriter, r *http.Request) { + actor, err := s.currentActor(r) + if err != nil { + writeError(w, http.StatusUnauthorized, err) + return + } + if err := actor.requireScope("messages:write"); err != nil { + writeError(w, http.StatusForbidden, err) + return + } + channelID := chi.URLParam(r, "channel_id") + if !s.requireBotChannelWorkspace(w, r, actor, channelID) { + return + } + var body struct { + Preference string `json:"preference"` + } + if err := readJSON(w, r, &body); err != nil { + writeError(w, http.StatusBadRequest, err) + return + } + if body.Preference != store.ChannelNotifyAll && + body.Preference != store.ChannelNotifyMentions && + body.Preference != store.ChannelNotifyMuted { + writeError(w, http.StatusBadRequest, errors.New("preference must be all, mentions, or muted")) + return + } + if err := s.store.UpsertChannelNotificationSettings(r.Context(), store.ChannelNotificationInput{ + ChannelID: channelID, + UserID: actor.user.ID, + Preference: body.Preference, + }); err != nil { + writeStoreError(w, err) + return + } + writeJSON(w, http.StatusOK, map[string]string{"preference": body.Preference}) +} diff --git a/apps/api/internal/httpapi/channel_notifications_test.go b/apps/api/internal/httpapi/channel_notifications_test.go new file mode 100644 index 00000000..5b6eb77c --- /dev/null +++ b/apps/api/internal/httpapi/channel_notifications_test.go @@ -0,0 +1,48 @@ +package httpapi + +import ( + "context" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/openclaw/clickclack/apps/api/internal/realtime" + "github.com/openclaw/clickclack/apps/api/internal/store" +) + +func TestChannelNotificationSettingsHTTP(t *testing.T) { + t.Parallel() + ctx := context.Background() + st := newEmptyHTTPStore(t) + owner, err := st.EnsureBootstrap(ctx, "Owner", "channel-notifications@example.com") + if err != nil { + t.Fatal(err) + } + workspaces, err := st.ListWorkspaces(ctx, owner.ID) + if err != nil { + t.Fatal(err) + } + channels, err := st.ListChannels(ctx, workspaces[0].ID, owner.ID) + if err != nil { + t.Fatal(err) + } + server := httptest.NewServer(New(st, realtime.NewHub(), Options{}).Handler()) + t.Cleanup(server.Close) + endpoint := server.URL + "/api/channels/" + channels[0].ID + "/notification-settings" + + initial := getJSON[map[string]string](t, endpoint) + if initial["preference"] != store.ChannelNotifyAll { + t.Fatalf("expected all as the default preference, got %#v", initial) + } + updated := patchJSON[map[string]string](t, endpoint, map[string]string{"preference": store.ChannelNotifyMentions}) + if updated["preference"] != store.ChannelNotifyMentions { + t.Fatalf("expected mentions preference, got %#v", updated) + } + loaded := getJSON[map[string]string](t, endpoint) + if loaded["preference"] != store.ChannelNotifyMentions { + t.Fatalf("expected persisted mentions preference, got %#v", loaded) + } + expectStatus(t, http.MethodPatch, endpoint, strings.NewReader(`{"preference":"invalid"}`), http.StatusBadRequest) + expectStatus(t, http.MethodPatch, endpoint, strings.NewReader(`{"preference":`), http.StatusBadRequest) +} diff --git a/apps/api/internal/httpapi/correlation_events_test.go b/apps/api/internal/httpapi/correlation_events_test.go index 269618b9..52eeaa4c 100644 --- a/apps/api/internal/httpapi/correlation_events_test.go +++ b/apps/api/internal/httpapi/correlation_events_test.go @@ -84,6 +84,7 @@ func TestMessageEventCorrelationSurvivesResponseRealtimeAndRetrieval(t *testing. replyEvent := eventByType(t, replyResult.Events, "thread.reply_created") stateEvent := eventByType(t, replyResult.Events, "thread.state_updated") assertAPIEventPayloadValue(t, replyEvent, "correlation_id", "corr-api-reply") + assertAPIEventPayloadMissing(t, replyEvent, "author_id") assertAPIEventPayloadMissing(t, replyEvent, "body") assertAPIEventPayloadMissing(t, stateEvent, "correlation_id") liveReply := readEventType(t, conn, "thread.reply_created") diff --git a/apps/api/internal/httpapi/features.go b/apps/api/internal/httpapi/features.go index 298f4e68..de176888 100644 --- a/apps/api/internal/httpapi/features.go +++ b/apps/api/internal/httpapi/features.go @@ -1517,7 +1517,7 @@ func (s *Server) createDirectMessage(w http.ResponseWriter, r *http.Request) { if err == nil && event.ID != "" { s.publishEvent(r.Context(), event) if !store.IsActivityMessageKind(message.Kind) { - s.notifyMessageCreated(r.Context(), message) + s.notifyMessageCreated(r.Context(), message, event.MentionedUserIDs) } } writeMessageCreateResult(w, message, event, err) @@ -1546,7 +1546,7 @@ func (s *Server) mattermostWebhook(w http.ResponseWriter, r *http.Request) { message, event, err := s.store.CreateMessage(r.Context(), store.CreateMessageInput{ChannelID: chi.URLParam(r, "channel_id"), AuthorID: act.user.ID, Body: body.Text}) if err == nil { s.publishEvent(r.Context(), event) - s.notifyMessageCreated(r.Context(), message) + s.notifyMessageCreated(r.Context(), message, event.MentionedUserIDs) } writeResultStatus(w, http.StatusCreated, map[string]any{"message": message, "event": event}, err) } @@ -1587,7 +1587,7 @@ func (s *Server) slashCommand(w http.ResponseWriter, r *http.Request) { message, event, err := s.store.CreateMessage(r.Context(), store.CreateMessageInput{ChannelID: chi.URLParam(r, "channel_id"), AuthorID: act.user.ID, Body: body}) if err == nil { s.publishEvent(r.Context(), event) - s.notifyMessageCreated(r.Context(), message) + s.notifyMessageCreated(r.Context(), message, event.MentionedUserIDs) } writeResultStatus(w, http.StatusCreated, map[string]any{ "response_type": "in_channel", @@ -1661,7 +1661,7 @@ func (s *Server) invokeRegisteredSlashCommand(w http.ResponseWriter, r *http.Req return } s.publishEvent(r.Context(), event) - s.notifyMessageCreated(r.Context(), message) + s.notifyMessageCreated(r.Context(), message, event.MentionedUserIDs) } writeJSON(w, http.StatusOK, map[string]any{ "response_type": callback.ResponseType, diff --git a/apps/api/internal/httpapi/mutations_test.go b/apps/api/internal/httpapi/mutations_test.go index 06f7e472..f6a96bbd 100644 --- a/apps/api/internal/httpapi/mutations_test.go +++ b/apps/api/internal/httpapi/mutations_test.go @@ -659,7 +659,7 @@ func TestPushNotificationsRespectModerationVisibility(t *testing.T) { if err != nil { t.Fatal(err) } - server.notifyMessageCreated(ctx, hidden) + server.notifyMessageCreated(ctx, hidden, nil) if len(notifier.notifications) != 0 { t.Fatalf("guest should not receive hidden channel push notifications: %#v", notifier.notifications) } @@ -667,7 +667,7 @@ func TestPushNotificationsRespectModerationVisibility(t *testing.T) { if err != nil { t.Fatal(err) } - server.notifyMessageCreated(ctx, visible) + server.notifyMessageCreated(ctx, visible, nil) if len(notifier.notifications) != 1 || notifier.notifications[0].RecipientKey != "g12345678901234567890123456789" { t.Fatalf("guest should receive guest channel push notification, got %#v", notifier.notifications) } @@ -698,7 +698,7 @@ func TestPushNotificationsRespectModerationVisibility(t *testing.T) { if err != nil { t.Fatal(err) } - server.notifyMessageCreated(ctx, dmMessage) + server.notifyMessageCreated(ctx, dmMessage, nil) if len(notifier.notifications) != 0 { t.Fatalf("demoted guest should not receive DM push notifications: %#v", notifier.notifications) } diff --git a/apps/api/internal/httpapi/notifications.go b/apps/api/internal/httpapi/notifications.go index 4c6c4644..d97cd389 100644 --- a/apps/api/internal/httpapi/notifications.go +++ b/apps/api/internal/httpapi/notifications.go @@ -19,11 +19,11 @@ type PushNotifier interface { Notify(ctx context.Context, notification PushNotification) error } -func (s *Server) notifyMessageCreated(ctx context.Context, message store.Message) { +func (s *Server) notifyMessageCreated(ctx context.Context, message store.Message, mentionedUserIDs []string) { if s.pushNotifier == nil { return } - recipients, err := s.store.ListPushNotificationRecipients(ctx, message.ID) + recipients, err := s.store.ListPushNotificationRecipients(ctx, message.ID, mentionedUserIDs) if err != nil { log.Printf("push notification recipient lookup failed: %v", err) return @@ -43,6 +43,15 @@ func (s *Server) notifyMessageCreated(ctx context.Context, message store.Message } } +func messageEventMentionedUserIDs(events []store.Event) []string { + for _, event := range events { + if event.Type == "message.created" || event.Type == "thread.reply_created" { + return event.MentionedUserIDs + } + } + return nil +} + func (s *Server) canNotifyMessageRecipient(ctx context.Context, message store.Message, userID string) bool { _, err := s.store.GetMessage(ctx, message.ID, userID) return err == nil diff --git a/apps/api/internal/httpapi/server.go b/apps/api/internal/httpapi/server.go index bfa4805d..2f167f71 100644 --- a/apps/api/internal/httpapi/server.go +++ b/apps/api/internal/httpapi/server.go @@ -203,6 +203,8 @@ func (s *Server) Handler() http.Handler { r.Patch("/channels/{channel_id}", s.updateChannel) r.Get("/channels/{channel_id}/messages", s.listMessages) r.Post("/channels/{channel_id}/messages", s.createMessage) + r.Get("/channels/{channel_id}/notification-settings", s.getChannelNotificationSettings) + r.Patch("/channels/{channel_id}/notification-settings", s.updateChannelNotificationSettings) r.Post("/channels/{channel_id}/read", s.markChannelRead) r.Get("/messages/by-nonce", s.getMessageByNonce) r.Get("/messages/{message_id}", s.getMessage) @@ -901,7 +903,12 @@ func (s *Server) listTopics(w http.ResponseWriter, r *http.Request) { writeError(w, http.StatusForbidden, err) return } - topics, err := s.store.ListTopics(r.Context(), chi.URLParam(r, "workspace_id"), act.user.ID) + workspaceID := chi.URLParam(r, "workspace_id") + if err := act.requireWorkspace(workspaceID); err != nil { + writeError(w, http.StatusForbidden, err) + return + } + topics, err := s.store.ListTopics(r.Context(), workspaceID, act.user.ID) writeResult(w, map[string]any{"topics": topics}, err) } @@ -915,6 +922,11 @@ func (s *Server) createTopic(w http.ResponseWriter, r *http.Request) { writeError(w, http.StatusForbidden, err) return } + workspaceID := chi.URLParam(r, "workspace_id") + if err := act.requireWorkspace(workspaceID); err != nil { + writeError(w, http.StatusForbidden, err) + return + } var body struct { ChannelID string `json:"channel_id"` Name string `json:"name"` @@ -923,7 +935,7 @@ func (s *Server) createTopic(w http.ResponseWriter, r *http.Request) { writeError(w, http.StatusBadRequest, err) return } - topic, err := s.store.CreateTopic(r.Context(), store.CreateTopicInput{WorkspaceID: chi.URLParam(r, "workspace_id"), ChannelID: body.ChannelID, Name: body.Name, CreatedBy: act.user.ID}) + topic, err := s.store.CreateTopic(r.Context(), store.CreateTopicInput{WorkspaceID: workspaceID, ChannelID: body.ChannelID, Name: body.Name, CreatedBy: act.user.ID}) writeResultStatus(w, http.StatusCreated, map[string]any{"topic": topic}, err) } @@ -942,6 +954,13 @@ func (s *Server) listMessages(w http.ResponseWriter, r *http.Request) { writeError(w, http.StatusBadRequest, err) return } + if values, ok := r.URL.Query()["topic_id"]; ok { + if len(values) == 0 || strings.TrimSpace(values[0]) == "" { + writeError(w, http.StatusBadRequest, fmt.Errorf("%w: topic_id is required", store.ErrInvalidMessagePage)) + return + } + page.TopicID = strings.TrimSpace(values[0]) + } if !s.requireBotChannelWorkspace(w, r, act, chi.URLParam(r, "channel_id")) { return } @@ -982,7 +1001,7 @@ func (s *Server) createMessage(w http.ResponseWriter, r *http.Request) { if err == nil && event.ID != "" { s.publishEvent(r.Context(), event) if !store.IsActivityMessageKind(message.Kind) { - s.notifyMessageCreated(r.Context(), message) + s.notifyMessageCreated(r.Context(), message, event.MentionedUserIDs) } } writeMessageCreateResult(w, message, event, err) @@ -1147,7 +1166,7 @@ func (s *Server) createThreadReply(w http.ResponseWriter, r *http.Request) { message, state, events, err := s.store.CreateThreadReply(r.Context(), store.CreateThreadReplyInput{RootMessageID: chi.URLParam(r, "message_id"), AuthorID: act.user.ID, Body: body.Body, QuotedMessageID: optionalString(body.QuotedMessageID), Nonce: body.Nonce}) if err == nil && len(events) > 0 { s.publishEvents(r.Context(), events) - s.notifyMessageCreated(r.Context(), message) + s.notifyMessageCreated(r.Context(), message, messageEventMentionedUserIDs(events)) } writeThreadReplyCreateResult(w, message, state, events, err) } diff --git a/apps/api/internal/httpapi/server_test.go b/apps/api/internal/httpapi/server_test.go index c74efaf4..c6f260b5 100644 --- a/apps/api/internal/httpapi/server_test.go +++ b/apps/api/internal/httpapi/server_test.go @@ -961,12 +961,43 @@ func TestMessagePageHTTPCursors(t *testing.T) { t.Fatal(err) } channel := channels[0] + topic, err := st.CreateTopic(ctx, store.CreateTopicInput{ + WorkspaceID: workspaces[0].ID, + ChannelID: channel.ID, + Name: "HTTP topic", + CreatedBy: owner.ID, + }) + if err != nil { + t.Fatal(err) + } + otherChannel, _, err := st.CreateChannel(ctx, store.CreateChannelInput{ + WorkspaceID: workspaces[0].ID, + UserID: owner.ID, + Name: "other-topic-channel", + Kind: "public", + }) + if err != nil { + t.Fatal(err) + } + otherTopic, err := st.CreateTopic(ctx, store.CreateTopicInput{ + WorkspaceID: workspaces[0].ID, + ChannelID: otherChannel.ID, + Name: "Other HTTP topic", + CreatedBy: owner.ID, + }) + if err != nil { + t.Fatal(err) + } for i := 1; i <= 12; i++ { - if _, _, err := st.CreateMessage(ctx, store.CreateMessageInput{ + input := store.CreateMessageInput{ ChannelID: channel.ID, AuthorID: owner.ID, Body: fmt.Sprintf("http page %02d", i), - }); err != nil { + } + if i%2 == 0 { + input.TopicID = topic.ID + } + if _, _, err := st.CreateMessage(ctx, input); err != nil { t.Fatal(err) } } @@ -998,12 +1029,24 @@ func TestMessagePageHTTPCursors(t *testing.T) { t.Fatalf("unexpected around metadata: %#v", around) } + filtered := getJSON[store.MessagePage](t, base+"?topic_id="+topic.ID+"&limit=3") + expectHTTPExactSeqs(t, filtered.Messages, 8, 10, 12) + expectStatus(t, http.MethodGet, base+"?before_seq=4&after_seq=7", nil, http.StatusBadRequest) expectStatus(t, http.MethodGet, base+"?before_seq=", nil, http.StatusBadRequest) expectStatus(t, http.MethodGet, base+"?after_seq=bad", nil, http.StatusBadRequest) expectStatus(t, http.MethodGet, base+"?around_seq=-1", nil, http.StatusBadRequest) expectStatus(t, http.MethodGet, base+"?mode=history", nil, http.StatusBadRequest) expectStatus(t, http.MethodGet, base+"?mode=latest&before_seq=4", nil, http.StatusBadRequest) + expectStatus(t, http.MethodGet, base+"?topic_id=", nil, http.StatusBadRequest) + missingTopicError := getHTTPError(t, base+"?topic_id=top_missing", http.StatusBadRequest) + wrongChannelTopicError := getHTTPError(t, base+"?topic_id="+otherTopic.ID, http.StatusBadRequest) + if missingTopicError != wrongChannelTopicError { + t.Fatalf("topic validation leaked scope details: missing=%q wrong_channel=%q", missingTopicError, wrongChannelTopicError) + } + if missingTopicError != "invalid message page request: topic is unavailable" { + t.Fatalf("unexpected topic validation error: %q", missingTopicError) + } } func TestRouteResolverAPI(t *testing.T) { @@ -2280,6 +2323,26 @@ func expectStatus(t *testing.T, method, endpoint string, body io.Reader, status } } +func getHTTPError(t *testing.T, endpoint string, status int) string { + t.Helper() + resp, err := http.Get(endpoint) + if err != nil { + t.Fatal(err) + } + defer resp.Body.Close() + if resp.StatusCode != status { + payload, _ := io.ReadAll(resp.Body) + t.Fatalf("GET %s: expected %d, got %s %s", endpoint, status, resp.Status, string(payload)) + } + var payload struct { + Error string `json:"error"` + } + if err := json.NewDecoder(resp.Body).Decode(&payload); err != nil { + t.Fatal(err) + } + return payload.Error +} + func expectStatusAsUser(t *testing.T, userID, method, endpoint string, body io.Reader, status int) { t.Helper() req, err := http.NewRequest(method, endpoint, body) @@ -3808,3 +3871,15 @@ func expectHTTPSeqs(t *testing.T, messages []store.Message, first, last int64) { } } } + +func expectHTTPExactSeqs(t *testing.T, messages []store.Message, want ...int64) { + t.Helper() + if len(messages) != len(want) { + t.Fatalf("message count = %d, want %d: %#v", len(messages), len(want), messages) + } + for i, message := range messages { + if message.ChannelSeq == nil || *message.ChannelSeq != want[i] { + t.Fatalf("message[%d] seq = %v, want %d: %#v", i, message.ChannelSeq, want[i], messages) + } + } +} diff --git a/apps/api/internal/store/appearance_test.go b/apps/api/internal/store/appearance_test.go new file mode 100644 index 00000000..127b61f1 --- /dev/null +++ b/apps/api/internal/store/appearance_test.go @@ -0,0 +1,141 @@ +package store + +import ( + "strings" + "testing" +) + +func strPtr(s string) *string { return &s } + +// Characterization tests pinning NormalizeAppearancePreferencesPatch and +// AppearancePreferencesPatchEmpty, the appearance-preferences validators invoked +// from both the sqlite and postgres update paths +// (internal/store/{sqlite,postgres}.go:~294/280 and ~364/350). Both shipped with +// no direct coverage, so the per-field allow-list, the default-alias-to-empty +// canonicalization, the invalid-value error path, and the nil round-trip could +// regress silently. These cases drive the real exported functions. + +// The "default" alias for each field (system/signal/standard/comfortable) must +// canonicalize to the empty string — the stored representation of "use the +// default" — while an explicit non-default value passes through unchanged. +func TestNormalizeAppearancePreferencesPatch_CanonicalizesDefaultsToEmpty(t *testing.T) { + out, err := NormalizeAppearancePreferencesPatch(AppearancePreferencesPatch{ + ColorMode: strPtr("system"), + BoardTheme: strPtr("signal"), + MessageLayout: strPtr("standard"), + Density: strPtr("comfortable"), + }) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + for name, got := range map[string]*string{ + "ColorMode": out.ColorMode, + "BoardTheme": out.BoardTheme, + "MessageLayout": out.MessageLayout, + "Density": out.Density, + } { + if got == nil { + t.Errorf("%s canonicalized to nil, want non-nil empty string", name) + continue + } + if *got != "" { + t.Errorf("%s default alias not canonicalized: got %q, want %q", name, *got, "") + } + } +} + +// Explicit non-default values must survive normalization verbatim; this is the +// counterpart to the default-alias case and bites if an allow-list entry is +// dropped or remapped. +func TestNormalizeAppearancePreferencesPatch_PassesThroughExplicitValues(t *testing.T) { + out, err := NormalizeAppearancePreferencesPatch(AppearancePreferencesPatch{ + ColorMode: strPtr("dark"), + BoardTheme: strPtr("iris"), + MessageLayout: strPtr("outlined"), + Density: strPtr("compact"), + }) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + want := map[string]struct { + got *string + expect string + }{ + "ColorMode": {out.ColorMode, "dark"}, + "BoardTheme": {out.BoardTheme, "iris"}, + "MessageLayout": {out.MessageLayout, "outlined"}, + "Density": {out.Density, "compact"}, + } + for name, w := range want { + if w.got == nil || *w.got != w.expect { + t.Errorf("%s not passed through: got %v, want %q", name, deref(w.got), w.expect) + } + } +} + +// A nil field pointer means "field not being patched" and must round-trip as +// nil, never as an allocated empty string — the callers gate the DB write on +// AppearancePreferencesPatchEmpty, so a nil-to-empty mutation would flip an +// untouched field into a write. +func TestNormalizeAppearancePreferencesPatch_NilFieldsStayNil(t *testing.T) { + out, err := NormalizeAppearancePreferencesPatch(AppearancePreferencesPatch{}) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if out.ColorMode != nil || out.BoardTheme != nil || out.MessageLayout != nil || out.Density != nil { + t.Errorf("nil fields mutated: %#v", out) + } +} + +// Each field validates against its own allow-list and reports an error named for +// that field; an unknown value must be rejected rather than silently persisted. +func TestNormalizeAppearancePreferencesPatch_RejectsInvalidPerField(t *testing.T) { + cases := []struct { + name string + patch AppearancePreferencesPatch + field string + }{ + {"color_mode", AppearancePreferencesPatch{ColorMode: strPtr("rainbow")}, "color_mode"}, + {"board_theme", AppearancePreferencesPatch{BoardTheme: strPtr("neon")}, "board_theme"}, + {"message_layout", AppearancePreferencesPatch{MessageLayout: strPtr("bubbles")}, "message_layout"}, + {"density", AppearancePreferencesPatch{Density: strPtr("cramped")}, "density"}, + } + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + _, err := NormalizeAppearancePreferencesPatch(c.patch) + if err == nil || !strings.Contains(err.Error(), c.field+" is invalid") { + t.Errorf("invalid %s: got err %v, want %q", c.field, err, c.field+" is invalid") + } + }) + } +} + +// AppearancePreferencesPatchEmpty is true only when every field is nil; setting +// any single field must flip it to false. Testing each field independently bites +// if a field is dropped from the conjunction. +func TestAppearancePreferencesPatchEmpty(t *testing.T) { + if !AppearancePreferencesPatchEmpty(AppearancePreferencesPatch{}) { + t.Errorf("all-nil patch reported non-empty") + } + nonEmpty := []struct { + name string + patch AppearancePreferencesPatch + }{ + {"ColorMode", AppearancePreferencesPatch{ColorMode: strPtr("")}}, + {"BoardTheme", AppearancePreferencesPatch{BoardTheme: strPtr("")}}, + {"MessageLayout", AppearancePreferencesPatch{MessageLayout: strPtr("")}}, + {"Density", AppearancePreferencesPatch{Density: strPtr("")}}, + } + for _, c := range nonEmpty { + if AppearancePreferencesPatchEmpty(c.patch) { + t.Errorf("patch with %s set reported empty", c.name) + } + } +} + +func deref(p *string) string { + if p == nil { + return "" + } + return *p +} diff --git a/apps/api/internal/store/postgres/export.go b/apps/api/internal/store/postgres/export.go index 31e60668..4567e632 100644 --- a/apps/api/internal/store/postgres/export.go +++ b/apps/api/internal/store/postgres/export.go @@ -21,7 +21,7 @@ func (s *Store) ExportJSON(ctx context.Context, writer io.Writer) error { out := map[string]any{} tables := []string{ - "users", "user_notification_settings", "identities", "workspaces", "workspace_members", "channels", + "users", "user_notification_settings", "channel_notification_settings", "identities", "workspaces", "workspace_members", "channels", "messages", "thread_state", "reactions", "events", "event_recipients", "uploads", "channel_reads", "direct_reads", "message_attachments", "direct_conversations", "direct_conversation_members", diff --git a/apps/api/internal/store/postgres/helpers.go b/apps/api/internal/store/postgres/helpers.go index 39d00a26..b489793a 100644 --- a/apps/api/internal/store/postgres/helpers.go +++ b/apps/api/internal/store/postgres/helpers.go @@ -274,21 +274,31 @@ func insertEvent(ctx context.Context, tx *sql.Tx, workspaceID, channelID, eventT } func insertEventWithRecipients(ctx context.Context, tx *sql.Tx, workspaceID, channelID, eventType string, seq *int64, payload any, recipientUserIDs []string) (store.Event, error) { + return insertEventWithRecipientsAndMentions(ctx, tx, workspaceID, channelID, eventType, seq, payload, recipientUserIDs, nil) +} + +func insertEventWithRecipientsAndMentions(ctx context.Context, tx *sql.Tx, workspaceID, channelID, eventType string, seq *int64, payload any, recipientUserIDs, mentionedUserIDs []string) (store.Event, error) { payloadJSON, err := json.Marshal(payload) if err != nil { return store.Event{}, err } recipients := compactStrings(recipientUserIDs) + mentions := compactStrings(mentionedUserIDs) + mentionedJSON, err := json.Marshal(mentions) + if err != nil { + return store.Event{}, err + } event := store.Event{ - ID: newID("evt"), - Cursor: newID("cur"), - Type: eventType, - WorkspaceID: workspaceID, - ChannelID: channelID, - Seq: seq, - CreatedAt: now(), - PayloadJSON: string(payloadJSON), - Payload: payload, + ID: newID("evt"), + Cursor: newID("cur"), + Type: eventType, + WorkspaceID: workspaceID, + ChannelID: channelID, + Seq: seq, + CreatedAt: now(), + PayloadJSON: string(payloadJSON), + Payload: payload, + MentionedUserIDs: mentions, } isPrivate := 0 if len(recipients) > 0 { @@ -296,15 +306,16 @@ func insertEventWithRecipients(ctx context.Context, tx *sql.Tx, workspaceID, cha } q := storedb.New(tx) if err := q.InsertEvent(ctx, storedb.InsertEventParams{ - ID: event.ID, - Cursor: event.Cursor, - WorkspaceID: event.WorkspaceID, - ChannelID: sqlOptionalText(event.ChannelID), - Type: event.Type, - Seq: nullInt64FromPtr(event.Seq), - PayloadJson: event.PayloadJSON, - CreatedAt: event.CreatedAt, - IsPrivate: int64(isPrivate), + ID: event.ID, + Cursor: event.Cursor, + WorkspaceID: event.WorkspaceID, + ChannelID: sqlOptionalText(event.ChannelID), + Type: event.Type, + Seq: nullInt64FromPtr(event.Seq), + PayloadJson: event.PayloadJSON, + CreatedAt: event.CreatedAt, + IsPrivate: int64(isPrivate), + MentionedUserIds: string(mentionedJSON), }); err != nil { return store.Event{}, err } diff --git a/apps/api/internal/store/postgres/mentions_notifications_test.go b/apps/api/internal/store/postgres/mentions_notifications_test.go new file mode 100644 index 00000000..955d9ebc --- /dev/null +++ b/apps/api/internal/store/postgres/mentions_notifications_test.go @@ -0,0 +1,43 @@ +package postgres + +import ( + "context" + "testing" + + "github.com/openclaw/clickclack/apps/api/internal/store" +) + +func TestMentionsNotificationMigrationUpgradesExistingDatabase(t *testing.T) { + ctx := context.Background() + st := newIsolatedPostgresTestStore(t) + applyPostgresMigrationsBefore(t, ctx, st, "0032_mentions_and_notifications.sql") + owner, err := st.EnsureBootstrap(ctx, "Upgrade Owner", "postgres-mentions-upgrade@example.com") + if err != nil { + t.Fatal(err) + } + workspaces, err := st.ListWorkspaces(ctx, owner.ID) + if err != nil { + t.Fatal(err) + } + channels, err := st.ListChannels(ctx, workspaces[0].ID, owner.ID) + if err != nil { + t.Fatal(err) + } + if _, err := st.db.ExecContext(ctx, `INSERT INTO events (id, cursor, workspace_id, channel_id, type, seq, payload_json, created_at, is_private) VALUES ('evt_upgrade', 'cur_upgrade', $1, $2, 'message.created', 1, '{}', $3, 0)`, workspaces[0].ID, channels[0].ID, now()); err != nil { + t.Fatal(err) + } + if err := st.Migrate(ctx); err != nil { + t.Fatal(err) + } + var mentionedJSON string + if err := st.db.QueryRowContext(ctx, `SELECT mentioned_user_ids::text FROM events WHERE id = 'evt_upgrade'`).Scan(&mentionedJSON); err != nil { + t.Fatal(err) + } + if mentionedJSON != "[]" { + t.Fatalf("expected existing event to receive an empty mention list, got %q", mentionedJSON) + } + preference, err := st.GetChannelNotificationPreference(ctx, channels[0].ID, owner.ID) + if err != nil || preference != store.ChannelNotifyAll { + t.Fatalf("expected upgraded database to default to all, got %q: %v", preference, err) + } +} diff --git a/apps/api/internal/store/postgres/migrations/0032_mentions_and_notifications.sql b/apps/api/internal/store/postgres/migrations/0032_mentions_and_notifications.sql new file mode 100644 index 00000000..dae18154 --- /dev/null +++ b/apps/api/internal/store/postgres/migrations/0032_mentions_and_notifications.sql @@ -0,0 +1,14 @@ +ALTER TABLE events + ADD COLUMN mentioned_user_ids JSONB NOT NULL DEFAULT '[]'::jsonb; + +CREATE TABLE channel_notification_settings ( + channel_id TEXT NOT NULL REFERENCES channels(id) ON DELETE CASCADE, + user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE, + preference TEXT NOT NULL DEFAULT 'all' CHECK (preference IN ('all', 'mentions', 'muted')), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY (channel_id, user_id) +); + +CREATE INDEX idx_channel_notification_settings_user + ON channel_notification_settings(user_id, channel_id); diff --git a/apps/api/internal/store/postgres/notifications.go b/apps/api/internal/store/postgres/notifications.go index 31ab268e..fb1b8bc9 100644 --- a/apps/api/internal/store/postgres/notifications.go +++ b/apps/api/internal/store/postgres/notifications.go @@ -63,7 +63,71 @@ func (s *Store) getNotificationSettings(ctx context.Context, userID string) (sto return storeNotificationSettingsFromDB(row), nil } -func (s *Store) ListPushNotificationRecipients(ctx context.Context, messageID string) ([]store.PushNotificationRecipient, error) { +func (s *Store) UpsertChannelNotificationSettings(ctx context.Context, input store.ChannelNotificationInput) error { + preference, err := normalizeChannelNotificationPreference(input.Preference) + if err != nil { + return err + } + if _, err := s.GetChannel(ctx, input.ChannelID, input.UserID); err != nil { + return err + } + timestamp := now() + return s.q.UpsertChannelNotificationSettings(ctx, storedb.UpsertChannelNotificationSettingsParams{ + ChannelID: input.ChannelID, + UserID: input.UserID, + Preference: preference, + CreatedAt: timestamp, + UpdatedAt: timestamp, + }) +} + +func (s *Store) GetChannelNotificationPreference(ctx context.Context, channelID, userID string) (string, error) { + if _, err := s.GetChannel(ctx, channelID, userID); err != nil { + return "", err + } + preference, err := s.q.GetChannelNotificationPreference(ctx, storedb.GetChannelNotificationPreferenceParams{ + ChannelID: channelID, + UserID: userID, + }) + if errors.Is(err, sql.ErrNoRows) { + return store.ChannelNotifyAll, nil + } + return preference, err +} + +func normalizeChannelNotificationPreference(preference string) (string, error) { + switch strings.TrimSpace(preference) { + case store.ChannelNotifyAll: + return store.ChannelNotifyAll, nil + case store.ChannelNotifyMentions: + return store.ChannelNotifyMentions, nil + case store.ChannelNotifyMuted: + return store.ChannelNotifyMuted, nil + default: + return "", errors.New("invalid channel notification preference") + } +} + +func mentionedUserIDs(ctx context.Context, queries *storedb.Queries, workspaceID, body string) ([]string, error) { + handles := store.ParseMessageMentions(body) + if len(handles) == 0 { + return nil, nil + } + rows, err := queries.ListMentionedUserIDs(ctx, storedb.ListMentionedUserIDsParams{ + WorkspaceID: workspaceID, + Handles: handles, + }) + if err != nil { + return nil, err + } + ids := make([]string, 0, len(rows)) + for _, row := range rows { + ids = append(ids, row.ID) + } + return ids, nil +} + +func (s *Store) ListPushNotificationRecipients(ctx context.Context, messageID string, mentionedUserIDs []string) ([]store.PushNotificationRecipient, error) { message, err := getMessage(ctx, s.db, messageID) if err != nil { return nil, err @@ -71,19 +135,32 @@ func (s *Store) ListPushNotificationRecipients(ctx context.Context, messageID st if message.DirectConversationID != "" { return s.listDirectPushNotificationRecipients(ctx, message) } - return s.listWorkspacePushNotificationRecipients(ctx, message) + return s.listWorkspacePushNotificationRecipients(ctx, message, mentionedUserIDs) } -func (s *Store) listWorkspacePushNotificationRecipients(ctx context.Context, message store.Message) ([]store.PushNotificationRecipient, error) { +func (s *Store) listWorkspacePushNotificationRecipients(ctx context.Context, message store.Message, mentionedUserIDs []string) ([]store.PushNotificationRecipient, error) { rows, err := s.q.ListWorkspacePushNotificationRecipients(ctx, storedb.ListWorkspacePushNotificationRecipientsParams{ + ChannelID: message.ChannelID, WorkspaceID: message.WorkspaceID, AuthorID: message.AuthorID, }) if err != nil { return nil, err } + mentioned := make(map[string]struct{}, len(mentionedUserIDs)) + for _, userID := range mentionedUserIDs { + mentioned[userID] = struct{}{} + } out := make([]store.PushNotificationRecipient, 0, len(rows)) for _, row := range rows { + if row.NotificationPreference == store.ChannelNotifyMuted { + continue + } + if row.NotificationPreference == store.ChannelNotifyMentions { + if _, ok := mentioned[row.UserID]; !ok { + continue + } + } out = append(out, storePushRecipient(row.UserID, row.DisplayName, row.PushoverUserKey)) } return out, nil diff --git a/apps/api/internal/store/postgres/postgres.go b/apps/api/internal/store/postgres/postgres.go index 3fb8e149..28d44c0e 100644 --- a/apps/api/internal/store/postgres/postgres.go +++ b/apps/api/internal/store/postgres/postgres.go @@ -612,9 +612,18 @@ func (s *Store) ListMessages(ctx context.Context, channelID, userID string, page if err := s.requireGuestChannelAccess(ctx, workspaceID, channelID, userID); err != nil { return store.MessagePage{}, err } + if err := s.requireTopic(ctx, workspaceID, channelID, page.TopicID); err != nil { + return store.MessagePage{}, err + } + where := "m.channel_id = $1 AND m.parent_message_id IS NULL" + args := []any{channelID} + if page.TopicID != "" { + where += " AND m.topic_id = $2" + args = append(args, strings.TrimSpace(page.TopicID)) + } return s.listMessagePage(ctx, messagePageScope{ - where: "m.channel_id = $1 AND m.parent_message_id IS NULL", - args: []any{channelID}, + where: where, + args: args, userID: userID, }, page) } @@ -780,7 +789,11 @@ func (s *Store) CreateMessage(ctx context.Context, input store.CreateMessageInpu if input.TurnID != "" { eventFields["turn_id"] = input.TurnID } - event, err := insertEvent(ctx, tx, workspaceID, input.ChannelID, "message.created", &seq, eventPayload(ctx, eventFields, nonce)) + mentionedIDs, err := mentionedUserIDs(ctx, qtx, workspaceID, body) + if err != nil { + return store.Message{}, store.Event{}, err + } + event, err := insertEventWithRecipientsAndMentions(ctx, tx, workspaceID, input.ChannelID, "message.created", &seq, eventPayload(ctx, eventFields, nonce), nil, mentionedIDs) if err != nil { return store.Message{}, store.Event{}, err } @@ -966,7 +979,10 @@ func (s *Store) CreateThreadReply(ctx context.Context, input store.CreateThreadR if err != nil { return store.Message{}, store.ThreadState{}, nil, err } - replyPayload := eventPayload(ctx, map[string]string{"message_id": id, "root_message_id": root.ID}, nonce) + replyPayload := eventPayload(ctx, map[string]string{ + "message_id": id, + "root_message_id": root.ID, + }, nonce) statePayload := map[string]string{"root_message_id": root.ID} var recipients []string if root.DirectConversationID != "" { @@ -977,7 +993,14 @@ func (s *Store) CreateThreadReply(ctx context.Context, input store.CreateThreadR return store.Message{}, store.ThreadState{}, nil, err } } - replyEvent, err := insertEventWithRecipients(ctx, tx, root.WorkspaceID, root.ChannelID, "thread.reply_created", nil, replyPayload, recipients) + mentionedIDs, err := mentionedUserIDs(ctx, qtx, root.WorkspaceID, body) + if err != nil { + return store.Message{}, store.ThreadState{}, nil, err + } + // recipients is a privacy boundary for direct conversations, not a thread + // follower list. Mention metadata must never grant a workspace user access + // to a DM they are not already participating in. + replyEvent, err := insertEventWithRecipientsAndMentions(ctx, tx, root.WorkspaceID, root.ChannelID, "thread.reply_created", nil, replyPayload, recipients, mentionedIDs) if err != nil { return store.Message{}, store.ThreadState{}, nil, err } diff --git a/apps/api/internal/store/postgres/postgres_test.go b/apps/api/internal/store/postgres/postgres_test.go index 22cc6162..7258cec6 100644 --- a/apps/api/internal/store/postgres/postgres_test.go +++ b/apps/api/internal/store/postgres/postgres_test.go @@ -195,8 +195,17 @@ func TestPostgresStoreSmoke(t *testing.T) { if err != nil { t.Fatal(err) } + topic, err := st.CreateTopic(ctx, store.CreateTopicInput{ + WorkspaceID: workspace.ID, + ChannelID: channel.ID, + Name: "Postgres topic", + CreatedBy: owner.ID, + }) + if err != nil { + t.Fatal(err) + } messageCtx := requestmeta.WithCorrelationID(ctx, "corr-postgres-message") - created, event, err := st.CreateMessage(messageCtx, store.CreateMessageInput{ChannelID: channel.ID, AuthorID: owner.ID, Body: "hello postgres"}) + created, event, err := st.CreateMessage(messageCtx, store.CreateMessageInput{ChannelID: channel.ID, AuthorID: owner.ID, Body: "hello postgres", TopicID: topic.ID}) if err != nil { t.Fatal(err) } @@ -212,6 +221,13 @@ func TestPostgresStoreSmoke(t *testing.T) { if len(page.Messages) != 1 || page.Messages[0].ID != created.ID { t.Fatalf("unexpected messages: %#v", page.Messages) } + topicPage, err := st.ListMessages(ctx, channel.ID, owner.ID, store.MessagePageRequest{Limit: 10, TopicID: topic.ID}) + if err != nil { + t.Fatal(err) + } + if len(topicPage.Messages) != 1 || topicPage.Messages[0].TopicID != topic.ID { + t.Fatalf("unexpected filtered topic messages: %#v", topicPage.Messages) + } replyCtx := requestmeta.WithCorrelationID(ctx, "corr-postgres-reply") _, state, replyEvents, err := st.CreateThreadReply(replyCtx, store.CreateThreadReplyInput{RootMessageID: created.ID, AuthorID: owner.ID, Body: "postgres thread reply"}) if err != nil || state.ReplyCount != 1 { diff --git a/apps/api/internal/store/postgres/sqlc/queries.sql b/apps/api/internal/store/postgres/sqlc/queries.sql index 9fc2137e..ea7616d7 100644 --- a/apps/api/internal/store/postgres/sqlc/queries.sql +++ b/apps/api/internal/store/postgres/sqlc/queries.sql @@ -252,11 +252,36 @@ UPDATE user_appearance_preferences SET density = sqlc.arg(density) WHERE user_id = sqlc.arg(user_id); +-- name: UpsertChannelNotificationSettings :exec +INSERT INTO channel_notification_settings (channel_id, user_id, preference, created_at, updated_at) +VALUES (sqlc.arg(channel_id), sqlc.arg(user_id), sqlc.arg(preference), sqlc.arg(created_at), sqlc.arg(updated_at)) +ON CONFLICT(channel_id, user_id) DO UPDATE SET + preference = excluded.preference, + updated_at = excluded.updated_at; + +-- name: GetChannelNotificationPreference :one +SELECT preference +FROM channel_notification_settings +WHERE channel_id = sqlc.arg(channel_id) + AND user_id = sqlc.arg(user_id); + +-- name: ListMentionedUserIDs :many +SELECT u.id, lower(u.handle) AS handle +FROM users u +JOIN workspace_members wm ON wm.user_id = u.id +WHERE wm.workspace_id = sqlc.arg(workspace_id) + AND NULLIF(BTRIM(u.handle), '') IS NOT NULL + AND lower(u.handle) = ANY(sqlc.arg(handles)::text[]) +ORDER BY u.id; + -- name: ListWorkspacePushNotificationRecipients :many -SELECT u.id AS user_id, u.display_name, uns.pushover_user_key +SELECT u.id AS user_id, u.display_name, uns.pushover_user_key, + COALESCE(cns.preference, 'all') AS notification_preference FROM workspace_members wm JOIN users u ON u.id = wm.user_id JOIN user_notification_settings uns ON uns.user_id = u.id +LEFT JOIN channel_notification_settings cns + ON cns.channel_id = sqlc.arg(channel_id) AND cns.user_id = u.id WHERE wm.workspace_id = sqlc.arg(workspace_id) AND u.id <> sqlc.arg(author_id) AND uns.pushover_enabled = 1 @@ -1360,7 +1385,7 @@ SELECT EXISTS ( ); -- name: ListEventsAfter :many -SELECT e.id, e.cursor, e.workspace_id, COALESCE(e.channel_id, '') AS channel_id, e.type, e.seq, e.payload_json, e.created_at +SELECT e.id, e.cursor, e.workspace_id, COALESCE(e.channel_id, '') AS channel_id, e.type, e.seq, e.payload_json, e.created_at, e.mentioned_user_ids::text AS mentioned_user_ids FROM events e JOIN workspace_members viewer ON viewer.workspace_id = e.workspace_id AND viewer.user_id = sqlc.arg(user_id) LEFT JOIN channels event_channel ON event_channel.id = e.channel_id AND event_channel.workspace_id = e.workspace_id @@ -1491,8 +1516,8 @@ ORDER BY e.cursor DESC LIMIT 1; -- name: InsertEvent :exec -INSERT INTO events (id, cursor, workspace_id, channel_id, type, seq, payload_json, created_at, is_private) -VALUES (sqlc.arg(id), sqlc.arg(cursor), sqlc.arg(workspace_id), sqlc.arg(channel_id), sqlc.arg(type), sqlc.arg(seq), sqlc.arg(payload_json), sqlc.arg(created_at), sqlc.arg(is_private)); +INSERT INTO events (id, cursor, workspace_id, channel_id, type, seq, payload_json, created_at, is_private, mentioned_user_ids) +VALUES (sqlc.arg(id), sqlc.arg(cursor), sqlc.arg(workspace_id), sqlc.arg(channel_id), sqlc.arg(type), sqlc.arg(seq), sqlc.arg(payload_json), sqlc.arg(created_at), sqlc.arg(is_private), sqlc.arg(mentioned_user_ids)::text::jsonb); -- name: InsertEventRecipient :exec INSERT INTO event_recipients (event_id, user_id) @@ -1659,3 +1684,7 @@ WHERE workspace_id = sqlc.arg(workspace_id) AND archived_at IS NULL ORDER BY CASE WHEN name = 'general' THEN 0 ELSE 1 END, created_at, id LIMIT 1; +-- name: GetAvailableTopic :one +SELECT workspace_id, COALESCE(channel_id, '') AS channel_id +FROM topics +WHERE id = sqlc.arg(topic_id) AND archived_at IS NULL; diff --git a/apps/api/internal/store/postgres/sqlc/schema.sql b/apps/api/internal/store/postgres/sqlc/schema.sql index 94d28bbd..c33df5bd 100644 --- a/apps/api/internal/store/postgres/sqlc/schema.sql +++ b/apps/api/internal/store/postgres/sqlc/schema.sql @@ -191,6 +191,18 @@ CREATE TABLE reactions ( PRIMARY KEY (message_id, user_id, emoji) ); +CREATE TABLE channel_notification_settings ( + channel_id TEXT NOT NULL REFERENCES channels(id) ON DELETE CASCADE, + user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE, + preference TEXT NOT NULL DEFAULT 'all' CHECK (preference IN ('all', 'mentions', 'muted')), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY (channel_id, user_id) +); + +CREATE INDEX idx_channel_notification_settings_user + ON channel_notification_settings(user_id, channel_id); + CREATE TABLE events ( id TEXT PRIMARY KEY, cursor TEXT NOT NULL UNIQUE, @@ -200,7 +212,8 @@ CREATE TABLE events ( seq BIGINT, payload_json TEXT NOT NULL, created_at TEXT NOT NULL, - is_private BIGINT NOT NULL DEFAULT 0 CHECK (is_private IN (0, 1)) + is_private BIGINT NOT NULL DEFAULT 0 CHECK (is_private IN (0, 1)), + mentioned_user_ids JSONB NOT NULL DEFAULT '[]'::jsonb ); CREATE INDEX idx_events_workspace_cursor ON events(workspace_id, cursor); diff --git a/apps/api/internal/store/postgres/sqlc_adapters.go b/apps/api/internal/store/postgres/sqlc_adapters.go index 29781716..e04ae6b9 100644 --- a/apps/api/internal/store/postgres/sqlc_adapters.go +++ b/apps/api/internal/store/postgres/sqlc_adapters.go @@ -274,6 +274,7 @@ func storeEventFromListEventsAfter(row storedb.ListEventsAfterRow) store.Event { var payload any _ = json.Unmarshal([]byte(event.PayloadJSON), &payload) event.Payload = payload + _ = json.Unmarshal([]byte(row.MentionedUserIds), &event.MentionedUserIDs) return event } diff --git a/apps/api/internal/store/postgres/storedb/models.go b/apps/api/internal/store/postgres/storedb/models.go index b5020b5a..909cb3b7 100644 --- a/apps/api/internal/store/postgres/storedb/models.go +++ b/apps/api/internal/store/postgres/storedb/models.go @@ -6,6 +6,7 @@ package storedb import ( "database/sql" + "encoding/json" ) type AppInstallation struct { @@ -118,6 +119,14 @@ type Channel struct { SidebarSection sql.NullString `json:"sidebar_section"` } +type ChannelNotificationSetting struct { + ChannelID string `json:"channel_id"` + UserID string `json:"user_id"` + Preference string `json:"preference"` + CreatedAt string `json:"created_at"` + UpdatedAt string `json:"updated_at"` +} + type ChannelRead struct { ChannelID string `json:"channel_id"` UserID string `json:"user_id"` @@ -175,15 +184,16 @@ type DirectRead struct { } type Event struct { - ID string `json:"id"` - Cursor string `json:"cursor"` - WorkspaceID string `json:"workspace_id"` - ChannelID sql.NullString `json:"channel_id"` - Type string `json:"type"` - Seq sql.NullInt64 `json:"seq"` - PayloadJson string `json:"payload_json"` - CreatedAt string `json:"created_at"` - IsPrivate int64 `json:"is_private"` + ID string `json:"id"` + Cursor string `json:"cursor"` + WorkspaceID string `json:"workspace_id"` + ChannelID sql.NullString `json:"channel_id"` + Type string `json:"type"` + Seq sql.NullInt64 `json:"seq"` + PayloadJson string `json:"payload_json"` + CreatedAt string `json:"created_at"` + IsPrivate int64 `json:"is_private"` + MentionedUserIds json.RawMessage `json:"mentioned_user_ids"` } type EventDeliveryAttempt struct { diff --git a/apps/api/internal/store/postgres/storedb/queries.sql.go b/apps/api/internal/store/postgres/storedb/queries.sql.go index e219f69d..489c1ea2 100644 --- a/apps/api/internal/store/postgres/storedb/queries.sql.go +++ b/apps/api/internal/store/postgres/storedb/queries.sql.go @@ -941,6 +941,24 @@ func (q *Queries) GetAppearancePreferences(ctx context.Context, userID string) ( return i, err } +const getAvailableTopic = `-- name: GetAvailableTopic :one +SELECT workspace_id, COALESCE(channel_id, '') AS channel_id +FROM topics +WHERE id = $1 AND archived_at IS NULL +` + +type GetAvailableTopicRow struct { + WorkspaceID string `json:"workspace_id"` + ChannelID string `json:"channel_id"` +} + +func (q *Queries) GetAvailableTopic(ctx context.Context, topicID string) (GetAvailableTopicRow, error) { + row := q.db.QueryRowContext(ctx, getAvailableTopic, topicID) + var i GetAvailableTopicRow + err := row.Scan(&i.WorkspaceID, &i.ChannelID) + return i, err +} + const getBotSetupCodeByHash = `-- name: GetBotSetupCodeByHash :one SELECT id, code_hash, workspace_id, bot_user_id, token_name, scopes_json, defaults_json, created_by, created_at, expires_at, claimed_at, claimed_token_id FROM bot_setup_codes @@ -1179,6 +1197,25 @@ func (q *Queries) GetChannelByRouteIDAndWorkspace(ctx context.Context, arg GetCh return i, err } +const getChannelNotificationPreference = `-- name: GetChannelNotificationPreference :one +SELECT preference +FROM channel_notification_settings +WHERE channel_id = $1 + AND user_id = $2 +` + +type GetChannelNotificationPreferenceParams struct { + ChannelID string `json:"channel_id"` + UserID string `json:"user_id"` +} + +func (q *Queries) GetChannelNotificationPreference(ctx context.Context, arg GetChannelNotificationPreferenceParams) (string, error) { + row := q.db.QueryRowContext(ctx, getChannelNotificationPreference, arg.ChannelID, arg.UserID) + var preference string + err := row.Scan(&preference) + return preference, err +} + const getChannelWorkspace = `-- name: GetChannelWorkspace :one SELECT workspace_id FROM channels @@ -2407,20 +2444,21 @@ func (q *Queries) InsertDirectMessage(ctx context.Context, arg InsertDirectMessa } const insertEvent = `-- name: InsertEvent :exec -INSERT INTO events (id, cursor, workspace_id, channel_id, type, seq, payload_json, created_at, is_private) -VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) +INSERT INTO events (id, cursor, workspace_id, channel_id, type, seq, payload_json, created_at, is_private, mentioned_user_ids) +VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10::text::jsonb) ` type InsertEventParams struct { - ID string `json:"id"` - Cursor string `json:"cursor"` - WorkspaceID string `json:"workspace_id"` - ChannelID sql.NullString `json:"channel_id"` - Type string `json:"type"` - Seq sql.NullInt64 `json:"seq"` - PayloadJson string `json:"payload_json"` - CreatedAt string `json:"created_at"` - IsPrivate int64 `json:"is_private"` + ID string `json:"id"` + Cursor string `json:"cursor"` + WorkspaceID string `json:"workspace_id"` + ChannelID sql.NullString `json:"channel_id"` + Type string `json:"type"` + Seq sql.NullInt64 `json:"seq"` + PayloadJson string `json:"payload_json"` + CreatedAt string `json:"created_at"` + IsPrivate int64 `json:"is_private"` + MentionedUserIds string `json:"mentioned_user_ids"` } func (q *Queries) InsertEvent(ctx context.Context, arg InsertEventParams) error { @@ -2434,6 +2472,7 @@ func (q *Queries) InsertEvent(ctx context.Context, arg InsertEventParams) error arg.PayloadJson, arg.CreatedAt, arg.IsPrivate, + arg.MentionedUserIds, ) return err } @@ -3487,7 +3526,7 @@ func (q *Queries) ListEventDeliveryAttemptsPage(ctx context.Context, arg ListEve } const listEventsAfter = `-- name: ListEventsAfter :many -SELECT e.id, e.cursor, e.workspace_id, COALESCE(e.channel_id, '') AS channel_id, e.type, e.seq, e.payload_json, e.created_at +SELECT e.id, e.cursor, e.workspace_id, COALESCE(e.channel_id, '') AS channel_id, e.type, e.seq, e.payload_json, e.created_at, e.mentioned_user_ids::text AS mentioned_user_ids FROM events e JOIN workspace_members viewer ON viewer.workspace_id = e.workspace_id AND viewer.user_id = $1 LEFT JOIN channels event_channel ON event_channel.id = e.channel_id AND event_channel.workspace_id = e.workspace_id @@ -3561,14 +3600,15 @@ type ListEventsAfterParams struct { } type ListEventsAfterRow struct { - ID string `json:"id"` - Cursor string `json:"cursor"` - WorkspaceID string `json:"workspace_id"` - ChannelID string `json:"channel_id"` - Type string `json:"type"` - Seq sql.NullInt64 `json:"seq"` - PayloadJson string `json:"payload_json"` - CreatedAt string `json:"created_at"` + ID string `json:"id"` + Cursor string `json:"cursor"` + WorkspaceID string `json:"workspace_id"` + ChannelID string `json:"channel_id"` + Type string `json:"type"` + Seq sql.NullInt64 `json:"seq"` + PayloadJson string `json:"payload_json"` + CreatedAt string `json:"created_at"` + MentionedUserIds string `json:"mentioned_user_ids"` } func (q *Queries) ListEventsAfter(ctx context.Context, arg ListEventsAfterParams) ([]ListEventsAfterRow, error) { @@ -3594,6 +3634,7 @@ func (q *Queries) ListEventsAfter(ctx context.Context, arg ListEventsAfterParams &i.Seq, &i.PayloadJson, &i.CreatedAt, + &i.MentionedUserIds, ); err != nil { return nil, err } @@ -3608,6 +3649,49 @@ func (q *Queries) ListEventsAfter(ctx context.Context, arg ListEventsAfterParams return items, nil } +const listMentionedUserIDs = `-- name: ListMentionedUserIDs :many +SELECT u.id, lower(u.handle) AS handle +FROM users u +JOIN workspace_members wm ON wm.user_id = u.id +WHERE wm.workspace_id = $1 + AND NULLIF(BTRIM(u.handle), '') IS NOT NULL + AND lower(u.handle) = ANY($2::text[]) +ORDER BY u.id +` + +type ListMentionedUserIDsParams struct { + WorkspaceID string `json:"workspace_id"` + Handles []string `json:"handles"` +} + +type ListMentionedUserIDsRow struct { + ID string `json:"id"` + Handle string `json:"handle"` +} + +func (q *Queries) ListMentionedUserIDs(ctx context.Context, arg ListMentionedUserIDsParams) ([]ListMentionedUserIDsRow, error) { + rows, err := q.db.QueryContext(ctx, listMentionedUserIDs, arg.WorkspaceID, pq.Array(arg.Handles)) + if err != nil { + return nil, err + } + defer rows.Close() + var items []ListMentionedUserIDsRow + for rows.Next() { + var i ListMentionedUserIDsRow + if err := rows.Scan(&i.ID, &i.Handle); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + const listPendingUploadCleanups = `-- name: ListPendingUploadCleanups :many SELECT id, workspace_id, storage_path, attempts, last_error, created_at, updated_at FROM pending_upload_cleanups @@ -4217,30 +4301,35 @@ func (q *Queries) ListWorkspaceMembersForModeration(ctx context.Context, workspa } const listWorkspacePushNotificationRecipients = `-- name: ListWorkspacePushNotificationRecipients :many -SELECT u.id AS user_id, u.display_name, uns.pushover_user_key +SELECT u.id AS user_id, u.display_name, uns.pushover_user_key, + COALESCE(cns.preference, 'all') AS notification_preference FROM workspace_members wm JOIN users u ON u.id = wm.user_id JOIN user_notification_settings uns ON uns.user_id = u.id -WHERE wm.workspace_id = $1 - AND u.id <> $2 +LEFT JOIN channel_notification_settings cns + ON cns.channel_id = $1 AND cns.user_id = u.id +WHERE wm.workspace_id = $2 + AND u.id <> $3 AND uns.pushover_enabled = 1 AND uns.pushover_user_key <> '' ORDER BY u.id ` type ListWorkspacePushNotificationRecipientsParams struct { + ChannelID string `json:"channel_id"` WorkspaceID string `json:"workspace_id"` AuthorID string `json:"author_id"` } type ListWorkspacePushNotificationRecipientsRow struct { - UserID string `json:"user_id"` - DisplayName string `json:"display_name"` - PushoverUserKey string `json:"pushover_user_key"` + UserID string `json:"user_id"` + DisplayName string `json:"display_name"` + PushoverUserKey string `json:"pushover_user_key"` + NotificationPreference string `json:"notification_preference"` } func (q *Queries) ListWorkspacePushNotificationRecipients(ctx context.Context, arg ListWorkspacePushNotificationRecipientsParams) ([]ListWorkspacePushNotificationRecipientsRow, error) { - rows, err := q.db.QueryContext(ctx, listWorkspacePushNotificationRecipients, arg.WorkspaceID, arg.AuthorID) + rows, err := q.db.QueryContext(ctx, listWorkspacePushNotificationRecipients, arg.ChannelID, arg.WorkspaceID, arg.AuthorID) if err != nil { return nil, err } @@ -4248,7 +4337,12 @@ func (q *Queries) ListWorkspacePushNotificationRecipients(ctx context.Context, a var items []ListWorkspacePushNotificationRecipientsRow for rows.Next() { var i ListWorkspacePushNotificationRecipientsRow - if err := rows.Scan(&i.UserID, &i.DisplayName, &i.PushoverUserKey); err != nil { + if err := rows.Scan( + &i.UserID, + &i.DisplayName, + &i.PushoverUserKey, + &i.NotificationPreference, + ); err != nil { return nil, err } items = append(items, i) @@ -5349,6 +5443,33 @@ func (q *Queries) UploadHasOtherDirectMessageAttachment(ctx context.Context, arg return has_other_direct_message_attachment, err } +const upsertChannelNotificationSettings = `-- name: UpsertChannelNotificationSettings :exec +INSERT INTO channel_notification_settings (channel_id, user_id, preference, created_at, updated_at) +VALUES ($1, $2, $3, $4, $5) +ON CONFLICT(channel_id, user_id) DO UPDATE SET + preference = excluded.preference, + updated_at = excluded.updated_at +` + +type UpsertChannelNotificationSettingsParams struct { + ChannelID string `json:"channel_id"` + UserID string `json:"user_id"` + Preference string `json:"preference"` + CreatedAt string `json:"created_at"` + UpdatedAt string `json:"updated_at"` +} + +func (q *Queries) UpsertChannelNotificationSettings(ctx context.Context, arg UpsertChannelNotificationSettingsParams) error { + _, err := q.db.ExecContext(ctx, upsertChannelNotificationSettings, + arg.ChannelID, + arg.UserID, + arg.Preference, + arg.CreatedAt, + arg.UpdatedAt, + ) + return err +} + const upsertChannelRead = `-- name: UpsertChannelRead :execrows INSERT INTO channel_reads (channel_id, user_id, last_read_seq, last_read_at) VALUES ($1, $2, $3, $4) diff --git a/apps/api/internal/store/postgres/topics.go b/apps/api/internal/store/postgres/topics.go index c1c9805a..c4958225 100644 --- a/apps/api/internal/store/postgres/topics.go +++ b/apps/api/internal/store/postgres/topics.go @@ -4,6 +4,7 @@ import ( "context" "database/sql" "errors" + "fmt" "strings" "github.com/openclaw/clickclack/apps/api/internal/store" @@ -93,6 +94,27 @@ func requireTopicTx(ctx context.Context, tx *sql.Tx, workspaceID, channelID, top return nil } +func (s *Store) requireTopic(ctx context.Context, workspaceID, channelID, topicID string) error { + topicID = strings.TrimSpace(topicID) + if topicID == "" { + return nil + } + topic, err := s.q.GetAvailableTopic(ctx, topicID) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + return fmt.Errorf("%w: topic is unavailable", store.ErrInvalidMessagePage) + } + return err + } + if topic.WorkspaceID != workspaceID { + return fmt.Errorf("%w: topic is unavailable", store.ErrInvalidMessagePage) + } + if topic.ChannelID != "" && topic.ChannelID != channelID { + return fmt.Errorf("%w: topic is unavailable", store.ErrInvalidMessagePage) + } + return nil +} + func topicSelect() string { return `SELECT id, workspace_id, COALESCE(channel_id, ''), name, created_by, created_at, archived_at FROM topics` } diff --git a/apps/api/internal/store/sqlite/chat_test.go b/apps/api/internal/store/sqlite/chat_test.go index d176d8eb..07dd13f9 100644 --- a/apps/api/internal/store/sqlite/chat_test.go +++ b/apps/api/internal/store/sqlite/chat_test.go @@ -390,6 +390,75 @@ func TestStoreMessagePageCursors(t *testing.T) { } } +func TestStoreMessagePageTopicFilter(t *testing.T) { + t.Parallel() + ctx, st, owner, workspace, channel := seededStore(t) + topic, err := st.CreateTopic(ctx, store.CreateTopicInput{ + WorkspaceID: workspace.ID, + ChannelID: channel.ID, + Name: "Release", + CreatedBy: owner.ID, + }) + if err != nil { + t.Fatal(err) + } + for i := 1; i <= 12; i++ { + input := store.CreateMessageInput{ + ChannelID: channel.ID, + AuthorID: owner.ID, + Body: fmt.Sprintf("topic page %02d", i), + } + if i%2 == 0 { + input.TopicID = topic.ID + } + if _, _, err := st.CreateMessage(ctx, input); err != nil { + t.Fatal(err) + } + } + + latest, err := st.ListMessages(ctx, channel.ID, owner.ID, store.MessagePageRequest{ + Limit: 3, + TopicID: topic.ID, + }) + if err != nil { + t.Fatal(err) + } + expectExactSeqs(t, latest.Messages, 8, 10, 12) + if !latest.HasOlder || latest.HasNewer { + t.Fatalf("unexpected topic latest metadata: %#v", latest) + } + + before, err := st.ListMessages(ctx, channel.ID, owner.ID, store.MessagePageRequest{ + BeforeSeq: int64Ptr(8), + Limit: 2, + TopicID: topic.ID, + }) + if err != nil { + t.Fatal(err) + } + expectExactSeqs(t, before.Messages, 4, 6) + if !before.HasOlder || !before.HasNewer { + t.Fatalf("unexpected topic before metadata: %#v", before) + } + + around, err := st.ListMessages(ctx, channel.ID, owner.ID, store.MessagePageRequest{ + AroundSeq: int64Ptr(7), + Limit: 3, + TopicID: topic.ID, + }) + if err != nil { + t.Fatal(err) + } + expectExactSeqs(t, around.Messages, 4, 6, 8) + + if _, err := st.db.ExecContext(ctx, `UPDATE topics SET archived_at = ? WHERE id = ?`, now(), topic.ID); err != nil { + t.Fatal(err) + } + if _, err := st.ListMessages(ctx, channel.ID, owner.ID, store.MessagePageRequest{TopicID: topic.ID}); !errors.Is(err, store.ErrInvalidMessagePage) { + t.Fatalf("expected archived topic rejection, got %v", err) + } +} + func TestStoreMessagePageLargeHistorySmoke(t *testing.T) { if os.Getenv("CLICKCLACK_LARGE_HISTORY") != "1" { t.Skip("set CLICKCLACK_LARGE_HISTORY=1 to run the 100k-message paging smoke") @@ -893,3 +962,15 @@ func expectSeqs(t *testing.T, messages []store.Message, first, last int64) { } } } + +func expectExactSeqs(t *testing.T, messages []store.Message, want ...int64) { + t.Helper() + if len(messages) != len(want) { + t.Fatalf("message count = %d, want %d: %#v", len(messages), len(want), messages) + } + for i, message := range messages { + if message.ChannelSeq == nil || *message.ChannelSeq != want[i] { + t.Fatalf("message[%d] seq = %v, want %d: %#v", i, message.ChannelSeq, want[i], messages) + } + } +} diff --git a/apps/api/internal/store/sqlite/correlation_events_test.go b/apps/api/internal/store/sqlite/correlation_events_test.go index 78f49ada..1e69ae60 100644 --- a/apps/api/internal/store/sqlite/correlation_events_test.go +++ b/apps/api/internal/store/sqlite/correlation_events_test.go @@ -51,6 +51,7 @@ func TestDurableMessageEventsPreserveOptionalCorrelationMetadata(t *testing.T) { t.Fatalf("unexpected reply events: %#v", replyEvents) } assertEventPayloadValue(t, replyEvents[0], "correlation_id", "corr-sqlite-reply") + assertEventPayloadMissing(t, replyEvents[0], "author_id") assertEventPayloadMissing(t, replyEvents[0], "body") assertEventPayloadMissing(t, replyEvents[1], "correlation_id") diff --git a/apps/api/internal/store/sqlite/export.go b/apps/api/internal/store/sqlite/export.go index 100abf13..aad7814d 100644 --- a/apps/api/internal/store/sqlite/export.go +++ b/apps/api/internal/store/sqlite/export.go @@ -21,7 +21,7 @@ func (s *Store) ExportJSON(ctx context.Context, writer io.Writer) error { out := map[string]any{} tables := []string{ - "users", "user_notification_settings", "identities", "workspaces", "workspace_members", "channels", + "users", "user_notification_settings", "channel_notification_settings", "identities", "workspaces", "workspace_members", "channels", "messages", "thread_state", "reactions", "events", "event_recipients", "uploads", "channel_reads", "direct_reads", "message_attachments", "direct_conversations", "direct_conversation_members", diff --git a/apps/api/internal/store/sqlite/helpers.go b/apps/api/internal/store/sqlite/helpers.go index f8b78c6a..e1ba1b6a 100644 --- a/apps/api/internal/store/sqlite/helpers.go +++ b/apps/api/internal/store/sqlite/helpers.go @@ -269,21 +269,31 @@ func insertEvent(ctx context.Context, tx *sql.Tx, workspaceID, channelID, eventT } func insertEventWithRecipients(ctx context.Context, tx *sql.Tx, workspaceID, channelID, eventType string, seq *int64, payload any, recipientUserIDs []string) (store.Event, error) { + return insertEventWithRecipientsAndMentions(ctx, tx, workspaceID, channelID, eventType, seq, payload, recipientUserIDs, nil) +} + +func insertEventWithRecipientsAndMentions(ctx context.Context, tx *sql.Tx, workspaceID, channelID, eventType string, seq *int64, payload any, recipientUserIDs, mentionedUserIDs []string) (store.Event, error) { payloadJSON, err := json.Marshal(payload) if err != nil { return store.Event{}, err } recipients := compactStrings(recipientUserIDs) + mentions := compactStrings(mentionedUserIDs) + mentionedJSON, err := json.Marshal(mentions) + if err != nil { + return store.Event{}, err + } event := store.Event{ - ID: newID("evt"), - Cursor: newID("cur"), - Type: eventType, - WorkspaceID: workspaceID, - ChannelID: channelID, - Seq: seq, - CreatedAt: now(), - PayloadJSON: string(payloadJSON), - Payload: payload, + ID: newID("evt"), + Cursor: newID("cur"), + Type: eventType, + WorkspaceID: workspaceID, + ChannelID: channelID, + Seq: seq, + CreatedAt: now(), + PayloadJSON: string(payloadJSON), + Payload: payload, + MentionedUserIDs: mentions, } isPrivate := 0 if len(recipients) > 0 { @@ -291,15 +301,16 @@ func insertEventWithRecipients(ctx context.Context, tx *sql.Tx, workspaceID, cha } q := storedb.New(tx) if err := q.InsertEvent(ctx, storedb.InsertEventParams{ - ID: event.ID, - Cursor: event.Cursor, - WorkspaceID: event.WorkspaceID, - ChannelID: sqlOptionalText(event.ChannelID), - Type: event.Type, - Seq: nullInt64FromPtr(event.Seq), - PayloadJson: event.PayloadJSON, - CreatedAt: event.CreatedAt, - IsPrivate: int64(isPrivate), + ID: event.ID, + Cursor: event.Cursor, + WorkspaceID: event.WorkspaceID, + ChannelID: sqlOptionalText(event.ChannelID), + Type: event.Type, + Seq: nullInt64FromPtr(event.Seq), + PayloadJson: event.PayloadJSON, + CreatedAt: event.CreatedAt, + IsPrivate: int64(isPrivate), + MentionedUserIds: string(mentionedJSON), }); err != nil { return store.Event{}, err } diff --git a/apps/api/internal/store/sqlite/mentions_notifications_test.go b/apps/api/internal/store/sqlite/mentions_notifications_test.go new file mode 100644 index 00000000..4c2cb948 --- /dev/null +++ b/apps/api/internal/store/sqlite/mentions_notifications_test.go @@ -0,0 +1,709 @@ +package sqlite + +import ( + "context" + "path/filepath" + "strconv" + "strings" + "testing" + + "github.com/openclaw/clickclack/apps/api/internal/store" +) + +func TestMentionsNotificationMigrationUpgradesExistingDatabase(t *testing.T) { + ctx := context.Background() + st, err := Open("sqlite://" + filepath.Join(t.TempDir(), "mentions-upgrade.db")) + if err != nil { + t.Fatal(err) + } + t.Cleanup(func() { _ = st.Close() }) + applySQLiteMigrationsBefore(t, ctx, st, "0039_mentions_and_notifications.sql") + + owner, err := st.EnsureBootstrap(ctx, "Upgrade Owner", "upgrade-owner@example.com") + if err != nil { + t.Fatal(err) + } + workspaces, err := st.ListWorkspaces(ctx, owner.ID) + if err != nil { + t.Fatal(err) + } + channels, err := st.ListChannels(ctx, workspaces[0].ID, owner.ID) + if err != nil { + t.Fatal(err) + } + if _, err := st.db.ExecContext(ctx, `INSERT INTO events (id, cursor, workspace_id, channel_id, type, seq, payload_json, created_at, is_private) VALUES ('evt_upgrade', 'cur_upgrade', ?, ?, 'message.created', 1, '{}', ?, 0)`, workspaces[0].ID, channels[0].ID, now()); err != nil { + t.Fatal(err) + } + + if err := st.Migrate(ctx); err != nil { + t.Fatal(err) + } + var mentionedJSON string + if err := st.db.QueryRowContext(ctx, `SELECT mentioned_user_ids FROM events WHERE id = 'evt_upgrade'`).Scan(&mentionedJSON); err != nil { + t.Fatal(err) + } + if mentionedJSON != "[]" { + t.Fatalf("expected existing event to receive an empty mention list, got %q", mentionedJSON) + } + preference, err := st.GetChannelNotificationPreference(ctx, channels[0].ID, owner.ID) + if err != nil || preference != store.ChannelNotifyAll { + t.Fatalf("expected upgraded database to default to all, got %q: %v", preference, err) + } +} + +func TestParseMessageMentions(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + body string + expected []string + }{ + { + name: "no mentions", + body: "hello world", + expected: nil, + }, + { + name: "single mention", + body: "hello @alice", + expected: []string{"alice"}, + }, + { + name: "multiple mentions", + body: "hey @alice and @bob check this out", + expected: []string{"alice", "bob"}, + }, + { + name: "mention at start", + body: "@alice look at this", + expected: []string{"alice"}, + }, + { + name: "duplicate mentions", + body: "@alice hey @alice", + expected: []string{"alice"}, + }, + { + name: "mention with underscore", + body: "hello @alice_smith", + expected: []string{"alice_smith"}, + }, + { + name: "sentence-ending period", + body: "hello @alice.", + expected: []string{"alice"}, + }, + { + name: "mention after punctuation", + body: `cc:"@alice" and cc:@bob`, + expected: []string{"alice", "bob"}, + }, + { + name: "email not a mention", + body: "email me at user@example.com", + expected: nil, + }, + { + name: "bare URL path not a mention", + body: "see https://example.com/@alice then @bob", + expected: []string{"bob"}, + }, + { + name: "mixed-case URL scheme path not a mention", + body: "see HTTPS://example.com/@alice then @bob", + expected: []string{"bob"}, + }, + { + name: "www URL path not a mention", + body: "see www.example.com/@alice then @bob", + expected: []string{"bob"}, + }, + { + name: "non-http URL scheme path not a mention", + body: "see ftp://example.com/@alice then @bob", + expected: []string{"bob"}, + }, + { + name: "mention in markdown brackets not detected", + body: "check out [ask @user](https://example.com/@other)", + expected: nil, + }, + { + name: "ordinary brackets before a link do not hide mentions", + body: "[x] notify @alice [details](https://example.com)", + expected: []string{"alice"}, + }, + { + name: "empty body", + body: "", + expected: nil, + }, + { + name: "just an @ symbol with no handle", + body: "just an @", + expected: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := store.ParseMessageMentions(tt.body) + if len(result) == 0 && len(tt.expected) == 0 { + return + } + if len(result) != len(tt.expected) { + t.Fatalf("expected %v, got %v", tt.expected, result) + } + for i := range result { + if result[i] != tt.expected[i] { + t.Fatalf("expected %v, got %v", tt.expected, result) + } + } + }) + } +} + +func TestMentionRecordingOnMessageCreate(t *testing.T) { + t.Parallel() + ctx := context.Background() + st := newTestStore(t) + + // Create a user with a known handle. + user, err := st.CreateUser(ctx, store.CreateUserInput{DisplayName: "Alice", Email: "alice@example.com"}) + if err != nil { + t.Fatal(err) + } + // Set the handle since CreateUser sets it to empty. + if _, err := st.UpdateUserProfile(ctx, store.UpdateUserProfileInput{ + UserID: user.ID, + DisplayName: "Alice", + Handle: "alice", + }); err != nil { + t.Fatal(err) + } + + owner, err := st.EnsureBootstrap(ctx, "Owner", "owner@example.com") + if err != nil { + t.Fatal(err) + } + workspace, err := st.EnsureDefaultWorkspaceMember(ctx, owner.ID) + if err != nil { + t.Fatal(err) + } + err = st.AddWorkspaceMember(ctx, workspace.ID, user.ID, store.WorkspaceRoleMember) + if err != nil { + t.Fatal(err) + } + + channels, err := st.ListChannels(ctx, workspace.ID, owner.ID) + if err != nil { + t.Fatal(err) + } + if len(channels) == 0 { + t.Fatal("expected at least one channel") + } + channel := channels[0] + + // Create a message with an @mention. + _, event, err := st.CreateMessage(ctx, store.CreateMessageInput{ + ChannelID: channel.ID, + AuthorID: owner.ID, + Body: "hey @alice check this out", + }) + if err != nil { + t.Fatal(err) + } + + // Verify the event was created (mention recording happens inside the tx). + events, err := st.ListEventsAfter(ctx, workspace.ID, owner.ID, "", 10) + if err != nil { + t.Fatal(err) + } + + var found bool + for _, evt := range events { + if evt.ID == event.ID { + found = true + if len(evt.MentionedUserIDs) != 1 || evt.MentionedUserIDs[0] != user.ID { + t.Fatalf("expected mentioned_user_ids to contain %q, got %v", user.ID, evt.MentionedUserIDs) + } + break + } + } + if !found { + t.Fatalf("event %s not found in event stream", event.ID) + } + + // Create a message without mentions and verify no mentioned_user_ids. + _, event2, err := st.CreateMessage(ctx, store.CreateMessageInput{ + ChannelID: channel.ID, + AuthorID: owner.ID, + Body: "no mentions here", + }) + if err != nil { + t.Fatal(err) + } + + events, err = st.ListEventsAfter(ctx, workspace.ID, owner.ID, event.Cursor, 10) + if err != nil { + t.Fatal(err) + } + for _, evt := range events { + if evt.ID == event2.ID { + if len(evt.MentionedUserIDs) != 0 { + t.Fatalf("expected empty mentioned_user_ids, got %v", evt.MentionedUserIDs) + } + break + } + } +} + +func TestMentionRecordingOnThreadReply(t *testing.T) { + t.Parallel() + ctx := context.Background() + st := newTestStore(t) + + user, err := st.CreateUser(ctx, store.CreateUserInput{DisplayName: "Alice", Email: "alice@example.com"}) + if err != nil { + t.Fatal(err) + } + if _, err := st.UpdateUserProfile(ctx, store.UpdateUserProfileInput{ + UserID: user.ID, + DisplayName: "Alice", + Handle: "alice", + }); err != nil { + t.Fatal(err) + } + + owner, err := st.EnsureBootstrap(ctx, "Owner", "owner@example.com") + if err != nil { + t.Fatal(err) + } + workspace, err := st.EnsureDefaultWorkspaceMember(ctx, owner.ID) + if err != nil { + t.Fatal(err) + } + err = st.AddWorkspaceMember(ctx, workspace.ID, user.ID, store.WorkspaceRoleMember) + if err != nil { + t.Fatal(err) + } + + channels, err := st.ListChannels(ctx, workspace.ID, owner.ID) + if err != nil { + t.Fatal(err) + } + if len(channels) == 0 { + t.Fatal("expected at least one channel") + } + channel := channels[0] + + rootMsg, _, err := st.CreateMessage(ctx, store.CreateMessageInput{ + ChannelID: channel.ID, + AuthorID: owner.ID, + Body: "root message", + }) + if err != nil { + t.Fatal(err) + } + + // Create a thread reply with an @mention. + _, _, events, err := st.CreateThreadReply(ctx, store.CreateThreadReplyInput{ + RootMessageID: rootMsg.ID, + AuthorID: owner.ID, + Body: "reply to @alice", + }) + if err != nil { + t.Fatal(err) + } + + events2, err := st.ListEventsAfter(ctx, workspace.ID, owner.ID, "", 10) + if err != nil { + t.Fatal(err) + } + + for _, evt := range events { + if evt.Type != "thread.reply_created" { + continue + } + for _, evt2 := range events2 { + if evt.ID == evt2.ID { + if len(evt2.MentionedUserIDs) != 1 || evt2.MentionedUserIDs[0] != user.ID { + t.Fatalf("expected mentioned_user_ids for thread reply to contain %q, got %v", user.ID, evt2.MentionedUserIDs) + } + assertEventPayloadMissing(t, evt2, "author_id") + assertEventPayloadMissing(t, evt2, "body") + } + } + } +} + +func TestMentionLookupUsesOneSQLiteParameter(t *testing.T) { + t.Parallel() + ctx := context.Background() + st := newTestStore(t) + owner, err := st.EnsureBootstrap(ctx, "Owner", "many-mentions-owner@example.com") + if err != nil { + t.Fatal(err) + } + workspace, err := st.EnsureDefaultWorkspaceMember(ctx, owner.ID) + if err != nil { + t.Fatal(err) + } + alice, err := st.CreateUser(ctx, store.CreateUserInput{DisplayName: "Alice", Email: "many-mentions-alice@example.com"}) + if err != nil { + t.Fatal(err) + } + alice, err = st.UpdateUserProfile(ctx, store.UpdateUserProfileInput{ + UserID: alice.ID, DisplayName: alice.DisplayName, Handle: "alice", + }) + if err != nil { + t.Fatal(err) + } + if err := st.AddWorkspaceMember(ctx, workspace.ID, alice.ID, store.WorkspaceRoleMember); err != nil { + t.Fatal(err) + } + channels, err := st.ListChannels(ctx, workspace.ID, owner.ID) + if err != nil || len(channels) == 0 { + t.Fatalf("expected a channel: %v", err) + } + var body strings.Builder + body.WriteString("@alice ") + for i := 0; i < 40_000; i++ { + body.WriteString("@person") + body.WriteString(strconv.Itoa(i)) + body.WriteByte(' ') + } + _, event, err := st.CreateMessage(ctx, store.CreateMessageInput{ + ChannelID: channels[0].ID, + AuthorID: owner.ID, + Body: body.String(), + }) + if err != nil { + t.Fatal(err) + } + if len(event.MentionedUserIDs) != 1 || event.MentionedUserIDs[0] != alice.ID { + t.Fatalf("expected only Alice to resolve from the large mention set, got %v", event.MentionedUserIDs) + } +} + +func TestDirectThreadMentionDoesNotGrantConversationAccess(t *testing.T) { + t.Parallel() + ctx := context.Background() + st := newTestStore(t) + owner, err := st.EnsureBootstrap(ctx, "Owner", "dm-mention-owner@example.com") + if err != nil { + t.Fatal(err) + } + workspace, err := st.EnsureDefaultWorkspaceMember(ctx, owner.ID) + if err != nil { + t.Fatal(err) + } + member, err := st.CreateUser(ctx, store.CreateUserInput{DisplayName: "Member", Email: "dm-member@example.com"}) + if err != nil { + t.Fatal(err) + } + outsider, err := st.CreateUser(ctx, store.CreateUserInput{DisplayName: "Outsider", Email: "dm-outsider@example.com"}) + if err != nil { + t.Fatal(err) + } + outsider, err = st.UpdateUserProfile(ctx, store.UpdateUserProfileInput{ + UserID: outsider.ID, DisplayName: outsider.DisplayName, Handle: "outsider", + }) + if err != nil { + t.Fatal(err) + } + for _, userID := range []string{member.ID, outsider.ID} { + if err := st.AddWorkspaceMember(ctx, workspace.ID, userID, store.WorkspaceRoleMember); err != nil { + t.Fatal(err) + } + } + direct, err := st.CreateDirectConversation(ctx, store.CreateDirectConversationInput{ + WorkspaceID: workspace.ID, UserID: owner.ID, MemberIDs: []string{member.ID}, + }) + if err != nil { + t.Fatal(err) + } + root, _, err := st.CreateDirectMessage(ctx, store.CreateDirectMessageInput{ + ConversationID: direct.ID, AuthorID: owner.ID, Body: "private root", + }) + if err != nil { + t.Fatal(err) + } + _, _, events, err := st.CreateThreadReply(ctx, store.CreateThreadReplyInput{ + RootMessageID: root.ID, AuthorID: owner.ID, Body: "private hello @outsider", + }) + if err != nil { + t.Fatal(err) + } + var replyEventID string + for _, event := range events { + if event.Type == "thread.reply_created" { + replyEventID = event.ID + } + } + if replyEventID == "" { + t.Fatal("expected thread.reply_created event") + } + outsiderEvents, err := st.ListEventsAfter(ctx, workspace.ID, outsider.ID, "", 100) + if err != nil { + t.Fatal(err) + } + for _, event := range outsiderEvents { + if event.ID == replyEventID { + t.Fatal("mention must not grant an outsider access to a private conversation event") + } + } + memberEvents, err := st.ListEventsAfter(ctx, workspace.ID, member.ID, "", 100) + if err != nil { + t.Fatal(err) + } + for _, event := range memberEvents { + if event.ID == replyEventID { + return + } + } + t.Fatal("expected direct conversation member to receive the private thread event") +} + +func TestChannelNotificationSettingsCRUD(t *testing.T) { + t.Parallel() + ctx := context.Background() + st := newTestStore(t) + + owner, err := st.EnsureBootstrap(ctx, "Owner", "owner@example.com") + if err != nil { + t.Fatal(err) + } + workspace, err := st.EnsureDefaultWorkspaceMember(ctx, owner.ID) + if err != nil { + t.Fatal(err) + } + + channels, err := st.ListChannels(ctx, workspace.ID, owner.ID) + if err != nil { + t.Fatal(err) + } + if len(channels) == 0 { + t.Fatal("expected at least one channel") + } + channel := channels[0] + + // Default preference should be "all". + pref, err := st.GetChannelNotificationPreference(ctx, channel.ID, owner.ID) + if err != nil { + t.Fatal(err) + } + if pref != store.ChannelNotifyAll { + t.Fatalf("expected default preference 'all', got %q", pref) + } + + // Set to "mentions". + err = st.UpsertChannelNotificationSettings(ctx, store.ChannelNotificationInput{ + ChannelID: channel.ID, + UserID: owner.ID, + Preference: store.ChannelNotifyMentions, + }) + if err != nil { + t.Fatal(err) + } + pref, err = st.GetChannelNotificationPreference(ctx, channel.ID, owner.ID) + if err != nil { + t.Fatal(err) + } + if pref != store.ChannelNotifyMentions { + t.Fatalf("expected 'mentions', got %q", pref) + } + + // Set to "muted". + err = st.UpsertChannelNotificationSettings(ctx, store.ChannelNotificationInput{ + ChannelID: channel.ID, + UserID: owner.ID, + Preference: store.ChannelNotifyMuted, + }) + if err != nil { + t.Fatal(err) + } + pref, err = st.GetChannelNotificationPreference(ctx, channel.ID, owner.ID) + if err != nil { + t.Fatal(err) + } + if pref != store.ChannelNotifyMuted { + t.Fatalf("expected 'muted', got %q", pref) + } + + // Set back to "all". + err = st.UpsertChannelNotificationSettings(ctx, store.ChannelNotificationInput{ + ChannelID: channel.ID, + UserID: owner.ID, + Preference: store.ChannelNotifyAll, + }) + if err != nil { + t.Fatal(err) + } + pref, err = st.GetChannelNotificationPreference(ctx, channel.ID, owner.ID) + if err != nil { + t.Fatal(err) + } + if pref != store.ChannelNotifyAll { + t.Fatalf("expected 'all', got %q", pref) + } + + // Invalid preference should fail. + err = st.UpsertChannelNotificationSettings(ctx, store.ChannelNotificationInput{ + ChannelID: channel.ID, + UserID: owner.ID, + Preference: "invalid", + }) + if err == nil { + t.Fatal("expected error for invalid preference") + } +} + +func TestPushNotificationRecipientsRespectChannelMute(t *testing.T) { + t.Parallel() + ctx := context.Background() + st := newTestStore(t) + + owner, err := st.EnsureBootstrap(ctx, "Owner", "owner@example.com") + if err != nil { + t.Fatal(err) + } + + member, err := st.CreateUser(ctx, store.CreateUserInput{DisplayName: "Member", Email: "member@example.com"}) + if err != nil { + t.Fatal(err) + } + member, err = st.UpdateUserProfile(ctx, store.UpdateUserProfileInput{ + UserID: member.ID, DisplayName: member.DisplayName, Handle: "member", + }) + if err != nil { + t.Fatal(err) + } + + workspace, err := st.EnsureDefaultWorkspaceMember(ctx, owner.ID) + if err != nil { + t.Fatal(err) + } + err = st.AddWorkspaceMember(ctx, workspace.ID, member.ID, store.WorkspaceRoleMember) + if err != nil { + t.Fatal(err) + } + + // Enable push notifications for the member. + _, err = st.UpdateNotificationSettings(ctx, store.UpdateNotificationSettingsInput{ + UserID: member.ID, + PushoverEnabled: true, + PushoverUserKey: "m12345678901234567890123456789", + }) + if err != nil { + t.Fatal(err) + } + + channels, err := st.ListChannels(ctx, workspace.ID, owner.ID) + if err != nil { + t.Fatal(err) + } + if len(channels) == 0 { + t.Fatal("expected at least one channel") + } + channel := channels[0] + + // Create a message and check that the member is a recipient. + msg, _, err := st.CreateMessage(ctx, store.CreateMessageInput{ + ChannelID: channel.ID, + AuthorID: owner.ID, + Body: "test message", + }) + if err != nil { + t.Fatal(err) + } + + recipients, err := st.ListPushNotificationRecipients(ctx, msg.ID, nil) + if err != nil { + t.Fatal(err) + } + + var found bool + for _, r := range recipients { + if r.UserID == member.ID { + found = true + break + } + } + if !found { + t.Fatal("expected member to be a push notification recipient") + } + + // Mute the channel for the member. + err = st.UpsertChannelNotificationSettings(ctx, store.ChannelNotificationInput{ + ChannelID: channel.ID, + UserID: member.ID, + Preference: store.ChannelNotifyMuted, + }) + if err != nil { + t.Fatal(err) + } + + // Check that the member is no longer a recipient. + recipients2, err := st.ListPushNotificationRecipients(ctx, msg.ID, nil) + if err != nil { + t.Fatal(err) + } + + for _, r := range recipients2 { + if r.UserID == member.ID { + t.Fatal("expected member to NOT be a push notification recipient after muting channel") + } + } + + if err := st.UpsertChannelNotificationSettings(ctx, store.ChannelNotificationInput{ + ChannelID: channel.ID, UserID: member.ID, Preference: store.ChannelNotifyMentions, + }); err != nil { + t.Fatal(err) + } + withoutMention, _, err := st.CreateMessage(ctx, store.CreateMessageInput{ + ChannelID: channel.ID, AuthorID: owner.ID, Body: "nothing to flag", + }) + if err != nil { + t.Fatal(err) + } + recipients, err = st.ListPushNotificationRecipients(ctx, withoutMention.ID, nil) + if err != nil { + t.Fatal(err) + } + for _, recipient := range recipients { + if recipient.UserID == member.ID { + t.Fatal("expected mentions-only member to be skipped without an @mention") + } + } + withMention, mentionEvent, err := st.CreateMessage(ctx, store.CreateMessageInput{ + ChannelID: channel.ID, AuthorID: owner.ID, Body: "hello @member", + }) + if err != nil { + t.Fatal(err) + } + if _, _, err := st.UpdateMessage(ctx, store.UpdateMessageInput{ + MessageID: withMention.ID, UserID: owner.ID, Body: "mention removed after creation", + }); err != nil { + t.Fatal(err) + } + if _, err := st.UpdateUserProfile(ctx, store.UpdateUserProfileInput{ + UserID: member.ID, DisplayName: member.DisplayName, Handle: "renamed-member", + }); err != nil { + t.Fatal(err) + } + recipients, err = st.ListPushNotificationRecipients(ctx, withMention.ID, mentionEvent.MentionedUserIDs) + if err != nil { + t.Fatal(err) + } + found = false + for _, recipient := range recipients { + if recipient.UserID == member.ID { + found = true + } + } + if !found { + t.Fatal("expected mentions-only member to receive a matching @mention") + } +} diff --git a/apps/api/internal/store/sqlite/message_privacy_scaling_test.go b/apps/api/internal/store/sqlite/message_privacy_scaling_test.go index 0060eee4..372c2d64 100644 --- a/apps/api/internal/store/sqlite/message_privacy_scaling_test.go +++ b/apps/api/internal/store/sqlite/message_privacy_scaling_test.go @@ -599,6 +599,10 @@ func TestMessagePrivacyScalingMigrationBackfillsCurrentMainDMThreadPrivacy(t *te } applySQLiteMigrations(t, ctx, st, "0010_message_privacy_scaling.sql") + // Bring the fixture up to the current events shape before exercising the + // current ListEventsAfter implementation. This test still applies 0010 in + // isolation so its privacy backfill remains the behavior under test. + applySQLiteMigrations(t, ctx, st, "0039_mentions_and_notifications.sql") var replyDM string var replyChannel any diff --git a/apps/api/internal/store/sqlite/migrations/0039_mentions_and_notifications.sql b/apps/api/internal/store/sqlite/migrations/0039_mentions_and_notifications.sql new file mode 100644 index 00000000..1556c6f9 --- /dev/null +++ b/apps/api/internal/store/sqlite/migrations/0039_mentions_and_notifications.sql @@ -0,0 +1,13 @@ +ALTER TABLE events ADD COLUMN mentioned_user_ids TEXT NOT NULL DEFAULT '[]'; + +CREATE TABLE IF NOT EXISTS channel_notification_settings ( + channel_id TEXT NOT NULL REFERENCES channels(id) ON DELETE CASCADE, + user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE, + preference TEXT NOT NULL DEFAULT 'all' CHECK (preference IN ('all', 'mentions', 'muted')), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY (channel_id, user_id) +); + +CREATE INDEX IF NOT EXISTS idx_channel_notification_settings_user + ON channel_notification_settings(user_id, channel_id); diff --git a/apps/api/internal/store/sqlite/misc_test.go b/apps/api/internal/store/sqlite/misc_test.go index 670d6c70..ce7ac81c 100644 --- a/apps/api/internal/store/sqlite/misc_test.go +++ b/apps/api/internal/store/sqlite/misc_test.go @@ -216,7 +216,7 @@ func TestStoreMiscBranches(t *testing.T) { if err != nil { t.Fatal(err) } - recipients, err := st.ListPushNotificationRecipients(ctx, root.ID) + recipients, err := st.ListPushNotificationRecipients(ctx, root.ID, nil) if err != nil { t.Fatal(err) } @@ -231,7 +231,7 @@ func TestStoreMiscBranches(t *testing.T) { if err != nil { t.Fatal(err) } - recipients, err = st.ListPushNotificationRecipients(ctx, dmMessage.ID) + recipients, err = st.ListPushNotificationRecipients(ctx, dmMessage.ID, nil) if err != nil { t.Fatal(err) } @@ -285,7 +285,7 @@ func TestStoreMiscBranches(t *testing.T) { if len(replies) != 6 || len(threadState.LastReplyAuthorIDs) != 3 { t.Fatalf("unexpected thread compaction: replies=%d state=%#v", len(replies), threadState) } - recipients, err = st.ListPushNotificationRecipients(ctx, reply.ID) + recipients, err = st.ListPushNotificationRecipients(ctx, reply.ID, nil) if err != nil { t.Fatal(err) } @@ -310,7 +310,7 @@ func TestStoreMiscBranches(t *testing.T) { if _, err := st.db.ExecContext(ctx, `DELETE FROM workspace_members WHERE workspace_id = ? AND user_id = ?`, workspaces[0].ID, owner.ID); err != nil { t.Fatal(err) } - recipients, err = st.ListPushNotificationRecipients(ctx, dmMessage.ID) + recipients, err = st.ListPushNotificationRecipients(ctx, dmMessage.ID, nil) if err != nil { t.Fatal(err) } diff --git a/apps/api/internal/store/sqlite/notifications.go b/apps/api/internal/store/sqlite/notifications.go index bd04ad4c..23866365 100644 --- a/apps/api/internal/store/sqlite/notifications.go +++ b/apps/api/internal/store/sqlite/notifications.go @@ -3,6 +3,7 @@ package sqlite import ( "context" "database/sql" + "encoding/json" "errors" "regexp" "strings" @@ -63,7 +64,75 @@ func (s *Store) getNotificationSettings(ctx context.Context, userID string) (sto return storeNotificationSettingsFromDB(row), nil } -func (s *Store) ListPushNotificationRecipients(ctx context.Context, messageID string) ([]store.PushNotificationRecipient, error) { +func (s *Store) UpsertChannelNotificationSettings(ctx context.Context, input store.ChannelNotificationInput) error { + preference, err := normalizeChannelNotificationPreference(input.Preference) + if err != nil { + return err + } + if _, err := s.GetChannel(ctx, input.ChannelID, input.UserID); err != nil { + return err + } + timestamp := now() + return s.q.UpsertChannelNotificationSettings(ctx, storedb.UpsertChannelNotificationSettingsParams{ + ChannelID: input.ChannelID, + UserID: input.UserID, + Preference: preference, + CreatedAt: timestamp, + UpdatedAt: timestamp, + }) +} + +func (s *Store) GetChannelNotificationPreference(ctx context.Context, channelID, userID string) (string, error) { + if _, err := s.GetChannel(ctx, channelID, userID); err != nil { + return "", err + } + preference, err := s.q.GetChannelNotificationPreference(ctx, storedb.GetChannelNotificationPreferenceParams{ + ChannelID: channelID, + UserID: userID, + }) + if errors.Is(err, sql.ErrNoRows) { + return store.ChannelNotifyAll, nil + } + return preference, err +} + +func normalizeChannelNotificationPreference(preference string) (string, error) { + switch strings.TrimSpace(preference) { + case store.ChannelNotifyAll: + return store.ChannelNotifyAll, nil + case store.ChannelNotifyMentions: + return store.ChannelNotifyMentions, nil + case store.ChannelNotifyMuted: + return store.ChannelNotifyMuted, nil + default: + return "", errors.New("invalid channel notification preference") + } +} + +func mentionedUserIDs(ctx context.Context, queries *storedb.Queries, workspaceID, body string) ([]string, error) { + handles := store.ParseMessageMentions(body) + if len(handles) == 0 { + return nil, nil + } + handlesJSON, err := json.Marshal(handles) + if err != nil { + return nil, err + } + rows, err := queries.ListMentionedUserIDs(ctx, storedb.ListMentionedUserIDsParams{ + WorkspaceID: workspaceID, + HandlesJson: string(handlesJSON), + }) + if err != nil { + return nil, err + } + ids := make([]string, 0, len(rows)) + for _, row := range rows { + ids = append(ids, row.ID) + } + return ids, nil +} + +func (s *Store) ListPushNotificationRecipients(ctx context.Context, messageID string, mentionedUserIDs []string) ([]store.PushNotificationRecipient, error) { message, err := getMessage(ctx, s.db, messageID) if err != nil { return nil, err @@ -71,19 +140,32 @@ func (s *Store) ListPushNotificationRecipients(ctx context.Context, messageID st if message.DirectConversationID != "" { return s.listDirectPushNotificationRecipients(ctx, message) } - return s.listWorkspacePushNotificationRecipients(ctx, message) + return s.listWorkspacePushNotificationRecipients(ctx, message, mentionedUserIDs) } -func (s *Store) listWorkspacePushNotificationRecipients(ctx context.Context, message store.Message) ([]store.PushNotificationRecipient, error) { +func (s *Store) listWorkspacePushNotificationRecipients(ctx context.Context, message store.Message, mentionedUserIDs []string) ([]store.PushNotificationRecipient, error) { rows, err := s.q.ListWorkspacePushNotificationRecipients(ctx, storedb.ListWorkspacePushNotificationRecipientsParams{ + ChannelID: message.ChannelID, WorkspaceID: message.WorkspaceID, AuthorID: message.AuthorID, }) if err != nil { return nil, err } + mentioned := make(map[string]struct{}, len(mentionedUserIDs)) + for _, userID := range mentionedUserIDs { + mentioned[userID] = struct{}{} + } out := make([]store.PushNotificationRecipient, 0, len(rows)) for _, row := range rows { + if row.NotificationPreference == store.ChannelNotifyMuted { + continue + } + if row.NotificationPreference == store.ChannelNotifyMentions { + if _, ok := mentioned[row.UserID]; !ok { + continue + } + } out = append(out, storePushRecipient(row.UserID, row.DisplayName, row.PushoverUserKey)) } return out, nil diff --git a/apps/api/internal/store/sqlite/search_pages_test.go b/apps/api/internal/store/sqlite/search_pages_test.go index d85079d6..20e5da00 100644 --- a/apps/api/internal/store/sqlite/search_pages_test.go +++ b/apps/api/internal/store/sqlite/search_pages_test.go @@ -314,6 +314,13 @@ func TestSearchWorkspaceFTSMigrationPreservesAndScopesRows(t *testing.T) { t.Fatal(err) } } + // Message creation now records mention recipients on events. Apply that + // independent schema addition while leaving the FTS migration under test + // unapplied, and record it so Migrate does not run it twice below. + applySQLiteMigrations(t, ctx, st, "0039_mentions_and_notifications.sql") + if _, err := st.db.ExecContext(ctx, `INSERT INTO schema_migrations (name, applied_at) VALUES (?, ?)`, "0039_mentions_and_notifications.sql", now()); err != nil { + t.Fatal(err) + } owner, err := st.EnsureBootstrap(ctx, "Migration Owner", "search-migration@example.com") if err != nil { @@ -358,7 +365,6 @@ func TestSearchWorkspaceFTSMigrationPreservesAndScopesRows(t *testing.T) { }); err != nil { t.Fatal(err) } - if err := st.Migrate(ctx); err != nil { t.Fatal(err) } diff --git a/apps/api/internal/store/sqlite/sqlc/queries.sql b/apps/api/internal/store/sqlite/sqlc/queries.sql index 1a483dd7..bf2d09f1 100644 --- a/apps/api/internal/store/sqlite/sqlc/queries.sql +++ b/apps/api/internal/store/sqlite/sqlc/queries.sql @@ -250,11 +250,39 @@ UPDATE user_appearance_preferences SET density = sqlc.arg(density) WHERE user_id = sqlc.arg(user_id); +-- name: UpsertChannelNotificationSettings :exec +INSERT INTO channel_notification_settings (channel_id, user_id, preference, created_at, updated_at) +VALUES (sqlc.arg(channel_id), sqlc.arg(user_id), sqlc.arg(preference), sqlc.arg(created_at), sqlc.arg(updated_at)) +ON CONFLICT(channel_id, user_id) DO UPDATE SET + preference = excluded.preference, + updated_at = excluded.updated_at; + +-- name: GetChannelNotificationPreference :one +SELECT preference +FROM channel_notification_settings +WHERE channel_id = sqlc.arg(channel_id) + AND user_id = sqlc.arg(user_id); + +-- name: ListMentionedUserIDs :many +SELECT u.id, CAST(clickclack_lower(u.handle) AS TEXT) AS handle +FROM users u +JOIN workspace_members wm ON wm.user_id = u.id +WHERE wm.workspace_id = sqlc.arg(workspace_id) + AND NULLIF(TRIM(u.handle), '') IS NOT NULL + AND u.handle IN ( + SELECT CAST(value AS TEXT) + FROM json_each(sqlc.arg(handles_json)) + ) +ORDER BY u.id; + -- name: ListWorkspacePushNotificationRecipients :many -SELECT u.id AS user_id, u.display_name, uns.pushover_user_key +SELECT u.id AS user_id, u.display_name, uns.pushover_user_key, + COALESCE(cns.preference, 'all') AS notification_preference FROM workspace_members wm JOIN users u ON u.id = wm.user_id JOIN user_notification_settings uns ON uns.user_id = u.id +LEFT JOIN channel_notification_settings cns + ON cns.channel_id = sqlc.arg(channel_id) AND cns.user_id = u.id WHERE wm.workspace_id = sqlc.arg(workspace_id) AND u.id <> sqlc.arg(author_id) AND uns.pushover_enabled = 1 @@ -1326,7 +1354,7 @@ SELECT EXISTS ( ); -- name: ListEventsAfter :many -SELECT e.id, e.cursor, e.workspace_id, COALESCE(e.channel_id, '') AS channel_id, e.type, e.seq, e.payload_json, e.created_at +SELECT e.id, e.cursor, e.workspace_id, COALESCE(e.channel_id, '') AS channel_id, e.type, e.seq, e.payload_json, e.created_at, e.mentioned_user_ids FROM events e JOIN workspace_members viewer ON viewer.workspace_id = e.workspace_id AND viewer.user_id = sqlc.arg(user_id) LEFT JOIN channels event_channel ON event_channel.id = e.channel_id AND event_channel.workspace_id = e.workspace_id @@ -1457,8 +1485,8 @@ ORDER BY e.cursor DESC LIMIT 1; -- name: InsertEvent :exec -INSERT INTO events (id, cursor, workspace_id, channel_id, type, seq, payload_json, created_at, is_private) -VALUES (sqlc.arg(id), sqlc.arg(cursor), sqlc.arg(workspace_id), sqlc.arg(channel_id), sqlc.arg(type), sqlc.arg(seq), sqlc.arg(payload_json), sqlc.arg(created_at), sqlc.arg(is_private)); +INSERT INTO events (id, cursor, workspace_id, channel_id, type, seq, payload_json, created_at, is_private, mentioned_user_ids) +VALUES (sqlc.arg(id), sqlc.arg(cursor), sqlc.arg(workspace_id), sqlc.arg(channel_id), sqlc.arg(type), sqlc.arg(seq), sqlc.arg(payload_json), sqlc.arg(created_at), sqlc.arg(is_private), sqlc.arg(mentioned_user_ids)); -- name: InsertEventRecipient :exec INSERT INTO event_recipients (event_id, user_id) @@ -1600,3 +1628,7 @@ WHERE workspace_id = sqlc.arg(workspace_id) AND archived_at IS NULL ORDER BY CASE WHEN name = 'general' THEN 0 ELSE 1 END, created_at, id LIMIT 1; +-- name: GetAvailableTopic :one +SELECT workspace_id, COALESCE(channel_id, '') AS channel_id +FROM topics +WHERE id = sqlc.arg(topic_id) AND archived_at IS NULL; diff --git a/apps/api/internal/store/sqlite/sqlc/schema.sql b/apps/api/internal/store/sqlite/sqlc/schema.sql index 96b756f1..21c98376 100644 --- a/apps/api/internal/store/sqlite/sqlc/schema.sql +++ b/apps/api/internal/store/sqlite/sqlc/schema.sql @@ -183,6 +183,18 @@ CREATE TABLE reactions ( PRIMARY KEY (message_id, user_id, emoji) ); +CREATE TABLE channel_notification_settings ( + channel_id TEXT NOT NULL REFERENCES channels(id) ON DELETE CASCADE, + user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE, + preference TEXT NOT NULL DEFAULT 'all' CHECK (preference IN ('all', 'mentions', 'muted')), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY (channel_id, user_id) +); + +CREATE INDEX idx_channel_notification_settings_user + ON channel_notification_settings(user_id, channel_id); + CREATE TABLE events ( id TEXT PRIMARY KEY, cursor TEXT NOT NULL UNIQUE, @@ -192,7 +204,8 @@ CREATE TABLE events ( seq INTEGER, payload_json TEXT NOT NULL, created_at TEXT NOT NULL, - is_private INTEGER NOT NULL DEFAULT 0 CHECK (is_private IN (0, 1)) + is_private INTEGER NOT NULL DEFAULT 0 CHECK (is_private IN (0, 1)), + mentioned_user_ids TEXT NOT NULL DEFAULT '[]' ); CREATE INDEX idx_events_workspace_cursor ON events(workspace_id, cursor); diff --git a/apps/api/internal/store/sqlite/sqlc_adapters.go b/apps/api/internal/store/sqlite/sqlc_adapters.go index 067bb8a3..cc39a33e 100644 --- a/apps/api/internal/store/sqlite/sqlc_adapters.go +++ b/apps/api/internal/store/sqlite/sqlc_adapters.go @@ -274,6 +274,7 @@ func storeEventFromListEventsAfter(row storedb.ListEventsAfterRow) store.Event { var payload any _ = json.Unmarshal([]byte(event.PayloadJSON), &payload) event.Payload = payload + _ = json.Unmarshal([]byte(row.MentionedUserIds), &event.MentionedUserIDs) return event } diff --git a/apps/api/internal/store/sqlite/sqlite.go b/apps/api/internal/store/sqlite/sqlite.go index 8217500b..a2134c3b 100644 --- a/apps/api/internal/store/sqlite/sqlite.go +++ b/apps/api/internal/store/sqlite/sqlite.go @@ -626,9 +626,18 @@ func (s *Store) ListMessages(ctx context.Context, channelID, userID string, page if err := s.requireGuestChannelAccess(ctx, workspaceID, channelID, userID); err != nil { return store.MessagePage{}, err } + if err := s.requireTopic(ctx, workspaceID, channelID, page.TopicID); err != nil { + return store.MessagePage{}, err + } + where := "m.channel_id = ? AND m.parent_message_id IS NULL" + args := []any{channelID} + if page.TopicID != "" { + where += " AND m.topic_id = ?" + args = append(args, strings.TrimSpace(page.TopicID)) + } return s.listMessagePage(ctx, messagePageScope{ - where: "m.channel_id = ? AND m.parent_message_id IS NULL", - args: []any{channelID}, + where: where, + args: args, userID: userID, }, page) } @@ -794,7 +803,11 @@ func (s *Store) CreateMessage(ctx context.Context, input store.CreateMessageInpu if input.TurnID != "" { eventFields["turn_id"] = input.TurnID } - event, err := insertEvent(ctx, tx, workspaceID, input.ChannelID, "message.created", &seq, eventPayload(ctx, eventFields, nonce)) + mentionedIDs, err := mentionedUserIDs(ctx, qtx, workspaceID, body) + if err != nil { + return store.Message{}, store.Event{}, err + } + event, err := insertEventWithRecipientsAndMentions(ctx, tx, workspaceID, input.ChannelID, "message.created", &seq, eventPayload(ctx, eventFields, nonce), nil, mentionedIDs) if err != nil { return store.Message{}, store.Event{}, err } @@ -980,7 +993,10 @@ func (s *Store) CreateThreadReply(ctx context.Context, input store.CreateThreadR if err != nil { return store.Message{}, store.ThreadState{}, nil, err } - replyPayload := eventPayload(ctx, map[string]string{"message_id": id, "root_message_id": root.ID}, nonce) + replyPayload := eventPayload(ctx, map[string]string{ + "message_id": id, + "root_message_id": root.ID, + }, nonce) statePayload := map[string]string{"root_message_id": root.ID} var recipients []string if root.DirectConversationID != "" { @@ -991,7 +1007,14 @@ func (s *Store) CreateThreadReply(ctx context.Context, input store.CreateThreadR return store.Message{}, store.ThreadState{}, nil, err } } - replyEvent, err := insertEventWithRecipients(ctx, tx, root.WorkspaceID, root.ChannelID, "thread.reply_created", nil, replyPayload, recipients) + mentionedIDs, err := mentionedUserIDs(ctx, qtx, root.WorkspaceID, body) + if err != nil { + return store.Message{}, store.ThreadState{}, nil, err + } + // recipients is a privacy boundary for direct conversations, not a thread + // follower list. Mention metadata must never grant a workspace user access + // to a DM they are not already participating in. + replyEvent, err := insertEventWithRecipientsAndMentions(ctx, tx, root.WorkspaceID, root.ChannelID, "thread.reply_created", nil, replyPayload, recipients, mentionedIDs) if err != nil { return store.Message{}, store.ThreadState{}, nil, err } diff --git a/apps/api/internal/store/sqlite/sqlite_test.go b/apps/api/internal/store/sqlite/sqlite_test.go index b70b4af0..d907997b 100644 --- a/apps/api/internal/store/sqlite/sqlite_test.go +++ b/apps/api/internal/store/sqlite/sqlite_test.go @@ -44,6 +44,11 @@ func TestStoreValidationAndAdminHelpers(t *testing.T) { t.Fatal(err) } channel := channels[0] + if err := st.UpsertChannelNotificationSettings(ctx, store.ChannelNotificationInput{ + ChannelID: channel.ID, UserID: owner.ID, Preference: store.ChannelNotifyMentions, + }); err != nil { + t.Fatal(err) + } if _, err := st.CreateWorkspace(ctx, store.CreateWorkspaceInput{Name: "ClickClack", Slug: workspace.Slug}, owner.ID); err == nil { t.Fatal("expected duplicate workspace slug error") @@ -190,6 +195,9 @@ func TestStoreValidationAndAdminHelpers(t *testing.T) { if len(exportBody["user_notification_settings"]) == 0 { t.Fatalf("expected user_notification_settings in export, got keys %#v", exportBody) } + if len(exportBody["channel_notification_settings"]) != 1 || exportBody["channel_notification_settings"][0]["preference"] != store.ChannelNotifyMentions { + t.Fatalf("expected channel notification preference in export, got %#v", exportBody["channel_notification_settings"]) + } if exportBody["user_notification_settings"][0]["pushover_user_key"] != "[redacted]" { t.Fatalf("pushover user key export was not redacted: %#v", exportBody["user_notification_settings"][0]) } diff --git a/apps/api/internal/store/sqlite/storedb/models.go b/apps/api/internal/store/sqlite/storedb/models.go index 2e99574f..ec76c4fd 100644 --- a/apps/api/internal/store/sqlite/storedb/models.go +++ b/apps/api/internal/store/sqlite/storedb/models.go @@ -118,6 +118,14 @@ type Channel struct { SidebarSection sql.NullString `json:"sidebar_section"` } +type ChannelNotificationSetting struct { + ChannelID string `json:"channel_id"` + UserID string `json:"user_id"` + Preference string `json:"preference"` + CreatedAt string `json:"created_at"` + UpdatedAt string `json:"updated_at"` +} + type ChannelRead struct { ChannelID string `json:"channel_id"` UserID string `json:"user_id"` @@ -175,15 +183,16 @@ type DirectRead struct { } type Event struct { - ID string `json:"id"` - Cursor string `json:"cursor"` - WorkspaceID string `json:"workspace_id"` - ChannelID sql.NullString `json:"channel_id"` - Type string `json:"type"` - Seq sql.NullInt64 `json:"seq"` - PayloadJson string `json:"payload_json"` - CreatedAt string `json:"created_at"` - IsPrivate int64 `json:"is_private"` + ID string `json:"id"` + Cursor string `json:"cursor"` + WorkspaceID string `json:"workspace_id"` + ChannelID sql.NullString `json:"channel_id"` + Type string `json:"type"` + Seq sql.NullInt64 `json:"seq"` + PayloadJson string `json:"payload_json"` + CreatedAt string `json:"created_at"` + IsPrivate int64 `json:"is_private"` + MentionedUserIds string `json:"mentioned_user_ids"` } type EventDeliveryAttempt struct { diff --git a/apps/api/internal/store/sqlite/storedb/queries.sql.go b/apps/api/internal/store/sqlite/storedb/queries.sql.go index 94912bba..3d756dfe 100644 --- a/apps/api/internal/store/sqlite/storedb/queries.sql.go +++ b/apps/api/internal/store/sqlite/storedb/queries.sql.go @@ -937,6 +937,24 @@ func (q *Queries) GetAppearancePreferences(ctx context.Context, userID string) ( return i, err } +const getAvailableTopic = `-- name: GetAvailableTopic :one +SELECT workspace_id, COALESCE(channel_id, '') AS channel_id +FROM topics +WHERE id = ?1 AND archived_at IS NULL +` + +type GetAvailableTopicRow struct { + WorkspaceID string `json:"workspace_id"` + ChannelID string `json:"channel_id"` +} + +func (q *Queries) GetAvailableTopic(ctx context.Context, topicID string) (GetAvailableTopicRow, error) { + row := q.db.QueryRowContext(ctx, getAvailableTopic, topicID) + var i GetAvailableTopicRow + err := row.Scan(&i.WorkspaceID, &i.ChannelID) + return i, err +} + const getBotSetupCodeByHash = `-- name: GetBotSetupCodeByHash :one SELECT id, code_hash, workspace_id, bot_user_id, token_name, scopes_json, defaults_json, created_by, created_at, expires_at, claimed_at, claimed_token_id FROM bot_setup_codes @@ -1174,6 +1192,25 @@ func (q *Queries) GetChannelByRouteIDAndWorkspace(ctx context.Context, arg GetCh return i, err } +const getChannelNotificationPreference = `-- name: GetChannelNotificationPreference :one +SELECT preference +FROM channel_notification_settings +WHERE channel_id = ?1 + AND user_id = ?2 +` + +type GetChannelNotificationPreferenceParams struct { + ChannelID string `json:"channel_id"` + UserID string `json:"user_id"` +} + +func (q *Queries) GetChannelNotificationPreference(ctx context.Context, arg GetChannelNotificationPreferenceParams) (string, error) { + row := q.db.QueryRowContext(ctx, getChannelNotificationPreference, arg.ChannelID, arg.UserID) + var preference string + err := row.Scan(&preference) + return preference, err +} + const getChannelWorkspace = `-- name: GetChannelWorkspace :one SELECT workspace_id FROM channels @@ -2399,20 +2436,21 @@ func (q *Queries) InsertDirectMessage(ctx context.Context, arg InsertDirectMessa } const insertEvent = `-- name: InsertEvent :exec -INSERT INTO events (id, cursor, workspace_id, channel_id, type, seq, payload_json, created_at, is_private) -VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9) +INSERT INTO events (id, cursor, workspace_id, channel_id, type, seq, payload_json, created_at, is_private, mentioned_user_ids) +VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10) ` type InsertEventParams struct { - ID string `json:"id"` - Cursor string `json:"cursor"` - WorkspaceID string `json:"workspace_id"` - ChannelID sql.NullString `json:"channel_id"` - Type string `json:"type"` - Seq sql.NullInt64 `json:"seq"` - PayloadJson string `json:"payload_json"` - CreatedAt string `json:"created_at"` - IsPrivate int64 `json:"is_private"` + ID string `json:"id"` + Cursor string `json:"cursor"` + WorkspaceID string `json:"workspace_id"` + ChannelID sql.NullString `json:"channel_id"` + Type string `json:"type"` + Seq sql.NullInt64 `json:"seq"` + PayloadJson string `json:"payload_json"` + CreatedAt string `json:"created_at"` + IsPrivate int64 `json:"is_private"` + MentionedUserIds string `json:"mentioned_user_ids"` } func (q *Queries) InsertEvent(ctx context.Context, arg InsertEventParams) error { @@ -2426,6 +2464,7 @@ func (q *Queries) InsertEvent(ctx context.Context, arg InsertEventParams) error arg.PayloadJson, arg.CreatedAt, arg.IsPrivate, + arg.MentionedUserIds, ) return err } @@ -3478,7 +3517,7 @@ func (q *Queries) ListEventDeliveryAttemptsPage(ctx context.Context, arg ListEve } const listEventsAfter = `-- name: ListEventsAfter :many -SELECT e.id, e.cursor, e.workspace_id, COALESCE(e.channel_id, '') AS channel_id, e.type, e.seq, e.payload_json, e.created_at +SELECT e.id, e.cursor, e.workspace_id, COALESCE(e.channel_id, '') AS channel_id, e.type, e.seq, e.payload_json, e.created_at, e.mentioned_user_ids FROM events e JOIN workspace_members viewer ON viewer.workspace_id = e.workspace_id AND viewer.user_id = ?1 LEFT JOIN channels event_channel ON event_channel.id = e.channel_id AND event_channel.workspace_id = e.workspace_id @@ -3552,14 +3591,15 @@ type ListEventsAfterParams struct { } type ListEventsAfterRow struct { - ID string `json:"id"` - Cursor string `json:"cursor"` - WorkspaceID string `json:"workspace_id"` - ChannelID string `json:"channel_id"` - Type string `json:"type"` - Seq sql.NullInt64 `json:"seq"` - PayloadJson string `json:"payload_json"` - CreatedAt string `json:"created_at"` + ID string `json:"id"` + Cursor string `json:"cursor"` + WorkspaceID string `json:"workspace_id"` + ChannelID string `json:"channel_id"` + Type string `json:"type"` + Seq sql.NullInt64 `json:"seq"` + PayloadJson string `json:"payload_json"` + CreatedAt string `json:"created_at"` + MentionedUserIds string `json:"mentioned_user_ids"` } func (q *Queries) ListEventsAfter(ctx context.Context, arg ListEventsAfterParams) ([]ListEventsAfterRow, error) { @@ -3585,6 +3625,7 @@ func (q *Queries) ListEventsAfter(ctx context.Context, arg ListEventsAfterParams &i.Seq, &i.PayloadJson, &i.CreatedAt, + &i.MentionedUserIds, ); err != nil { return nil, err } @@ -3599,6 +3640,52 @@ func (q *Queries) ListEventsAfter(ctx context.Context, arg ListEventsAfterParams return items, nil } +const listMentionedUserIDs = `-- name: ListMentionedUserIDs :many +SELECT u.id, CAST(clickclack_lower(u.handle) AS TEXT) AS handle +FROM users u +JOIN workspace_members wm ON wm.user_id = u.id +WHERE wm.workspace_id = ?1 + AND NULLIF(TRIM(u.handle), '') IS NOT NULL + AND u.handle IN ( + SELECT CAST(value AS TEXT) + FROM json_each(?2) + ) +ORDER BY u.id +` + +type ListMentionedUserIDsParams struct { + WorkspaceID string `json:"workspace_id"` + HandlesJson interface{} `json:"handles_json"` +} + +type ListMentionedUserIDsRow struct { + ID string `json:"id"` + Handle string `json:"handle"` +} + +func (q *Queries) ListMentionedUserIDs(ctx context.Context, arg ListMentionedUserIDsParams) ([]ListMentionedUserIDsRow, error) { + rows, err := q.db.QueryContext(ctx, listMentionedUserIDs, arg.WorkspaceID, arg.HandlesJson) + if err != nil { + return nil, err + } + defer rows.Close() + var items []ListMentionedUserIDsRow + for rows.Next() { + var i ListMentionedUserIDsRow + if err := rows.Scan(&i.ID, &i.Handle); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + const listPendingUploadCleanups = `-- name: ListPendingUploadCleanups :many SELECT id, workspace_id, storage_path, attempts, last_error, created_at, updated_at FROM pending_upload_cleanups @@ -4194,30 +4281,35 @@ func (q *Queries) ListWorkspaceMembersForModeration(ctx context.Context, workspa } const listWorkspacePushNotificationRecipients = `-- name: ListWorkspacePushNotificationRecipients :many -SELECT u.id AS user_id, u.display_name, uns.pushover_user_key +SELECT u.id AS user_id, u.display_name, uns.pushover_user_key, + COALESCE(cns.preference, 'all') AS notification_preference FROM workspace_members wm JOIN users u ON u.id = wm.user_id JOIN user_notification_settings uns ON uns.user_id = u.id -WHERE wm.workspace_id = ?1 - AND u.id <> ?2 +LEFT JOIN channel_notification_settings cns + ON cns.channel_id = ?1 AND cns.user_id = u.id +WHERE wm.workspace_id = ?2 + AND u.id <> ?3 AND uns.pushover_enabled = 1 AND uns.pushover_user_key <> '' ORDER BY u.id ` type ListWorkspacePushNotificationRecipientsParams struct { + ChannelID string `json:"channel_id"` WorkspaceID string `json:"workspace_id"` AuthorID string `json:"author_id"` } type ListWorkspacePushNotificationRecipientsRow struct { - UserID string `json:"user_id"` - DisplayName string `json:"display_name"` - PushoverUserKey string `json:"pushover_user_key"` + UserID string `json:"user_id"` + DisplayName string `json:"display_name"` + PushoverUserKey string `json:"pushover_user_key"` + NotificationPreference string `json:"notification_preference"` } func (q *Queries) ListWorkspacePushNotificationRecipients(ctx context.Context, arg ListWorkspacePushNotificationRecipientsParams) ([]ListWorkspacePushNotificationRecipientsRow, error) { - rows, err := q.db.QueryContext(ctx, listWorkspacePushNotificationRecipients, arg.WorkspaceID, arg.AuthorID) + rows, err := q.db.QueryContext(ctx, listWorkspacePushNotificationRecipients, arg.ChannelID, arg.WorkspaceID, arg.AuthorID) if err != nil { return nil, err } @@ -4225,7 +4317,12 @@ func (q *Queries) ListWorkspacePushNotificationRecipients(ctx context.Context, a var items []ListWorkspacePushNotificationRecipientsRow for rows.Next() { var i ListWorkspacePushNotificationRecipientsRow - if err := rows.Scan(&i.UserID, &i.DisplayName, &i.PushoverUserKey); err != nil { + if err := rows.Scan( + &i.UserID, + &i.DisplayName, + &i.PushoverUserKey, + &i.NotificationPreference, + ); err != nil { return nil, err } items = append(items, i) @@ -5251,6 +5348,33 @@ func (q *Queries) UploadHasOtherDirectMessageAttachment(ctx context.Context, arg return has_other_direct_message_attachment, err } +const upsertChannelNotificationSettings = `-- name: UpsertChannelNotificationSettings :exec +INSERT INTO channel_notification_settings (channel_id, user_id, preference, created_at, updated_at) +VALUES (?1, ?2, ?3, ?4, ?5) +ON CONFLICT(channel_id, user_id) DO UPDATE SET + preference = excluded.preference, + updated_at = excluded.updated_at +` + +type UpsertChannelNotificationSettingsParams struct { + ChannelID string `json:"channel_id"` + UserID string `json:"user_id"` + Preference string `json:"preference"` + CreatedAt string `json:"created_at"` + UpdatedAt string `json:"updated_at"` +} + +func (q *Queries) UpsertChannelNotificationSettings(ctx context.Context, arg UpsertChannelNotificationSettingsParams) error { + _, err := q.db.ExecContext(ctx, upsertChannelNotificationSettings, + arg.ChannelID, + arg.UserID, + arg.Preference, + arg.CreatedAt, + arg.UpdatedAt, + ) + return err +} + const upsertChannelRead = `-- name: UpsertChannelRead :execrows INSERT INTO channel_reads (channel_id, user_id, last_read_seq, last_read_at) VALUES (?1, ?2, ?3, ?4) diff --git a/apps/api/internal/store/sqlite/topics.go b/apps/api/internal/store/sqlite/topics.go index ef19c38b..9db227f0 100644 --- a/apps/api/internal/store/sqlite/topics.go +++ b/apps/api/internal/store/sqlite/topics.go @@ -4,6 +4,7 @@ import ( "context" "database/sql" "errors" + "fmt" "strings" "github.com/openclaw/clickclack/apps/api/internal/store" @@ -93,6 +94,27 @@ func requireTopicTx(ctx context.Context, tx *sql.Tx, workspaceID, channelID, top return nil } +func (s *Store) requireTopic(ctx context.Context, workspaceID, channelID, topicID string) error { + topicID = strings.TrimSpace(topicID) + if topicID == "" { + return nil + } + topic, err := s.q.GetAvailableTopic(ctx, topicID) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + return fmt.Errorf("%w: topic is unavailable", store.ErrInvalidMessagePage) + } + return err + } + if topic.WorkspaceID != workspaceID { + return fmt.Errorf("%w: topic is unavailable", store.ErrInvalidMessagePage) + } + if topic.ChannelID != "" && topic.ChannelID != channelID { + return fmt.Errorf("%w: topic is unavailable", store.ErrInvalidMessagePage) + } + return nil +} + func topicSelect() string { return `SELECT id, workspace_id, COALESCE(channel_id, ''), name, created_by, created_at, archived_at FROM topics` } diff --git a/apps/api/internal/store/types.go b/apps/api/internal/store/types.go index ca6a4c5a..46a6197b 100644 --- a/apps/api/internal/store/types.go +++ b/apps/api/internal/store/types.go @@ -3,6 +3,7 @@ package store import ( "context" "errors" + "strings" "time" ) @@ -53,6 +54,12 @@ var ErrSetupCodeInvalid = errors.New("setup code is invalid or expired") // budget in a workspace. var ErrUploadQuotaExceeded = errors.New("upload quota exceeded") +const ( + ChannelNotifyAll = "all" + ChannelNotifyMentions = "mentions" + ChannelNotifyMuted = "muted" +) + // ErrUploadNonceConflict is returned when a client reuses an upload nonce in // another workspace. var ErrUploadNonceConflict = errors.New("upload nonce was already used in another workspace") @@ -196,6 +203,12 @@ type UpdateAppearancePreferencesInput struct { Patch AppearancePreferencesPatch } +type ChannelNotificationInput struct { + ChannelID string + UserID string + Preference string +} + type PushNotificationRecipient struct { UserID string DisplayName string @@ -281,6 +294,7 @@ type MessagePageRequest struct { BeforeSeq *int64 AfterSeq *int64 AroundSeq *int64 + TopicID string } type MessagePage struct { @@ -310,6 +324,7 @@ type Event struct { PayloadJSON string `json:"-"` Payload any `json:"payload"` RecipientUserIDs []string `json:"-"` + MentionedUserIDs []string `json:"mentioned_user_ids,omitempty"` } type CreateUserInput struct { @@ -641,6 +656,96 @@ type BotTokenAuth struct { Scopes []string } +// ParseMessageMentions returns unique, normalized handles referenced with an +// @ at a token boundary. Email addresses and Markdown link labels are ignored. +func ParseMessageMentions(body string) []string { + seen := make(map[string]struct{}) + mentions := make([]string, 0) + for i := 0; i < len(body); i++ { + if hasHTTPURLPrefix(body[i:]) { + for i < len(body) && body[i] != ' ' && body[i] != '\n' && body[i] != '\r' && body[i] != '\t' { + i++ + } + i-- + continue + } + if body[i] == '[' { + if linkEnd := markdownLinkEnd(body, i); linkEnd >= 0 { + i = linkEnd + continue + } + } + if body[i] != '@' || (i > 0 && !isMentionBoundary(body[i-1])) { + continue + } + j := i + 1 + for j < len(body) && isMentionChar(body[j]) { + j++ + } + if j == i+1 { + continue + } + handle := strings.ToLower(body[i+1 : j]) + if _, exists := seen[handle]; exists { + continue + } + seen[handle] = struct{}{} + mentions = append(mentions, handle) + i = j - 1 + } + return mentions +} + +func hasHTTPURLPrefix(value string) bool { + return hasURLLikePrefix(value) +} + +func hasURLLikePrefix(value string) bool { + if len(value) >= len("www.") && strings.EqualFold(value[:len("www.")], "www.") { + return true + } + separator := strings.Index(value, "://") + if separator <= 0 { + return false + } + for i := 0; i < separator; i++ { + char := value[i] + if !(char >= 'a' && char <= 'z' || char >= 'A' && char <= 'Z' || + (char >= '0' && char <= '9' && i > 0) || char == '+' || char == '-' || char == '.') { + return false + } + } + return true +} + +func markdownLinkEnd(body string, labelStart int) int { + labelEndOffset := strings.IndexByte(body[labelStart+1:], ']') + if labelEndOffset < 0 { + return -1 + } + labelEnd := labelStart + 1 + labelEndOffset + if labelEnd+1 >= len(body) || body[labelEnd+1] != '(' { + return -1 + } + targetStart := labelEnd + 2 + targetEndOffset := strings.IndexByte(body[targetStart:], ')') + if targetEndOffset < 0 { + return -1 + } + return targetStart + targetEndOffset +} + +func isMentionBoundary(char byte) bool { + return !isMentionChar(char) && char != '@' +} + +func isMentionChar(char byte) bool { + return char >= 'a' && char <= 'z' || + char >= 'A' && char <= 'Z' || + char >= '0' && char <= '9' || + char == '_' || char == '-' +} + type UpsertIdentityUserInput struct { Provider string ProviderSubject string @@ -1060,7 +1165,9 @@ type Store interface { UpdateNotificationSettings(ctx context.Context, input UpdateNotificationSettingsInput) (NotificationSettings, error) GetAppearancePreferences(ctx context.Context, userID string) (*AppearancePreferences, error) UpdateAppearancePreferences(ctx context.Context, input UpdateAppearancePreferencesInput) (*AppearancePreferences, error) - ListPushNotificationRecipients(ctx context.Context, messageID string) ([]PushNotificationRecipient, error) + ListPushNotificationRecipients(ctx context.Context, messageID string, mentionedUserIDs []string) ([]PushNotificationRecipient, error) + UpsertChannelNotificationSettings(ctx context.Context, input ChannelNotificationInput) error + GetChannelNotificationPreference(ctx context.Context, channelID, userID string) (string, error) AddWorkspaceMember(ctx context.Context, workspaceID, userID, role string) error EnsureDefaultWorkspaceMember(ctx context.Context, userID string) (Workspace, error) EnsureDefaultGuestWorkspaceMember(ctx context.Context, userID, role string) (Workspace, error) diff --git a/apps/api/internal/webassets/dist/200.html b/apps/api/internal/webassets/dist/200.html index d3360759..0da78850 100644 --- a/apps/api/internal/webassets/dist/200.html +++ b/apps/api/internal/webassets/dist/200.html @@ -98,20 +98,20 @@ } } catch (e) {} - - - + + + - - + + - - - + + + - +
@@ -124,8 +124,8 @@ const element = document.currentScript.parentElement; Promise.all([ - import("/_app/immutable/entry/start.BJgyZiDJ.js"), - import("/_app/immutable/entry/app.rLUFGSPX.js") + import("/_app/immutable/entry/start.CfWZRA5o.js"), + import("/_app/immutable/entry/app.7RPPZTRi.js") ]).then(([kit, app]) => { kit.start(app, element); }); diff --git a/apps/api/internal/webassets/dist/_app/immutable/assets/0.ClZf04QE.css b/apps/api/internal/webassets/dist/_app/immutable/assets/0.ClZf04QE.css new file mode 100644 index 00000000..da8d936f --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/assets/0.ClZf04QE.css @@ -0,0 +1 @@ +@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-cyrillic-ext-wght-normal.I4S5GZfc.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-cyrillic-wght-normal.BmXc_FBt.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-symbols2-wght-normal.GZpp1pK2.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-vietnamese-wght-normal.D8KDMBhC.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-latin-ext-wght-normal.DrnZ1wKl.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-latin-wght-normal.B_7UjwxQ.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-wght-normal.DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-feature-settings:"ss01", "cv11";--font-display:"Bricolage Grotesque Variable", "Geist Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--rail:var(--lightningcss-light,#e2e5ea)var(--lightningcss-dark,#0b0e14);--bg:var(--lightningcss-light,#edeff2)var(--lightningcss-dark,#0e1219);--panel:var(--lightningcss-light,#f8f9fb)var(--lightningcss-dark,#141926);--panel-2:var(--lightningcss-light,#e8ebef)var(--lightningcss-dark,#1b2232);--panel-3:var(--lightningcss-light,#dde1e7)var(--lightningcss-dark,#232c3f);--surface:var(--panel-2);--hover:var(--lightningcss-light,#10151d0d)var(--lightningcss-dark,#d6e4ff0b);--hover-strong:var(--lightningcss-light,#10151d14)var(--lightningcss-dark,#d6e4ff14);--line:var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#bed2ff17);--line-strong:var(--lightningcss-light,#10151d2b)var(--lightningcss-dark,#bed2ff29);--text:var(--lightningcss-light,#232a35)var(--lightningcss-dark,#dbe2ec);--text-strong:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#f4f7fb);--muted:var(--lightningcss-light,#5d6878)var(--lightningcss-dark,#8a95a8);--muted-2:var(--lightningcss-light,#8b94a3)var(--lightningcss-dark,#5c6577);--accent:var(--lightningcss-light,#0080c4)var(--lightningcss-dark,#41c6ff);--accent-hover:var(--lightningcss-light,#006aa6)var(--lightningcss-dark,#6ad3ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--accent-2:var(--lightningcss-light,#f56a1d)var(--lightningcss-dark,#ff9550);--accent-soft:var(--lightningcss-light,#0080c421)var(--lightningcss-dark,#41c6ff26);--brand-a:var(--lightningcss-light,#0072b0)var(--lightningcss-dark,#41c6ff);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--activity-accent:var(--lightningcss-light,#c07e0a)var(--lightningcss-dark,#e8b23e);--activity-accent-soft:var(--lightningcss-light,#c07e0a17)var(--lightningcss-dark,#e8b23e1a);--delivery-accent:var(--lightningcss-light,#5558d9)var(--lightningcss-dark,#8b8df2);--delivery-accent-soft:var(--lightningcss-light,#5558d90f)var(--lightningcss-dark,#8b8df214);--tool-call-bg:var(--lightningcss-light,#5558d917)var(--lightningcss-dark,#8b8df21f);--tool-call-bg-hover:var(--lightningcss-light,#5558d924)var(--lightningcss-dark,#8b8df22e);--accent-glow:0 0 0 1px color-mix(in srgb, var(--accent) 32%, transparent), 0 8px 30px -12px color-mix(in srgb, var(--accent) 48%, transparent);--success:var(--lightningcss-light,#14876a)var(--lightningcss-dark,#30c48d);--warn:#e8a33e;--danger:var(--lightningcss-light,#d13438)var(--lightningcss-dark,#ff6d68);--scrollbar:var(--lightningcss-light,#10151d2e)var(--lightningcss-dark,#bed2ff1f);--scrollbar-hover:var(--lightningcss-light,#10151d4d)var(--lightningcss-dark,#bed2ff38);--shadow:0 24px 60px -22px var(--lightningcss-light,#10151d4d)var(--lightningcss-dark,#02050ab3);--tooltip-bg:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#2b3448);--tooltip-fg:var(--lightningcss-light,#f0f4fa)var(--lightningcss-dark,#f4f7fb);--key-edge:0 1px 0 var(--line-strong), 0 2px 0 var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#00000073);--key-edge-pressed:0 1px 0 var(--line-strong);--radius-sm:4px;--radius:6px;--radius-lg:10px;--radius-xl:14px;--safe-area-top:env(safe-area-inset-top,0px);--safe-area-right:env(safe-area-inset-right,0px);--safe-area-bottom:env(safe-area-inset-bottom,0px);--safe-area-left:env(safe-area-inset-left,0px);background:var(--bg);color:var(--text);font-family:Geist Variable,Inter,SF Pro Text,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-color-mode=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-board=ember]{--rail:var(--lightningcss-light,#e9e1d7)var(--lightningcss-dark,#16110d);--bg:var(--lightningcss-light,#f7f3ed)var(--lightningcss-dark,#1a1511);--panel:var(--lightningcss-light,#fffaf2)var(--lightningcss-dark,#211a15);--panel-2:var(--lightningcss-light,#efe7dc)var(--lightningcss-dark,#29211a);--panel-3:var(--lightningcss-light,#e4dbcf)var(--lightningcss-dark,#322820);--hover:var(--lightningcss-light,#1020270d)var(--lightningcss-dark,#fff4eb0b);--hover-strong:var(--lightningcss-light,#10202714)var(--lightningcss-dark,#fff4eb14);--line:var(--lightningcss-light,#1020271a)var(--lightningcss-dark,#ffece014);--line-strong:var(--lightningcss-light,#10202729)var(--lightningcss-dark,#ffece024);--text:var(--lightningcss-light,#22201d)var(--lightningcss-dark,#ece4da);--text-strong:var(--lightningcss-light,#11100e)var(--lightningcss-dark,#fbf6f0);--muted:var(--lightningcss-light,#6f675f)var(--lightningcss-dark,#a4917f);--muted-2:var(--lightningcss-light,#958b80)var(--lightningcss-dark,#6f6152);--accent:var(--lightningcss-light,#c94a32)var(--lightningcss-dark,#f0714c);--accent-hover:var(--lightningcss-light,#b13c26)var(--lightningcss-dark,#ff8560);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#241009);--accent-2:var(--lightningcss-light,#006d77)var(--lightningcss-dark,#45b8ac);--accent-soft:var(--lightningcss-light,#c94a3224)var(--lightningcss-dark,#f0714c2b);--brand-a:var(--lightningcss-light,#c64b32)var(--lightningcss-dark,#f0714c);--brand-b:var(--lightningcss-light,#c8425a)var(--lightningcss-dark,#d84a63);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#11100e);--scrollbar:var(--lightningcss-light,#1020272e)var(--lightningcss-dark,#ffece01a);--scrollbar-hover:var(--lightningcss-light,#1020274d)var(--lightningcss-dark,#ffece033);--shadow:0 24px 60px -22px var(--lightningcss-light,#10202752)var(--lightningcss-dark,#080402a6)}[data-board=moss]{--rail:var(--lightningcss-light,#dfe5e0)var(--lightningcss-dark,#0a100d);--bg:var(--lightningcss-light,#ecf0ed)var(--lightningcss-dark,#0e1512);--panel:var(--lightningcss-light,#f7f9f7)var(--lightningcss-dark,#131b16);--panel-2:var(--lightningcss-light,#e6ebe7)var(--lightningcss-dark,#1a241d);--panel-3:var(--lightningcss-light,#dbe2dc)var(--lightningcss-dark,#223026);--hover:var(--lightningcss-light,#0f17120d)var(--lightningcss-dark,#d6ffe40b);--hover-strong:var(--lightningcss-light,#0f171214)var(--lightningcss-dark,#d6ffe414);--line:var(--lightningcss-light,#0f17121a)var(--lightningcss-dark,#c8ffdc17);--line-strong:var(--lightningcss-light,#0f17122b)var(--lightningcss-dark,#c8ffdc29);--text:var(--lightningcss-light,#212b24)var(--lightningcss-dark,#dbe7de);--text-strong:var(--lightningcss-light,#0f1712)var(--lightningcss-dark,#f3faf4);--muted:var(--lightningcss-light,#5c6b60)var(--lightningcss-dark,#8fa295);--muted-2:var(--lightningcss-light,#8a9a8e)var(--lightningcss-dark,#5d6e62);--accent:var(--lightningcss-light,#177a50)var(--lightningcss-dark,#3ddc97);--accent-hover:var(--lightningcss-light,#0f6a44)var(--lightningcss-dark,#63e6ab);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#05140c);--accent-2:var(--lightningcss-light,#d97f26)var(--lightningcss-dark,#ffab5e);--accent-soft:var(--lightningcss-light,#177a5021)var(--lightningcss-dark,#3ddc9726);--brand-a:var(--lightningcss-light,#177a50)var(--lightningcss-dark,#3ddc97);--brand-b:var(--lightningcss-light,#0e7490)var(--lightningcss-dark,#2bb3a3);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#05140c);--scrollbar:var(--lightningcss-light,#0f17122e)var(--lightningcss-dark,#c8ffdc1f);--scrollbar-hover:var(--lightningcss-light,#0f17124d)var(--lightningcss-dark,#c8ffdc38)}[data-board=iris]{--rail:var(--lightningcss-light,#e2e2ea)var(--lightningcss-dark,#0d0c15);--bg:var(--lightningcss-light,#eeeef4)var(--lightningcss-dark,#12111c);--panel:var(--lightningcss-light,#f8f8fb)var(--lightningcss-dark,#181726);--panel-2:var(--lightningcss-light,#e9e9f0)var(--lightningcss-dark,#201e33);--panel-3:var(--lightningcss-light,#dedee8)var(--lightningcss-dark,#2a2742);--hover:var(--lightningcss-light,#1213270d)var(--lightningcss-dark,#e0dcff0b);--hover-strong:var(--lightningcss-light,#12132714)var(--lightningcss-dark,#e0dcff14);--line:var(--lightningcss-light,#1213271a)var(--lightningcss-dark,#d2cdff17);--line-strong:var(--lightningcss-light,#1213272b)var(--lightningcss-dark,#d2cdff29);--text:var(--lightningcss-light,#26283a)var(--lightningcss-dark,#e0dff0);--text-strong:var(--lightningcss-light,#121327)var(--lightningcss-dark,#f6f5fd);--muted:var(--lightningcss-light,#61637a)var(--lightningcss-dark,#918fa9);--muted-2:var(--lightningcss-light,#9092a8)var(--lightningcss-dark,#605e78);--accent:var(--lightningcss-light,#7048d9)var(--lightningcss-dark,#a78bfa);--accent-hover:var(--lightningcss-light,#5f39c2)var(--lightningcss-dark,#bda4ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#150f26);--accent-2:var(--lightningcss-light,#d94f8a)var(--lightningcss-dark,#ff8bb3);--accent-soft:var(--lightningcss-light,#7048d921)var(--lightningcss-dark,#a78bfa29);--brand-a:var(--lightningcss-light,#7048d9)var(--lightningcss-dark,#a78bfa);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#150f26);--scrollbar:var(--lightningcss-light,#1213272e)var(--lightningcss-dark,#d2cdff1f);--scrollbar-hover:var(--lightningcss-light,#1213274d)var(--lightningcss-dark,#d2cdff38)}[data-board=signal]{--rail:var(--lightningcss-light,#e2e5ea)var(--lightningcss-dark,#0b0e14);--bg:var(--lightningcss-light,#edeff2)var(--lightningcss-dark,#0e1219);--panel:var(--lightningcss-light,#f8f9fb)var(--lightningcss-dark,#141926);--panel-2:var(--lightningcss-light,#e8ebef)var(--lightningcss-dark,#1b2232);--panel-3:var(--lightningcss-light,#dde1e7)var(--lightningcss-dark,#232c3f);--hover:var(--lightningcss-light,#10151d0d)var(--lightningcss-dark,#d6e4ff0b);--hover-strong:var(--lightningcss-light,#10151d14)var(--lightningcss-dark,#d6e4ff14);--line:var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#bed2ff17);--line-strong:var(--lightningcss-light,#10151d2b)var(--lightningcss-dark,#bed2ff29);--text:var(--lightningcss-light,#232a35)var(--lightningcss-dark,#dbe2ec);--text-strong:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#f4f7fb);--muted:var(--lightningcss-light,#5d6878)var(--lightningcss-dark,#8a95a8);--muted-2:var(--lightningcss-light,#8b94a3)var(--lightningcss-dark,#5c6577);--accent:var(--lightningcss-light,#0080c4)var(--lightningcss-dark,#41c6ff);--accent-hover:var(--lightningcss-light,#006aa6)var(--lightningcss-dark,#6ad3ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--accent-2:var(--lightningcss-light,#f56a1d)var(--lightningcss-dark,#ff9550);--accent-soft:var(--lightningcss-light,#0080c421)var(--lightningcss-dark,#41c6ff26);--brand-a:var(--lightningcss-light,#0072b0)var(--lightningcss-dark,#41c6ff);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420)}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:radial-gradient(1000px 600px at 0% 0%, color-mix(in srgb, var(--accent) 6%, transparent), transparent 60%), radial-gradient(900px 700px at 100% 100%, color-mix(in srgb, var(--delivery-accent) 5%, transparent), transparent 60%), var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,textarea{font:inherit;color:inherit}code,pre,kbd,samp{font-variant-ligatures:none}button{cursor:pointer}input,textarea{background:0 0;border:0;outline:0}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--scrollbar);background-clip:content-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-hover);background-clip:content-box}.auth-shell{min-height:100dvh;padding:calc(32px + var(--safe-area-top)) calc(32px + var(--safe-area-right)) calc(32px + var(--safe-area-bottom)) calc(32px + var(--safe-area-left));background:radial-gradient(color-mix(in srgb, var(--text) 6%, transparent) 1px, transparent 1.5px) 0 0 / 18px 18px, radial-gradient(700px 500px at 30% 20%, color-mix(in srgb, var(--brand-a) 14%, transparent), transparent 60%), radial-gradient(700px 500px at 80% 90%, color-mix(in srgb, var(--brand-b) 10%, transparent), transparent 60%), var(--bg);place-items:center;display:grid}.auth-panel{border:1px solid var(--line-strong);border-radius:var(--radius-xl);background:linear-gradient(180deg, #ffffff0a, #fff0) var(--panel);width:min(100%,440px);box-shadow:var(--key-edge), var(--shadow);gap:22px;padding:36px;display:grid}.auth-brand{align-items:center;gap:12px;display:flex}.auth-brand .mark{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));width:44px;height:44px;color:var(--brand-contrast);letter-spacing:-.02em;box-shadow:0 10px 24px -8px color-mix(in srgb, var(--brand-b) 65%, transparent);border-radius:12px;place-items:center;font-weight:800;display:grid}.auth-brand .brand-text strong{color:var(--text-strong);letter-spacing:-.01em;display:block}.auth-brand .brand-text span{color:var(--muted);font-size:12px;display:block}.auth-copy{gap:8px;margin-top:8px;display:grid}.auth-copy h1{letter-spacing:-.02em;color:var(--text-strong);font-size:28px;font-family:var(--font-display);margin:0;font-weight:700}.auth-copy p{color:var(--muted);margin:0;line-height:1.5}.github-login{color:#fff;background:#0d1117;border:1px solid #2b2f36;border-radius:12px;justify-content:center;align-items:center;gap:10px;min-height:46px;font-weight:600;text-decoration:none;transition:transform 80ms,background .12s,border-color .12s;display:inline-flex}.github-login:hover{background:#161b22;border-color:#3f4750;transform:translateY(-1px)}.auth-foot{color:var(--muted-2);text-align:center;margin:0;font-size:12px}.shell{grid-template-columns:72px 260px minmax(0,1fr) 0;height:100dvh;min-height:100dvh;transition:grid-template-columns .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden}.shell.thread-open,.shell.search-open{grid-template-columns:72px 260px minmax(0,1fr) minmax(340px,28vw)}.shell.artifact-open{grid-template-columns:72px 260px minmax(0,1fr) minmax(460px,42vw)}.shell.sidebar-collapsed{grid-template-columns:72px 0 minmax(0,1fr) 0}.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:72px 0 minmax(0,1fr) minmax(340px,28vw)}.shell.sidebar-collapsed.artifact-open{grid-template-columns:72px 0 minmax(0,1fr) minmax(460px,42vw)}.shell>.thread,.shell>.search-results,.shell>.artifact-viewer{grid-area:1/4}.shell.desktop-shell{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);grid-template-rows:52px minmax(0,1fr)}.desktop-shell>.guild-rail,.desktop-shell>.sidebar{background:0 0;border-right:0}.desktop-shell>.sidebar{grid-template-rows:minmax(0,1fr) auto}@media (width<=820px){.desktop-shell>.guild-rail{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);border-right:1px solid var(--line)}.desktop-shell>.sidebar{background:var(--panel);border-right:1px solid var(--line)}}.desktop-shell>.timeline{border-top:1px solid var(--line);border-left:1px solid var(--line);border-top-left-radius:12px}.desktop-shell:not(.thread-open):not(.search-open):not(.artifact-open)>.timeline{border-top-right-radius:12px}.desktop-shell>.thread,.desktop-shell>.search-results,.desktop-shell>.artifact-viewer{border-top:1px solid var(--line);border-top-right-radius:12px}.desktop-shell>.desktop-titlebar{grid-area:1/1/auto/-1}.desktop-shell>.guild-rail,.desktop-shell>.sidebar,.desktop-shell>.timeline,.desktop-shell>.thread,.desktop-shell>.search-results,.desktop-shell>.artifact-viewer{grid-row:2}.desktop-shell .mobile-nav-toggle{display:none}.desktop-auth-titlebar{z-index:10;-webkit-app-region:drag;height:52px;position:fixed;inset:0 0 auto}.desktop-titlebar{z-index:8;-webkit-app-region:drag;-webkit-user-select:none;user-select:none;background:0 0;align-items:center;min-width:0;height:52px;padding:0;display:flex;position:relative}.desktop-titlebar-safe-area{-webkit-app-region:drag;align-items:center;width:100%;min-width:0;height:100%;padding:0 14px;display:flex;position:relative}.desktop-titlebar[data-platform=darwin] .desktop-titlebar-safe-area{padding-left:78px}.desktop-titlebar[data-platform=win32] .desktop-titlebar-safe-area,.desktop-titlebar[data-platform=linux] .desktop-titlebar-safe-area{left:env(titlebar-area-x,0px);width:env(titlebar-area-width,calc(100% - 148px));position:absolute}.desktop-titlebar-leading{-webkit-app-region:no-drag;align-items:center;gap:9px;min-width:0;max-width:max(150px,50% - 300px);display:flex;overflow:hidden}.desktop-titlebar button,.desktop-external-link{color:var(--muted);background:0 0;border:1px solid #0000;place-items:center;display:grid}.desktop-titlebar button:hover,.desktop-external-link:hover{border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.desktop-external-link{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--muted);flex:0 0 28px;place-items:center;text-decoration:none;display:grid}.desktop-titlebar-leading>.desktop-sidebar-toggle{border-radius:8px;width:30px;height:30px}.desktop-titlebar-workspace{min-width:36px;max-width:190px;color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;border-radius:8px;flex:0 auto;padding:5px 9px;font-size:13px;font-weight:650;overflow:hidden}.desktop-titlebar-channel{min-width:30px;max-width:230px;color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;flex:0 auto;margin:0;font-size:13px;font-weight:650;overflow:hidden}.desktop-titlebar-channel.with-glyph:first-letter{color:var(--accent);margin-right:1px}.desktop-titlebar-divider{flex:none}.desktop-titlebar-status{color:var(--muted);white-space:nowrap;flex:none;align-items:center;gap:6px;margin-left:auto;font-size:11px;display:inline-flex}.desktop-titlebar-status:before{content:"";background:var(--muted-2);border-radius:50%;width:7px;height:7px;animation:1.6s ease-in-out infinite presence-pulse}.desktop-titlebar-actions{-webkit-app-region:no-drag;flex:none;align-items:center;margin-left:auto;display:flex}.desktop-titlebar-actions button{border-radius:8px;width:30px;height:30px}.desktop-titlebar-actions button:disabled{cursor:wait;opacity:.55}.desktop-titlebar-actions+.desktop-titlebar-status{margin-left:8px}@media (prefers-reduced-motion:reduce){.desktop-titlebar-status:before{animation:none}}.desktop-titlebar-search.search{border-color:var(--line-strong);background:color-mix(in srgb, var(--panel-2) 84%, transparent);-webkit-app-region:no-drag;width:clamp(220px,100vw - 700px,520px);height:32px;position:absolute;left:50%;transform:translate(-50%);box-shadow:inset 0 1px #ffffff09}.desktop-titlebar-search.search:focus-within{border-color:color-mix(in srgb, var(--accent) 66%, var(--line));background:var(--panel-2);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 13%, transparent)}.timeline{background:var(--bg);flex-direction:column;min-width:0;display:flex;overflow:hidden}.timeline>*{flex-shrink:0;min-width:0}.timeline>.messages{flex:1 1 0;min-height:0}.topbar{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--bg);align-items:center;gap:14px;min-height:60px;padding:12px 20px;display:flex}.topbar-title{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.topbar-title h1{letter-spacing:-.01em;color:var(--text-strong);font-size:16px;font-weight:650;font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.topbar-title h1.with-glyph:first-letter{color:var(--accent);margin-right:1px}.topbar-divider{background:var(--line-strong);width:1px;height:18px;margin:0 6px}.topbar-meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:12px;overflow:hidden}.search{border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);width:min(280px,30vw);height:34px;color:var(--muted);align-items:center;gap:8px;padding:0 10px;transition:border-color .12s,background .12s;display:flex}.search:focus-within{border-color:var(--accent);background:var(--panel-2);color:var(--text)}.search input{min-width:0;height:100%;color:var(--text);flex:1}.search input::placeholder{color:var(--muted)}.search-clear{background:var(--panel-3);width:18px;height:18px;color:var(--muted);border:0;border-radius:50%;place-items:center;font-size:14px;line-height:1;display:grid}.search-clear:hover{background:var(--accent);color:var(--accent-contrast)}.search-submit{background:var(--accent-soft);height:22px;color:var(--accent);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border:0;border-radius:5px;padding:0 8px;font-size:10px;font-weight:600}.search-submit:hover{background:var(--accent);color:var(--accent-contrast)}.topbar-actions{align-items:center;gap:6px;display:inline-flex}.topbar-actions button,.topbar-actions a{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel);width:32px;height:32px;color:var(--muted);box-shadow:var(--key-edge);place-items:center;text-decoration:none;transition:background .12s,color .12s,border-color .12s,box-shadow .12s,transform 80ms;display:grid}.topbar-actions button:hover,.topbar-actions a:hover,.topbar-actions button.active{background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));color:var(--accent)}.topbar-actions button:active,.topbar-actions a:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.notif-toggle{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;margin-left:4px;display:inline-flex}.notif-toggle:hover{background:var(--accent-soft);color:var(--accent)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.search-results{border-left:1px solid var(--line);background:var(--panel);opacity:1;grid-template-rows:auto auto minmax(0,1fr);min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(0)}.search-results.covered{opacity:0;pointer-events:none}.search-results-head{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--panel);justify-content:space-between;align-items:center;min-height:60px;padding:10px 16px;display:flex}.search-results-head>div{min-width:0}.search-results-head p{color:var(--muted);font-family:var(--font-mono);letter-spacing:0;text-transform:uppercase;margin:0 0 2px;font-size:10px;font-weight:600}.search-results-head strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;display:block;overflow:hidden}.search-results-head button{background:var(--panel-2);width:30px;height:30px;color:var(--muted);border:0;border-radius:50%;flex:none;place-items:center;font-size:19px;line-height:1;display:grid}.search-results-head button:hover{background:var(--hover);color:var(--text)}.search-results-summary{color:var(--muted);padding:12px 16px 8px;font-size:12px;font-weight:600}.search-results-scroll{min-height:0;padding:0 8px 16px;overflow-y:auto}.search-result-list{margin:0;padding:0;list-style:none}.search-result{color:var(--text);border-radius:var(--radius);text-align:left;background:0 0;border:0;align-items:flex-start;gap:10px;width:100%;padding:10px 8px;display:flex}.search-result:hover{background:var(--hover)}.search-result.is-active{background:color-mix(in srgb, var(--accent) 10%, transparent)}.search-result:focus-visible,.search-results-head button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.search-result .dm-avatar{width:30px;height:30px;font-size:13px}.search-result-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.search-result-meta{align-items:baseline;gap:8px;min-width:0;display:flex}.search-result-meta strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.search-result-handle{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.search-result-meta time{color:var(--muted);flex:none;margin-left:auto;font-size:11px}.search-result-snippet{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.45;display:-webkit-box;overflow:hidden}.search-result-snippet mark{background:color-mix(in srgb, var(--accent) 22%, transparent);color:var(--text-strong);border-radius:2px;font-weight:650}.search-result-context{min-width:0;color:var(--muted-2);align-items:center;gap:10px;margin-top:1px;font-size:11px;display:flex}.search-result-context:empty{display:none}.search-result-where{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.search-result-thread{color:var(--accent);flex:none;align-items:center;gap:4px;font-weight:600;display:inline-flex}.search-load-more{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);width:calc(100% - 16px);color:var(--text);margin:8px auto 0;padding:8px 12px;font-size:12px;font-weight:600;display:block}.search-load-more:hover:not(:disabled){background:var(--hover)}.search-load-more:disabled{color:var(--muted)}.search-load-more:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.search-end{color:var(--muted-2);text-align:center;padding:14px 8px 4px;font-size:11px}.search-foot-error{border:1px solid color-mix(in srgb, var(--danger) 40%, transparent);border-radius:var(--radius);background:color-mix(in srgb, var(--danger) 8%, transparent);color:var(--text);justify-content:space-between;align-items:center;gap:10px;margin:8px 8px 0;padding:8px 12px;font-size:12px;display:flex}.search-foot-error p{min-width:0;margin:0}.search-foot-error button{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);color:var(--text);flex:none;padding:4px 10px;font-size:12px;font-weight:600}.search-foot-error button:hover{background:var(--hover)}.search-state{color:var(--muted);text-align:center;justify-items:center;padding:56px 24px;display:grid}.search-state-icon{border:1px solid var(--line-strong);background:var(--panel-2);width:44px;height:44px;color:var(--muted-2);border-radius:50%;place-items:center;margin-bottom:14px;font-size:23px;display:grid}.search-state strong{color:var(--text-strong);font-size:14px}.search-state p{margin:5px 0 0;font-size:12px}.search-state-loading{grid-template-columns:repeat(3,7px);justify-content:center;gap:6px}.search-state-loading span{background:var(--accent);border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite pulse}.search-state-loading span:nth-child(2){animation-delay:.12s}.search-state-loading span:nth-child(3){animation-delay:.24s}.guild-rail{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);border-right:1px solid var(--line);flex-direction:column;align-items:center;gap:8px;padding:14px 0;display:flex;position:relative;overflow-y:auto}.guild-rail .guild{background:var(--panel);width:48px;height:48px;color:var(--text);border:1px solid var(--line-strong);letter-spacing:-.02em;box-shadow:var(--key-edge);border-radius:12px;place-items:center;font-size:14px;font-weight:700;text-decoration:none;transition:border-color .12s,background .12s,transform .12s,box-shadow .12s;display:grid;position:relative}.guild-rail .guild:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));color:var(--accent);box-shadow:var(--key-edge), 0 6px 16px -8px color-mix(in srgb, var(--accent) 45%, transparent);transform:translateY(-1px)}.guild-rail .guild:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.guild-rail .guild.home{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));border-color:color-mix(in srgb, var(--brand-b) 55%, var(--line-strong));color:var(--brand-contrast);font-weight:800;font-family:var(--font-display)}.guild-rail .guild.home:hover{color:var(--brand-contrast);transform:translateY(-1px)}.guild-rail .guild.home:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.guild-rail .guild__image{border-radius:inherit;object-fit:cover;width:100%;height:100%;display:block}.guild-rail .guild.add{color:var(--success);border:1px dashed color-mix(in srgb, var(--success) 45%, transparent);background:0 0}.guild-rail .guild.add:hover{background:color-mix(in srgb, var(--success) 14%, transparent);color:var(--success);border-style:solid;border-color:var(--success)}.guild-divider{background:var(--line-strong);width:36px;height:1px;margin:4px 0}.guild-list{flex-direction:column;align-items:center;gap:8px;display:flex}.guild-wrap{position:relative}.guild-wrap:before{content:"";background:var(--accent);opacity:0;border-radius:0 4px 4px 0;width:4px;height:28px;transition:opacity .14s,transform .14s;position:absolute;top:50%;left:-14px;transform:translateY(-50%)scaleY(.2)}.guild-wrap:hover:before{opacity:.6;transform:translateY(-50%)scaleY(.5)}.guild-wrap.active:before{opacity:1;transform:translateY(-50%)scaleY(1)}.guild-wrap.active .guild{background:var(--accent);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong));color:var(--accent-contrast)}.guild-create{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow);z-index:20;margin-left:8px;padding:8px;position:absolute;top:14px;left:100%}.guild-create input{border-radius:var(--radius-sm);background:var(--panel-2);width:200px;height:32px;color:var(--text);padding:0 10px}.sidebar{background:var(--panel);border-right:1px solid var(--line);grid-template-rows:auto minmax(0,1fr) auto;min-width:0;transition:opacity .16s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden}.sidebar-collapsed .sidebar{opacity:0;pointer-events:none;transform:translate(-14px)}.workspace-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:6px;min-height:60px;padding:14px 16px;display:flex}.workspace-header-icon{object-fit:cover;background:var(--panel-2);border-radius:8px;flex:none;width:28px;height:28px}.workspace-header-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.workspace-menu{min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;flex:1;align-items:center;gap:10px;margin-left:-8px;padding:5px 8px;transition:background .12s;display:flex}.workspace-menu:hover{background:var(--panel-2)}.workspace-menu-caret{color:var(--muted);flex:none;transition:color .12s}.workspace-menu:hover .workspace-menu-caret{color:var(--text-strong)}.sidebar-collapse{background:var(--panel-2);width:30px;height:30px;color:var(--muted);border:0;border-radius:8px;place-items:center;transition:color .12s,background .12s,transform .12s;display:grid}.sidebar-collapse:hover{background:var(--panel-3);color:var(--text-strong);transform:translate(-1px)}.workspace-name{flex-direction:column;gap:2px;min-width:0;display:flex}.workspace-name strong{min-width:0;color:var(--text-strong);letter-spacing:-.01em;font-size:15px;font-family:var(--font-display);align-items:center;gap:5px;font-weight:650;display:flex}.workspace-name-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.workspace-name .presence{color:var(--muted);align-items:center;gap:6px;font-size:11px;display:inline-flex}.workspace-name .presence:before{content:"";background:var(--muted-2);border-radius:50%;width:7px;height:7px;animation:1.6s ease-in-out infinite presence-pulse}@keyframes presence-pulse{0%,to{opacity:.4}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.workspace-name .presence:before{animation:none}}.sidebar-scroll{padding:12px 8px 16px;overflow-y:auto}.nav-section+.nav-section{margin-top:12px}.section-title{border-radius:var(--radius-sm);background:0 0;border:0;align-items:center;gap:4px;width:100%;padding:2px 4px;display:flex}.nav-section.collapsed+.nav-section{margin-top:4px}.section-toggle{border-radius:var(--radius-sm);min-width:0;min-height:28px;color:var(--muted);text-transform:uppercase;font-family:var(--font-mono);letter-spacing:.09em;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:6px;padding:4px;font-size:10px;font-weight:600;display:flex}.section-toggle:hover{color:var(--text);background:var(--hover)}.section-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.section-toggle .caret{opacity:.7;font-size:10px;transition:transform .14s}.section-toggle[aria-expanded=false] .caret{transform:rotate(-90deg)}.section-toggle .label{text-align:left;flex:1}.section-title .add-button{background:var(--hover-strong);width:18px;height:18px;color:var(--text);border:0;border-radius:4px;flex:none;place-items:center;padding:0;font-size:14px;font-weight:700;line-height:1;display:grid}.section-title .add-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.section-title:hover .add-button{background:var(--accent);color:var(--accent-contrast)}.nav-list{flex-direction:column;gap:1px;margin-top:4px;display:flex}.nav-list[hidden]{display:none}.channel-subgroup{gap:1px;margin-top:6px;display:grid}.channel-subgroup-toggle{border-radius:var(--radius-sm);width:100%;min-height:26px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;text-align:left;text-transform:uppercase;background:0 0;border:0;align-items:center;gap:6px;padding:4px 9px 4px 28px;font-size:10px;font-weight:600;display:flex}.channel-subgroup-toggle:hover,.channel-subgroup-toggle:focus-visible{background:var(--hover);color:var(--text);outline:none}.channel-subgroup-toggle .caret{opacity:.7;font-size:10px;transition:transform .14s}.channel-subgroup-toggle[aria-expanded=false] .caret{transform:rotate(-90deg)}.channel-subgroup-count{color:var(--muted-2);font-variant-numeric:tabular-nums;margin-left:auto}.channel-subgroup-list{gap:1px;display:grid}.channel-subgroup-list[hidden]{display:none}.archived-channel-group{border-top:1px solid color-mix(in srgb, var(--line) 70%, transparent);margin-top:10px;padding-top:6px}@media (prefers-reduced-motion:reduce){.section-toggle .caret{transition:none}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.channel-row{border-radius:var(--radius-sm);align-items:center;display:flex;position:relative}.channel-row .nav-item{flex:1;min-width:0}.channel-row.subdued .nav-item:not(.active){color:var(--muted-2)}.managed-channel-marker{color:var(--muted-2);flex:none;place-items:center;display:inline-grid}.nav-item.active .managed-channel-marker,.nav-item:hover .managed-channel-marker{color:var(--accent)}.channel-row.reorderable .nav-item{padding-left:2px}.channel-drag-handle{border-radius:var(--radius-sm);color:var(--muted-2);cursor:grab;opacity:0;background:0 0;border:0;flex:0 0 24px;align-self:stretch;place-items:center;display:grid}.channel-row:hover .channel-drag-handle,.channel-drag-handle:focus-visible{opacity:1}.channel-drag-handle:hover{color:var(--text);background:var(--hover)}.channel-drag-handle:active{cursor:grabbing}.channel-drag-handle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.channel-drag-handle svg{fill:currentColor}.channel-move-menu{z-index:4;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel);min-width:112px;box-shadow:var(--shadow);padding:4px;display:grid;position:absolute;top:calc(100% + 2px);left:0}.channel-move-menu button{color:var(--text);text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}.channel-move-menu button:hover:not(:disabled),.channel-move-menu button:focus-visible{background:var(--hover-strong);outline:none}.channel-move-menu button:disabled{color:var(--muted-2);cursor:default}.channel-row.dragging{opacity:.45}.channel-row.drop-before:before,.channel-row.drop-after:after{content:"";z-index:1;background:var(--accent);pointer-events:none;border-radius:1px;height:2px;position:absolute;left:4px;right:4px}.channel-row.drop-before:before{top:-1px}.channel-row.drop-after:after{bottom:-1px}@media (hover:none){.channel-drag-handle{opacity:1}}@media (prefers-reduced-motion:reduce){.channel-subgroup-toggle .caret{transition:none}}.nav-item{border-radius:var(--radius-sm);width:100%;color:var(--muted);text-align:left;background:0 0;border:0;align-items:center;gap:8px;min-height:30px;padding:6px 10px;text-decoration:none;transition:background .1s,color .1s;display:flex}.nav-item:hover{background:var(--hover);color:var(--text)}.nav-item:focus{outline:none}.nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.nav-item.active{background:var(--accent-soft);color:var(--text-strong);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent)}.nav-item.has-unread{color:var(--text-strong);font-weight:600}.nav-item.has-unread .hash{color:var(--text-strong)}.unread-badge{background:var(--accent);min-width:18px;height:18px;color:var(--accent-contrast,white);text-align:center;letter-spacing:.01em;border-radius:9px;flex-shrink:0;padding:0 6px;font-size:11px;font-weight:700;line-height:18px}.nav-item .hash{color:var(--muted);text-align:center;width:14px;font-weight:600}.nav-item.active .hash{color:var(--accent)}.nav-label{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:14px;overflow:hidden}.dm-row{grid-template-columns:minmax(0,1fr) 24px;align-items:center;gap:2px;display:grid;position:relative}.dm-row .nav-item{min-width:0}.dm-actions-trigger{border-radius:var(--radius-sm);width:22px;height:22px;color:var(--muted-2);opacity:0;background:0 0;border:0;place-items:center;font-size:18px;font-weight:700;line-height:1;display:grid}.dm-row:hover .dm-actions-trigger,.dm-row:focus-within .dm-actions-trigger,.dm-row.active .dm-actions-trigger{opacity:1}.dm-actions-trigger:hover,.dm-actions-trigger:focus-visible,.dm-actions-trigger[aria-expanded=true]{background:var(--hover);color:var(--text);outline:none}.dm-actions-menu{z-index:30;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel-2);min-width:164px;box-shadow:var(--shadow);padding:4px;position:absolute;top:28px;right:0}.dm-actions-item{width:100%;min-height:30px;color:var(--text);text-align:left;background:0 0;border:0;border-radius:6px;padding:0 10px;font-size:13px}.dm-actions-item:hover,.dm-actions-item:focus-visible{background:var(--hover);color:var(--text-strong);outline:none}.dm-undo{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--muted);align-items:center;gap:8px;margin:6px 8px 2px;padding:6px 8px;font-size:12px;display:flex}.dm-undo span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.dm-undo button{background:var(--hover);color:var(--text);border:0;border-radius:6px;padding:4px 8px;font-size:12px;font-weight:700}.dm-undo button:hover,.dm-undo button:focus-visible{background:var(--accent);color:var(--accent-contrast);outline:none}.nav-empty{color:var(--muted-2);margin:4px 8px;font-size:12px}.dm-avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:50%;flex-shrink:0;place-items:center;width:22px;height:22px;font-size:11px;font-weight:700;display:grid;overflow:hidden}.dm-avatar img,.avatar img{object-fit:cover;width:100%;height:100%;display:block}.presence-dot{background:var(--muted-2);border-radius:50%;flex-shrink:0;width:8px;height:8px}.presence-dot.active{background:var(--success);box-shadow:0 0 0 2px var(--panel)}.inline-create{grid-template-columns:minmax(0,1fr) auto;gap:6px;margin:6px 4px 2px;display:grid}.inline-create input{border-radius:var(--radius-sm);background:var(--panel-2);width:100%;min-width:0;height:30px;color:var(--text);border:1px solid var(--line);padding:0 10px}.inline-create input:focus{border-color:var(--accent);background:var(--panel-3)}.inline-create button.ghost,button.ghost{border-radius:var(--radius-sm);background:var(--panel-3);width:30px;height:30px;color:var(--muted);border:0;place-items:center;padding:0;font-size:14px;font-weight:600;display:grid}.inline-create button.ghost:hover{background:var(--accent);color:var(--accent-contrast)}.user-card{background:var(--panel-2);border-top:1px solid var(--line);width:100%;color:inherit;text-align:left;cursor:pointer;border-bottom:0;border-left:0;border-right:0;align-items:center;gap:10px;padding:10px 12px;transition:background .12s;display:flex}.user-card:hover{background:var(--panel-3)}.user-card .dm-avatar{width:28px;height:28px;font-size:12px}.user-card .user-meta{flex:1;min-width:0}.user-card .user-meta strong{color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;font-size:13px;display:block;overflow:hidden}.user-card .user-meta span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;display:block;overflow:hidden}@media (width<=820px){.workspace-header{min-height:calc(60px + var(--safe-area-top));padding-top:calc(14px + var(--safe-area-top));padding-right:calc(16px + var(--safe-area-right))}.sidebar-scroll{padding-bottom:calc(16px + var(--safe-area-bottom))}.user-card{padding-bottom:calc(10px + var(--safe-area-bottom))}}.messages{flex-direction:column;display:flex;position:relative}.messages-scroll{overflow-anchor:none;opacity:1;flex-direction:column;flex:1;min-height:0;padding:0 4px;transition:opacity .14s ease-out;display:flex;overflow-y:auto}.messages-scroll:focus{outline:none}.messages.is-revealing .messages-scroll{opacity:0;pointer-events:none;transition:opacity}.messages-spacer{flex-grow:1}.history-loader{pointer-events:none;gap:14px;margin:4px 0 6px;padding:6px 18px;animation:.22s ease-out both history-loader-fade;display:grid}.history-loader--newer{margin-top:6px;margin-bottom:4px}@keyframes history-loader-fade{0%{opacity:0}to{opacity:1}}.history-loader__row{grid-template-columns:56px minmax(0,1fr);min-height:44px;display:grid}.history-loader__avatar,.history-loader__meta,.history-loader__line,.history-loader__block{background:linear-gradient(90deg, color-mix(in srgb, var(--muted-2) 16%, transparent), color-mix(in srgb, var(--muted-2) 36%, transparent), color-mix(in srgb, var(--muted-2) 16%, transparent));animation:1.4s ease-in-out infinite history-loading;animation-delay:calc(var(--history-row,0) * 80ms);background-size:220% 100%;display:block}.history-loader__avatar{border-radius:10px;width:38px;height:38px}.history-loader__body{align-content:start;gap:8px;min-width:0;padding-top:4px;display:grid}.history-loader__meta{border-radius:999px;width:min(180px,38%);height:11px}.history-loader__line{border-radius:999px;height:10px}.history-loader__line--wide{width:min(540px,72%)}.history-loader__line--mid{width:min(360px,48%)}@keyframes history-loading{0%{background-position:120% 0}to{background-position:-120% 0}}@media (prefers-reduced-motion:reduce){.history-loader{animation:none}.history-loader__avatar,.history-loader__meta,.history-loader__line,.history-loader__block{background:color-mix(in srgb, var(--muted-2) 22%, transparent);animation:none}}.unread-bar{z-index:5;background:color-mix(in srgb, var(--panel) 82%, transparent);-webkit-backdrop-filter:blur(14px)saturate(140%);border:1px solid color-mix(in srgb, var(--accent) 38%, transparent);max-width:calc(100% - 32px);height:30px;color:var(--text);letter-spacing:.005em;box-shadow:inset 0 1px 0 #ffffff14, 0 10px 24px -14px #0000008c, 0 0 0 4px color-mix(in srgb, var(--accent) 10%, transparent);opacity:1;border-radius:999px;align-items:center;gap:6px;padding:0 5px 0 14px;font-size:12px;font-weight:600;transition:opacity .16s ease-out,transform .18s cubic-bezier(.2,.8,.2,1);display:inline-flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.unread-bar.is-clearing{opacity:0;pointer-events:none;transform:translate(-50%,-6px)}.unread-bar__jump,.unread-bar__mark{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;transition:background-color .12s ease-out,color .12s ease-out;display:inline-flex}.unread-bar__jump{text-align:left;min-width:0;color:color-mix(in srgb, var(--accent) 92%, var(--text));flex:0 auto;padding:0 6px 0 0}.unread-bar__jump:before{content:"";background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent);border-radius:50%;flex-shrink:0;animation:1.8s ease-out infinite unread-bar-pulse}@keyframes unread-bar-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent)}70%{box-shadow:0 0 0 7px color-mix(in srgb, var(--accent) 0%, transparent)}to{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 0%, transparent)}}@media (prefers-reduced-motion:reduce){.unread-bar__jump:before{animation:none}}.unread-bar__mark{background:color-mix(in srgb, var(--accent) 14%, transparent);height:22px;color:color-mix(in srgb, var(--accent) 90%, var(--text));letter-spacing:.01em;border-radius:999px;flex-shrink:0;padding:0 10px;font-size:11px;font-weight:600}.unread-bar__jump:hover{color:var(--accent)}.unread-bar__mark:hover{background:color-mix(in srgb, var(--accent) 24%, transparent);color:var(--accent)}.unread-bar__jump:focus-visible,.unread-bar__mark:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 70%, transparent);outline-offset:2px;border-radius:999px}.unread-bar__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.typing-indicator{height:0;color:var(--text-muted);opacity:0;pointer-events:none;align-items:center;gap:8px;margin-top:0;padding:0 22px;font-size:12px;transition:height .12s ease-out,margin-top .12s ease-out,opacity .12s ease-out,transform .16s cubic-bezier(.2,.8,.2,1);display:flex;overflow:hidden;transform:translateY(2px)}.typing-indicator.visible{opacity:1;height:20px;margin-top:-4px;transform:translateY(0)}.composer-dock{padding-top:20px;position:relative}.topic-filter{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--accent) 8%, var(--panel));color:var(--muted);justify-content:space-between;align-items:center;gap:12px;padding:8px 18px;font-size:13px;display:flex}.topic-filter strong{color:var(--text)}.topic-filter button,.message-topic{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0}.topic-filter button:hover,.message-topic:hover{text-decoration:underline}.message-topic{background:color-mix(in srgb, var(--accent) 12%, transparent);border-radius:999px;margin:0 0 4px;padding:2px 7px;font-size:11px;font-weight:700;display:inline-flex}.topic-picker{border:1px solid var(--line);background:var(--panel);color:var(--muted);border-bottom:0;border-radius:10px 10px 0 0;align-items:center;gap:8px;margin:0 14px -1px;padding:7px 10px;font-size:12px;display:flex}.topic-picker select{min-width:0;max-width:min(280px,65vw);color:var(--text);font:inherit;background:0 0;border:0}.composer-dock .agent-responding{opacity:0;pointer-events:none;align-items:center;height:20px;margin:0;padding:0 22px;transition:opacity .12s ease-out;display:flex;position:absolute;top:0;left:0;right:0;overflow:hidden;transform:none}.composer-dock .agent-responding.visible{opacity:1;height:20px;margin:0;transform:none}.typing-indicator__dots{align-items:center;gap:3px;display:inline-flex}.typing-indicator__dots i{opacity:.55;background:currentColor;border-radius:50%;width:4px;height:4px;animation:1.1s ease-in-out infinite typing-dot}.typing-indicator__dots i:nth-child(2){animation-delay:.15s}.typing-indicator__dots i:nth-child(3){animation-delay:.3s}@keyframes typing-dot{0%,60%,to{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.message-row.is-pending{opacity:.55}.message-row.is-pending .message-content,.message-row.is-pending .markdown{pointer-events:none}.message-row.is-failed{opacity:1}.message-row.is-deleted{color:var(--muted)}.message-failed{background:color-mix(in srgb, var(--danger,#d04848) 14%, transparent);color:var(--danger,#d04848);border-radius:999px;align-items:center;gap:10px;margin-top:6px;padding:4px 10px;font-size:12px;display:inline-flex}.message-failed__label{font-weight:500}.message-failed__action{color:inherit;font:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:999px;padding:2px 8px;line-height:1}.message-failed__action:hover{background:color-mix(in srgb, currentColor 12%, transparent)}.message-failed__action--ghost{border-color:color-mix(in srgb, currentColor 50%, transparent)}@media (prefers-reduced-motion:reduce){.typing-indicator{transition:opacity 80ms ease-out;transform:none}.typing-indicator.visible{transform:none}.typing-indicator__dots i{opacity:.7;animation:none}}.empty{text-align:center;align-content:center;place-items:center;gap:10px;min-height:50vh;padding:48px 24px;display:grid}.empty-icon{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));border:1px solid color-mix(in srgb, var(--brand-b) 55%, var(--line-strong));width:64px;height:64px;color:var(--brand-contrast);box-shadow:var(--key-edge), 0 18px 40px -16px color-mix(in srgb, var(--brand-b) 60%, transparent);border-radius:16px;place-items:center;font-size:26px;font-weight:800;display:grid}.empty strong{color:var(--text-strong);letter-spacing:-.01em;font-size:19px;font-family:var(--font-display);overflow-wrap:anywhere;font-weight:700}.empty span{color:var(--muted);max-width:380px;line-height:1.5}.day-divider{pointer-events:none;align-items:center;gap:12px;margin:18px 18px 8px;display:flex}.day-divider:before,.day-divider:after{content:"";background:var(--line);flex:1;height:1px}.day-divider span{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.07em;border-radius:999px;padding:4px 12px;font-size:10px;font-weight:600}.new-messages-divider{pointer-events:none;opacity:1;align-items:center;gap:0;margin:4px 0 2px;padding:0 18px;transition:opacity .16s ease-out,transform .18s cubic-bezier(.2,.8,.2,1);display:flex;position:relative;transform:translateY(0)}.new-messages-divider.is-clearing{opacity:0;transform:translateY(-4px)}.new-messages-divider:before{content:"";background:var(--danger,#ed4245);opacity:.9;flex:1;height:1px}.new-messages-divider span{background:var(--danger,#ed4245);color:#fff;letter-spacing:.04em;text-transform:uppercase;border-radius:3px;align-items:center;height:14px;margin-left:8px;padding:0 5px;font-size:9px;font-weight:700;display:inline-flex}.message-group{grid-template-columns:56px minmax(0,1fr);padding:8px 18px;display:grid;position:relative}.avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:10px;place-items:center;width:38px;height:38px;margin-top:2px;font-size:14px;font-weight:700;display:grid;overflow:hidden;box-shadow:0 6px 20px -10px #0009}.avatar-button{z-index:2;cursor:pointer;border:0;padding:0;transition:transform .1s,box-shadow .12s,filter .12s;position:relative}.avatar-button:hover{filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 10px 24px -12px #000c}.avatar.small{border-radius:10px;width:30px;height:30px;font-size:12px}.avatar.large{border-radius:16px;width:56px;height:56px;margin:0;font-size:18px}.group-body{min-width:0}.group-body>header{align-items:baseline;gap:8px;margin-bottom:2px;display:flex}.message-group .group-body>header{margin:0 -18px 0 -56px;padding:0 18px 2px 56px}.group-body>header strong{color:var(--text-strong);letter-spacing:-.005em;font-size:14.5px;font-weight:700}.author-name{color:var(--text-strong);letter-spacing:0;background:0 0;border:0;border-radius:4px;padding:0;font-size:14.5px;font-weight:700}.author-name:hover{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.author-name--static:hover{color:var(--text-strong);text-decoration:none}.group-body>header time{color:var(--muted);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:10.5px}.group-body>header span{color:var(--muted);font-size:12px}.bot-chip{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);height:18px;color:var(--accent);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;border-radius:4px;align-items:center;padding:0 6px;font-size:9.5px;font-weight:700;line-height:1;display:inline-flex}.bot-chip--deleted{border-color:var(--line-strong);color:var(--muted)}.message-row{border-radius:0;margin-left:-56px;margin-right:-18px;padding:1px 18px 1px 56px;transition:background 80ms;position:relative}.message-row:not(:first-child){margin-top:1px}.message-row:hover,.message-group .group-body>header:hover,.message-group .group-body>header:hover+.message-row{background:var(--hover)}.message-group .group-body>header:has(+.message-row:hover){background:var(--hover)}.message-group .group-body>header:hover+.message-row .message-actions{opacity:1;pointer-events:auto}.message-row.selected{background:var(--accent-soft)}.message-row.can-open-thread{cursor:pointer}.row-stamp{font-family:var(--font-mono);color:var(--muted-2);opacity:0;font-variant-numeric:tabular-nums;font-size:9.5px;position:absolute;top:4px;left:8px}.message-row.is-preamble{background:0 0;margin-bottom:6px;padding-top:4px;padding-bottom:4px}.message-row.is-preamble:not(.before-final-message) .message-content{border:1px solid color-mix(in srgb, var(--activity-accent) 20%, transparent);border-radius:var(--radius-lg);background:var(--activity-accent-soft);box-shadow:0 2px 0 color-mix(in srgb, var(--activity-accent) 14%, transparent);padding:10px 14px}.message-row.is-preamble-collapsed .message-content{padding-top:6px;padding-bottom:6px}.message-row.is-preamble.before-final-message{background:0 0;margin-bottom:0;padding-top:2px;padding-bottom:0}.message-row.after-preamble{margin-top:0;padding-top:0;padding-bottom:2px}.message-row.is-preamble.before-final-message:before{display:none}.message-row.is-preamble.before-final-message .message-content{border:1px solid color-mix(in srgb, var(--activity-accent) 20%, transparent);background:var(--activity-accent-soft);border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);border-bottom:0;padding:10px 14px}.message-row.after-preamble .message-content{border:1px solid color-mix(in srgb, var(--delivery-accent) 20%, transparent);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg);background:var(--delivery-accent-soft);box-shadow:0 2px 0 color-mix(in srgb, var(--delivery-accent) 14%, transparent);border-top:0;padding:10px 14px}.message-row.is-preamble.before-final-message.is-preamble-collapsed .message-content{background:color-mix(in srgb, var(--activity-accent) 10%, var(--panel));border-bottom:1px solid color-mix(in srgb, var(--activity-accent) 30%, transparent);padding-top:7px;padding-bottom:7px}:root[data-user-align=right] .message-group.is-self,:root[data-other-align=right] .message-group:not(.is-self){grid-template-columns:minmax(0,1fr) 56px}:root[data-user-align=right] .message-group.is-self>.avatar,:root[data-other-align=right] .message-group:not(.is-self)>.avatar{grid-area:1/2;justify-self:end}:root[data-user-align=right] .message-group.is-self>.group-body,:root[data-other-align=right] .message-group:not(.is-self)>.group-body{grid-area:1/1;min-width:0}:root[data-user-align=right] .message-group.is-self .group-body>header,:root[data-other-align=right] .message-group:not(.is-self) .group-body>header{justify-content:flex-end;margin:0 -56px 0 -18px;padding:0 56px 2px 18px}:root[data-user-align=right] .message-group.is-self .message-row,:root[data-other-align=right] .message-group:not(.is-self) .message-row{margin-left:-18px;margin-right:-56px;padding-left:18px;padding-right:56px}:root[data-user-align=right] .message-group.is-self .message-content,:root[data-other-align=right] .message-group:not(.is-self) .message-content{text-align:right;margin-left:auto}:root[data-user-align=right] .message-group.is-self .markdown,:root[data-other-align=right] .message-group:not(.is-self) .markdown{text-align:right}:root:not([data-message-layout=outlined])[data-user-align=right] .message-group.is-self .markdown ul,:root:not([data-message-layout=outlined])[data-user-align=right] .message-group.is-self .markdown ol,:root:not([data-message-layout=outlined])[data-other-align=right] .message-group:not(.is-self) .markdown ul,:root:not([data-message-layout=outlined])[data-other-align=right] .message-group:not(.is-self) .markdown ol{padding-left:0;padding-right:0;list-style-position:inside}:root:not([data-message-layout=outlined])[data-user-align=right] .message-group.is-self .markdown li>ul,:root:not([data-message-layout=outlined])[data-user-align=right] .message-group.is-self .markdown li>ol,:root:not([data-message-layout=outlined])[data-other-align=right] .message-group:not(.is-self) .markdown li>ul,:root:not([data-message-layout=outlined])[data-other-align=right] .message-group:not(.is-self) .markdown li>ol{padding-left:0;padding-right:22px}:root:not([data-message-layout=outlined])[data-user-align=right] .message-group.is-self .markdown li>p:first-child,:root:not([data-message-layout=outlined])[data-other-align=right] .message-group:not(.is-self) .markdown li>p:first-child{display:inline}:root:not([data-message-layout=outlined])[data-user-align=right] .message-group.is-self .markdown blockquote,:root:not([data-message-layout=outlined])[data-other-align=right] .message-group:not(.is-self) .markdown blockquote{border-left:0;border-right:3px solid var(--accent);padding-left:0;padding-right:12px}:root[data-user-align=right] .message-group.is-self .attachment-grid,:root[data-other-align=right] .message-group:not(.is-self) .attachment-grid{margin-left:auto}.preamble-contract{gap:7px;min-width:0;display:grid}.preamble-toggle{width:100%;min-height:20px;color:var(--activity-accent);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto auto auto minmax(0,1fr);align-items:center;gap:7px;padding:0;display:grid}.preamble-chevron{color:var(--activity-accent);font-size:10px;transition:transform .12s}.preamble-chevron.open{transform:rotate(90deg)}.preamble-state,.preamble-action{line-height:1}.preamble-state{border:1px solid color-mix(in srgb, var(--activity-accent) 30%, transparent);height:17px;color:var(--activity-accent);text-transform:uppercase;letter-spacing:.03em;border-radius:999px;align-items:center;padding:0 7px;font-size:9.5px;font-weight:750;display:inline-flex}.preamble-state.is-live{border-color:color-mix(in srgb, var(--activity-accent) 55%, transparent);animation:1.6s ease-in-out infinite preamble-live-pulse}@keyframes preamble-live-pulse{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.preamble-state.is-live{animation:none}}.preamble-action{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.preamble-body{color:var(--muted);overflow-wrap:anywhere;word-break:break-word;min-width:0}.preamble-flow{gap:7px;min-width:0;padding-left:17px;display:grid}.preamble-tool{--tool-accent:var(--activity-accent);background:var(--tool-call-bg);border-radius:7px;min-width:0;overflow:hidden}.preamble-tool-summary{width:100%;min-width:0;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:baseline;gap:7px;padding:4px 9px;line-height:1.5;display:flex}.preamble-tool-summary:hover{background:var(--tool-call-bg-hover)}.preamble-tool-full{color:var(--muted);overflow-wrap:anywhere;word-break:break-word;gap:5px;min-width:0;padding:2px 10px 8px 27px;font-size:12px;display:grid}.preamble-tool-full-head{font-family:var(--font-mono);color:color-mix(in srgb, var(--tool-accent) 45%, var(--muted));font-size:11px;font-weight:600}.preamble-tool-full-body{min-width:0}.preamble-tool-full pre{white-space:pre-wrap;overflow-wrap:anywhere}.tool-line-chevron{color:var(--muted-2);flex-shrink:0;font-size:9px;transition:transform .12s}.tool-line-chevron.open{transform:rotate(90deg)}.tool-line-glyph{filter:saturate(.85);flex-shrink:0;font-size:11px}.tool-line-action{color:color-mix(in srgb, var(--tool-accent) 38%, var(--text));flex-shrink:0;font-size:11.5px;font-weight:600}.tool-line-name{text-overflow:ellipsis;white-space:nowrap;max-width:40%;color:color-mix(in srgb, var(--tool-accent) 55%, var(--muted));font-size:11px;font-weight:500;font-family:var(--font-mono);flex-shrink:0;overflow:hidden}.tool-line-detail{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--muted);font-size:11px;font-weight:400;font-family:var(--font-mono);opacity:.85;flex:auto;overflow:hidden}.message-row:hover .row-stamp{opacity:1}.message-content{min-width:0;display:flow-root}.thread-hint{min-height:22px;color:var(--muted-2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:6px;margin-top:4px;padding:3px 8px;font-size:12px;font-weight:700;line-height:1;display:inline-flex}.thread-hint:not(.has-replies):not(.is-open){display:none}.thread-hint svg{flex:none}.thread-hint time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:10.5px;font-weight:500}.thread-hint.has-replies,.thread-hint.is-open{color:var(--accent)}.thread-hint.is-open{border-color:color-mix(in srgb, var(--accent) 40%, transparent);background:color-mix(in srgb, var(--accent-soft) 70%, transparent)}.thread-hint:hover{border-color:var(--line-strong);background:var(--panel)}.thread-hint:disabled{cursor:default;opacity:.45}.message-actions{opacity:0;pointer-events:none;background:var(--panel);border:1px solid var(--line-strong);box-shadow:var(--shadow);border-radius:8px;align-items:flex-start;gap:4px;padding:2px;transition:opacity .1s;display:flex;position:absolute;top:-24px;right:8px}.message-row:hover .message-actions,.message-row.selected .message-actions,.message-row.menu-open .message-actions{opacity:1;pointer-events:auto}.message-row:has(:focus-visible) .message-actions{opacity:1;pointer-events:auto}.message-row.actions-flip .message-actions{top:auto;bottom:-24px}.message-row.menu-open{z-index:6}.message-row:hover,.message-row.selected{z-index:5}.message-row:has(:focus-visible){z-index:5}.messages:has(.message-row.menu-open) .message-row:hover:not(.menu-open) .message-actions{opacity:0;pointer-events:none}.messages:has(.message-row.menu-open) .message-group .group-body>header:hover+.message-row:not(.menu-open) .message-actions{opacity:0;pointer-events:none}@media (hover:none),(pointer:coarse){.message-actions{width:1px;height:1px;box-shadow:none;opacity:1;pointer-events:auto;background:0 0;border:0;padding:0;top:1px;bottom:auto;overflow:visible;transform:none}.message-actions>:not(.message-more){display:none}.message-row.actions-flip .message-actions{top:1px;bottom:auto}.message-actions .message-more{position:static}.message-actions .message-actions-trigger{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.message-actions .message-actions-trigger:focus-visible{clip:auto;clip-path:none;border:1px solid var(--line-strong);background:var(--panel);width:36px;height:36px;box-shadow:var(--shadow);margin:0;top:0;right:0;overflow:visible}.message-row:has(.message-actions-trigger:focus-visible) .message-content{padding-right:44px}}.message-actions button{width:28px;height:28px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.message-actions button:hover{background:var(--hover-strong);color:var(--text-strong)}.message-actions button:disabled{opacity:.45}.message-copy-status{background:var(--accent-soft);height:24px;color:var(--accent);white-space:nowrap;border-radius:5px;align-self:center;align-items:center;padding:0 6px;font-size:11px;font-weight:700;display:inline-flex}.message-copy-status.is-error{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger)}.message-sheet-scrim{z-index:60;background:#05080f66;flex-direction:column;justify-content:flex-end;display:flex;position:fixed;inset:0}.message-sheet-backdrop{background:0 0;border:0;padding:0;position:absolute;inset:0}.message-action-sheet{z-index:1;background:var(--panel);border:1px solid var(--line);max-height:calc(100dvh - 16px - env(safe-area-inset-top,0px));padding:8px 12px calc(10px + env(safe-area-inset-bottom,0px));overscroll-behavior:contain;border-bottom:0;border-radius:16px 16px 0 0;animation:.16s ease-out sheet-rise;position:relative;overflow-y:auto}@keyframes sheet-rise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.message-action-sheet{animation:none}}.message-action-sheet .sheet-grabber{background:var(--line-strong);border-radius:999px;width:36px;height:4px;margin:0 auto 8px}.message-action-sheet .sheet-emoji-row{border-bottom:1px solid var(--line);justify-content:space-around;gap:4px;padding-bottom:8px;display:flex}.message-action-sheet .sheet-emoji-row button{background:0 0;border:0;border-radius:10px;place-items:center;width:44px;height:44px;font-size:22px;line-height:1;display:grid}.message-action-sheet .sheet-emoji-row button:active{background:var(--hover-strong)}.message-action-sheet .sheet-actions{flex-direction:column;padding-top:4px;display:flex}.message-action-sheet .sheet-actions button{width:100%;color:var(--text-strong);text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:12px;padding:12px 8px;font-size:15px;display:flex}.message-action-sheet .sheet-actions button:active{background:var(--hover-strong)}.message-action-sheet .sheet-actions button:disabled{opacity:.45}.message-action-sheet .sheet-actions svg{color:var(--muted);flex:none}.message-action-sheet .sheet-danger,.message-action-sheet .sheet-danger svg{color:var(--danger)}.message-action-sheet .sheet-copy-status{background:var(--accent-soft);height:22px;color:var(--accent);white-space:nowrap;border-radius:5px;align-items:center;margin-left:auto;padding:0 6px;font-size:11px;font-weight:700;display:inline-flex}.message-action-sheet .sheet-copy-status.is-error{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger)}.message-actions .message-action-react{font-size:15px;line-height:1}.message-actions .action-sep{background:var(--line);flex:none;align-self:center;width:1px;height:18px;margin:0 3px}.message-actions .picker-wrapper,.message-actions .message-more{position:relative}.message-menu{z-index:30;background:var(--panel);border:1px solid var(--line-strong);min-width:190px;box-shadow:var(--shadow);border-radius:10px;padding:5px;font-size:13px;position:absolute;top:calc(100% + 4px);right:0}.message-menu.above{top:auto;bottom:calc(100% + 4px)}.message-menu button{width:100%;height:auto;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:9px;padding:7px 10px;font-size:13px;display:flex}.message-menu button:hover{background:var(--hover-strong);color:var(--text-strong)}.message-menu button svg{color:var(--muted);flex:none}.message-menu .menu-sep{border-top:1px solid var(--line);margin:5px 4px}.message-menu .menu-danger,.message-menu .menu-danger svg{color:var(--danger)}.message-menu .menu-danger:hover{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger)}.message-edit{gap:7px;width:min(100%,760px);padding:5px 0 3px;display:grid}.message-edit__textarea{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 94%, var(--text) 6%);width:100%;min-height:72px;max-height:240px;color:var(--text);font:inherit;resize:vertical;box-sizing:border-box;box-shadow:inset 0 1px 1px color-mix(in srgb, var(--text) 5%, transparent);border-radius:7px;padding:9px 11px;font-size:14.5px;line-height:1.5;transition:border-color .12s,box-shadow .12s,background .12s}.message-edit__textarea:hover:not(:disabled){border-color:color-mix(in srgb, var(--line-strong) 62%, var(--text) 38%)}.message-edit__textarea:focus{border-color:var(--accent);background:var(--panel);box-shadow:inset 0 1px 1px color-mix(in srgb, var(--text) 4%, transparent), 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);outline:none}.message-edit__textarea:disabled{cursor:progress;opacity:.78}.message-edit__footer{flex-wrap:wrap;align-items:center;gap:6px;min-height:30px;display:flex}.message-edit__footer .message-edit__save{background:var(--accent);min-width:68px;min-height:30px;color:var(--accent-contrast);cursor:pointer;border:0;border-radius:6px;justify-content:center;align-items:center;gap:4px;padding:5px 12px;font-size:13px;font-weight:500;display:inline-flex}.message-edit__footer .message-edit__save:hover{filter:brightness(1.1)}.message-edit__footer .message-edit__save:focus-visible,.message-edit__footer .message-edit__cancel:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.message-edit__footer .message-edit__save:disabled{opacity:.5;cursor:progress}.message-edit__footer .message-edit__cancel{min-height:30px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;padding:5px 10px;font-size:13px;display:inline-flex}.message-edit__footer .message-edit__cancel:hover{border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.message-edit__error{border-left:2px solid var(--danger);background:color-mix(in srgb, var(--danger) 8%, transparent);width:fit-content;max-width:100%;color:var(--danger);border-radius:3px;margin:0;padding:5px 8px;font-size:12.5px;line-height:1.35}.message-edit__indicator{color:var(--muted);align-items:center;gap:3px;margin-left:8px;font-size:11px;display:inline-flex}.message-row.editing .message-actions{display:none}@media (width<=520px){.message-edit__footer .message-edit__save,.message-edit__footer .message-edit__cancel{flex:1 1 0}}.message-deleted{min-height:22px;color:var(--muted);align-items:center;font-size:13px;font-style:italic;display:inline-flex}.markdown{color:var(--text);overflow-wrap:anywhere;word-break:break-word;font-size:14.5px;line-height:1.5}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:0}.markdown p+p,.markdown ul,.markdown ol,.markdown blockquote,.markdown pre{margin-top:6px}.markdown a{color:var(--accent);text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown code{background:var(--panel-2);border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-family:Geist Mono Variable,JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.markdown pre{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;overflow-x:auto}.markdown pre code{background:0 0;border:0;padding:0}.markdown blockquote{border-left:3px solid var(--accent);color:var(--muted);margin:0;padding:4px 0 4px 12px}.markdown ul,.markdown ol{padding-left:22px}.markdown img{border-radius:var(--radius);border:1px solid var(--line);object-fit:contain;background:var(--panel);cursor:zoom-in;max-width:100%;max-height:360px;margin-top:6px}.markdown-table-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;max-width:100%;margin-top:6px;overflow-x:auto}.markdown-table-scroll[data-overflowing]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.markdown-table-scroll:first-child{margin-top:0}.markdown-table-scroll>table{border-collapse:collapse;border-spacing:0;width:max-content;min-width:100%;font-size:.9em}.markdown thead{background:var(--muted-2)}.markdown th,.markdown td{vertical-align:top;border:1px solid var(--line);padding:8px 12px}.markdown thead th{color:var(--text-strong);font-weight:700}.markdown tbody tr:nth-child(2n){background:color-mix(in srgb, var(--muted-2) 18%, transparent)}.markdown tbody tr:hover{background:color-mix(in srgb, var(--muted-2) 26%, transparent)}.gif-player{vertical-align:top;max-width:100%;display:inline-block;position:relative}.gif-player img{display:block}.gif-badge,.gif-replay{z-index:1;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:0;position:absolute}.gif-badge{letter-spacing:.04em;pointer-events:none;background:#0000008a;border-radius:999px;padding:4px 7px;font-size:10px;font-weight:800;bottom:9px;left:9px}.gif-replay{opacity:0;pointer-events:none;background:#0a0c12b8;border-radius:999px;place-items:center;width:30px;height:30px;font-size:16px;line-height:1;transition:opacity .13s,transform .13s,background .12s;display:grid;bottom:9px;right:9px;transform:scale(.88)}.gif-replay:hover{background:var(--accent)}.gif-player.paused .gif-replay{opacity:1;pointer-events:auto;transform:scale(1)}.gif-player.playing .gif-badge{animation:.9s ease-in-out infinite gif-breathe}@keyframes gif-breathe{0%,to{opacity:.85}50%{opacity:.45}}.attachment-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;max-width:560px;margin-top:8px;display:grid}.attachment-grid.compact{grid-template-columns:minmax(0,1fr);max-width:420px}.media-tile{border:1px solid var(--line);border-radius:var(--radius-lg);isolation:isolate;text-align:left;width:100%;color:inherit;cursor:pointer;background:#0a0c12;margin:0;padding:0;text-decoration:none;transition:border-color .14s,transform .14s,box-shadow .14s;display:block;position:relative;overflow:hidden}.media-tile:hover{border-color:var(--line-strong);box-shadow:0 18px 40px -28px #000000e6}.media-tile:focus-visible{border-color:var(--line-strong);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 35%, transparent);outline:none}.media-tile--image{cursor:zoom-in}.media-tile__open{width:100%;color:inherit;cursor:zoom-in;background:0 0;border:0;margin:0;padding:0;display:block}.media-tile__open:focus{outline:0}.media-tile__open:focus-visible+.media-tile__caption .media-tile__name{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.media-tile--video{cursor:default}.media-tile img,.media-tile video{object-fit:contain;background:#05070d;width:100%;max-height:360px;display:block}.media-tile--image img{max-height:320px}.media-tile__caption{z-index:3;opacity:0;pointer-events:none;background:linear-gradient(#0000 0%,#00000080 60%,#000000c7 100%);align-items:center;gap:8px;padding:22px 10px 8px;transition:opacity .14s;display:flex;position:absolute;inset:auto 0 0}.media-tile__caption>*{pointer-events:auto}.media-tile:hover .media-tile__caption,.media-tile:focus-within .media-tile__caption{opacity:1}.media-tile--video.is-started .media-tile__caption{display:none}.media-tile__name{color:#fff;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 2px #0009;flex:1;min-width:0;font-size:12px;font-weight:500;overflow:hidden}.media-tile__chip{z-index:4;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#00000080;border:1px solid #ffffff2e;border-radius:8px;flex:none;place-items:center;width:28px;height:28px;text-decoration:none;transition:background .12s,border-color .12s,transform .12s;display:inline-grid;position:relative}.media-tile__chip:hover{background:#000000b3;border-color:#ffffff52;transform:translateY(-1px)}.media-tile__play{cursor:pointer;z-index:1;background:0 0;border:0;place-items:center;width:100%;height:auto;margin:0;padding:0;display:grid;position:absolute;inset:0 0 48px}.media-tile__play:before{content:"";opacity:.7;pointer-events:none;background:radial-gradient(#0000002e 0%,#0000000d 45%,#0000 70%);transition:opacity .16s;position:absolute;inset:0}.media-tile__play:hover:before{opacity:.9}.media-tile__play-icon{color:#fff;-webkit-backdrop-filter:blur(10px);background:#0000008c;border-radius:999px;place-items:center;width:46px;height:46px;padding-left:3px;transition:transform .2s cubic-bezier(.2,.8,.2,1),background .18s,box-shadow .2s;display:grid;position:relative;box-shadow:0 6px 20px -8px #0000008c}.media-tile__play-icon svg{filter:drop-shadow(0 1px 2px #0006)}.media-tile__play:hover .media-tile__play-icon{background:#000000b3;transform:scale(1.06);box-shadow:0 10px 28px -10px #000000a6}.media-tile__play:active .media-tile__play-icon{transition-duration:80ms;transform:scale(.97)}.media-tile__play:focus-visible{outline:none}.media-tile__play:focus-visible .media-tile__play-icon{box-shadow:0 0 0 2px #fff9,0 10px 28px -10px #000000a6}.media-tile__duration{z-index:2;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.02em;pointer-events:none;background:#000000b8;border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600;position:absolute;bottom:8px;left:8px}.file-attachment{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);align-items:center;gap:10px;max-width:360px;padding:10px;display:flex}.file-attachment:hover{border-color:var(--line-strong);background:var(--panel-2)}.file-icon{background:var(--accent-soft);width:34px;height:34px;color:var(--accent);border-radius:8px;place-items:center;font-weight:800;display:grid}.file-attachment strong,.file-attachment small{display:block}.file-attachment strong{color:var(--text-strong);font-size:13px}.file-attachment small{color:var(--muted);font-size:11px}.audio-attachment,.document-attachment{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);width:min(100%,420px);overflow:hidden}.audio-attachment{gap:10px;padding:10px;display:grid}.audio-attachment__meta{align-items:center;gap:10px;min-width:0;display:flex}.audio-attachment audio{width:100%;height:36px}.document-attachment{grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px;display:grid}.document-attachment__thumbnail{border:1px solid var(--line);background:linear-gradient(135deg, transparent 0 76%, var(--panel-3) 76% 100%), linear-gradient(180deg, #fff 0%, #f0f2f7 100%);width:64px;height:82px;color:var(--accent);letter-spacing:0;cursor:pointer;border-radius:6px;place-items:center;font-size:13px;font-weight:800;text-decoration:none;display:inline-grid;position:relative;overflow:hidden;box-shadow:0 8px 18px -16px #0009}.document-attachment__thumbnail:before,.document-attachment__thumbnail:after{content:"";background:color-mix(in srgb, var(--muted) 36%, transparent);border-radius:999px;height:2px;position:absolute;left:14px;right:14px}.document-attachment__thumbnail:before{top:48px}.document-attachment__thumbnail:after{top:56px}.document-attachment__meta{gap:5px;min-width:0;display:grid}.document-attachment__title{width:100%;min-width:0;color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:700;text-decoration:none;overflow:hidden}.document-attachment__title:hover{text-underline-offset:3px;text-decoration:underline}.document-attachment__meta small{color:var(--muted);white-space:nowrap;font-size:11px}.document-attachment__download{width:30px;height:30px;color:var(--muted);border-radius:8px;place-items:center;text-decoration:none;transition:background .12s,color .12s;display:inline-grid}.document-attachment__download:hover{background:var(--panel-2);color:var(--text-strong)}@media (width<=520px){.message-group{grid-template-columns:44px minmax(0,1fr);padding:7px 12px}:root[data-user-align=right] .message-group.is-self,:root[data-other-align=right] .message-group:not(.is-self){grid-template-columns:minmax(0,1fr) 44px}.message-row{margin-left:-44px;margin-right:-12px;padding-left:44px;padding-right:12px}:root[data-user-align=right] .message-group.is-self .message-row,:root[data-other-align=right] .message-group:not(.is-self) .message-row{margin-left:-12px;margin-right:-44px;padding-left:12px;padding-right:44px}.message-group .group-body>header{margin-left:-44px;margin-right:-12px;padding-left:44px;padding-right:12px}:root[data-user-align=right] .message-group.is-self .group-body>header,:root[data-other-align=right] .message-group:not(.is-self) .group-body>header{margin-left:-12px;margin-right:-44px;padding-left:12px;padding-right:44px}.row-stamp{display:none}.attachment-grid,.attachment-grid.compact{grid-template-columns:minmax(0,1fr);max-width:100%}}:root[data-message-layout=outlined] .message-group .group-body{width:100%}:root[data-message-layout=outlined] .message-group .message-row{margin-left:0;margin-right:0;padding:0}:root[data-message-layout=outlined] .message-group .group-body>header{margin-left:0;margin-right:0;padding-left:0;padding-right:0}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .message-content,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .message-content,:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .markdown,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .markdown{text-align:start}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .thread-hint,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .thread-hint{width:fit-content;margin-left:auto;display:flex}:root[data-message-layout=outlined] .message-group .row-stamp{left:-48px}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .row-stamp,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .row-stamp{left:auto;right:-48px}:root[data-message-layout=outlined] .message-group .message-row:not(:first-child){margin-top:4px}:root[data-message-layout=outlined] .message-group .message-content{border-radius:var(--radius-lg);width:fit-content;max-width:min(96%,1100px);margin-top:2px;padding:10px 14px;position:relative}:root[data-message-layout=outlined] .message-group .message-row:not(.is-preamble):not(.after-preamble) .message-content{border:1px solid var(--line-strong)}:root[data-message-layout=outlined] .message-group.is-agent .message-content{width:96%;max-width:1100px}:root[data-message-layout=outlined] .message-group .message-row.before-final-message+.message-row.after-preamble{margin-top:-1px}:root[data-message-layout=outlined] .message-group.is-agent .message-row.before-final-message .message-content{border-bottom-right-radius:0;border-bottom-left-radius:0}:root[data-message-layout=outlined] .message-group.is-agent .message-row.after-preamble .message-content{border-top-left-radius:0;border-top-right-radius:0}:root[data-density=compact] .message-group{grid-template-columns:42px minmax(0,1fr);padding:2px 18px}:root[data-density=compact][data-user-align=right] .message-group.is-self,:root[data-density=compact][data-other-align=right] .message-group:not(.is-self){grid-template-columns:minmax(0,1fr) 42px}:root[data-density=compact] .message-group>.avatar{border-radius:7px;width:26px;height:26px;font-size:11px}:root[data-density=compact] .group-body>header{gap:6px;margin-bottom:0}:root[data-density=compact] .message-group .group-body>header{margin-left:-42px;padding-left:42px}:root[data-density=compact][data-user-align=right] .message-group.is-self .group-body>header,:root[data-density=compact][data-other-align=right] .message-group:not(.is-self) .group-body>header{margin-left:-18px;margin-right:-42px;padding-left:18px;padding-right:42px}:root[data-density=compact] .group-body>header strong,:root[data-density=compact] .author-name{font-size:13px}:root[data-density=compact] .group-body>header time{font-size:10px}:root[data-density=compact] .message-row{margin-left:-42px;padding-left:42px}:root[data-density=compact][data-user-align=right] .message-group.is-self .message-row,:root[data-density=compact][data-other-align=right] .message-group:not(.is-self) .message-row{margin-left:-18px;margin-right:-42px;padding-left:18px;padding-right:42px}:root[data-density=compact] .markdown{font-size:13.5px;line-height:1.42}:root[data-density=compact] .reactions-bar{margin-top:2px}:root[data-density=compact][data-message-layout=outlined] .message-group .message-row{margin-left:0;padding-left:0}:root[data-density=compact][data-message-layout=outlined] .message-group .row-stamp{left:-34px}:root[data-density=compact][data-message-layout=outlined][data-user-align=right] .message-group.is-self .row-stamp,:root[data-density=compact][data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .row-stamp{left:auto;right:-34px}@media (width<=520px){:root[data-density=compact] .message-group{padding-left:12px;padding-right:12px}}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .message-row,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .message-row,:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .group-body>header,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .group-body>header{margin-left:0;margin-right:0;padding-left:0;padding-right:0}.composer{--composer-card-top:8px;--composer-overlay-gap:8px;--composer-overlay-inset-x:18px;background:var(--bg);gap:0;padding:8px 18px 6px;display:grid;position:relative}.composer-card{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius-lg);box-shadow:var(--key-edge);flex-direction:column;transition:border-color .12s,box-shadow .12s;display:flex;overflow:hidden}.composer:focus-within .composer-card{border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));box-shadow:var(--key-edge), 0 0 0 3px color-mix(in srgb, var(--accent) 14%, transparent)}.composer-suggestions{left:var(--composer-overlay-inset-x);bottom:calc(100% - var(--composer-card-top) + var(--composer-overlay-gap));z-index:40;width:min(560px, calc(100% - (var(--composer-overlay-inset-x) * 2)));border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 97%, transparent);max-height:min(320px,45vh);box-shadow:var(--shadow);border-radius:12px;margin:0;position:absolute;overflow:hidden auto}.composer-suggestions button{border:0;border-bottom:1px solid var(--line);width:100%;min-height:48px;color:var(--text);text-align:left;background:0 0;border-radius:0;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.composer-suggestions button:last-child{border-bottom:0}.composer-suggestions button:hover,.composer-suggestions button.active{background:var(--hover-strong)}.suggestion-mark{background:var(--accent-soft);width:30px;height:30px;color:var(--accent);border-radius:8px;place-items:center;font-size:13px;font-weight:800;display:grid}.suggestion-copy{gap:2px;min-width:0;display:grid}.suggestion-copy strong,.suggestion-copy span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.suggestion-copy strong{color:var(--text-strong);font-size:13px}.suggestion-copy span{color:var(--muted);font-size:12px}.suggestion-kind{color:var(--muted-2);text-transform:uppercase;font-size:11px;font-weight:700}.suggestion-hint{color:var(--muted);font-size:12px;font-style:normal;font-weight:500}.composer-notice{margin:0 var(--composer-overlay-inset-x,0) 6px;border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 97%, transparent);border-radius:10px;align-items:baseline;gap:8px;padding:7px 10px;font-size:13px;display:flex}.composer-notice__label{color:var(--muted-2);text-transform:uppercase;flex:none;font-size:11px;font-weight:700}.composer-notice--error .composer-notice__label{color:var(--danger)}.composer-notice__text{min-width:0;color:var(--text);overflow-wrap:anywhere;flex:1}.composer-notice__dismiss{width:22px;height:22px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;align-self:center;place-items:center;font-size:15px;line-height:1;display:grid}.composer-notice__dismiss:hover{background:var(--hover-strong);color:var(--text-strong)}.composer-toolbar{border:0;border-top:1px solid var(--line);background:color-mix(in srgb, var(--panel-2) 35%, transparent);width:100%;min-width:0;box-shadow:none;scrollbar-width:none;-webkit-overflow-scrolling:touch;border-radius:0;align-items:center;gap:2px;margin:0;padding:4px 6px;display:inline-flex;overflow:auto hidden}.composer-toolbar::-webkit-scrollbar{display:none}.composer-toolbar button{min-width:28px;height:26px;color:var(--text);opacity:.78;background:0 0;border:0;border-radius:6px;flex:none;place-items:center;font-size:11.5px;font-weight:700;transition:background .1s,color .1s,opacity .1s,transform 80ms;display:grid}.composer-toolbar button:hover{background:var(--hover-strong);color:var(--text-strong);opacity:1}.composer-toolbar button.active{background:var(--accent-soft);color:var(--accent);opacity:1}.composer-toolbar button:active{transform:translateY(1px)}.gif-picker{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 96%, transparent);width:min(520px,100vw - 40px);box-shadow:var(--shadow);border-radius:16px;margin-top:8px;margin-bottom:8px;padding:10px;animation:.16s cubic-bezier(.2,.8,.2,1) picker-in}.gif-picker-head{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:2px 2px 10px;display:grid}.gif-picker-head strong{color:var(--text-strong);font-size:13px}.gif-picker-head input{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);min-width:0;height:32px;padding:0 10px}.gif-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:240px;display:grid;overflow-y:auto}.gif-grid button{aspect-ratio:4/3;background:var(--panel-2);color:#fff;box-shadow:inset 0 0 0 1px var(--line);border:0;border-radius:12px;padding:0;transition:transform .12s,box-shadow .12s;position:relative;overflow:hidden}.gif-grid button:hover{box-shadow:inset 0 0 0 2px var(--accent), 0 14px 30px -22px #000c;transform:translateY(-2px)}.gif-grid img{object-fit:cover;width:100%;height:100%;display:block}.gif-grid span{text-overflow:ellipsis;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0000008f;border-radius:999px;padding:4px 7px;font-size:10.5px;font-weight:700;position:absolute;bottom:6px;left:6px;right:6px;overflow:hidden}@keyframes picker-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.composer-row{--composer-control-size:36px;--composer-line-height:22px;--composer-text-padding-block:7px;background:0 0;border:0;border-radius:0;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:4px;padding:8px 8px 4px 10px;display:grid}.composer-row:has(.composer-icon){grid-template-columns:auto minmax(0,1fr) auto}.composer:focus-within .composer-toolbar,.composer-row:focus-within{border-color:#0000}.composer-row:focus-within{box-shadow:none}.composer-icon{width:var(--composer-control-size);height:var(--composer-control-size);margin-top:calc(var(--composer-text-padding-block) + (var(--composer-line-height) - var(--composer-control-size)) / 2);color:var(--muted);cursor:pointer;border-radius:10px;align-self:start;place-items:center;transition:background .12s,color .12s;display:grid}.composer-icon:hover{background:var(--hover-strong);color:var(--text-strong)}.composer-icon input[type=file]{opacity:0;pointer-events:none;block-size:1px;inline-size:1px;position:absolute}.composer textarea,.reply-composer textarea{width:100%;height:auto;min-height:44px;max-height:50vh;padding:var(--composer-text-padding-block) 4px;resize:none;color:var(--text);line-height:var(--composer-line-height);box-sizing:border-box;align-self:start;font-size:14.5px;overflow-y:auto}.composer textarea::placeholder,.reply-composer textarea::placeholder{color:var(--muted)}.send{width:var(--composer-control-size);height:var(--composer-control-size);margin-top:calc(var(--composer-text-padding-block) + (var(--composer-line-height) - var(--composer-control-size)) / 2);border:1px solid color-mix(in srgb, var(--accent) 70%, var(--text-strong));border-radius:var(--radius);background:var(--accent);color:var(--accent-contrast);box-shadow:var(--key-edge);align-self:start;place-items:center;transition:background .12s,transform 80ms,box-shadow 80ms,opacity .12s;display:grid}.send:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px)}.send:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.send:disabled{background:var(--panel-3);border-color:var(--line-strong);color:var(--muted-2);cursor:not-allowed;box-shadow:none}.composer-attachment{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);align-items:center;gap:8px;width:fit-content;margin-top:8px;margin-bottom:8px;padding:6px 10px;font-size:13px;display:inline-flex}.attachment-icon{background:var(--accent-soft);width:20px;height:20px;color:var(--accent);border-radius:6px;place-items:center;display:grid}.pending-image{object-fit:cover;border:1px solid var(--line);background:var(--panel-2);border-radius:7px;width:42px;height:32px}.attachment-name{text-overflow:ellipsis;white-space:nowrap;max-width:240px;overflow:hidden}.attachment-remove{width:18px;height:18px;color:var(--muted);background:0 0;border:0;border-radius:50%;font-size:14px;line-height:1}.attachment-remove:hover{background:var(--danger);color:#fff}.composer-hint{color:var(--muted-2);padding:7px 4px 0;font-size:11px}.composer-hint kbd{background:var(--panel-2);border:1px solid var(--line-strong);font-family:var(--font-mono);color:var(--text);box-shadow:0 1px 0 var(--line-strong);border-radius:4px;padding:0 5px;font-size:10.5px;display:inline-block}@media (width<=820px){.composer{padding:8px calc(14px + var(--safe-area-right)) calc(6px + var(--safe-area-bottom)) calc(14px + var(--safe-area-left))}.composer textarea,.reply-composer textarea{font-size:16px}.composer-suggestions{max-height:min(320px,42dvh)}}.thread{background:var(--panel);border-left:1px solid var(--line);opacity:0;pointer-events:none;grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(28px)}.thread.open{opacity:1;pointer-events:auto;transform:translate(0)}.thread.covered{opacity:0;pointer-events:none}.thread>header{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--panel);align-items:center;gap:10px;min-height:60px;padding:12px 16px;display:flex}.thread>header>div{flex:1;min-width:0}.thread>header p,.thread>header strong{margin:0}.thread>header p{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:600;overflow:hidden}.thread>header strong{color:var(--text-strong);font-size:14px;display:block}.thread .close{background:var(--panel-2);width:28px;height:28px;color:var(--muted);border:0;border-radius:50%;font-size:18px;line-height:1}.thread .close:hover{background:var(--panel-3);color:var(--text-strong)}.thread .thread-open-link{color:var(--accent);font-family:var(--font-mono);white-space:nowrap;flex:none;font-size:11px;font-weight:700;text-decoration:none}.thread .thread-open-link:hover{color:var(--accent-hover);text-decoration:underline}.thread .thread-open-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.thread .thread-back{background:var(--panel-2);width:28px;height:28px;color:var(--muted);border:0;border-radius:50%;flex:none;place-items:center;display:grid}.thread .thread-back:hover{background:var(--panel-3);color:var(--text-strong)}.thread .thread-back:focus-visible,.thread .close:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.thread-scroll{padding:12px 16px;overflow-y:auto}.thread-root{border-bottom:1px solid var(--line);grid-template-columns:38px minmax(0,1fr);gap:12px;padding-bottom:12px;display:grid}.thread-divider{align-items:center;gap:10px;margin:14px 0 10px;display:flex}.thread-divider:before,.thread-divider:after{content:"";background:var(--line);flex:1;height:1px}.thread-divider span{font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:600}.reply-list{flex-direction:column;gap:10px;display:flex}.reply{border-radius:var(--radius-sm);grid-template-columns:30px minmax(0,1fr);gap:10px;padding:6px;display:grid}.reply:hover{background:var(--hover)}.thread .reply-quote-btn,.thread .thread-action-btn{width:26px;height:26px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:inline-grid}.thread .reply-quote-btn:hover,.thread .thread-action-btn:hover{background:var(--hover-strong);color:var(--text-strong)}.thread .reply-quote-btn:disabled,.thread .thread-action-btn:disabled{cursor:default;opacity:.45}.thread .thread-action-btn--danger{color:var(--danger)}.thread .thread-action-btn--danger:hover{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.thread .thread-more-actions{display:none}@media (hover:none),(pointer:coarse){.thread .group-body>header{min-height:28px;padding-right:32px;position:relative}.thread .reply-quote-btn,.thread .thread-action-btn:not(.thread-more-actions){display:none}.thread .thread-more-actions{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;display:inline-grid;position:absolute;top:0;right:0;overflow:hidden}.thread .thread-more-actions:focus-visible{clip:auto;clip-path:none;border:1px solid var(--line-strong);background:var(--panel);width:28px;height:28px;box-shadow:var(--shadow);margin:0;overflow:visible}}.reply-composer{--composer-card-top:10px;--composer-overlay-inset-x:14px;background:var(--panel);border-top:1px solid var(--line);padding:10px 14px 14px}.reply-composer .composer-row{border-radius:0}.thread-empty{text-align:center;grid-row:span 3;align-content:center;place-items:center;gap:8px;padding:32px 24px;display:grid}.thread-icon{background:var(--panel-2);width:56px;height:56px;color:var(--muted);border-radius:16px;place-items:center;display:grid}.thread-empty strong{color:var(--text-strong);font-size:15px}.thread-empty span{color:var(--muted);max-width:260px;font-size:13px;line-height:1.5}.profile-pane{overflow-y:auto}.profile-hero{background:linear-gradient(180deg, transparent, #0000003d), linear-gradient(135deg, hsl(var(--hue,220deg) 76% 58%), hsl(calc(var(--hue,220deg) + 54deg) 74% 38%));border-bottom:1px solid var(--line);place-items:end center;min-height:210px;padding:28px 20px;display:grid}.profile-avatar{aspect-ratio:1;color:#fff;background:#ffffff2e;border-radius:16px;place-items:center;width:min(240px,70%);font-size:clamp(48px,12vw,88px);font-weight:800;display:grid;overflow:hidden;box-shadow:0 26px 60px -30px #000000e6}.profile-avatar img{object-fit:cover;width:100%;height:100%}.profile-pane-body{gap:18px;padding:18px 16px 22px;display:grid}.profile-pane-title{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.profile-pane-title h2{color:var(--text-strong);letter-spacing:0;margin:0;font-size:22px}.profile-pane-title span{color:var(--muted);margin-top:3px;font-size:13px;display:block}.profile-pane-title .bot-badge{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);min-height:20px;color:var(--accent);border-radius:999px;align-items:center;margin-top:6px;padding:0 8px;font-size:11px;font-weight:800;line-height:1;display:inline-flex}.text-action{color:var(--accent);background:0 0;border:0;border-radius:6px;padding:4px 6px;font-size:13px;font-weight:700}.text-action:hover{background:var(--accent-soft)}.profile-presence{color:var(--text);align-items:center;gap:8px;font-size:14px;display:inline-flex}.profile-actions-row{grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px;display:grid}.profile-actions-row .primary-action,.profile-actions-row .ghost-action{border-radius:var(--radius);white-space:nowrap;justify-content:center;align-items:center;width:100%;min-width:0;height:48px;padding:0 16px;font-size:14px;font-weight:800;line-height:1;display:inline-flex}.moderation-actions{grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:8px;display:grid}.moderation-actions .primary-action,.moderation-actions .ghost-action,.moderation-actions .danger-action{border-radius:var(--radius);min-height:40px;font-size:13px;font-weight:800}.danger-action{border:1px solid color-mix(in srgb, var(--danger), transparent 35%);background:color-mix(in srgb, var(--danger), transparent 86%);color:var(--danger)}.role-pill{background:var(--panel-2);color:var(--muted);text-transform:uppercase;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800}.profile-info{border-top:1px solid var(--line);gap:12px;padding-top:18px;display:grid}.profile-info header{justify-content:space-between;align-items:center;gap:10px;display:flex}.profile-info header strong{color:var(--text-strong);font-size:14px}.profile-info-row{grid-template-columns:48px minmax(0,1fr);align-items:center;gap:14px;min-height:48px;display:grid}.info-icon{background:var(--panel-2);width:48px;height:48px;color:var(--muted);border-radius:12px;justify-content:center;align-items:center;line-height:1;display:inline-flex}.info-icon svg{flex:none;display:block}.profile-info-row>div>small,.profile-info-row>div>span{display:block}.profile-info-row>div>small{color:var(--muted);font-size:12px;line-height:1.2}.profile-info-row>div>span{color:var(--text);overflow-wrap:anywhere;font-size:14px;line-height:1.3}.profile-note{color:var(--muted);margin:0;font-size:13px;line-height:1.5}@media (width<=820px){.thread{min-height:100dvh}.thread>header{min-height:calc(60px + var(--safe-area-top));padding-top:calc(12px + var(--safe-area-top));padding-right:calc(16px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.thread-scroll{padding-right:calc(16px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.reply-composer{padding-right:calc(14px + var(--safe-area-right));padding-bottom:calc(14px + var(--safe-area-bottom));padding-left:calc(14px + var(--safe-area-left))}}.artifact-viewer{z-index:2;border-left:1px solid var(--line);background:var(--panel);opacity:0;pointer-events:none;grid-template-rows:auto minmax(0,1fr);min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(28px)}.artifact-viewer.open{opacity:1;pointer-events:auto;transform:translate(0)}.artifact-viewer__header{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--panel) 92%, var(--bg));justify-content:space-between;align-items:center;gap:16px;min-height:64px;padding:10px 12px 10px 16px;display:flex}.artifact-viewer__identity{grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:5px 10px;min-width:0;display:grid}.artifact-viewer__identity span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;grid-column:1/-1;font-size:11px;font-weight:700}.artifact-viewer__identity strong{min-width:0;color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.artifact-viewer__identity small{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}.artifact-viewer__actions,.artifact-viewer__segmented{align-items:center;gap:4px;display:inline-flex}.artifact-viewer__actions>a,.artifact-viewer__actions>button,.artifact-viewer__segmented button,.artifact-viewer__pdf-toolbar button{border-radius:var(--radius-sm);min-width:32px;height:32px;color:var(--muted);background:0 0;border:1px solid #0000;place-items:center;padding:0 9px;text-decoration:none;display:inline-grid}.artifact-viewer__office-toolbar button,.artifact-viewer__sheet-tabs button{border-radius:var(--radius-sm);min-height:30px;color:var(--muted);background:0 0;border:1px solid #0000;padding:0 10px;font-size:11px}.artifact-viewer__actions>button{font-size:20px;line-height:1}.artifact-viewer__actions>a:hover,.artifact-viewer__actions>button:hover,.artifact-viewer__segmented button:hover,.artifact-viewer__pdf-toolbar button:hover:not(:disabled){border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.artifact-viewer__actions :focus-visible,.artifact-viewer__pdf-toolbar button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.artifact-viewer__segmented{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);padding:2px}.artifact-viewer__segmented button{min-width:58px;height:28px;font-size:11px;font-weight:650}.artifact-viewer__segmented button.active{border-color:var(--line);background:var(--panel);color:var(--text-strong)}.artifact-viewer__body{background:var(--bg);min-height:0;overflow:auto}.artifact-viewer__state{min-height:100%;color:var(--muted);text-align:center;align-content:center;justify-items:center;gap:10px;padding:32px 24px;display:grid}.artifact-viewer__state strong{color:var(--text-strong);font-size:15px}.artifact-viewer__state p{max-width:34ch;margin:0;font-size:13px;line-height:1.5}.artifact-viewer__state a{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel);min-height:36px;color:var(--text-strong);margin-top:4px;padding:8px 12px;font-size:13px;font-weight:650;text-decoration:none}.artifact-viewer__state--error svg{color:var(--danger)}.artifact-viewer__spinner{border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;width:26px;height:26px;animation:.7s linear infinite artifact-spin}@keyframes artifact-spin{to{transform:rotate(360deg)}}.artifact-viewer__source{background:color-mix(in srgb, var(--bg) 90%, #090b10);width:max-content;min-width:100%;min-height:100%;color:var(--text);font-family:var(--font-mono);tab-size:2;white-space:pre;margin:0;padding:20px;font-size:12px;line-height:1.65}.artifact-viewer__source code{font:inherit}.artifact-viewer__document{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);width:min(100%,760px);min-height:calc(100% - 32px);color:var(--text);overflow-wrap:anywhere;margin:16px auto;padding:clamp(24px,5vw,56px);font-size:15px;line-height:1.65}.artifact-viewer__document>:first-child{margin-top:0}.artifact-viewer__document>:last-child{margin-bottom:0}.artifact-viewer__document h1,.artifact-viewer__document h2,.artifact-viewer__document h3{color:var(--text-strong);line-height:1.25}.artifact-viewer__document h1{font-size:28px}.artifact-viewer__document h2{margin-top:1.75em;font-size:21px}.artifact-viewer__document h3{margin-top:1.5em;font-size:17px}.artifact-viewer__document pre{border-radius:var(--radius);background:var(--panel-2);padding:14px;overflow:auto}.artifact-viewer__document code{font-family:var(--font-mono)}.artifact-viewer__document table{border-collapse:collapse;width:100%}.artifact-viewer__document th,.artifact-viewer__document td{border:1px solid var(--line-strong);text-align:left;padding:8px 10px}.artifact-viewer__document img{max-width:100%;height:auto}.artifact-viewer__document a{color:var(--accent)}.artifact-viewer__body.is-pdf{grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.artifact-viewer__body.is-office{grid-template-rows:auto minmax(0,1fr) auto;display:grid;overflow:hidden}.artifact-viewer__office-toolbar,.artifact-viewer__sheet-tabs{border-bottom:1px solid var(--line);background:var(--panel);min-height:44px;color:var(--muted);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:4px;padding:6px 10px;font-size:11px;display:flex}.artifact-viewer__office-toolbar button:disabled{cursor:not-allowed;opacity:.4}.artifact-viewer__office-toolbar button:hover:not(:disabled),.artifact-viewer__sheet-tabs button:hover,.artifact-viewer__sheet-tabs button.active{border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.artifact-viewer__office-toolbar button:focus-visible,.artifact-viewer__sheet-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.artifact-viewer__office-toolbar{flex-wrap:wrap}.artifact-viewer__spreadsheet{background:var(--panel);min-height:0;overflow:auto}.artifact-viewer__spreadsheet table{table-layout:fixed;border-spacing:0;border-collapse:separate;width:max-content;color:var(--text);font-size:12px}.artifact-viewer__spreadsheet th,.artifact-viewer__spreadsheet td{box-sizing:border-box;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--panel);text-align:left;text-overflow:ellipsis;white-space:nowrap;width:160px;min-width:160px;max-width:160px;height:30px;padding:5px 8px;overflow:hidden}.artifact-viewer__spreadsheet thead th{z-index:2;background:var(--panel-2);color:var(--muted);text-align:center;position:sticky;top:0}.artifact-viewer__spreadsheet .row-heading{z-index:1;background:var(--panel-2);width:44px;min-width:44px;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;position:sticky;left:0}.artifact-viewer__spreadsheet thead .row-heading{z-index:3}.artifact-viewer__grid-note{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:max-content;max-width:min(480px,100vw - 48px);color:var(--muted);white-space:normal;margin:16px;padding:8px 10px;font-size:12px;line-height:1.45;position:sticky;left:0}.artifact-viewer__sheet-tabs{border-top:1px solid var(--line);border-bottom:0;justify-content:flex-start;overflow-x:auto}.artifact-viewer__sheet-tabs button{flex:none}.artifact-viewer__slide-stage{align-content:center;place-items:center;gap:12px;min-height:0;padding:24px;display:grid;overflow:auto}.artifact-viewer__slide{aspect-ratio:16/9;color:#172033;background:#fff;flex-direction:column;justify-content:safe center;width:min(100%,860px);padding:48px;display:flex;overflow:auto;box-shadow:0 16px 48px -24px #000000a6}.artifact-viewer__slide h2{letter-spacing:0;margin:0 0 .7em;font-size:36px;line-height:1.15}.artifact-viewer__slide p{margin:.35em 0;font-size:20px;line-height:1.4}.artifact-viewer__office-note{color:var(--muted);margin:0;font-size:12px}@media (width<=640px){.artifact-viewer__slide{padding:28px}.artifact-viewer__slide h2{font-size:24px}.artifact-viewer__slide p{font-size:15px}}.artifact-viewer__pdf-toolbar{border-bottom:1px solid var(--line);background:var(--panel);min-height:44px;color:var(--muted);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:4px;padding:6px 10px;font-size:11px;display:flex}.artifact-viewer__pdf-toolbar button{min-width:30px;height:30px;font-size:11px}.artifact-viewer__pdf-toolbar button:disabled{cursor:not-allowed;opacity:.4}.artifact-viewer__toolbar-divider{background:var(--line);width:1px;height:18px;margin:0 4px}.artifact-viewer__pdf-stage{text-align:center;min-height:0;padding:24px;overflow:auto}.artifact-viewer__pdf-stage canvas{background:#fff;max-width:none;transition:opacity .12s;display:inline-block;box-shadow:0 16px 48px -24px #000000a6}.artifact-viewer__pdf-text{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.artifact-viewer__pdf-stage.is-rendering canvas{opacity:.55}.hljs-comment,.hljs-quote{color:var(--muted);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-section,.hljs-link{color:var(--accent)}.hljs-string,.hljs-title,.hljs-name,.hljs-type,.hljs-attribute,.hljs-symbol,.hljs-bullet,.hljs-addition{color:var(--success)}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-params{color:var(--activity-accent)}.hljs-deletion{color:var(--danger)}@media (width<=820px){.artifact-viewer{z-index:40;border-left:0;min-height:100dvh;position:fixed;inset:0}.artifact-viewer__header{min-height:calc(64px + var(--safe-area-top));padding-top:calc(10px + var(--safe-area-top));padding-right:calc(12px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.artifact-viewer__identity small{display:none}.artifact-viewer__document{border:0;border-radius:0;min-height:100%;margin:0}}@media (prefers-reduced-motion:reduce){.artifact-viewer{transition:none}.artifact-viewer__spinner{animation-duration:1.4s}}.modal-scrim{z-index:50;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#05080f8a;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-backdrop{background:0 0;border:0;position:absolute;inset:0}.modal-backdrop:focus{outline:0}.profile-modal{z-index:1;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius-xl);width:min(480px,100%);box-shadow:var(--key-edge), var(--shadow);animation:.15s ease-out settings-modal-fade;position:relative;overflow:hidden}.profile-modal>header{justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 20px 4px;display:flex}.profile-modal>header p{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;margin:0 0 4px;font-size:10px;font-weight:600}.profile-modal>header h2{color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:20px;font-weight:700}.profile-modal>header>button{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:28px;height:28px;color:var(--muted);flex:none;place-items:center;font-size:16px;line-height:1;display:grid}.profile-modal>header>button:hover{background:var(--panel-3);color:var(--text-strong)}.create-modal{width:min(420px,100%)}.profile-form{gap:14px;padding:20px;display:grid}.profile-preview{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);align-items:center;gap:14px;padding:14px;display:flex}.profile-preview strong,.profile-preview span{display:block}.profile-preview strong{color:var(--text-strong);font-size:15px}.profile-preview span{color:var(--muted);font-size:13px}.field{gap:6px;display:grid}.field span{color:var(--muted);font-size:12px;font-weight:700}.field input,.field select{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:100%;height:38px;color:var(--text);padding:0 12px}.field select{cursor:pointer}.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.check-field{align-items:center;gap:10px;display:flex}.check-field input{width:16px;height:16px;padding:0}.profile-status{color:var(--success);font-size:12px}.profile-status.error{color:var(--danger)}.profile-actions{justify-content:flex-end;gap:8px;padding-top:4px;display:flex}.person-picker{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);gap:4px;max-height:240px;padding:4px;display:grid;overflow-y:auto}.person-choice{border-radius:var(--radius-sm);width:100%;min-height:44px;color:var(--text);text-align:left;background:0 0;border:0;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:10px;padding:6px 8px;display:grid}.person-choice:hover{background:var(--hover-strong)}.person-choice .dm-avatar{width:32px;height:32px}.person-choice strong,.person-choice small{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.person-choice strong{color:var(--text-strong);font-size:13px}.person-choice small{color:var(--muted);font-size:12px}.person-empty{color:var(--muted);padding:10px 8px;font-size:12px}.profile-actions .ghost-action,.profile-actions .primary-action,.profile-actions .danger-action{box-sizing:border-box;border-radius:var(--radius);white-space:nowrap;min-height:44px;box-shadow:var(--key-edge);flex:none;justify-content:center;align-items:center;padding:0 14px;font-weight:700;line-height:1;transition:background .12s,box-shadow 80ms,transform 80ms;display:inline-flex}.ghost-action{border:1px solid var(--line-strong);background:var(--panel);color:var(--text)}.primary-action{border:1px solid color-mix(in srgb, var(--accent) 70%, var(--text-strong));background:var(--accent);color:var(--accent-contrast)}.profile-actions .danger-action{border:1px solid color-mix(in srgb, var(--danger) 76%, var(--text-strong));background:var(--danger);color:#fff}.ghost-action:hover{background:var(--hover)}.primary-action:hover{background:var(--accent-hover)}.profile-actions .danger-action:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 86%, #000)}.profile-actions .ghost-action:disabled,.profile-actions .primary-action:disabled,.profile-actions .danger-action:disabled{cursor:default;opacity:.58}.profile-actions .ghost-action:active,.profile-actions .primary-action:active,.profile-actions .danger-action:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.delete-message-scrim{padding:20px}.delete-message-modal{width:min(520px,100%)}.delete-message-modal>header{padding-bottom:10px}.delete-message-content{gap:18px;padding:4px 20px 20px;display:grid}.delete-message-content>p{color:var(--text);margin:0;font-size:14px;line-height:1.5}.delete-message-preview{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);grid-template-columns:36px minmax(0,1fr);align-items:start;gap:12px;padding:14px;display:grid}.delete-message-preview__content{min-width:0}.delete-message-preview>.avatar{border-radius:9px;width:36px;height:36px;margin:0}.delete-message-preview__meta{align-items:baseline;gap:8px;min-width:0;display:flex}.delete-message-preview__meta strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.delete-message-preview__meta time{color:var(--muted);flex:none;font-size:11px}.delete-message-preview__body{max-height:128px;color:var(--text);overflow-wrap:anywhere;white-space:pre-wrap;margin-top:4px;font-size:14px;line-height:1.45;overflow:auto}.delete-message-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-top:0;display:grid}.delete-message-actions button{width:100%}@media (width<=520px){.delete-message-modal{width:100%}.delete-message-content,.delete-message-modal>header{padding-inline:16px}}.image-viewer-scrim{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#000000c7;padding:28px}.image-viewer{z-index:1;color:#fff;background:#07090f;border:1px solid #ffffff1f;border-radius:14px;grid-template-rows:auto minmax(0,1fr);width:min(1280px,100%);height:min(900px,100dvh - 56px);max-height:100%;animation:.15s cubic-bezier(.2,.8,.2,1) picker-in;display:grid;position:relative;overflow:hidden;box-shadow:0 34px 90px -34px #000000f2}.image-viewer>header{background:#ffffff0a;border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;gap:16px;min-height:52px;padding:10px 12px 10px 16px;display:flex}.image-viewer>header strong{color:#fff;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.image-viewer>header div{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.image-viewer>header a{color:#fff;background:#ffffff14;border-radius:7px;align-items:center;height:30px;padding:0 10px;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.image-viewer>header a:hover{background:#ffffff24}.image-viewer>header a:focus-visible,.image-viewer>header button:focus-visible{outline-offset:2px;outline:2px solid #fff}.image-viewer>header button{color:#ffffffc7;background:0 0;border:0;border-radius:7px;place-items:center;width:30px;height:30px;font-size:22px;line-height:1;display:grid}.image-viewer>header button:hover{color:#fff;background:#ffffff1f}.image-viewer-stage{place-items:center;min-height:0;padding:18px;display:grid}.image-viewer-stage img{object-fit:contain;background:#ffffff0a;border-radius:8px;max-width:100%;max-height:100%;display:block}@media (width<=720px),(height<=520px) and (orientation:landscape){.image-viewer-scrim{padding:0}.image-viewer{border:0;border-radius:0;width:100%;height:100dvh}.image-viewer>header{padding-top:calc(10px + var(--safe-area-top));padding-right:calc(12px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.image-viewer-stage{padding-right:calc(12px + var(--safe-area-right));padding-bottom:calc(12px + var(--safe-area-bottom));padding-left:calc(12px + var(--safe-area-left))}}.mobile-nav-toggle{top:calc(14px + var(--safe-area-top));left:calc(14px + var(--safe-area-left));z-index:30;border:1px solid var(--line-strong);background:var(--panel);width:38px;height:38px;color:var(--text);border-radius:10px;font-size:22px;line-height:1;display:none;position:fixed}.mobile-nav-toggle .bars{gap:3px;display:grid}.mobile-nav-toggle .bars i{background:currentColor;border-radius:2px;width:16px;height:2px;display:block}.mobile-nav-backdrop{display:none}@media (width<=1180px){.shell{grid-template-columns:72px 240px minmax(0,1fr)}.shell.sidebar-collapsed,.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:72px 0 minmax(0,1fr)}.thread,.search-results{width:min(420px,100vw);box-shadow:var(--shadow);z-index:4;border-left:1px solid var(--line-strong);transition:transform .18s;position:fixed;inset:0 0 0 auto;transform:translate(100%)}.thread.open,.search-results{transform:translate(0)}.desktop-shell .thread,.desktop-shell .search-results{top:52px;bottom:0}}@media (width<=820px){.mobile-nav-toggle{place-items:center;display:grid}.shell,.shell.thread-open,.shell.search-open,.shell.sidebar-collapsed,.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:1fr}.sidebar-collapsed .sidebar{opacity:1;pointer-events:none;transform:translate(calc(-100% - 72px))}.guild-rail,.sidebar{z-index:20;pointer-events:none;height:100dvh;transition:transform .18s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.guild-rail{width:72px;padding-top:calc(14px + var(--safe-area-top));padding-bottom:calc(14px + var(--safe-area-bottom))}.sidebar{width:min(260px,100vw - 72px);left:72px;transform:translate(calc(-100% - 72px))}.nav-open .guild-rail,.nav-open .sidebar{pointer-events:auto;transform:translate(0,0)}.nav-open .guild-rail{padding-top:calc(62px + var(--safe-area-top))}.desktop-shell .guild-rail,.desktop-shell .sidebar{height:calc(100dvh - 52px);top:52px}.desktop-shell.nav-open .guild-rail{padding-top:calc(14px + var(--safe-area-top))}.desktop-shell .mobile-nav-backdrop{top:52px}.mobile-nav-backdrop{z-index:15;background:#05081075;border:0;padding:0;display:block;position:fixed;inset:0 0 0 min(332px,100vw)}.topbar{min-height:calc(60px + var(--safe-area-top));padding-top:calc(12px + var(--safe-area-top));padding-right:calc(20px + var(--safe-area-right));padding-left:calc(64px + var(--safe-area-left))}.search{width:180px}}@media (width<=520px){.search,.topbar-meta,.topbar-divider{display:none}}.message-row.highlight,.thread-root.highlight,.reply.highlight{animation:1.4s ease-out quote-flash}@keyframes quote-flash{0%{background:color-mix(in srgb, var(--accent) 22%, transparent)}to{background:0 0}}.quote-block{color:inherit;cursor:pointer;text-align:left;max-width:100%;font:inherit;background:0 0;border:0;border-radius:6px;align-items:stretch;gap:.5rem;margin:0 0 .35rem;padding:.25rem .5rem .25rem 0;display:inline-flex}.quote-block:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 8%, transparent)}.quote-block:disabled{cursor:default;opacity:.75}.quote-block .quote-bar{background:var(--accent);border-radius:2px;flex:0 0 3px;align-self:stretch;width:3px}.quote-block .quote-content{flex-direction:column;gap:.1rem;min-width:0;display:flex}.quote-block .quote-author{color:var(--accent);font-size:.78rem;font-weight:600}.quote-block .quote-snippet{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:56ch;font-size:.85rem;overflow:hidden}.quote-block .quote-snippet.muted{opacity:.75;font-style:italic}.quote-preview{background:color-mix(in srgb, var(--accent) 5%, transparent);border:0;border-bottom:1px solid var(--line);color:var(--muted);border-radius:0;align-items:center;gap:.5rem;margin:0;padding:6px 10px 6px 12px;font-size:12.5px;display:flex}.quote-preview .quote-bar{display:none}.quote-preview-body{flex:1;align-items:baseline;gap:.4rem;min-width:0;display:flex;overflow:hidden}.quote-preview-label{color:color-mix(in srgb, var(--accent) 85%, var(--text));white-space:nowrap;font-size:12px}.quote-preview-label strong{color:var(--text-strong);font-weight:600}.quote-preview-snippet{white-space:nowrap;text-overflow:ellipsis;color:var(--muted);flex:1;min-width:0;font-size:12px;overflow:hidden}.quote-preview-clear{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 6px;font-size:16px;line-height:1;transition:background .1s,color .1s}.quote-preview-clear:hover{color:var(--text-strong);background:var(--hover-strong)}.reply-quote-btn{color:var(--muted);cursor:pointer;opacity:0;background:0 0;border:0;margin-left:auto;padding:0 .3rem;font-size:.95rem;transition:opacity .15s;position:relative}.reply:hover .reply-quote-btn,.thread-root:hover .reply-quote-btn,.reply-quote-btn:focus-visible{opacity:1}.reply-quote-btn:hover{color:var(--accent)}.tooltip{position:relative}.tooltip:before,.reply-quote-btn:before{content:attr(data-tooltip);z-index:20;background:var(--tooltip-bg);color:var(--tooltip-fg);white-space:nowrap;opacity:0;pointer-events:none;border-radius:9px;padding:.42rem .62rem;font-size:.78rem;font-weight:700;line-height:1;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%,4px)scale(.96);box-shadow:0 10px 28px #00000047}.tooltip:after,.reply-quote-btn:after{content:"";z-index:20;background:var(--tooltip-bg);opacity:0;pointer-events:none;border-radius:2px;width:12px;height:12px;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 5px);left:50%;transform:translate(-50%,4px)rotate(45deg)scale(.9)}.tooltip:hover:before,.tooltip:focus-visible:before,.reply-quote-btn:hover:before,.reply-quote-btn:focus-visible:before,.tooltip:hover:after,.tooltip:focus-visible:after,.reply-quote-btn:hover:after,.reply-quote-btn:focus-visible:after{opacity:1;transform:translate(-50%)scale(1)}.tooltip:hover:after,.tooltip:focus-visible:after,.reply-quote-btn:hover:after,.reply-quote-btn:focus-visible:after{transform:translate(-50%)rotate(45deg)scale(1)}.tooltip-align-end:before{transform-origin:100% 100%;left:auto;right:0;transform:translateY(4px)scale(.96)}.tooltip-align-end:hover:before,.tooltip-align-end:focus-visible:before{transform:translateY(0)scale(1)}.settings-modal-scrim{z-index:1000;color:var(--text);-webkit-font-smoothing:antialiased;background:var(--lightningcss-light,#080a0e6b)var(--lightningcss-dark,#0000008c);place-items:center;font-size:14px;line-height:1.5;animation:.15s ease-out settings-modal-fade;display:grid;position:fixed;inset:0}@keyframes settings-modal-fade{0%{opacity:0}to{opacity:1}}.settings-modal{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);width:min(1100px,96vw);height:min(760px,92vh);box-shadow:var(--shadow);grid-template-columns:232px minmax(0,1fr);display:grid;position:relative;overflow:hidden}.settings-modal__close{z-index:6;width:28px;height:28px;color:var(--muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;place-items:center;transition:background .12s,color .12s;display:grid;position:absolute;top:14px;right:14px}.settings-modal__close:hover{background:var(--hover);color:var(--text-strong)}.settings-modal__rail{background:var(--panel-2);border-right:1px solid var(--line);flex-direction:column;padding:16px 10px;display:flex;overflow-y:auto}.settings-modal__rail-group+.settings-modal__rail-group{margin-top:14px}.settings-modal__rail-heading{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0;padding:6px 8px 4px;font-size:10px;font-weight:600}.settings-modal__rail ul{margin:0;padding:0;list-style:none}.settings-modal__rail-item{border-radius:var(--radius-sm);cursor:pointer;width:100%;font:inherit;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:10px;margin:1px 0;padding:6px 10px;font-size:13.5px;line-height:1.4;transition:background .1s,color .1s;display:flex}.settings-modal__rail-item:hover{background:var(--hover)}.settings-modal__rail-item.is-active{background:var(--hover-strong);color:var(--text-strong);font-weight:600}.settings-modal__rail-icon{width:16px;height:16px;color:var(--muted);flex-shrink:0;place-items:center;display:grid}.settings-modal__rail-icon svg{width:16px;height:16px;display:block}.settings-modal__rail-item.is-active .settings-modal__rail-icon{color:var(--text-strong)}.settings-modal__rail-avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:4px;flex-shrink:0;place-items:center;width:18px;height:18px;font-size:9px;font-weight:700;display:grid;overflow:hidden}.settings-modal__rail-avatar img{object-fit:cover;width:100%;height:100%;display:block}.settings-modal__rail-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.settings-modal__content{background:var(--panel);color:var(--text);padding:40px 56px 56px;overflow-y:auto}.settings-modal__content .settings-page__header{margin-bottom:32px}.settings-modal__content .settings-page__eyebrow{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0 0 6px;font-size:10px;font-weight:600}.settings-modal__content .settings-page__h1{letter-spacing:-.01em;color:var(--text-strong);font-size:26px;font-weight:700;line-height:1.2;font-family:var(--font-display);margin:0 0 6px}.settings-modal__content .settings-page__lead{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.settings-modal__content .settings-form{flex-direction:column;gap:24px;max-width:640px;display:flex}.settings-modal__content .settings-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-top:8px;padding-top:20px;display:flex}.settings-modal__content .settings-footer__spacer{flex:1}.settings-modal__content .settings-section{flex-direction:column;gap:20px;display:flex}.settings-modal__content .settings-section__h{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 4px;font-size:12px;font-weight:600}.settings-modal__content .settings-field{flex-direction:column;gap:6px;display:flex}.settings-modal__content .settings-field__label{color:var(--text-strong);font-size:13px;font-weight:600}.settings-modal__content .settings-field__hint{color:var(--muted);margin:0;font-size:12.5px;line-height:1.5}.settings-modal__content .settings-field__hint.is-error{color:var(--danger)}.settings-modal__content .settings-identity{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:14px;padding:14px 16px;display:flex}.settings-modal__content .settings-identity__meta{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.settings-modal__content .settings-identity__name{color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;line-height:1.25;overflow:hidden}.settings-modal__content .settings-identity__handle{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:13px;line-height:1.3;overflow:hidden}.settings-modal__content .settings-identity__tag{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:999px;flex-shrink:0;padding:3px 8px;font-size:10px;font-weight:600}.settings-modal__content .settings-rows{flex-direction:column;display:flex}.settings-modal__content .settings-rows--sectioned .settings-row2{border-top:0;align-items:center;padding:12px 0}.settings-modal__content .settings-row2{border-top:1px solid var(--line);grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:32px;padding:20px 0;display:grid}.settings-modal__content .settings-row2--toggle{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px}.settings-modal__content .settings-row2:first-child{border-top:0;padding-top:4px}.settings-modal__content .settings-row2__desc{min-width:0}.settings-modal__content .settings-row2__label{color:var(--text-strong);margin-bottom:4px;font-size:13.5px;font-weight:600;display:block}.settings-modal__content .settings-row2__hint{color:var(--muted);margin:0;font-size:12.5px;line-height:1.5}.settings-modal__content .settings-row2__control{flex-direction:column;align-items:flex-start;gap:8px;min-width:0;max-width:380px;display:flex}.settings-modal__content .settings-row2__control--end{flex-direction:row;justify-content:center;align-items:flex-end;max-width:none}.settings-modal__content .settings-rows__head{border-top:1px solid var(--line);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0;padding:24px 0 12px;font-size:11px;font-weight:600}.settings-modal__content .settings-rows__head:first-child{border-top:0;padding-top:4px}.settings-modal__content .settings-rows__head+.settings-row2{border-top:0;padding-top:0}.settings-modal__content .settings-input-group{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);align-items:stretch;width:100%;transition:border-color .12s,box-shadow .12s,background .12s;display:flex}.settings-modal__content .settings-input-group:hover{border-color:var(--line-strong)}.settings-modal__content .settings-input-group:focus-within{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px var(--accent-soft)}.settings-modal__content .settings-input-group__prefix{color:var(--muted);border-right:1px solid var(--line);background:var(--panel-2);border-radius:var(--radius-sm) 0 0 var(--radius-sm);place-items:center;padding:0 10px;font-size:14px;font-weight:500;display:grid}.settings-modal__content .settings-input--in-group{box-shadow:none!important;border-radius:0 var(--radius-sm) var(--radius-sm) 0!important;background:0 0!important;border:0!important;max-width:none!important}.settings-modal__content .settings-input--in-group:focus{box-shadow:none!important;background:0 0!important;border:0!important}.settings-modal__content .settings-linklike{color:var(--muted);cursor:pointer;font:inherit;text-underline-offset:2px;background:0 0;border:0;padding:2px 0;font-size:12.5px;text-decoration:underline;transition:color .12s}.settings-modal__content .settings-linklike:hover{color:var(--text-strong)}.settings-modal__content .settings-row{grid-template-columns:1fr auto;align-items:center;gap:24px;display:grid}.settings-modal__content .settings-row__main{min-width:0}.settings-modal__content .settings-row__label{color:var(--text-strong);margin-bottom:2px;font-size:13.5px;font-weight:600}.settings-modal__content .settings-row__hint{color:var(--muted);font-size:12.5px;line-height:1.5}.settings-modal__content .settings-row__hint.is-error{color:var(--danger)}.settings-modal__content .settings-input{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;max-width:420px;height:36px;color:var(--text);font:inherit;padding:0 12px;font-size:14px;transition:border-color .12s,box-shadow .12s,background .12s}.settings-modal__content .settings-input:hover{border-color:var(--line-strong)}.settings-modal__content .settings-input:focus{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-input--wide{max-width:560px}.settings-modal__content .settings-row .settings-input{width:auto;min-width:240px;max-width:320px}.settings-modal__content .settings-button{background:var(--panel-2);height:34px;color:var(--text);border:1px solid var(--line-strong);border-radius:var(--radius);font:inherit;cursor:pointer;white-space:nowrap;box-shadow:var(--key-edge);justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:13.5px;font-weight:600;transition:background .1s,border-color .1s,box-shadow 80ms,transform 80ms;display:inline-flex}.settings-modal__content .settings-button:hover{background:var(--panel-3);border-color:var(--line-strong)}.settings-modal__content .settings-button:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.settings-modal__content .settings-button:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-button:disabled{opacity:.55;cursor:not-allowed}.settings-modal__content .settings-button--primary{background:var(--accent);color:var(--accent-contrast);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong))}.settings-modal__content .settings-button--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.settings-modal__content .settings-switch{appearance:none;background:var(--line-strong);cursor:pointer;border:0;border-radius:9px;flex-shrink:0;width:32px;height:18px;margin:0;transition:background .15s;position:relative}.settings-modal__content .settings-switch:checked{background:var(--accent)}.settings-modal__content .settings-switch:disabled{opacity:.5;cursor:not-allowed}.settings-modal__content .settings-switch:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.settings-modal__content .settings-switch:checked:after{transform:translate(14px)}.settings-modal__content .settings-switch:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-actions{justify-content:flex-end;align-items:center;gap:12px;margin-top:4px;display:flex}.settings-modal__content .settings-status{color:var(--muted);margin:0;font-size:13px}.settings-modal__content .settings-status.is-error{color:var(--danger)}@media (width<=720px){.settings-modal{border-radius:0;grid-template-rows:auto 1fr;grid-template-columns:1fr;width:100vw;height:100dvh}.settings-modal__rail{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;padding:8px;overflow-x:auto}.settings-modal__content{padding:24px 20px 60px}.settings-modal__content .settings-row2{grid-template-columns:1fr;gap:10px}.settings-modal__content .settings-row2__control{max-width:none}}.ws-settings{color:var(--text);z-index:50;background:var(--lightningcss-light,#0f0f0f38)var(--lightningcss-dark,#00000059);place-items:center;padding:28px 80px 28px 28px;font-size:14px;line-height:1.5;display:grid;position:fixed;inset:0}.ws-settings__panel{background:var(--panel);border:1px solid var(--line);width:100%;max-width:1400px;height:100%;box-shadow:var(--shadow);grid-template-columns:260px minmax(0,1fr);display:grid;overflow:hidden}.ws-settings__rail{background:var(--panel-2);border-right:1px solid var(--line);flex-direction:column;padding:14px 10px 18px;display:flex;overflow-y:auto}.ws-settings__rail-search{margin:2px 4px 12px;position:relative}.ws-settings__rail-search-icon{color:var(--muted);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.ws-settings__rail-search-icon svg{width:14px;height:14px;display:block}.ws-settings__rail-search-input{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;height:32px;color:var(--text);font:inherit;padding:0 12px 0 32px;font-size:13px}.ws-settings__rail-search-input::placeholder{color:var(--muted)}.ws-settings__rail-search-input:disabled{cursor:not-allowed;opacity:.65}.ws-settings__rail-group{margin-top:6px}.ws-settings__rail-heading{color:var(--muted);letter-spacing:.02em;margin:0;padding:8px 10px 6px;font-size:11.5px;font-weight:600}.ws-settings__rail-heading-name{color:var(--text-strong);font-weight:700}.ws-settings__rail-list{margin:0;padding:0;list-style:none}.ws-settings__rail-item{border-radius:var(--radius-sm);cursor:pointer;width:100%;font:inherit;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:10px;margin:1px 0;padding:6px 10px;font-size:14px;line-height:1.4;transition:background .1s,color .1s;display:flex}.ws-settings__rail-item:hover{background:var(--hover)}.ws-settings__rail-item.is-active{background:var(--hover-strong);color:var(--text-strong);font-weight:600}.ws-settings__rail-item-icon{width:16px;height:16px;color:var(--muted);flex-shrink:0;place-items:center;display:grid}.ws-settings__rail-item-icon svg{width:16px;height:16px;display:block}.ws-settings__rail-item.is-active .ws-settings__rail-item-icon{color:var(--text-strong)}.ws-settings__rail-item-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ws-settings__content{background:var(--bg);position:relative;overflow-y:auto}.ws-settings__content-inner{max-width:740px;padding:56px 80px 80px}.ws-settings__close{border:1px solid var(--line-strong);background:var(--panel);width:36px;height:36px;color:var(--text-strong);cursor:pointer;z-index:60;border-radius:50%;place-items:center;transition:background .12s,color .12s,border-color .12s;display:grid;position:fixed;top:28px;right:22px;box-shadow:0 1px 3px #00000026}@media (width<=760px){.ws-settings{padding:0}.ws-settings__panel{border:0;border-radius:0;max-width:none}}.ws-settings__close:hover{background:var(--panel-2);color:var(--text-strong);border-color:var(--line-strong)}.ws-settings__error{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);color:var(--danger);margin:0 0 20px;padding:14px 16px;font-size:13.5px}.ws-settings .ws-page__header{margin-bottom:32px}.ws-settings .ws-page__h1{letter-spacing:-.01em;color:var(--text-strong);font-size:28px;font-weight:700;line-height:1.2;font-family:var(--font-display);margin:0 0 8px}.ws-settings .ws-page__lead{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.workspace-settings-empty{background:var(--panel-2);border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);padding:24px;font-size:14px;line-height:1.6}.workspace-settings-empty p{margin:0}.ws-section{border-top:1px solid var(--line);flex-direction:column;margin-top:24px;display:flex}.ws-section__h{color:var(--text-strong);margin:0;padding:18px 0 6px;font-size:14px;font-weight:700}.ws-row{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding:18px 0;display:grid}.ws-section>.ws-row:first-child,.ws-section>.ws-section__h+.ws-row{border-top:0}.ws-row__main{min-width:0}.ws-row__label{color:var(--text-strong);margin-bottom:4px;font-size:14px;font-weight:600}.ws-row__hint{color:var(--muted);font-size:13px;line-height:1.5}.ws-row__hint b{color:var(--text-strong);font-weight:600}.ws-row__value{color:var(--text-strong);text-align:right;word-break:break-word;max-width:320px;font-size:14px;font-weight:500}.ws-row__control{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;max-width:420px;display:flex}.ws-strip{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:12px;margin-bottom:8px;padding:10px 14px;font-size:14px;display:flex}.ws-strip__avatar{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));width:28px;height:28px;color:var(--brand-contrast);border-radius:6px;flex-shrink:0;place-items:center;font-size:12px;font-weight:700;display:grid;overflow:hidden}.ws-strip__avatar img{object-fit:cover;width:100%;height:100%;display:block}.ws-strip__name{color:var(--text-strong);font-weight:600}.ws-strip__pill{letter-spacing:.01em;border-radius:999px;margin-left:auto;padding:2px 10px;font-size:12px;font-weight:600}.ws-strip__pill--owner{background:color-mix(in srgb, var(--success) 15%, transparent);color:var(--success);border:1px solid color-mix(in srgb, var(--success) 32%, transparent)}.ws-strip__pill--moderator{background:color-mix(in srgb, var(--delivery-accent) 15%, transparent);color:var(--delivery-accent);border:1px solid color-mix(in srgb, var(--delivery-accent) 32%, transparent)}.ws-strip__pill--member,.ws-strip__pill--guest,.ws-strip__pill--bot{background:var(--panel-3,var(--hover));color:var(--text);border:1px solid var(--line)}.ws-input{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);width:220px;max-width:100%;height:34px;color:var(--text-strong);font:inherit;padding:0 12px;font-size:14px}.ws-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.ws-input:disabled{opacity:.65;cursor:not-allowed}.ws-select{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);width:220px;max-width:100%;height:34px;color:var(--text-strong);font:inherit;padding:0 34px 0 10px;font-size:13.5px}.ws-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.ws-select:disabled{opacity:.65;cursor:not-allowed}.ws-file{display:none}.ws-actions{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:12px;padding:14px 0 0;display:flex}.ws-status{min-height:20px;color:var(--muted);flex:1;margin:0;font-size:13px}.ws-status.is-error{color:var(--danger)}.ws-input[readonly]{cursor:default;color:var(--text)}.ws-btn{background:var(--panel-2);border:1px solid var(--line-strong);border-radius:var(--radius);height:34px;color:var(--text-strong);font:inherit;cursor:pointer;box-shadow:var(--key-edge);padding:0 14px;font-size:13.5px;font-weight:500;transition:background .12s,color .12s,border-color .12s,box-shadow 80ms,transform 80ms}.ws-btn:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.ws-btn:hover:not(:disabled){background:var(--panel-3,var(--hover-strong));border-color:var(--line-strong)}.ws-btn:disabled{opacity:.55;cursor:not-allowed}.ws-btn--danger{color:var(--danger);border-color:var(--line)}.ws-btn--danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 9%, transparent);border-color:var(--danger)}.ws-btn--primary{background:var(--accent);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong));color:var(--accent-contrast);align-items:center;gap:6px;display:inline-flex}.ws-btn--primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.ws-btn--primary svg{width:14px;height:14px}.ws-settings__content:has(.ws-members-page){overflow:hidden}.ws-settings__content-inner:has(.ws-members-page){flex-direction:column;max-width:none;height:100%;min-height:0;padding:56px 80px 28px;display:flex}.ws-members-page{flex-direction:column;flex:1;min-height:0;display:flex}.ws-members-page__header{flex:none}.ws-members__toolbar{background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:16px;margin:4px 0 12px;padding:14px 0 12px;display:flex}.ws-members__count{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:12.5px;font-weight:600}.ws-members__controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ws-members__search{align-items:center;display:flex;position:relative}.ws-members__search-icon{width:14px;height:14px;color:var(--muted);pointer-events:none;display:inline-flex;position:absolute;left:10px}.ws-members__search-icon svg{width:100%;height:100%}.ws-members__search-input{width:220px;height:34px;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;outline:none;padding:0 12px 0 32px;font-size:13px}.ws-members__search-input::-webkit-search-cancel-button{appearance:none}.ws-members__search-input:focus{border-color:var(--accent)}.ws-members__role-select{height:34px;color:var(--text);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:6px;outline:none;padding:0 28px 0 10px;font-size:13px}.ws-members__list{border:1px solid var(--line);background:var(--panel);border-radius:6px;flex:auto;min-height:0;overflow:hidden auto}.ws-members__row{border-bottom:1px solid var(--line);box-sizing:border-box;grid-template-columns:36px 1fr auto auto;align-items:center;gap:14px;padding:0 16px;display:grid}.ws-members__avatar{letter-spacing:-.02em;background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex;overflow:hidden}.ws-members__avatar--bot{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-members__avatar img{object-fit:cover;width:100%;height:100%}.ws-members__main{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-members__name{color:var(--text-strong,var(--text));white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.ws-members__meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:12.5px;display:flex;overflow:hidden}.ws-members__handle{font-family:var(--font-mono);color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:12px}.ws-members__dot{opacity:.6}.ws-members__pill{text-transform:capitalize;color:var(--text);white-space:nowrap;background:#7f7f7f24;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.ws-members__pill--owner{background:color-mix(in srgb, var(--success) 16%, transparent);color:var(--success)}.ws-members__pill--moderator{background:color-mix(in srgb, var(--delivery-accent) 16%, transparent);color:var(--delivery-accent)}.ws-members__pill--bot{background:var(--accent-soft);color:var(--accent)}.ws-members__pill--guest{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-members__actions{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.ws-members__actions:hover:not(:disabled){background:var(--bg);border-color:var(--line);color:var(--text)}.ws-members__actions:disabled{opacity:.45;cursor:not-allowed}.ws-members__empty{text-align:center;border:1px dashed var(--line);color:var(--muted);background:var(--panel);border-radius:8px;margin-top:24px;padding:36px 20px;font-size:13.5px}.ws-members__loading{color:var(--muted);text-align:center;border-top:1px solid var(--line);padding:10px 16px;font-size:12.5px}.ws-members__row--skeleton{height:64px}.ws-members__skeleton{background:linear-gradient(90deg,#7f7f7f14,#7f7f7f2e,#7f7f7f14) 0 0/200% 100%;border-radius:6px;animation:1.4s ease-in-out infinite ws-members-shimmer}.ws-members__skeleton--line{height:10px;margin:4px 0}.ws-members__skeleton--pill{border-radius:999px;width:64px;height:18px}@keyframes ws-members-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (width<=760px){.ws-settings__panel{grid-template-rows:auto 1fr;grid-template-columns:1fr}.ws-settings__rail{border-right:0;border-bottom:1px solid var(--line);padding:10px}.ws-settings__content-inner{padding:32px 20px 60px}.ws-settings__close{top:10px;right:12px}}.ws-bots-page{flex-direction:column;gap:0;display:flex}.ws-bots__toolbar{background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin:4px 0 12px;padding:14px 0 12px;display:flex}.ws-bots__count{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:12.5px;font-weight:600}.ws-bots__toolbar-actions{align-items:center;gap:8px;display:flex}.ws-bots__panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;margin:8px 0 16px;padding:18px 20px}.ws-bots__empty{text-align:center;border:1px dashed var(--line);color:var(--muted);background:var(--surface);border-radius:8px;margin-top:16px;padding:36px 20px;font-size:13.5px}.ws-bots__list{flex-direction:column;margin-bottom:60px;display:flex}.ws-bots__row{border-bottom:1px solid var(--line)}.ws-bots__row:last-child{border-bottom:0}.ws-bots__row.is-expanded{background:var(--surface)}.ws-bots__row-main{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;grid-template-columns:36px 1fr auto auto;align-items:center;gap:14px;padding:14px 16px;display:grid}.ws-bots__row-main:hover{background:var(--hover,#7f7f7f0f)}.ws-bots__row-text{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-bots__row-name{color:var(--text-strong,var(--text));white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.ws-bots__row-meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:12.5px;display:flex;overflow:hidden}.ws-bots__owner-pill{color:var(--text);white-space:nowrap;background:#7f7f7f24;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.ws-bots__owner-pill--service{background:color-mix(in srgb, var(--delivery-accent) 16%, transparent);color:var(--delivery-accent)}.ws-bots__owner-pill--user{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-bots__chevron{width:20px;height:20px;color:var(--muted);justify-content:center;align-items:center;display:inline-flex}.ws-bots__detail{border-top:1px dashed var(--line);flex-direction:column;gap:12px;padding:4px 16px 18px;display:flex}.ws-bots__detail-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;padding-top:14px;display:flex}.ws-bots__detail-title{color:var(--text-strong,var(--text));margin:0 0 4px;font-size:13.5px;font-weight:600}.ws-bots__detail-hint{color:var(--muted);max-width:60ch;margin:0;font-size:12.5px}.ws-bots__detail-actions{flex-wrap:wrap;gap:8px;display:flex}.ws-bots__detail-empty{color:var(--muted);background:var(--bg);border:1px dashed var(--line);border-radius:6px;margin:0;padding:16px;font-size:13px}.ws-bots__token-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.ws-bots__token-row{background:var(--bg);border:1px solid var(--line);border-radius:6px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px 16px;padding:12px 14px;display:flex}.ws-bots__token-row>.ws-btn{flex-shrink:0}.ws-bots__token-main{flex-direction:column;flex:240px;gap:4px;min-width:0;display:flex}.ws-bots__token-name{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-bots__token-meta{color:var(--muted);font-size:12.5px}.ws-bots__scope-row{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.ws-bots__scope-chip{font-family:var(--font-mono);background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:2px 8px;font-size:11.5px}.ws-bots__scope-chip--bundle{color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);border-color:color-mix(in srgb, var(--accent) 35%, transparent);font-family:inherit;font-weight:600}.ws-bots__scope-toggle{color:var(--muted);text-underline-offset:2px;cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:11.5px;text-decoration:underline}.ws-bots__scope-toggle:hover{color:var(--text)}.ws-bots__scope-details{margin-top:6px}.ws-bots__scope-details>summary{color:var(--muted);cursor:pointer;width:fit-content;font-size:11.5px}.ws-bots__scope-details[open]>summary{margin-bottom:6px}.ws-bots__form{flex-direction:column;gap:16px;display:flex}.ws-bots__form-header{flex-direction:column;gap:4px;display:flex}.ws-bots__form-title{color:var(--text-strong,var(--text));margin:0;font-size:16px;font-weight:600}.ws-bots__form-hint{color:var(--muted);max-width:60ch;margin:0;font-size:13px}.ws-bots__form-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=640px){.ws-bots__form-grid{grid-template-columns:1fr}}.ws-bots__form-field{border:0;flex-direction:column;gap:6px;min-width:0;margin:0;padding:0;display:flex}.ws-bots__form-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.ws-bots__form-input{height:34px;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:6px;outline:none;padding:0 12px;font-size:13.5px}.ws-bots__form-input:focus{border-color:var(--accent)}.ws-bots__form-handle{background:var(--surface);border:1px solid var(--line);border-radius:6px;align-items:center;gap:6px;padding:0 10px;display:flex}.ws-bots__form-handle span{color:var(--muted);font-family:var(--font-mono);font-size:13px}.ws-bots__form-handle .ws-bots__form-input{background:0 0;border:0;flex:1;padding-left:0}.ws-bots__choices{flex-direction:column;gap:8px;display:flex}.ws-bots__choice{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:6px;grid-template-rows:auto auto;grid-template-columns:18px 1fr;gap:2px 10px;padding:10px 12px;display:grid}.ws-bots__choice.is-active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 7%, transparent)}.ws-bots__choice input{accent-color:var(--accent);grid-row:1/span 2;align-self:center}.ws-bots__choice-title{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-bots__choice-hint{color:var(--muted);font-size:12.5px}.ws-bots__form-error{background:color-mix(in srgb, var(--danger) 9%, transparent);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 32%, transparent);border-radius:6px;margin:0;padding:10px 12px;font-size:13px}.ws-bots__form-actions{justify-content:flex-end;gap:8px;display:flex}.ws-bots__token-form-panel{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:14px}.ws-bots__token-form .ws-bots__choices{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}@media (width<=720px){.ws-bots__token-form .ws-bots__choices{grid-template-columns:1fr}}.ws-bots__reveal{background:var(--surface);border:1px solid var(--accent);border-radius:8px;flex-direction:column;gap:14px;margin:8px 0 16px;padding:18px 20px;display:flex}.ws-bots__reveal-header{flex-direction:column;gap:4px;display:flex}.ws-bots__reveal-title{color:var(--text-strong,var(--text));margin:0;font-size:16px;font-weight:600}.ws-bots__reveal-hint{color:var(--muted);max-width:60ch;margin:0;font-size:13px}.ws-bots__reveal-hint code{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--text);white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:12px}.ws-bots__reveal-field{flex-direction:column;gap:6px;display:flex}.ws-bots__reveal-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.ws-bots__reveal-row{align-items:center;gap:8px;display:flex}.ws-bots__reveal-input{height:34px;font-family:var(--font-mono);color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px;flex:1;padding:0 12px;font-size:13px}.ws-bots__reveal-snippet-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.ws-bots__reveal-details{border:1px solid var(--line);background:var(--bg);border-radius:6px}.ws-bots__reveal-summary{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;-webkit-user-select:none;user-select:none;padding:10px 14px;font-size:11px;font-weight:600}.ws-bots__reveal-summary:hover{color:var(--text)}.ws-bots__reveal-details-body{gap:8px;padding:0 14px 12px;display:grid}.ws-bots__reveal-details-body .ws-bots__reveal-hint{margin:0}.ws-bots__setup-mode{background:var(--bg);border:1px solid var(--line);border-radius:6px;grid-template-columns:repeat(2,minmax(0,1fr));width:min(320px,100%);padding:3px;display:inline-grid}.ws-bots__setup-mode button{min-height:30px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:0 12px;font-size:12.5px;font-weight:600}.ws-bots__setup-mode button.is-active{background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--line)}.ws-bots__reveal-snippet{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--text);white-space:pre-wrap;border-radius:6px;margin:0;padding:12px 14px;font-size:12.5px;overflow-x:auto}.ws-bots__reveal-ack{color:var(--text);align-items:center;gap:8px;font-size:13px;display:flex}.ws-bots__reveal-actions{justify-content:flex-end;display:flex}.ws-bots__my-list{flex-direction:column;gap:18px;display:flex}.ws-bots__my-group{flex-direction:column;gap:8px;display:flex}.ws-bots__my-group-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.ws-bots__my-group-title{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:13px;font-weight:600}.ws-bots__my-rows{border:1px solid var(--line);background:var(--surface);border-radius:6px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ws-bots__my-row{border-bottom:1px solid var(--line);grid-template-columns:36px 1fr auto;align-items:center;gap:14px;padding:12px 14px;display:grid}.ws-bots__my-row:last-child{border-bottom:0}.ws-bots__my-row-text{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-bots__my-row-name{color:var(--text-strong,var(--text));font-size:14px;font-weight:600}.ws-bots__my-row-meta{color:var(--muted);align-items:center;gap:6px;font-size:12.5px;display:flex}.appearance-preview{border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--bg);overflow:hidden}.appearance-preview__bar{border-bottom:1px solid var(--line);background:var(--panel);color:var(--text-strong);align-items:baseline;gap:8px;padding:9px 14px;font-size:12px;font-weight:700;display:flex}.appearance-preview__hash{color:var(--accent)}.appearance-preview__topic{color:var(--muted);font-size:11.5px;font-weight:500}.appearance-preview__chat{gap:14px;padding:14px 16px 16px;display:grid}.appearance-preview[data-density=compact] .appearance-preview__chat{gap:7px;padding:10px 14px 12px}.appearance-preview__msg{grid-template-columns:34px minmax(0,1fr);gap:10px;display:grid}.appearance-preview[data-density=compact] .appearance-preview__msg{grid-template-columns:24px minmax(0,1fr);gap:8px}.appearance-preview__avatar{background:var(--accent);width:34px;height:34px;color:var(--accent-contrast);border-radius:9px;place-items:center;font-size:14px;font-weight:700;display:grid}.appearance-preview[data-density=compact] .appearance-preview__avatar{border-radius:7px;width:24px;height:24px;font-size:11px}.appearance-preview__avatar.is-agent{background:var(--accent-2)}.appearance-preview__body{gap:3px;min-width:0;display:grid}.appearance-preview[data-density=compact] .appearance-preview__body{gap:1px}.appearance-preview__head{align-items:baseline;gap:7px;display:flex}.appearance-preview__who{color:var(--text-strong);font-size:13px;font-weight:700}.appearance-preview[data-density=compact] .appearance-preview__who{font-size:12px}.appearance-preview__when{color:var(--muted);font-size:10px}.appearance-preview__text{font-size:13px;line-height:1.5}.appearance-preview[data-density=compact] .appearance-preview__text{font-size:12.5px;line-height:1.4}.appearance-preview__activity{background:color-mix(in srgb, var(--accent-2) 9%, var(--panel));color:var(--muted);border-radius:7px 7px 0 0;margin-top:3px;padding:6px 10px;font-size:11.5px}.appearance-preview__activity code{color:var(--text-strong);font-family:var(--font-mono,ui-monospace, monospace);font-size:10.5px}.appearance-preview__answer{background:color-mix(in srgb, var(--accent) 7%, var(--panel));border-radius:0 0 7px 7px;padding:7px 10px 8px;font-size:13px;line-height:1.5}.appearance-preview[data-density=compact] .appearance-preview__activity{padding:4px 8px;font-size:11px}.appearance-preview[data-density=compact] .appearance-preview__answer{padding:5px 8px 6px;font-size:12.5px}.appearance-preview[data-layout=outlined] .appearance-preview__activity{border:1px solid color-mix(in srgb, var(--accent-2) 45%, var(--line));background:0 0;border-bottom:0}.appearance-preview[data-layout=outlined] .appearance-preview__answer{border:1px solid color-mix(in srgb, var(--accent) 40%, var(--line));background:0 0}.appearance-preview__reactions{gap:5px;margin-top:5px;display:flex}.appearance-preview[data-density=compact] .appearance-preview__reactions{margin-top:2px}.appearance-preview__reaction{border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:11px}.appearance-preview__reaction.is-mine{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, var(--panel));color:var(--text-strong)}.appearance-preview__caption{color:var(--muted-2);text-align:right;margin:-14px 2px 0;font-size:11px}.appearance-rows{display:grid}.appearance-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding:14px 0;display:grid}.appearance-row+.appearance-row{border-top:1px solid var(--line)}.appearance-row__meta{gap:2px;display:grid}.appearance-row__label{color:var(--text-strong);font-size:13.5px;font-weight:650}.appearance-row__desc{color:var(--muted);font-size:12px}.appearance-row__control{align-items:center;gap:12px;display:inline-flex}.appearance-seg{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel-2);gap:2px;padding:2px;display:inline-flex}.appearance-seg__btn{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:5px 12px;font-size:12.5px;font-weight:600}.appearance-seg__btn:hover{color:var(--text-strong)}.appearance-seg__btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.appearance-seg__btn.is-active{border-color:var(--line-strong);background:var(--panel);color:var(--text-strong);box-shadow:0 1px 2px #10151d1a}.board-chips__name{min-width:44px;color:var(--muted);text-align:right;font-size:12px}.board-chips{align-items:center;gap:10px;display:inline-flex}.board-chip{border:1px solid var(--line-strong);background:linear-gradient(135deg, var(--panel) 52%, var(--accent) 52%);cursor:pointer;border-radius:8px;width:26px;height:26px;padding:0;position:relative}.board-chip:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.board-chip.is-active:after{content:"";border:2px solid var(--accent);border-radius:11px;position:absolute;inset:-5px}@media (width<=640px){.appearance-row{grid-template-columns:1fr;gap:10px}.appearance-row__control,.board-chips__name{text-align:left;justify-self:start}}.ws-intg-page{padding-bottom:60px}.ws-intg__app-icon{background:var(--surface);border:1px solid var(--line);width:36px;height:36px;color:var(--text);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ws-intg__wizard{background:var(--surface);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:16px;margin:8px 0 16px;padding:18px 20px;display:flex}.ws-intg__wizard-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.ws-intg__wizard-step{color:var(--muted);white-space:nowrap;padding-top:2px;font-size:11.5px;font-weight:600}.ws-intg__wizard-body{flex-direction:column;gap:14px;display:flex}.ws-intg__catalog{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.ws-intg__catalog-card{border:1px solid var(--line);text-align:left;cursor:pointer;color:inherit;background:0 0;border-radius:8px;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;transition:border-color .12s,background .12s;display:flex}.ws-intg__catalog-card:hover{border-color:var(--accent);background:var(--hover,#7f7f7f0f)}.ws-intg__catalog-name{color:var(--text-strong,var(--text));font-size:14px;font-weight:600}.ws-intg__catalog-desc{color:var(--muted);font-size:12.5px;line-height:1.45}.ws-intg__chips{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.ws-intg__chip{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--text);border-radius:999px;align-items:center;gap:6px;padding:3px 6px 3px 10px;font-size:12px;font-weight:600;display:inline-flex}.ws-intg__chip-remove{width:16px;height:16px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;font-size:13px;line-height:1;display:inline-flex}.ws-intg__chip-remove:hover{color:var(--text);background:#7f7f7f2e}.ws-intg__member-results{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex-direction:column;gap:2px;max-height:220px;margin:6px 0 0;padding:4px;list-style:none;display:flex;overflow-y:auto}.ws-intg__member-result{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-size:13px;display:flex}.ws-intg__member-result:hover{background:var(--hover,#7f7f7f14)}.ws-intg__toggle{cursor:pointer;align-items:flex-start;gap:10px;display:flex}.ws-intg__toggle input[type=checkbox]{flex-shrink:0;margin-top:3px}.ws-intg__toggle>span{flex-direction:column;gap:2px;display:flex}.ws-intg__panel{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex-direction:column;gap:12px;padding:14px 16px;display:flex}.ws-intg__panel-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.ws-intg__panel-title{color:var(--text-strong,var(--text));margin:0 0 3px;font-size:13px;font-weight:600}.ws-intg__panel-hint{color:var(--muted);max-width:560px;margin:0;font-size:12.5px;line-height:1.45}.ws-intg__panel-empty{color:var(--muted);margin:0;font-size:12.5px}.ws-intg__inline-form{border:1px dashed var(--line);border-radius:8px;flex-direction:column;gap:12px;padding:14px;display:flex}.ws-intg__item-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ws-intg__item-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:14px;padding:11px 0;display:flex}.ws-intg__item-row:last-child{border-bottom:0}.ws-intg__item-row--stacked{flex-direction:column;align-items:stretch}.ws-intg__item-top{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.ws-intg__item-main{flex-direction:column;gap:4px;min-width:0;display:flex}.ws-intg__item-name{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-intg__item-meta{color:var(--muted);overflow-wrap:anywhere;font-size:12px}.ws-intg__url{font-family:var(--mono,ui-monospace, monospace);font-size:11.5px}.ws-intg__item-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;display:flex}.ws-intg__type-chips{flex-wrap:wrap;gap:5px;display:flex}.ws-intg__secret{border:1px solid color-mix(in srgb, var(--warn) 45%, var(--line));background:color-mix(in srgb, var(--warn) 7%, transparent);border-radius:8px;flex-direction:column;gap:6px;margin-top:6px;padding:10px 12px;display:flex}.ws-intg__secret-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:11px;font-weight:700}.ws-intg__secret-row{align-items:center;gap:8px;display:flex}.ws-intg__secret-row .ws-bots__reveal-input{flex:1;min-width:0}.ws-intg__confirm{border:1px solid color-mix(in srgb, var(--danger,#d33) 40%, var(--line));background:color-mix(in srgb, var(--danger,#d33) 6%, transparent);border-radius:8px;flex-direction:column;gap:12px;padding:14px 16px;display:flex}.ws-intg__confirm-text{color:var(--text);margin:0;font-size:13px;line-height:1.5}.ws-intg__event-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px;margin-top:10px;display:grid}.ws-intg__event-option{border:1px solid var(--line);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-size:12px;display:flex}.ws-intg__event-option.is-active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.ws-intg__deliveries{border-top:1px dashed var(--line);flex-direction:column;gap:8px;padding-top:10px;display:flex}.ws-intg__deliveries-scroll{border:1px solid var(--line);border-radius:8px;max-height:420px;overflow-y:auto}.ws-intg__delivery{border-bottom:1px solid var(--line)}.ws-intg__delivery:last-child{border-bottom:0}.ws-intg__delivery-row{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;grid-template-columns:84px 1fr auto auto;align-items:center;gap:12px;padding:10px 12px;font-size:12.5px;display:grid}.ws-intg__delivery-row:hover{background:var(--hover,#7f7f7f0f)}.ws-intg__delivery-status{text-align:center;white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.ws-intg__delivery-status--ok{background:color-mix(in srgb, var(--delivery-accent,#2a9d5c) 16%, transparent);color:var(--delivery-accent,#2a9d5c)}.ws-intg__delivery-status--fail{background:color-mix(in srgb, var(--danger,#d33) 14%, transparent);color:var(--danger,#d33)}.ws-intg__delivery-type{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.ws-intg__delivery-attempt,.ws-intg__delivery-time{color:var(--muted);white-space:nowrap;font-size:11.5px}.ws-intg__delivery-detail{flex-direction:column;gap:10px;padding:4px 12px 14px;display:flex}.ws-intg__delivery-block{flex-direction:column;gap:4px;display:flex}.ws-intg__delivery-block .ws-bots__reveal-snippet{max-height:260px;overflow:auto}.ws-intg__deliveries-more{justify-content:center;display:flex}.ws-intg__deliveries-retry{justify-content:space-between;align-items:center;gap:12px;display:flex}.ws-intg__section{flex-direction:column;gap:12px;margin-top:28px;display:flex}.ws-intg__section-title{color:var(--text-strong,var(--text));margin:0;font-size:15px;font-weight:600}.ws-intg__section-hint{color:var(--muted);margin:-6px 0 0;font-size:12.5px}.ws-bots__choice.is-disabled{opacity:.55;cursor:not-allowed} diff --git a/apps/api/internal/webassets/dist/_app/immutable/assets/0.DMQbOJlk.css b/apps/api/internal/webassets/dist/_app/immutable/assets/0.DMQbOJlk.css deleted file mode 100644 index 75e1e90d..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/assets/0.DMQbOJlk.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-cyrillic-ext-wght-normal.I4S5GZfc.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-cyrillic-wght-normal.BmXc_FBt.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-symbols2-wght-normal.GZpp1pK2.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-vietnamese-wght-normal.D8KDMBhC.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-latin-ext-wght-normal.DrnZ1wKl.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-latin-wght-normal.B_7UjwxQ.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-wght-normal.DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-feature-settings:"ss01", "cv11";--font-display:"Bricolage Grotesque Variable", "Geist Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--rail:var(--lightningcss-light,#e2e5ea)var(--lightningcss-dark,#0b0e14);--bg:var(--lightningcss-light,#edeff2)var(--lightningcss-dark,#0e1219);--panel:var(--lightningcss-light,#f8f9fb)var(--lightningcss-dark,#141926);--panel-2:var(--lightningcss-light,#e8ebef)var(--lightningcss-dark,#1b2232);--panel-3:var(--lightningcss-light,#dde1e7)var(--lightningcss-dark,#232c3f);--surface:var(--panel-2);--hover:var(--lightningcss-light,#10151d0d)var(--lightningcss-dark,#d6e4ff0b);--hover-strong:var(--lightningcss-light,#10151d14)var(--lightningcss-dark,#d6e4ff14);--line:var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#bed2ff17);--line-strong:var(--lightningcss-light,#10151d2b)var(--lightningcss-dark,#bed2ff29);--text:var(--lightningcss-light,#232a35)var(--lightningcss-dark,#dbe2ec);--text-strong:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#f4f7fb);--muted:var(--lightningcss-light,#5d6878)var(--lightningcss-dark,#8a95a8);--muted-2:var(--lightningcss-light,#8b94a3)var(--lightningcss-dark,#5c6577);--accent:var(--lightningcss-light,#0080c4)var(--lightningcss-dark,#41c6ff);--accent-hover:var(--lightningcss-light,#006aa6)var(--lightningcss-dark,#6ad3ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--accent-2:var(--lightningcss-light,#f56a1d)var(--lightningcss-dark,#ff9550);--accent-soft:var(--lightningcss-light,#0080c421)var(--lightningcss-dark,#41c6ff26);--brand-a:var(--lightningcss-light,#0072b0)var(--lightningcss-dark,#41c6ff);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--activity-accent:var(--lightningcss-light,#c07e0a)var(--lightningcss-dark,#e8b23e);--activity-accent-soft:var(--lightningcss-light,#c07e0a17)var(--lightningcss-dark,#e8b23e1a);--delivery-accent:var(--lightningcss-light,#5558d9)var(--lightningcss-dark,#8b8df2);--delivery-accent-soft:var(--lightningcss-light,#5558d90f)var(--lightningcss-dark,#8b8df214);--tool-call-bg:var(--lightningcss-light,#5558d917)var(--lightningcss-dark,#8b8df21f);--tool-call-bg-hover:var(--lightningcss-light,#5558d924)var(--lightningcss-dark,#8b8df22e);--accent-glow:0 0 0 1px color-mix(in srgb, var(--accent) 32%, transparent), 0 8px 30px -12px color-mix(in srgb, var(--accent) 48%, transparent);--success:var(--lightningcss-light,#14876a)var(--lightningcss-dark,#30c48d);--warn:#e8a33e;--danger:var(--lightningcss-light,#d13438)var(--lightningcss-dark,#ff6d68);--scrollbar:var(--lightningcss-light,#10151d2e)var(--lightningcss-dark,#bed2ff1f);--scrollbar-hover:var(--lightningcss-light,#10151d4d)var(--lightningcss-dark,#bed2ff38);--shadow:0 24px 60px -22px var(--lightningcss-light,#10151d4d)var(--lightningcss-dark,#02050ab3);--tooltip-bg:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#2b3448);--tooltip-fg:var(--lightningcss-light,#f0f4fa)var(--lightningcss-dark,#f4f7fb);--key-edge:0 1px 0 var(--line-strong), 0 2px 0 var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#00000073);--key-edge-pressed:0 1px 0 var(--line-strong);--radius-sm:4px;--radius:6px;--radius-lg:10px;--radius-xl:14px;--safe-area-top:env(safe-area-inset-top,0px);--safe-area-right:env(safe-area-inset-right,0px);--safe-area-bottom:env(safe-area-inset-bottom,0px);--safe-area-left:env(safe-area-inset-left,0px);background:var(--bg);color:var(--text);font-family:Geist Variable,Inter,SF Pro Text,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-color-mode=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-board=ember]{--rail:var(--lightningcss-light,#e9e1d7)var(--lightningcss-dark,#16110d);--bg:var(--lightningcss-light,#f7f3ed)var(--lightningcss-dark,#1a1511);--panel:var(--lightningcss-light,#fffaf2)var(--lightningcss-dark,#211a15);--panel-2:var(--lightningcss-light,#efe7dc)var(--lightningcss-dark,#29211a);--panel-3:var(--lightningcss-light,#e4dbcf)var(--lightningcss-dark,#322820);--hover:var(--lightningcss-light,#1020270d)var(--lightningcss-dark,#fff4eb0b);--hover-strong:var(--lightningcss-light,#10202714)var(--lightningcss-dark,#fff4eb14);--line:var(--lightningcss-light,#1020271a)var(--lightningcss-dark,#ffece014);--line-strong:var(--lightningcss-light,#10202729)var(--lightningcss-dark,#ffece024);--text:var(--lightningcss-light,#22201d)var(--lightningcss-dark,#ece4da);--text-strong:var(--lightningcss-light,#11100e)var(--lightningcss-dark,#fbf6f0);--muted:var(--lightningcss-light,#6f675f)var(--lightningcss-dark,#a4917f);--muted-2:var(--lightningcss-light,#958b80)var(--lightningcss-dark,#6f6152);--accent:var(--lightningcss-light,#c94a32)var(--lightningcss-dark,#f0714c);--accent-hover:var(--lightningcss-light,#b13c26)var(--lightningcss-dark,#ff8560);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#241009);--accent-2:var(--lightningcss-light,#006d77)var(--lightningcss-dark,#45b8ac);--accent-soft:var(--lightningcss-light,#c94a3224)var(--lightningcss-dark,#f0714c2b);--brand-a:var(--lightningcss-light,#c64b32)var(--lightningcss-dark,#f0714c);--brand-b:var(--lightningcss-light,#c8425a)var(--lightningcss-dark,#d84a63);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#11100e);--scrollbar:var(--lightningcss-light,#1020272e)var(--lightningcss-dark,#ffece01a);--scrollbar-hover:var(--lightningcss-light,#1020274d)var(--lightningcss-dark,#ffece033);--shadow:0 24px 60px -22px var(--lightningcss-light,#10202752)var(--lightningcss-dark,#080402a6)}[data-board=moss]{--rail:var(--lightningcss-light,#dfe5e0)var(--lightningcss-dark,#0a100d);--bg:var(--lightningcss-light,#ecf0ed)var(--lightningcss-dark,#0e1512);--panel:var(--lightningcss-light,#f7f9f7)var(--lightningcss-dark,#131b16);--panel-2:var(--lightningcss-light,#e6ebe7)var(--lightningcss-dark,#1a241d);--panel-3:var(--lightningcss-light,#dbe2dc)var(--lightningcss-dark,#223026);--hover:var(--lightningcss-light,#0f17120d)var(--lightningcss-dark,#d6ffe40b);--hover-strong:var(--lightningcss-light,#0f171214)var(--lightningcss-dark,#d6ffe414);--line:var(--lightningcss-light,#0f17121a)var(--lightningcss-dark,#c8ffdc17);--line-strong:var(--lightningcss-light,#0f17122b)var(--lightningcss-dark,#c8ffdc29);--text:var(--lightningcss-light,#212b24)var(--lightningcss-dark,#dbe7de);--text-strong:var(--lightningcss-light,#0f1712)var(--lightningcss-dark,#f3faf4);--muted:var(--lightningcss-light,#5c6b60)var(--lightningcss-dark,#8fa295);--muted-2:var(--lightningcss-light,#8a9a8e)var(--lightningcss-dark,#5d6e62);--accent:var(--lightningcss-light,#177a50)var(--lightningcss-dark,#3ddc97);--accent-hover:var(--lightningcss-light,#0f6a44)var(--lightningcss-dark,#63e6ab);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#05140c);--accent-2:var(--lightningcss-light,#d97f26)var(--lightningcss-dark,#ffab5e);--accent-soft:var(--lightningcss-light,#177a5021)var(--lightningcss-dark,#3ddc9726);--brand-a:var(--lightningcss-light,#177a50)var(--lightningcss-dark,#3ddc97);--brand-b:var(--lightningcss-light,#0e7490)var(--lightningcss-dark,#2bb3a3);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#05140c);--scrollbar:var(--lightningcss-light,#0f17122e)var(--lightningcss-dark,#c8ffdc1f);--scrollbar-hover:var(--lightningcss-light,#0f17124d)var(--lightningcss-dark,#c8ffdc38)}[data-board=iris]{--rail:var(--lightningcss-light,#e2e2ea)var(--lightningcss-dark,#0d0c15);--bg:var(--lightningcss-light,#eeeef4)var(--lightningcss-dark,#12111c);--panel:var(--lightningcss-light,#f8f8fb)var(--lightningcss-dark,#181726);--panel-2:var(--lightningcss-light,#e9e9f0)var(--lightningcss-dark,#201e33);--panel-3:var(--lightningcss-light,#dedee8)var(--lightningcss-dark,#2a2742);--hover:var(--lightningcss-light,#1213270d)var(--lightningcss-dark,#e0dcff0b);--hover-strong:var(--lightningcss-light,#12132714)var(--lightningcss-dark,#e0dcff14);--line:var(--lightningcss-light,#1213271a)var(--lightningcss-dark,#d2cdff17);--line-strong:var(--lightningcss-light,#1213272b)var(--lightningcss-dark,#d2cdff29);--text:var(--lightningcss-light,#26283a)var(--lightningcss-dark,#e0dff0);--text-strong:var(--lightningcss-light,#121327)var(--lightningcss-dark,#f6f5fd);--muted:var(--lightningcss-light,#61637a)var(--lightningcss-dark,#918fa9);--muted-2:var(--lightningcss-light,#9092a8)var(--lightningcss-dark,#605e78);--accent:var(--lightningcss-light,#7048d9)var(--lightningcss-dark,#a78bfa);--accent-hover:var(--lightningcss-light,#5f39c2)var(--lightningcss-dark,#bda4ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#150f26);--accent-2:var(--lightningcss-light,#d94f8a)var(--lightningcss-dark,#ff8bb3);--accent-soft:var(--lightningcss-light,#7048d921)var(--lightningcss-dark,#a78bfa29);--brand-a:var(--lightningcss-light,#7048d9)var(--lightningcss-dark,#a78bfa);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#150f26);--scrollbar:var(--lightningcss-light,#1213272e)var(--lightningcss-dark,#d2cdff1f);--scrollbar-hover:var(--lightningcss-light,#1213274d)var(--lightningcss-dark,#d2cdff38)}[data-board=signal]{--rail:var(--lightningcss-light,#e2e5ea)var(--lightningcss-dark,#0b0e14);--bg:var(--lightningcss-light,#edeff2)var(--lightningcss-dark,#0e1219);--panel:var(--lightningcss-light,#f8f9fb)var(--lightningcss-dark,#141926);--panel-2:var(--lightningcss-light,#e8ebef)var(--lightningcss-dark,#1b2232);--panel-3:var(--lightningcss-light,#dde1e7)var(--lightningcss-dark,#232c3f);--hover:var(--lightningcss-light,#10151d0d)var(--lightningcss-dark,#d6e4ff0b);--hover-strong:var(--lightningcss-light,#10151d14)var(--lightningcss-dark,#d6e4ff14);--line:var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#bed2ff17);--line-strong:var(--lightningcss-light,#10151d2b)var(--lightningcss-dark,#bed2ff29);--text:var(--lightningcss-light,#232a35)var(--lightningcss-dark,#dbe2ec);--text-strong:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#f4f7fb);--muted:var(--lightningcss-light,#5d6878)var(--lightningcss-dark,#8a95a8);--muted-2:var(--lightningcss-light,#8b94a3)var(--lightningcss-dark,#5c6577);--accent:var(--lightningcss-light,#0080c4)var(--lightningcss-dark,#41c6ff);--accent-hover:var(--lightningcss-light,#006aa6)var(--lightningcss-dark,#6ad3ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--accent-2:var(--lightningcss-light,#f56a1d)var(--lightningcss-dark,#ff9550);--accent-soft:var(--lightningcss-light,#0080c421)var(--lightningcss-dark,#41c6ff26);--brand-a:var(--lightningcss-light,#0072b0)var(--lightningcss-dark,#41c6ff);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420)}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:radial-gradient(1000px 600px at 0% 0%, color-mix(in srgb, var(--accent) 6%, transparent), transparent 60%), radial-gradient(900px 700px at 100% 100%, color-mix(in srgb, var(--delivery-accent) 5%, transparent), transparent 60%), var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,textarea{font:inherit;color:inherit}code,pre,kbd,samp{font-variant-ligatures:none}button{cursor:pointer}input,textarea{background:0 0;border:0;outline:0}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--scrollbar);background-clip:content-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-hover);background-clip:content-box}.auth-shell{min-height:100dvh;padding:calc(32px + var(--safe-area-top)) calc(32px + var(--safe-area-right)) calc(32px + var(--safe-area-bottom)) calc(32px + var(--safe-area-left));background:radial-gradient(color-mix(in srgb, var(--text) 6%, transparent) 1px, transparent 1.5px) 0 0 / 18px 18px, radial-gradient(700px 500px at 30% 20%, color-mix(in srgb, var(--brand-a) 14%, transparent), transparent 60%), radial-gradient(700px 500px at 80% 90%, color-mix(in srgb, var(--brand-b) 10%, transparent), transparent 60%), var(--bg);place-items:center;display:grid}.auth-panel{border:1px solid var(--line-strong);border-radius:var(--radius-xl);background:linear-gradient(180deg, #ffffff0a, #fff0) var(--panel);width:min(100%,440px);box-shadow:var(--key-edge), var(--shadow);gap:22px;padding:36px;display:grid}.auth-brand{align-items:center;gap:12px;display:flex}.auth-brand .mark{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));width:44px;height:44px;color:var(--brand-contrast);letter-spacing:-.02em;box-shadow:0 10px 24px -8px color-mix(in srgb, var(--brand-b) 65%, transparent);border-radius:12px;place-items:center;font-weight:800;display:grid}.auth-brand .brand-text strong{color:var(--text-strong);letter-spacing:-.01em;display:block}.auth-brand .brand-text span{color:var(--muted);font-size:12px;display:block}.auth-copy{gap:8px;margin-top:8px;display:grid}.auth-copy h1{letter-spacing:-.02em;color:var(--text-strong);font-size:28px;font-family:var(--font-display);margin:0;font-weight:700}.auth-copy p{color:var(--muted);margin:0;line-height:1.5}.github-login{color:#fff;background:#0d1117;border:1px solid #2b2f36;border-radius:12px;justify-content:center;align-items:center;gap:10px;min-height:46px;font-weight:600;text-decoration:none;transition:transform 80ms,background .12s,border-color .12s;display:inline-flex}.github-login:hover{background:#161b22;border-color:#3f4750;transform:translateY(-1px)}.auth-foot{color:var(--muted-2);text-align:center;margin:0;font-size:12px}.shell{grid-template-columns:72px 260px minmax(0,1fr) 0;height:100dvh;min-height:100dvh;transition:grid-template-columns .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden}.shell.thread-open,.shell.search-open{grid-template-columns:72px 260px minmax(0,1fr) minmax(340px,28vw)}.shell.artifact-open{grid-template-columns:72px 260px minmax(0,1fr) minmax(460px,42vw)}.shell.sidebar-collapsed{grid-template-columns:72px 0 minmax(0,1fr) 0}.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:72px 0 minmax(0,1fr) minmax(340px,28vw)}.shell.sidebar-collapsed.artifact-open{grid-template-columns:72px 0 minmax(0,1fr) minmax(460px,42vw)}.shell>.thread,.shell>.search-results,.shell>.artifact-viewer{grid-area:1/4}.shell.desktop-shell{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);grid-template-rows:52px minmax(0,1fr)}.desktop-shell>.guild-rail,.desktop-shell>.sidebar{background:0 0;border-right:0}.desktop-shell>.sidebar{grid-template-rows:minmax(0,1fr) auto}@media (width<=820px){.desktop-shell>.guild-rail{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);border-right:1px solid var(--line)}.desktop-shell>.sidebar{background:var(--panel);border-right:1px solid var(--line)}}.desktop-shell>.timeline{border-top:1px solid var(--line);border-left:1px solid var(--line);border-top-left-radius:12px}.desktop-shell:not(.thread-open):not(.search-open):not(.artifact-open)>.timeline{border-top-right-radius:12px}.desktop-shell>.thread,.desktop-shell>.search-results,.desktop-shell>.artifact-viewer{border-top:1px solid var(--line);border-top-right-radius:12px}.desktop-shell>.desktop-titlebar{grid-area:1/1/auto/-1}.desktop-shell>.guild-rail,.desktop-shell>.sidebar,.desktop-shell>.timeline,.desktop-shell>.thread,.desktop-shell>.search-results,.desktop-shell>.artifact-viewer{grid-row:2}.desktop-shell .mobile-nav-toggle{display:none}.desktop-auth-titlebar{z-index:10;-webkit-app-region:drag;height:52px;position:fixed;inset:0 0 auto}.desktop-titlebar{z-index:8;-webkit-app-region:drag;-webkit-user-select:none;user-select:none;background:0 0;align-items:center;min-width:0;height:52px;padding:0;display:flex;position:relative}.desktop-titlebar-safe-area{-webkit-app-region:drag;align-items:center;width:100%;min-width:0;height:100%;padding:0 14px;display:flex;position:relative}.desktop-titlebar[data-platform=darwin] .desktop-titlebar-safe-area{padding-left:78px}.desktop-titlebar[data-platform=win32] .desktop-titlebar-safe-area,.desktop-titlebar[data-platform=linux] .desktop-titlebar-safe-area{left:env(titlebar-area-x,0px);width:env(titlebar-area-width,calc(100% - 148px));position:absolute}.desktop-titlebar-leading{-webkit-app-region:no-drag;align-items:center;gap:9px;min-width:0;max-width:max(150px,50% - 300px);display:flex;overflow:hidden}.desktop-titlebar button,.desktop-external-link{color:var(--muted);background:0 0;border:1px solid #0000;place-items:center;display:grid}.desktop-titlebar button:hover,.desktop-external-link:hover{border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.desktop-external-link{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--muted);flex:0 0 28px;place-items:center;text-decoration:none;display:grid}.desktop-titlebar-leading>.desktop-sidebar-toggle{border-radius:8px;width:30px;height:30px}.desktop-titlebar-workspace{min-width:36px;max-width:190px;color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;border-radius:8px;flex:0 auto;padding:5px 9px;font-size:13px;font-weight:650;overflow:hidden}.desktop-titlebar-channel{min-width:30px;max-width:230px;color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;flex:0 auto;margin:0;font-size:13px;font-weight:650;overflow:hidden}.desktop-titlebar-channel.with-glyph:first-letter{color:var(--accent);margin-right:1px}.desktop-titlebar-divider{flex:none}.desktop-titlebar-status{color:var(--muted);white-space:nowrap;flex:none;align-items:center;gap:6px;margin-left:auto;font-size:11px;display:inline-flex}.desktop-titlebar-status:before{content:"";background:var(--muted-2);border-radius:50%;width:7px;height:7px;animation:1.6s ease-in-out infinite presence-pulse}@media (prefers-reduced-motion:reduce){.desktop-titlebar-status:before{animation:none}}.desktop-titlebar-search.search{border-color:var(--line-strong);background:color-mix(in srgb, var(--panel-2) 84%, transparent);-webkit-app-region:no-drag;width:clamp(220px,100vw - 700px,520px);height:32px;position:absolute;left:50%;transform:translate(-50%);box-shadow:inset 0 1px #ffffff09}.desktop-titlebar-search.search:focus-within{border-color:color-mix(in srgb, var(--accent) 66%, var(--line));background:var(--panel-2);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 13%, transparent)}.timeline{background:var(--bg);flex-direction:column;min-width:0;display:flex;overflow:hidden}.timeline>*{flex-shrink:0;min-width:0}.timeline>.messages{flex:1 1 0;min-height:0}.topbar{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--bg);align-items:center;gap:14px;min-height:60px;padding:12px 20px;display:flex}.topbar-title{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.topbar-title h1{letter-spacing:-.01em;color:var(--text-strong);font-size:16px;font-weight:650;font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.topbar-title h1.with-glyph:first-letter{color:var(--accent);margin-right:1px}.topbar-divider{background:var(--line-strong);width:1px;height:18px;margin:0 6px}.topbar-meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:12px;overflow:hidden}.search{border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);width:min(280px,30vw);height:34px;color:var(--muted);align-items:center;gap:8px;padding:0 10px;transition:border-color .12s,background .12s;display:flex}.search:focus-within{border-color:var(--accent);background:var(--panel-2);color:var(--text)}.search input{min-width:0;height:100%;color:var(--text);flex:1}.search input::placeholder{color:var(--muted)}.search-clear{background:var(--panel-3);width:18px;height:18px;color:var(--muted);border:0;border-radius:50%;place-items:center;font-size:14px;line-height:1;display:grid}.search-clear:hover{background:var(--accent);color:var(--accent-contrast)}.search-submit{background:var(--accent-soft);height:22px;color:var(--accent);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border:0;border-radius:5px;padding:0 8px;font-size:10px;font-weight:600}.search-submit:hover{background:var(--accent);color:var(--accent-contrast)}.topbar-actions{align-items:center;gap:6px;display:inline-flex}.topbar-actions button,.topbar-actions a{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel);width:32px;height:32px;color:var(--muted);box-shadow:var(--key-edge);place-items:center;text-decoration:none;transition:background .12s,color .12s,border-color .12s,box-shadow .12s,transform 80ms;display:grid}.topbar-actions button:hover,.topbar-actions a:hover,.topbar-actions button.active{background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));color:var(--accent)}.topbar-actions button:active,.topbar-actions a:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.search-results{border-left:1px solid var(--line);background:var(--panel);opacity:1;grid-template-rows:auto auto minmax(0,1fr);min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(0)}.search-results.covered{opacity:0;pointer-events:none}.search-results-head{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--panel);justify-content:space-between;align-items:center;min-height:60px;padding:10px 16px;display:flex}.search-results-head>div{min-width:0}.search-results-head p{color:var(--muted);font-family:var(--font-mono);letter-spacing:0;text-transform:uppercase;margin:0 0 2px;font-size:10px;font-weight:600}.search-results-head strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;display:block;overflow:hidden}.search-results-head button{background:var(--panel-2);width:30px;height:30px;color:var(--muted);border:0;border-radius:50%;flex:none;place-items:center;font-size:19px;line-height:1;display:grid}.search-results-head button:hover{background:var(--hover);color:var(--text)}.search-results-summary{color:var(--muted);padding:12px 16px 8px;font-size:12px;font-weight:600}.search-results-scroll{min-height:0;padding:0 8px 16px;overflow-y:auto}.search-result-list{margin:0;padding:0;list-style:none}.search-result{color:var(--text);border-radius:var(--radius);text-align:left;background:0 0;border:0;align-items:flex-start;gap:10px;width:100%;padding:10px 8px;display:flex}.search-result:hover{background:var(--hover)}.search-result.is-active{background:color-mix(in srgb, var(--accent) 10%, transparent)}.search-result:focus-visible,.search-results-head button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.search-result .dm-avatar{width:30px;height:30px;font-size:13px}.search-result-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.search-result-meta{align-items:baseline;gap:8px;min-width:0;display:flex}.search-result-meta strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.search-result-handle{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.search-result-meta time{color:var(--muted);flex:none;margin-left:auto;font-size:11px}.search-result-snippet{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.45;display:-webkit-box;overflow:hidden}.search-result-snippet mark{background:color-mix(in srgb, var(--accent) 22%, transparent);color:var(--text-strong);border-radius:2px;font-weight:650}.search-result-context{min-width:0;color:var(--muted-2);align-items:center;gap:10px;margin-top:1px;font-size:11px;display:flex}.search-result-context:empty{display:none}.search-result-where{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.search-result-thread{color:var(--accent);flex:none;align-items:center;gap:4px;font-weight:600;display:inline-flex}.search-load-more{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);width:calc(100% - 16px);color:var(--text);margin:8px auto 0;padding:8px 12px;font-size:12px;font-weight:600;display:block}.search-load-more:hover:not(:disabled){background:var(--hover)}.search-load-more:disabled{color:var(--muted)}.search-load-more:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.search-end{color:var(--muted-2);text-align:center;padding:14px 8px 4px;font-size:11px}.search-foot-error{border:1px solid color-mix(in srgb, var(--danger) 40%, transparent);border-radius:var(--radius);background:color-mix(in srgb, var(--danger) 8%, transparent);color:var(--text);justify-content:space-between;align-items:center;gap:10px;margin:8px 8px 0;padding:8px 12px;font-size:12px;display:flex}.search-foot-error p{min-width:0;margin:0}.search-foot-error button{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);color:var(--text);flex:none;padding:4px 10px;font-size:12px;font-weight:600}.search-foot-error button:hover{background:var(--hover)}.search-state{color:var(--muted);text-align:center;justify-items:center;padding:56px 24px;display:grid}.search-state-icon{border:1px solid var(--line-strong);background:var(--panel-2);width:44px;height:44px;color:var(--muted-2);border-radius:50%;place-items:center;margin-bottom:14px;font-size:23px;display:grid}.search-state strong{color:var(--text-strong);font-size:14px}.search-state p{margin:5px 0 0;font-size:12px}.search-state-loading{grid-template-columns:repeat(3,7px);justify-content:center;gap:6px}.search-state-loading span{background:var(--accent);border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite pulse}.search-state-loading span:nth-child(2){animation-delay:.12s}.search-state-loading span:nth-child(3){animation-delay:.24s}.guild-rail{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);border-right:1px solid var(--line);flex-direction:column;align-items:center;gap:8px;padding:14px 0;display:flex;position:relative;overflow-y:auto}.guild-rail .guild{background:var(--panel);width:48px;height:48px;color:var(--text);border:1px solid var(--line-strong);letter-spacing:-.02em;box-shadow:var(--key-edge);border-radius:12px;place-items:center;font-size:14px;font-weight:700;text-decoration:none;transition:border-color .12s,background .12s,transform .12s,box-shadow .12s;display:grid;position:relative}.guild-rail .guild:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));color:var(--accent);box-shadow:var(--key-edge), 0 6px 16px -8px color-mix(in srgb, var(--accent) 45%, transparent);transform:translateY(-1px)}.guild-rail .guild:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.guild-rail .guild.home{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));border-color:color-mix(in srgb, var(--brand-b) 55%, var(--line-strong));color:var(--brand-contrast);font-weight:800;font-family:var(--font-display)}.guild-rail .guild.home:hover{color:var(--brand-contrast);transform:translateY(-1px)}.guild-rail .guild.home:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.guild-rail .guild__image{border-radius:inherit;object-fit:cover;width:100%;height:100%;display:block}.guild-rail .guild.add{color:var(--success);border:1px dashed color-mix(in srgb, var(--success) 45%, transparent);background:0 0}.guild-rail .guild.add:hover{background:color-mix(in srgb, var(--success) 14%, transparent);color:var(--success);border-style:solid;border-color:var(--success)}.guild-divider{background:var(--line-strong);width:36px;height:1px;margin:4px 0}.guild-list{flex-direction:column;align-items:center;gap:8px;display:flex}.guild-wrap{position:relative}.guild-wrap:before{content:"";background:var(--accent);opacity:0;border-radius:0 4px 4px 0;width:4px;height:28px;transition:opacity .14s,transform .14s;position:absolute;top:50%;left:-14px;transform:translateY(-50%)scaleY(.2)}.guild-wrap:hover:before{opacity:.6;transform:translateY(-50%)scaleY(.5)}.guild-wrap.active:before{opacity:1;transform:translateY(-50%)scaleY(1)}.guild-wrap.active .guild{background:var(--accent);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong));color:var(--accent-contrast)}.guild-create{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow);z-index:20;margin-left:8px;padding:8px;position:absolute;top:14px;left:100%}.guild-create input{border-radius:var(--radius-sm);background:var(--panel-2);width:200px;height:32px;color:var(--text);padding:0 10px}.sidebar{background:var(--panel);border-right:1px solid var(--line);grid-template-rows:auto minmax(0,1fr) auto;min-width:0;transition:opacity .16s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden}.sidebar-collapsed .sidebar{opacity:0;pointer-events:none;transform:translate(-14px)}.workspace-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:6px;min-height:60px;padding:14px 16px;display:flex}.workspace-header-icon{object-fit:cover;background:var(--panel-2);border-radius:8px;flex:none;width:28px;height:28px}.workspace-header-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.workspace-menu{min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;flex:1;align-items:center;gap:10px;margin-left:-8px;padding:5px 8px;transition:background .12s;display:flex}.workspace-menu:hover{background:var(--panel-2)}.workspace-menu-caret{color:var(--muted);flex:none;transition:color .12s}.workspace-menu:hover .workspace-menu-caret{color:var(--text-strong)}.sidebar-collapse{background:var(--panel-2);width:30px;height:30px;color:var(--muted);border:0;border-radius:8px;place-items:center;transition:color .12s,background .12s,transform .12s;display:grid}.sidebar-collapse:hover{background:var(--panel-3);color:var(--text-strong);transform:translate(-1px)}.workspace-name{flex-direction:column;gap:2px;min-width:0;display:flex}.workspace-name strong{min-width:0;color:var(--text-strong);letter-spacing:-.01em;font-size:15px;font-family:var(--font-display);align-items:center;gap:5px;font-weight:650;display:flex}.workspace-name-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.workspace-name .presence{color:var(--muted);align-items:center;gap:6px;font-size:11px;display:inline-flex}.workspace-name .presence:before{content:"";background:var(--muted-2);border-radius:50%;width:7px;height:7px;animation:1.6s ease-in-out infinite presence-pulse}@keyframes presence-pulse{0%,to{opacity:.4}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.workspace-name .presence:before{animation:none}}.sidebar-scroll{padding:12px 8px 16px;overflow-y:auto}.nav-section+.nav-section{margin-top:12px}.section-title{border-radius:var(--radius-sm);background:0 0;border:0;align-items:center;gap:4px;width:100%;padding:2px 4px;display:flex}.nav-section.collapsed+.nav-section{margin-top:4px}.section-toggle{border-radius:var(--radius-sm);min-width:0;min-height:28px;color:var(--muted);text-transform:uppercase;font-family:var(--font-mono);letter-spacing:.09em;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:6px;padding:4px;font-size:10px;font-weight:600;display:flex}.section-toggle:hover{color:var(--text);background:var(--hover)}.section-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.section-toggle .caret{opacity:.7;font-size:10px;transition:transform .14s}.section-toggle[aria-expanded=false] .caret{transform:rotate(-90deg)}.section-toggle .label{text-align:left;flex:1}.section-title .add-button{background:var(--hover-strong);width:18px;height:18px;color:var(--text);border:0;border-radius:4px;flex:none;place-items:center;padding:0;font-size:14px;font-weight:700;line-height:1;display:grid}.section-title .add-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.section-title:hover .add-button{background:var(--accent);color:var(--accent-contrast)}.nav-list{flex-direction:column;gap:1px;margin-top:4px;display:flex}.nav-list[hidden]{display:none}.channel-subgroup{gap:1px;margin-top:6px;display:grid}.channel-subgroup-toggle{border-radius:var(--radius-sm);width:100%;min-height:26px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;text-align:left;text-transform:uppercase;background:0 0;border:0;align-items:center;gap:6px;padding:4px 9px 4px 28px;font-size:10px;font-weight:600;display:flex}.channel-subgroup-toggle:hover,.channel-subgroup-toggle:focus-visible{background:var(--hover);color:var(--text);outline:none}.channel-subgroup-toggle .caret{opacity:.7;font-size:10px;transition:transform .14s}.channel-subgroup-toggle[aria-expanded=false] .caret{transform:rotate(-90deg)}.channel-subgroup-count{color:var(--muted-2);font-variant-numeric:tabular-nums;margin-left:auto}.channel-subgroup-list{gap:1px;display:grid}.channel-subgroup-list[hidden]{display:none}.archived-channel-group{border-top:1px solid color-mix(in srgb, var(--line) 70%, transparent);margin-top:10px;padding-top:6px}@media (prefers-reduced-motion:reduce){.section-toggle .caret{transition:none}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.channel-row{border-radius:var(--radius-sm);align-items:center;display:flex;position:relative}.channel-row .nav-item{flex:1;min-width:0}.channel-row.subdued .nav-item:not(.active){color:var(--muted-2)}.managed-channel-marker{color:var(--muted-2);flex:none;place-items:center;display:inline-grid}.nav-item.active .managed-channel-marker,.nav-item:hover .managed-channel-marker{color:var(--accent)}.channel-row.reorderable .nav-item{padding-left:2px}.channel-drag-handle{border-radius:var(--radius-sm);color:var(--muted-2);cursor:grab;opacity:0;background:0 0;border:0;flex:0 0 24px;align-self:stretch;place-items:center;display:grid}.channel-row:hover .channel-drag-handle,.channel-drag-handle:focus-visible{opacity:1}.channel-drag-handle:hover{color:var(--text);background:var(--hover)}.channel-drag-handle:active{cursor:grabbing}.channel-drag-handle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.channel-drag-handle svg{fill:currentColor}.channel-move-menu{z-index:4;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel);min-width:112px;box-shadow:var(--shadow);padding:4px;display:grid;position:absolute;top:calc(100% + 2px);left:0}.channel-move-menu button{color:var(--text);text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}.channel-move-menu button:hover:not(:disabled),.channel-move-menu button:focus-visible{background:var(--hover-strong);outline:none}.channel-move-menu button:disabled{color:var(--muted-2);cursor:default}.channel-row.dragging{opacity:.45}.channel-row.drop-before:before,.channel-row.drop-after:after{content:"";z-index:1;background:var(--accent);pointer-events:none;border-radius:1px;height:2px;position:absolute;left:4px;right:4px}.channel-row.drop-before:before{top:-1px}.channel-row.drop-after:after{bottom:-1px}@media (hover:none){.channel-drag-handle{opacity:1}}@media (prefers-reduced-motion:reduce){.channel-subgroup-toggle .caret{transition:none}}.nav-item{border-radius:var(--radius-sm);width:100%;color:var(--muted);text-align:left;background:0 0;border:0;align-items:center;gap:8px;min-height:30px;padding:6px 10px;text-decoration:none;transition:background .1s,color .1s;display:flex}.nav-item:hover{background:var(--hover);color:var(--text)}.nav-item:focus{outline:none}.nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.nav-item.active{background:var(--accent-soft);color:var(--text-strong);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent)}.nav-item.has-unread{color:var(--text-strong);font-weight:600}.nav-item.has-unread .hash{color:var(--text-strong)}.unread-badge{background:var(--accent);min-width:18px;height:18px;color:var(--accent-contrast,white);text-align:center;letter-spacing:.01em;border-radius:9px;flex-shrink:0;padding:0 6px;font-size:11px;font-weight:700;line-height:18px}.nav-item .hash{color:var(--muted);text-align:center;width:14px;font-weight:600}.nav-item.active .hash{color:var(--accent)}.nav-label{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:14px;overflow:hidden}.dm-row{grid-template-columns:minmax(0,1fr) 24px;align-items:center;gap:2px;display:grid;position:relative}.dm-row .nav-item{min-width:0}.dm-actions-trigger{border-radius:var(--radius-sm);width:22px;height:22px;color:var(--muted-2);opacity:0;background:0 0;border:0;place-items:center;font-size:18px;font-weight:700;line-height:1;display:grid}.dm-row:hover .dm-actions-trigger,.dm-row:focus-within .dm-actions-trigger,.dm-row.active .dm-actions-trigger{opacity:1}.dm-actions-trigger:hover,.dm-actions-trigger:focus-visible,.dm-actions-trigger[aria-expanded=true]{background:var(--hover);color:var(--text);outline:none}.dm-actions-menu{z-index:30;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel-2);min-width:164px;box-shadow:var(--shadow);padding:4px;position:absolute;top:28px;right:0}.dm-actions-item{width:100%;min-height:30px;color:var(--text);text-align:left;background:0 0;border:0;border-radius:6px;padding:0 10px;font-size:13px}.dm-actions-item:hover,.dm-actions-item:focus-visible{background:var(--hover);color:var(--text-strong);outline:none}.dm-undo{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--muted);align-items:center;gap:8px;margin:6px 8px 2px;padding:6px 8px;font-size:12px;display:flex}.dm-undo span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.dm-undo button{background:var(--hover);color:var(--text);border:0;border-radius:6px;padding:4px 8px;font-size:12px;font-weight:700}.dm-undo button:hover,.dm-undo button:focus-visible{background:var(--accent);color:var(--accent-contrast);outline:none}.nav-empty{color:var(--muted-2);margin:4px 8px;font-size:12px}.dm-avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:50%;flex-shrink:0;place-items:center;width:22px;height:22px;font-size:11px;font-weight:700;display:grid;overflow:hidden}.dm-avatar img,.avatar img{object-fit:cover;width:100%;height:100%;display:block}.presence-dot{background:var(--muted-2);border-radius:50%;flex-shrink:0;width:8px;height:8px}.presence-dot.active{background:var(--success);box-shadow:0 0 0 2px var(--panel)}.inline-create{grid-template-columns:minmax(0,1fr) auto;gap:6px;margin:6px 4px 2px;display:grid}.inline-create input{border-radius:var(--radius-sm);background:var(--panel-2);width:100%;min-width:0;height:30px;color:var(--text);border:1px solid var(--line);padding:0 10px}.inline-create input:focus{border-color:var(--accent);background:var(--panel-3)}.inline-create button.ghost,button.ghost{border-radius:var(--radius-sm);background:var(--panel-3);width:30px;height:30px;color:var(--muted);border:0;place-items:center;padding:0;font-size:14px;font-weight:600;display:grid}.inline-create button.ghost:hover{background:var(--accent);color:var(--accent-contrast)}.user-card{background:var(--panel-2);border-top:1px solid var(--line);width:100%;color:inherit;text-align:left;cursor:pointer;border-bottom:0;border-left:0;border-right:0;align-items:center;gap:10px;padding:10px 12px;transition:background .12s;display:flex}.user-card:hover{background:var(--panel-3)}.user-card .dm-avatar{width:28px;height:28px;font-size:12px}.user-card .user-meta{flex:1;min-width:0}.user-card .user-meta strong{color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;font-size:13px;display:block;overflow:hidden}.user-card .user-meta span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;display:block;overflow:hidden}@media (width<=820px){.workspace-header{min-height:calc(60px + var(--safe-area-top));padding-top:calc(14px + var(--safe-area-top));padding-right:calc(16px + var(--safe-area-right))}.sidebar-scroll{padding-bottom:calc(16px + var(--safe-area-bottom))}.user-card{padding-bottom:calc(10px + var(--safe-area-bottom))}}.messages{flex-direction:column;display:flex;position:relative}.messages-scroll{overflow-anchor:none;opacity:1;flex-direction:column;flex:1;min-height:0;padding:0 4px;transition:opacity .14s ease-out;display:flex;overflow-y:auto}.messages-scroll:focus{outline:none}.messages.is-revealing .messages-scroll{opacity:0;pointer-events:none;transition:opacity}.messages-spacer{flex-grow:1}.history-loader{pointer-events:none;gap:14px;margin:4px 0 6px;padding:6px 18px;animation:.22s ease-out both history-loader-fade;display:grid}.history-loader--newer{margin-top:6px;margin-bottom:4px}@keyframes history-loader-fade{0%{opacity:0}to{opacity:1}}.history-loader__row{grid-template-columns:56px minmax(0,1fr);min-height:44px;display:grid}.history-loader__avatar,.history-loader__meta,.history-loader__line,.history-loader__block{background:linear-gradient(90deg, color-mix(in srgb, var(--muted-2) 16%, transparent), color-mix(in srgb, var(--muted-2) 36%, transparent), color-mix(in srgb, var(--muted-2) 16%, transparent));animation:1.4s ease-in-out infinite history-loading;animation-delay:calc(var(--history-row,0) * 80ms);background-size:220% 100%;display:block}.history-loader__avatar{border-radius:10px;width:38px;height:38px}.history-loader__body{align-content:start;gap:8px;min-width:0;padding-top:4px;display:grid}.history-loader__meta{border-radius:999px;width:min(180px,38%);height:11px}.history-loader__line{border-radius:999px;height:10px}.history-loader__line--wide{width:min(540px,72%)}.history-loader__line--mid{width:min(360px,48%)}@keyframes history-loading{0%{background-position:120% 0}to{background-position:-120% 0}}@media (prefers-reduced-motion:reduce){.history-loader{animation:none}.history-loader__avatar,.history-loader__meta,.history-loader__line,.history-loader__block{background:color-mix(in srgb, var(--muted-2) 22%, transparent);animation:none}}.unread-bar{z-index:5;background:color-mix(in srgb, var(--panel) 82%, transparent);-webkit-backdrop-filter:blur(14px)saturate(140%);border:1px solid color-mix(in srgb, var(--accent) 38%, transparent);max-width:calc(100% - 32px);height:30px;color:var(--text);letter-spacing:.005em;box-shadow:inset 0 1px 0 #ffffff14, 0 10px 24px -14px #0000008c, 0 0 0 4px color-mix(in srgb, var(--accent) 10%, transparent);opacity:1;border-radius:999px;align-items:center;gap:6px;padding:0 5px 0 14px;font-size:12px;font-weight:600;transition:opacity .16s ease-out,transform .18s cubic-bezier(.2,.8,.2,1);display:inline-flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.unread-bar.is-clearing{opacity:0;pointer-events:none;transform:translate(-50%,-6px)}.unread-bar__jump,.unread-bar__mark{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;transition:background-color .12s ease-out,color .12s ease-out;display:inline-flex}.unread-bar__jump{text-align:left;min-width:0;color:color-mix(in srgb, var(--accent) 92%, var(--text));flex:0 auto;padding:0 6px 0 0}.unread-bar__jump:before{content:"";background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent);border-radius:50%;flex-shrink:0;animation:1.8s ease-out infinite unread-bar-pulse}@keyframes unread-bar-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent)}70%{box-shadow:0 0 0 7px color-mix(in srgb, var(--accent) 0%, transparent)}to{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 0%, transparent)}}@media (prefers-reduced-motion:reduce){.unread-bar__jump:before{animation:none}}.unread-bar__mark{background:color-mix(in srgb, var(--accent) 14%, transparent);height:22px;color:color-mix(in srgb, var(--accent) 90%, var(--text));letter-spacing:.01em;border-radius:999px;flex-shrink:0;padding:0 10px;font-size:11px;font-weight:600}.unread-bar__jump:hover{color:var(--accent)}.unread-bar__mark:hover{background:color-mix(in srgb, var(--accent) 24%, transparent);color:var(--accent)}.unread-bar__jump:focus-visible,.unread-bar__mark:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 70%, transparent);outline-offset:2px;border-radius:999px}.unread-bar__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.typing-indicator{height:0;color:var(--text-muted);opacity:0;pointer-events:none;align-items:center;gap:8px;margin-top:0;padding:0 22px;font-size:12px;transition:height .12s ease-out,margin-top .12s ease-out,opacity .12s ease-out,transform .16s cubic-bezier(.2,.8,.2,1);display:flex;overflow:hidden;transform:translateY(2px)}.typing-indicator.visible{opacity:1;height:20px;margin-top:-4px;transform:translateY(0)}.composer-dock{padding-top:20px;position:relative}.composer-dock .agent-responding{opacity:0;pointer-events:none;align-items:center;height:20px;margin:0;padding:0 22px;transition:opacity .12s ease-out;display:flex;position:absolute;top:0;left:0;right:0;overflow:hidden;transform:none}.composer-dock .agent-responding.visible{opacity:1;height:20px;margin:0;transform:none}.typing-indicator__dots{align-items:center;gap:3px;display:inline-flex}.typing-indicator__dots i{opacity:.55;background:currentColor;border-radius:50%;width:4px;height:4px;animation:1.1s ease-in-out infinite typing-dot}.typing-indicator__dots i:nth-child(2){animation-delay:.15s}.typing-indicator__dots i:nth-child(3){animation-delay:.3s}@keyframes typing-dot{0%,60%,to{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.message-row.is-pending{opacity:.55}.message-row.is-pending .message-content,.message-row.is-pending .markdown{pointer-events:none}.message-row.is-failed{opacity:1}.message-row.is-deleted{color:var(--muted)}.message-failed{background:color-mix(in srgb, var(--danger,#d04848) 14%, transparent);color:var(--danger,#d04848);border-radius:999px;align-items:center;gap:10px;margin-top:6px;padding:4px 10px;font-size:12px;display:inline-flex}.message-failed__label{font-weight:500}.message-failed__action{color:inherit;font:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:999px;padding:2px 8px;line-height:1}.message-failed__action:hover{background:color-mix(in srgb, currentColor 12%, transparent)}.message-failed__action--ghost{border-color:color-mix(in srgb, currentColor 50%, transparent)}@media (prefers-reduced-motion:reduce){.typing-indicator{transition:opacity 80ms ease-out;transform:none}.typing-indicator.visible{transform:none}.typing-indicator__dots i{opacity:.7;animation:none}}.empty{text-align:center;align-content:center;place-items:center;gap:10px;min-height:50vh;padding:48px 24px;display:grid}.empty-icon{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));border:1px solid color-mix(in srgb, var(--brand-b) 55%, var(--line-strong));width:64px;height:64px;color:var(--brand-contrast);box-shadow:var(--key-edge), 0 18px 40px -16px color-mix(in srgb, var(--brand-b) 60%, transparent);border-radius:16px;place-items:center;font-size:26px;font-weight:800;display:grid}.empty strong{color:var(--text-strong);letter-spacing:-.01em;font-size:19px;font-family:var(--font-display);overflow-wrap:anywhere;font-weight:700}.empty span{color:var(--muted);max-width:380px;line-height:1.5}.day-divider{pointer-events:none;align-items:center;gap:12px;margin:18px 18px 8px;display:flex}.day-divider:before,.day-divider:after{content:"";background:var(--line);flex:1;height:1px}.day-divider span{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.07em;border-radius:999px;padding:4px 12px;font-size:10px;font-weight:600}.new-messages-divider{pointer-events:none;opacity:1;align-items:center;gap:0;margin:4px 0 2px;padding:0 18px;transition:opacity .16s ease-out,transform .18s cubic-bezier(.2,.8,.2,1);display:flex;position:relative;transform:translateY(0)}.new-messages-divider.is-clearing{opacity:0;transform:translateY(-4px)}.new-messages-divider:before{content:"";background:var(--danger,#ed4245);opacity:.9;flex:1;height:1px}.new-messages-divider span{background:var(--danger,#ed4245);color:#fff;letter-spacing:.04em;text-transform:uppercase;border-radius:3px;align-items:center;height:14px;margin-left:8px;padding:0 5px;font-size:9px;font-weight:700;display:inline-flex}.message-group{grid-template-columns:56px minmax(0,1fr);padding:8px 18px;display:grid;position:relative}.avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:10px;place-items:center;width:38px;height:38px;margin-top:2px;font-size:14px;font-weight:700;display:grid;overflow:hidden;box-shadow:0 6px 20px -10px #0009}.avatar-button{z-index:2;cursor:pointer;border:0;padding:0;transition:transform .1s,box-shadow .12s,filter .12s;position:relative}.avatar-button:hover{filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 10px 24px -12px #000c}.avatar.small{border-radius:10px;width:30px;height:30px;font-size:12px}.avatar.large{border-radius:16px;width:56px;height:56px;margin:0;font-size:18px}.group-body{min-width:0}.group-body>header{align-items:baseline;gap:8px;margin-bottom:2px;display:flex}.message-group .group-body>header{margin:0 -18px 0 -56px;padding:0 18px 2px 56px}.group-body>header strong{color:var(--text-strong);letter-spacing:-.005em;font-size:14.5px;font-weight:700}.author-name{color:var(--text-strong);letter-spacing:0;background:0 0;border:0;border-radius:4px;padding:0;font-size:14.5px;font-weight:700}.author-name:hover{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.author-name--static:hover{color:var(--text-strong);text-decoration:none}.group-body>header time{color:var(--muted);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:10.5px}.group-body>header span{color:var(--muted);font-size:12px}.bot-chip{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);height:18px;color:var(--accent);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;border-radius:4px;align-items:center;padding:0 6px;font-size:9.5px;font-weight:700;line-height:1;display:inline-flex}.bot-chip--deleted{border-color:var(--line-strong);color:var(--muted)}.message-row{border-radius:0;margin-left:-56px;margin-right:-18px;padding:1px 18px 1px 56px;transition:background 80ms;position:relative}.message-row:not(:first-child){margin-top:1px}.message-row:hover,.message-group .group-body>header:hover,.message-group .group-body>header:hover+.message-row{background:var(--hover)}.message-group .group-body>header:has(+.message-row:hover){background:var(--hover)}.message-group .group-body>header:hover+.message-row .message-actions{opacity:1;pointer-events:auto}.message-row.selected{background:var(--accent-soft)}.message-row.can-open-thread{cursor:pointer}.row-stamp{font-family:var(--font-mono);color:var(--muted-2);opacity:0;font-variant-numeric:tabular-nums;font-size:9.5px;position:absolute;top:4px;left:8px}.message-row.is-preamble{background:0 0;margin-bottom:6px;padding-top:4px;padding-bottom:4px}.message-row.is-preamble:not(.before-final-message) .message-content{border:1px solid color-mix(in srgb, var(--activity-accent) 20%, transparent);border-radius:var(--radius-lg);background:var(--activity-accent-soft);box-shadow:0 2px 0 color-mix(in srgb, var(--activity-accent) 14%, transparent);padding:10px 14px}.message-row.is-preamble-collapsed .message-content{padding-top:6px;padding-bottom:6px}.message-row.is-preamble.before-final-message{background:0 0;margin-bottom:0;padding-top:2px;padding-bottom:0}.message-row.after-preamble{margin-top:0;padding-top:0;padding-bottom:2px}.message-row.is-preamble.before-final-message:before{display:none}.message-row.is-preamble.before-final-message .message-content{border:1px solid color-mix(in srgb, var(--activity-accent) 20%, transparent);background:var(--activity-accent-soft);border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);border-bottom:0;padding:10px 14px}.message-row.after-preamble .message-content{border:1px solid color-mix(in srgb, var(--delivery-accent) 20%, transparent);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg);background:var(--delivery-accent-soft);box-shadow:0 2px 0 color-mix(in srgb, var(--delivery-accent) 14%, transparent);border-top:0;padding:10px 14px}.message-row.is-preamble.before-final-message.is-preamble-collapsed .message-content{background:color-mix(in srgb, var(--activity-accent) 10%, var(--panel));border-bottom:1px solid color-mix(in srgb, var(--activity-accent) 30%, transparent);padding-top:7px;padding-bottom:7px}:root[data-user-align=right] .message-group.is-self,:root[data-other-align=right] .message-group:not(.is-self){grid-template-columns:minmax(0,1fr) 56px}:root[data-user-align=right] .message-group.is-self>.avatar,:root[data-other-align=right] .message-group:not(.is-self)>.avatar{grid-area:1/2;justify-self:end}:root[data-user-align=right] .message-group.is-self>.group-body,:root[data-other-align=right] .message-group:not(.is-self)>.group-body{grid-area:1/1;min-width:0}:root[data-user-align=right] .message-group.is-self .group-body>header,:root[data-other-align=right] .message-group:not(.is-self) .group-body>header{justify-content:flex-end;margin:0 -56px 0 -18px;padding:0 56px 2px 18px}:root[data-user-align=right] .message-group.is-self .message-row,:root[data-other-align=right] .message-group:not(.is-self) .message-row{margin-left:-18px;margin-right:-56px;padding-left:18px;padding-right:56px}:root[data-user-align=right] .message-group.is-self .message-content,:root[data-other-align=right] .message-group:not(.is-self) .message-content{text-align:right;margin-left:auto}:root[data-user-align=right] .message-group.is-self .markdown,:root[data-other-align=right] .message-group:not(.is-self) .markdown{text-align:right}:root[data-user-align=right] .message-group.is-self .attachment-grid,:root[data-other-align=right] .message-group:not(.is-self) .attachment-grid{margin-left:auto}.preamble-contract{gap:7px;min-width:0;display:grid}.preamble-toggle{width:100%;min-height:20px;color:var(--activity-accent);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto auto auto minmax(0,1fr);align-items:center;gap:7px;padding:0;display:grid}.preamble-chevron{color:var(--activity-accent);font-size:10px;transition:transform .12s}.preamble-chevron.open{transform:rotate(90deg)}.preamble-state,.preamble-action{line-height:1}.preamble-state{border:1px solid color-mix(in srgb, var(--activity-accent) 30%, transparent);height:17px;color:var(--activity-accent);text-transform:uppercase;letter-spacing:.03em;border-radius:999px;align-items:center;padding:0 7px;font-size:9.5px;font-weight:750;display:inline-flex}.preamble-state.is-live{border-color:color-mix(in srgb, var(--activity-accent) 55%, transparent);animation:1.6s ease-in-out infinite preamble-live-pulse}@keyframes preamble-live-pulse{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.preamble-state.is-live{animation:none}}.preamble-action{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.preamble-body{color:var(--muted);overflow-wrap:anywhere;word-break:break-word;min-width:0}.preamble-flow{gap:7px;min-width:0;padding-left:17px;display:grid}.preamble-tool{--tool-accent:var(--activity-accent);background:var(--tool-call-bg);border-radius:7px;min-width:0;overflow:hidden}.preamble-tool-summary{width:100%;min-width:0;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:baseline;gap:7px;padding:4px 9px;line-height:1.5;display:flex}.preamble-tool-summary:hover{background:var(--tool-call-bg-hover)}.preamble-tool-full{color:var(--muted);overflow-wrap:anywhere;word-break:break-word;gap:5px;min-width:0;padding:2px 10px 8px 27px;font-size:12px;display:grid}.preamble-tool-full-head{font-family:var(--font-mono);color:color-mix(in srgb, var(--tool-accent) 45%, var(--muted));font-size:11px;font-weight:600}.preamble-tool-full-body{min-width:0}.preamble-tool-full pre{white-space:pre-wrap;overflow-wrap:anywhere}.tool-line-chevron{color:var(--muted-2);flex-shrink:0;font-size:9px;transition:transform .12s}.tool-line-chevron.open{transform:rotate(90deg)}.tool-line-glyph{filter:saturate(.85);flex-shrink:0;font-size:11px}.tool-line-action{color:color-mix(in srgb, var(--tool-accent) 38%, var(--text));flex-shrink:0;font-size:11.5px;font-weight:600}.tool-line-name{text-overflow:ellipsis;white-space:nowrap;max-width:40%;color:color-mix(in srgb, var(--tool-accent) 55%, var(--muted));font-size:11px;font-weight:500;font-family:var(--font-mono);flex-shrink:0;overflow:hidden}.tool-line-detail{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--muted);font-size:11px;font-weight:400;font-family:var(--font-mono);opacity:.85;flex:auto;overflow:hidden}.message-row:hover .row-stamp{opacity:1}.message-content{min-width:0;display:flow-root}.thread-hint{min-height:22px;color:var(--muted-2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:6px;margin-top:4px;padding:3px 8px;font-size:12px;font-weight:700;line-height:1;display:inline-flex}.thread-hint:not(.has-replies):not(.is-open){display:none}.thread-hint svg{flex:none}.thread-hint time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:10.5px;font-weight:500}.thread-hint.has-replies,.thread-hint.is-open{color:var(--accent)}.thread-hint.is-open{border-color:color-mix(in srgb, var(--accent) 40%, transparent);background:color-mix(in srgb, var(--accent-soft) 70%, transparent)}.thread-hint:hover{border-color:var(--line-strong);background:var(--panel)}.thread-hint:disabled{cursor:default;opacity:.45}.message-actions{opacity:0;pointer-events:none;background:var(--panel);border:1px solid var(--line-strong);box-shadow:var(--shadow);border-radius:8px;align-items:flex-start;gap:4px;padding:2px;transition:opacity .1s;display:flex;position:absolute;top:-24px;right:8px}.message-row:hover .message-actions,.message-row.selected .message-actions,.message-row.menu-open .message-actions{opacity:1;pointer-events:auto}.message-row:has(:focus-visible) .message-actions{opacity:1;pointer-events:auto}.message-row.actions-flip .message-actions{top:auto;bottom:-24px}.message-row.menu-open{z-index:6}.message-row:hover,.message-row.selected{z-index:5}.message-row:has(:focus-visible){z-index:5}.messages:has(.message-row.menu-open) .message-row:hover:not(.menu-open) .message-actions{opacity:0;pointer-events:none}.messages:has(.message-row.menu-open) .message-group .group-body>header:hover+.message-row:not(.menu-open) .message-actions{opacity:0;pointer-events:none}@media (hover:none),(pointer:coarse){.message-actions{width:1px;height:1px;box-shadow:none;opacity:1;pointer-events:auto;background:0 0;border:0;padding:0;top:1px;bottom:auto;overflow:visible;transform:none}.message-actions>:not(.message-more){display:none}.message-row.actions-flip .message-actions{top:1px;bottom:auto}.message-actions .message-more{position:static}.message-actions .message-actions-trigger{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.message-actions .message-actions-trigger:focus-visible{clip:auto;clip-path:none;border:1px solid var(--line-strong);background:var(--panel);width:36px;height:36px;box-shadow:var(--shadow);margin:0;top:0;right:0;overflow:visible}.message-row:has(.message-actions-trigger:focus-visible) .message-content{padding-right:44px}}.message-actions button{width:28px;height:28px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.message-actions button:hover{background:var(--hover-strong);color:var(--text-strong)}.message-actions button:disabled{opacity:.45}.message-copy-status{background:var(--accent-soft);height:24px;color:var(--accent);white-space:nowrap;border-radius:5px;align-self:center;align-items:center;padding:0 6px;font-size:11px;font-weight:700;display:inline-flex}.message-copy-status.is-error{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger)}.message-sheet-scrim{z-index:60;background:#05080f66;flex-direction:column;justify-content:flex-end;display:flex;position:fixed;inset:0}.message-sheet-backdrop{background:0 0;border:0;padding:0;position:absolute;inset:0}.message-action-sheet{z-index:1;background:var(--panel);border:1px solid var(--line);max-height:calc(100dvh - 16px - env(safe-area-inset-top,0px));padding:8px 12px calc(10px + env(safe-area-inset-bottom,0px));overscroll-behavior:contain;border-bottom:0;border-radius:16px 16px 0 0;animation:.16s ease-out sheet-rise;position:relative;overflow-y:auto}@keyframes sheet-rise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.message-action-sheet{animation:none}}.message-action-sheet .sheet-grabber{background:var(--line-strong);border-radius:999px;width:36px;height:4px;margin:0 auto 8px}.message-action-sheet .sheet-emoji-row{border-bottom:1px solid var(--line);justify-content:space-around;gap:4px;padding-bottom:8px;display:flex}.message-action-sheet .sheet-emoji-row button{background:0 0;border:0;border-radius:10px;place-items:center;width:44px;height:44px;font-size:22px;line-height:1;display:grid}.message-action-sheet .sheet-emoji-row button:active{background:var(--hover-strong)}.message-action-sheet .sheet-actions{flex-direction:column;padding-top:4px;display:flex}.message-action-sheet .sheet-actions button{width:100%;color:var(--text-strong);text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:12px;padding:12px 8px;font-size:15px;display:flex}.message-action-sheet .sheet-actions button:active{background:var(--hover-strong)}.message-action-sheet .sheet-actions button:disabled{opacity:.45}.message-action-sheet .sheet-actions svg{color:var(--muted);flex:none}.message-action-sheet .sheet-danger,.message-action-sheet .sheet-danger svg{color:var(--danger)}.message-action-sheet .sheet-copy-status{background:var(--accent-soft);height:22px;color:var(--accent);white-space:nowrap;border-radius:5px;align-items:center;margin-left:auto;padding:0 6px;font-size:11px;font-weight:700;display:inline-flex}.message-action-sheet .sheet-copy-status.is-error{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger)}.message-actions .message-action-react{font-size:15px;line-height:1}.message-actions .action-sep{background:var(--line);flex:none;align-self:center;width:1px;height:18px;margin:0 3px}.message-actions .picker-wrapper,.message-actions .message-more{position:relative}.message-menu{z-index:30;background:var(--panel);border:1px solid var(--line-strong);min-width:190px;box-shadow:var(--shadow);border-radius:10px;padding:5px;font-size:13px;position:absolute;top:calc(100% + 4px);right:0}.message-menu.above{top:auto;bottom:calc(100% + 4px)}.message-menu button{width:100%;height:auto;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:9px;padding:7px 10px;font-size:13px;display:flex}.message-menu button:hover{background:var(--hover-strong);color:var(--text-strong)}.message-menu button svg{color:var(--muted);flex:none}.message-menu .menu-sep{border-top:1px solid var(--line);margin:5px 4px}.message-menu .menu-danger,.message-menu .menu-danger svg{color:var(--danger)}.message-menu .menu-danger:hover{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger)}.message-edit{gap:7px;width:min(100%,760px);padding:5px 0 3px;display:grid}.message-edit__textarea{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 94%, var(--text) 6%);width:100%;min-height:72px;max-height:240px;color:var(--text);font:inherit;resize:vertical;box-sizing:border-box;box-shadow:inset 0 1px 1px color-mix(in srgb, var(--text) 5%, transparent);border-radius:7px;padding:9px 11px;font-size:14.5px;line-height:1.5;transition:border-color .12s,box-shadow .12s,background .12s}.message-edit__textarea:hover:not(:disabled){border-color:color-mix(in srgb, var(--line-strong) 62%, var(--text) 38%)}.message-edit__textarea:focus{border-color:var(--accent);background:var(--panel);box-shadow:inset 0 1px 1px color-mix(in srgb, var(--text) 4%, transparent), 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);outline:none}.message-edit__textarea:disabled{cursor:progress;opacity:.78}.message-edit__footer{flex-wrap:wrap;align-items:center;gap:6px;min-height:30px;display:flex}.message-edit__footer .message-edit__save{background:var(--accent);min-width:68px;min-height:30px;color:var(--accent-contrast);cursor:pointer;border:0;border-radius:6px;justify-content:center;align-items:center;gap:4px;padding:5px 12px;font-size:13px;font-weight:500;display:inline-flex}.message-edit__footer .message-edit__save:hover{filter:brightness(1.1)}.message-edit__footer .message-edit__save:focus-visible,.message-edit__footer .message-edit__cancel:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.message-edit__footer .message-edit__save:disabled{opacity:.5;cursor:progress}.message-edit__footer .message-edit__cancel{min-height:30px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;padding:5px 10px;font-size:13px;display:inline-flex}.message-edit__footer .message-edit__cancel:hover{border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.message-edit__error{border-left:2px solid var(--danger);background:color-mix(in srgb, var(--danger) 8%, transparent);width:fit-content;max-width:100%;color:var(--danger);border-radius:3px;margin:0;padding:5px 8px;font-size:12.5px;line-height:1.35}.message-edit__indicator{color:var(--muted);align-items:center;gap:3px;margin-left:8px;font-size:11px;display:inline-flex}.message-row.editing .message-actions{display:none}@media (width<=520px){.message-edit__footer .message-edit__save,.message-edit__footer .message-edit__cancel{flex:1 1 0}}.message-deleted{min-height:22px;color:var(--muted);align-items:center;font-size:13px;font-style:italic;display:inline-flex}.markdown{color:var(--text);overflow-wrap:anywhere;word-break:break-word;font-size:14.5px;line-height:1.5}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:0}.markdown p+p,.markdown ul,.markdown ol,.markdown blockquote,.markdown pre{margin-top:6px}.markdown a{color:var(--accent);text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown code{background:var(--panel-2);border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-family:Geist Mono Variable,JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.markdown pre{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;overflow-x:auto}.markdown pre code{background:0 0;border:0;padding:0}.markdown blockquote{border-left:3px solid var(--accent);color:var(--muted);margin:0;padding:4px 0 4px 12px}.markdown ul,.markdown ol{padding-left:22px}.markdown img{border-radius:var(--radius);border:1px solid var(--line);object-fit:contain;background:var(--panel);cursor:zoom-in;max-width:100%;max-height:360px;margin-top:6px}.markdown-table-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;max-width:100%;margin-top:6px;overflow-x:auto}.markdown-table-scroll[data-overflowing]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.markdown-table-scroll:first-child{margin-top:0}.markdown-table-scroll>table{border-collapse:collapse;border-spacing:0;width:max-content;min-width:100%;font-size:.9em}.markdown thead{background:var(--muted-2)}.markdown th,.markdown td{vertical-align:top;border:1px solid var(--line);padding:8px 12px}.markdown thead th{color:var(--text-strong);font-weight:700}.markdown tbody tr:nth-child(2n){background:color-mix(in srgb, var(--muted-2) 18%, transparent)}.markdown tbody tr:hover{background:color-mix(in srgb, var(--muted-2) 26%, transparent)}.gif-player{vertical-align:top;max-width:100%;display:inline-block;position:relative}.gif-player img{display:block}.gif-badge,.gif-replay{z-index:1;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:0;position:absolute}.gif-badge{letter-spacing:.04em;pointer-events:none;background:#0000008a;border-radius:999px;padding:4px 7px;font-size:10px;font-weight:800;bottom:9px;left:9px}.gif-replay{opacity:0;pointer-events:none;background:#0a0c12b8;border-radius:999px;place-items:center;width:30px;height:30px;font-size:16px;line-height:1;transition:opacity .13s,transform .13s,background .12s;display:grid;bottom:9px;right:9px;transform:scale(.88)}.gif-replay:hover{background:var(--accent)}.gif-player.paused .gif-replay{opacity:1;pointer-events:auto;transform:scale(1)}.gif-player.playing .gif-badge{animation:.9s ease-in-out infinite gif-breathe}@keyframes gif-breathe{0%,to{opacity:.85}50%{opacity:.45}}.attachment-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;max-width:560px;margin-top:8px;display:grid}.attachment-grid.compact{grid-template-columns:minmax(0,1fr);max-width:420px}.media-tile{border:1px solid var(--line);border-radius:var(--radius-lg);isolation:isolate;text-align:left;width:100%;color:inherit;cursor:pointer;background:#0a0c12;margin:0;padding:0;text-decoration:none;transition:border-color .14s,transform .14s,box-shadow .14s;display:block;position:relative;overflow:hidden}.media-tile:hover{border-color:var(--line-strong);box-shadow:0 18px 40px -28px #000000e6}.media-tile:focus-visible{border-color:var(--line-strong);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 35%, transparent);outline:none}.media-tile--image{cursor:zoom-in}.media-tile__open{width:100%;color:inherit;cursor:zoom-in;background:0 0;border:0;margin:0;padding:0;display:block}.media-tile__open:focus{outline:0}.media-tile__open:focus-visible+.media-tile__caption .media-tile__name{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.media-tile--video{cursor:default}.media-tile img,.media-tile video{object-fit:contain;background:#05070d;width:100%;max-height:360px;display:block}.media-tile--image img{max-height:320px}.media-tile__caption{z-index:3;opacity:0;pointer-events:none;background:linear-gradient(#0000 0%,#00000080 60%,#000000c7 100%);align-items:center;gap:8px;padding:22px 10px 8px;transition:opacity .14s;display:flex;position:absolute;inset:auto 0 0}.media-tile__caption>*{pointer-events:auto}.media-tile:hover .media-tile__caption,.media-tile:focus-within .media-tile__caption{opacity:1}.media-tile--video.is-started .media-tile__caption{display:none}.media-tile__name{color:#fff;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 2px #0009;flex:1;min-width:0;font-size:12px;font-weight:500;overflow:hidden}.media-tile__chip{z-index:4;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#00000080;border:1px solid #ffffff2e;border-radius:8px;flex:none;place-items:center;width:28px;height:28px;text-decoration:none;transition:background .12s,border-color .12s,transform .12s;display:inline-grid;position:relative}.media-tile__chip:hover{background:#000000b3;border-color:#ffffff52;transform:translateY(-1px)}.media-tile__play{cursor:pointer;z-index:1;background:0 0;border:0;place-items:center;width:100%;height:auto;margin:0;padding:0;display:grid;position:absolute;inset:0 0 48px}.media-tile__play:before{content:"";opacity:.7;pointer-events:none;background:radial-gradient(#0000002e 0%,#0000000d 45%,#0000 70%);transition:opacity .16s;position:absolute;inset:0}.media-tile__play:hover:before{opacity:.9}.media-tile__play-icon{color:#fff;-webkit-backdrop-filter:blur(10px);background:#0000008c;border-radius:999px;place-items:center;width:46px;height:46px;padding-left:3px;transition:transform .2s cubic-bezier(.2,.8,.2,1),background .18s,box-shadow .2s;display:grid;position:relative;box-shadow:0 6px 20px -8px #0000008c}.media-tile__play-icon svg{filter:drop-shadow(0 1px 2px #0006)}.media-tile__play:hover .media-tile__play-icon{background:#000000b3;transform:scale(1.06);box-shadow:0 10px 28px -10px #000000a6}.media-tile__play:active .media-tile__play-icon{transition-duration:80ms;transform:scale(.97)}.media-tile__play:focus-visible{outline:none}.media-tile__play:focus-visible .media-tile__play-icon{box-shadow:0 0 0 2px #fff9,0 10px 28px -10px #000000a6}.media-tile__duration{z-index:2;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.02em;pointer-events:none;background:#000000b8;border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600;position:absolute;bottom:8px;left:8px}.file-attachment{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);align-items:center;gap:10px;max-width:360px;padding:10px;display:flex}.file-attachment:hover{border-color:var(--line-strong);background:var(--panel-2)}.file-icon{background:var(--accent-soft);width:34px;height:34px;color:var(--accent);border-radius:8px;place-items:center;font-weight:800;display:grid}.file-attachment strong,.file-attachment small{display:block}.file-attachment strong{color:var(--text-strong);font-size:13px}.file-attachment small{color:var(--muted);font-size:11px}.audio-attachment,.document-attachment{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);width:min(100%,420px);overflow:hidden}.audio-attachment{gap:10px;padding:10px;display:grid}.audio-attachment__meta{align-items:center;gap:10px;min-width:0;display:flex}.audio-attachment audio{width:100%;height:36px}.document-attachment{grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px;display:grid}.document-attachment__thumbnail{border:1px solid var(--line);background:linear-gradient(135deg, transparent 0 76%, var(--panel-3) 76% 100%), linear-gradient(180deg, #fff 0%, #f0f2f7 100%);width:64px;height:82px;color:var(--accent);letter-spacing:0;cursor:pointer;border-radius:6px;place-items:center;font-size:13px;font-weight:800;text-decoration:none;display:inline-grid;position:relative;overflow:hidden;box-shadow:0 8px 18px -16px #0009}.document-attachment__thumbnail:before,.document-attachment__thumbnail:after{content:"";background:color-mix(in srgb, var(--muted) 36%, transparent);border-radius:999px;height:2px;position:absolute;left:14px;right:14px}.document-attachment__thumbnail:before{top:48px}.document-attachment__thumbnail:after{top:56px}.document-attachment__meta{gap:5px;min-width:0;display:grid}.document-attachment__title{width:100%;min-width:0;color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:700;text-decoration:none;overflow:hidden}.document-attachment__title:hover{text-underline-offset:3px;text-decoration:underline}.document-attachment__meta small{color:var(--muted);white-space:nowrap;font-size:11px}.document-attachment__download{width:30px;height:30px;color:var(--muted);border-radius:8px;place-items:center;text-decoration:none;transition:background .12s,color .12s;display:inline-grid}.document-attachment__download:hover{background:var(--panel-2);color:var(--text-strong)}@media (width<=520px){.message-group{grid-template-columns:44px minmax(0,1fr);padding:7px 12px}:root[data-user-align=right] .message-group.is-self,:root[data-other-align=right] .message-group:not(.is-self){grid-template-columns:minmax(0,1fr) 44px}.message-row{margin-left:-44px;margin-right:-12px;padding-left:44px;padding-right:12px}:root[data-user-align=right] .message-group.is-self .message-row,:root[data-other-align=right] .message-group:not(.is-self) .message-row{margin-left:-12px;margin-right:-44px;padding-left:12px;padding-right:44px}.message-group .group-body>header{margin-left:-44px;margin-right:-12px;padding-left:44px;padding-right:12px}:root[data-user-align=right] .message-group.is-self .group-body>header,:root[data-other-align=right] .message-group:not(.is-self) .group-body>header{margin-left:-12px;margin-right:-44px;padding-left:12px;padding-right:44px}.row-stamp{display:none}.attachment-grid,.attachment-grid.compact{grid-template-columns:minmax(0,1fr);max-width:100%}}:root[data-message-layout=outlined] .message-group .group-body{width:100%}:root[data-message-layout=outlined] .message-group .message-row{margin-left:0;margin-right:0;padding:0}:root[data-message-layout=outlined] .message-group .group-body>header{margin-left:0;margin-right:0;padding-left:0;padding-right:0}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .message-content,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .message-content,:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .markdown,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .markdown{text-align:start}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .thread-hint,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .thread-hint{width:fit-content;margin-left:auto;display:flex}:root[data-message-layout=outlined] .message-group .row-stamp{left:-48px}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .row-stamp,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .row-stamp{left:auto;right:-48px}:root[data-message-layout=outlined] .message-group .message-row:not(:first-child){margin-top:4px}:root[data-message-layout=outlined] .message-group .message-content{border-radius:var(--radius-lg);width:fit-content;max-width:min(96%,1100px);margin-top:2px;padding:10px 14px;position:relative}:root[data-message-layout=outlined] .message-group .message-row:not(.is-preamble):not(.after-preamble) .message-content{border:1px solid var(--line-strong)}:root[data-message-layout=outlined] .message-group.is-agent .message-content{width:96%;max-width:1100px}:root[data-message-layout=outlined] .message-group .message-row.before-final-message+.message-row.after-preamble{margin-top:-1px}:root[data-message-layout=outlined] .message-group.is-agent .message-row.before-final-message .message-content{border-bottom-right-radius:0;border-bottom-left-radius:0}:root[data-message-layout=outlined] .message-group.is-agent .message-row.after-preamble .message-content{border-top-left-radius:0;border-top-right-radius:0}:root[data-density=compact] .message-group{grid-template-columns:42px minmax(0,1fr);padding:2px 18px}:root[data-density=compact][data-user-align=right] .message-group.is-self,:root[data-density=compact][data-other-align=right] .message-group:not(.is-self){grid-template-columns:minmax(0,1fr) 42px}:root[data-density=compact] .message-group>.avatar{border-radius:7px;width:26px;height:26px;font-size:11px}:root[data-density=compact] .group-body>header{gap:6px;margin-bottom:0}:root[data-density=compact] .message-group .group-body>header{margin-left:-42px;padding-left:42px}:root[data-density=compact][data-user-align=right] .message-group.is-self .group-body>header,:root[data-density=compact][data-other-align=right] .message-group:not(.is-self) .group-body>header{margin-left:-18px;margin-right:-42px;padding-left:18px;padding-right:42px}:root[data-density=compact] .group-body>header strong,:root[data-density=compact] .author-name{font-size:13px}:root[data-density=compact] .group-body>header time{font-size:10px}:root[data-density=compact] .message-row{margin-left:-42px;padding-left:42px}:root[data-density=compact][data-user-align=right] .message-group.is-self .message-row,:root[data-density=compact][data-other-align=right] .message-group:not(.is-self) .message-row{margin-left:-18px;margin-right:-42px;padding-left:18px;padding-right:42px}:root[data-density=compact] .markdown{font-size:13.5px;line-height:1.42}:root[data-density=compact] .reactions-bar{margin-top:2px}:root[data-density=compact][data-message-layout=outlined] .message-group .message-row{margin-left:0;padding-left:0}:root[data-density=compact][data-message-layout=outlined] .message-group .row-stamp{left:-34px}:root[data-density=compact][data-message-layout=outlined][data-user-align=right] .message-group.is-self .row-stamp,:root[data-density=compact][data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .row-stamp{left:auto;right:-34px}@media (width<=520px){:root[data-density=compact] .message-group{padding-left:12px;padding-right:12px}}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .message-row,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .message-row,:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .group-body>header,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .group-body>header{margin-left:0;margin-right:0;padding-left:0;padding-right:0}.composer{--composer-card-top:8px;--composer-overlay-gap:8px;--composer-overlay-inset-x:18px;background:var(--bg);gap:0;padding:8px 18px 6px;display:grid;position:relative}.composer-card{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius-lg);box-shadow:var(--key-edge);flex-direction:column;transition:border-color .12s,box-shadow .12s;display:flex;overflow:hidden}.composer:focus-within .composer-card{border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));box-shadow:var(--key-edge), 0 0 0 3px color-mix(in srgb, var(--accent) 14%, transparent)}.composer-suggestions{left:var(--composer-overlay-inset-x);bottom:calc(100% - var(--composer-card-top) + var(--composer-overlay-gap));z-index:40;width:min(560px, calc(100% - (var(--composer-overlay-inset-x) * 2)));border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 97%, transparent);max-height:min(320px,45vh);box-shadow:var(--shadow);border-radius:12px;margin:0;position:absolute;overflow:hidden auto}.composer-suggestions button{border:0;border-bottom:1px solid var(--line);width:100%;min-height:48px;color:var(--text);text-align:left;background:0 0;border-radius:0;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.composer-suggestions button:last-child{border-bottom:0}.composer-suggestions button:hover,.composer-suggestions button.active{background:var(--hover-strong)}.suggestion-mark{background:var(--accent-soft);width:30px;height:30px;color:var(--accent);border-radius:8px;place-items:center;font-size:13px;font-weight:800;display:grid}.suggestion-copy{gap:2px;min-width:0;display:grid}.suggestion-copy strong,.suggestion-copy span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.suggestion-copy strong{color:var(--text-strong);font-size:13px}.suggestion-copy span{color:var(--muted);font-size:12px}.suggestion-kind{color:var(--muted-2);text-transform:uppercase;font-size:11px;font-weight:700}.suggestion-hint{color:var(--muted);font-size:12px;font-style:normal;font-weight:500}.composer-notice{margin:0 var(--composer-overlay-inset-x,0) 6px;border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 97%, transparent);border-radius:10px;align-items:baseline;gap:8px;padding:7px 10px;font-size:13px;display:flex}.composer-notice__label{color:var(--muted-2);text-transform:uppercase;flex:none;font-size:11px;font-weight:700}.composer-notice--error .composer-notice__label{color:var(--danger)}.composer-notice__text{min-width:0;color:var(--text);overflow-wrap:anywhere;flex:1}.composer-notice__dismiss{width:22px;height:22px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;align-self:center;place-items:center;font-size:15px;line-height:1;display:grid}.composer-notice__dismiss:hover{background:var(--hover-strong);color:var(--text-strong)}.composer-toolbar{border:0;border-top:1px solid var(--line);background:color-mix(in srgb, var(--panel-2) 35%, transparent);width:100%;min-width:0;box-shadow:none;scrollbar-width:none;-webkit-overflow-scrolling:touch;border-radius:0;align-items:center;gap:2px;margin:0;padding:4px 6px;display:inline-flex;overflow:auto hidden}.composer-toolbar::-webkit-scrollbar{display:none}.composer-toolbar button{min-width:28px;height:26px;color:var(--text);opacity:.78;background:0 0;border:0;border-radius:6px;flex:none;place-items:center;font-size:11.5px;font-weight:700;transition:background .1s,color .1s,opacity .1s,transform 80ms;display:grid}.composer-toolbar button:hover{background:var(--hover-strong);color:var(--text-strong);opacity:1}.composer-toolbar button.active{background:var(--accent-soft);color:var(--accent);opacity:1}.composer-toolbar button:active{transform:translateY(1px)}.gif-picker{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 96%, transparent);width:min(520px,100vw - 40px);box-shadow:var(--shadow);border-radius:16px;margin-top:8px;margin-bottom:8px;padding:10px;animation:.16s cubic-bezier(.2,.8,.2,1) picker-in}.gif-picker-head{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:2px 2px 10px;display:grid}.gif-picker-head strong{color:var(--text-strong);font-size:13px}.gif-picker-head input{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);min-width:0;height:32px;padding:0 10px}.gif-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:240px;display:grid;overflow-y:auto}.gif-grid button{aspect-ratio:4/3;background:var(--panel-2);color:#fff;box-shadow:inset 0 0 0 1px var(--line);border:0;border-radius:12px;padding:0;transition:transform .12s,box-shadow .12s;position:relative;overflow:hidden}.gif-grid button:hover{box-shadow:inset 0 0 0 2px var(--accent), 0 14px 30px -22px #000c;transform:translateY(-2px)}.gif-grid img{object-fit:cover;width:100%;height:100%;display:block}.gif-grid span{text-overflow:ellipsis;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0000008f;border-radius:999px;padding:4px 7px;font-size:10.5px;font-weight:700;position:absolute;bottom:6px;left:6px;right:6px;overflow:hidden}@keyframes picker-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.composer-row{--composer-control-size:36px;--composer-line-height:22px;--composer-text-padding-block:7px;background:0 0;border:0;border-radius:0;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:4px;padding:8px 8px 4px 10px;display:grid}.composer-row:has(.composer-icon){grid-template-columns:auto minmax(0,1fr) auto}.composer:focus-within .composer-toolbar,.composer-row:focus-within{border-color:#0000}.composer-row:focus-within{box-shadow:none}.composer-icon{width:var(--composer-control-size);height:var(--composer-control-size);margin-top:calc(var(--composer-text-padding-block) + (var(--composer-line-height) - var(--composer-control-size)) / 2);color:var(--muted);cursor:pointer;border-radius:10px;align-self:start;place-items:center;transition:background .12s,color .12s;display:grid}.composer-icon:hover{background:var(--hover-strong);color:var(--text-strong)}.composer-icon input[type=file]{opacity:0;pointer-events:none;block-size:1px;inline-size:1px;position:absolute}.composer textarea,.reply-composer textarea{width:100%;height:auto;min-height:44px;max-height:50vh;padding:var(--composer-text-padding-block) 4px;resize:none;color:var(--text);line-height:var(--composer-line-height);box-sizing:border-box;align-self:start;font-size:14.5px;overflow-y:auto}.composer textarea::placeholder,.reply-composer textarea::placeholder{color:var(--muted)}.send{width:var(--composer-control-size);height:var(--composer-control-size);margin-top:calc(var(--composer-text-padding-block) + (var(--composer-line-height) - var(--composer-control-size)) / 2);border:1px solid color-mix(in srgb, var(--accent) 70%, var(--text-strong));border-radius:var(--radius);background:var(--accent);color:var(--accent-contrast);box-shadow:var(--key-edge);align-self:start;place-items:center;transition:background .12s,transform 80ms,box-shadow 80ms,opacity .12s;display:grid}.send:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px)}.send:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.send:disabled{background:var(--panel-3);border-color:var(--line-strong);color:var(--muted-2);cursor:not-allowed;box-shadow:none}.composer-attachment{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);align-items:center;gap:8px;width:fit-content;margin-top:8px;margin-bottom:8px;padding:6px 10px;font-size:13px;display:inline-flex}.attachment-icon{background:var(--accent-soft);width:20px;height:20px;color:var(--accent);border-radius:6px;place-items:center;display:grid}.pending-image{object-fit:cover;border:1px solid var(--line);background:var(--panel-2);border-radius:7px;width:42px;height:32px}.attachment-name{text-overflow:ellipsis;white-space:nowrap;max-width:240px;overflow:hidden}.attachment-remove{width:18px;height:18px;color:var(--muted);background:0 0;border:0;border-radius:50%;font-size:14px;line-height:1}.attachment-remove:hover{background:var(--danger);color:#fff}.composer-hint{color:var(--muted-2);padding:7px 4px 0;font-size:11px}.composer-hint kbd{background:var(--panel-2);border:1px solid var(--line-strong);font-family:var(--font-mono);color:var(--text);box-shadow:0 1px 0 var(--line-strong);border-radius:4px;padding:0 5px;font-size:10.5px;display:inline-block}@media (width<=820px){.composer{padding:8px calc(14px + var(--safe-area-right)) calc(6px + var(--safe-area-bottom)) calc(14px + var(--safe-area-left))}.composer textarea,.reply-composer textarea{font-size:16px}.composer-suggestions{max-height:min(320px,42dvh)}}.thread{background:var(--panel);border-left:1px solid var(--line);opacity:0;pointer-events:none;grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(28px)}.thread.open{opacity:1;pointer-events:auto;transform:translate(0)}.thread.covered{opacity:0;pointer-events:none}.thread>header{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--panel);align-items:center;gap:10px;min-height:60px;padding:12px 16px;display:flex}.thread>header>div{flex:1;min-width:0}.thread>header p,.thread>header strong{margin:0}.thread>header p{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:600;overflow:hidden}.thread>header strong{color:var(--text-strong);font-size:14px;display:block}.thread .close{background:var(--panel-2);width:28px;height:28px;color:var(--muted);border:0;border-radius:50%;font-size:18px;line-height:1}.thread .close:hover{background:var(--panel-3);color:var(--text-strong)}.thread .thread-open-link{color:var(--accent);font-family:var(--font-mono);white-space:nowrap;flex:none;font-size:11px;font-weight:700;text-decoration:none}.thread .thread-open-link:hover{color:var(--accent-hover);text-decoration:underline}.thread .thread-open-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.thread .thread-back{background:var(--panel-2);width:28px;height:28px;color:var(--muted);border:0;border-radius:50%;flex:none;place-items:center;display:grid}.thread .thread-back:hover{background:var(--panel-3);color:var(--text-strong)}.thread .thread-back:focus-visible,.thread .close:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.thread-scroll{padding:12px 16px;overflow-y:auto}.thread-root{border-bottom:1px solid var(--line);grid-template-columns:38px minmax(0,1fr);gap:12px;padding-bottom:12px;display:grid}.thread-divider{align-items:center;gap:10px;margin:14px 0 10px;display:flex}.thread-divider:before,.thread-divider:after{content:"";background:var(--line);flex:1;height:1px}.thread-divider span{font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:600}.reply-list{flex-direction:column;gap:10px;display:flex}.reply{border-radius:var(--radius-sm);grid-template-columns:30px minmax(0,1fr);gap:10px;padding:6px;display:grid}.reply:hover{background:var(--hover)}.thread .reply-quote-btn,.thread .thread-action-btn{width:26px;height:26px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:inline-grid}.thread .reply-quote-btn:hover,.thread .thread-action-btn:hover{background:var(--hover-strong);color:var(--text-strong)}.thread .reply-quote-btn:disabled,.thread .thread-action-btn:disabled{cursor:default;opacity:.45}.thread .thread-action-btn--danger{color:var(--danger)}.thread .thread-action-btn--danger:hover{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.thread .thread-more-actions{display:none}@media (hover:none),(pointer:coarse){.thread .group-body>header{min-height:28px;padding-right:32px;position:relative}.thread .reply-quote-btn,.thread .thread-action-btn:not(.thread-more-actions){display:none}.thread .thread-more-actions{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;display:inline-grid;position:absolute;top:0;right:0;overflow:hidden}.thread .thread-more-actions:focus-visible{clip:auto;clip-path:none;border:1px solid var(--line-strong);background:var(--panel);width:28px;height:28px;box-shadow:var(--shadow);margin:0;overflow:visible}}.reply-composer{--composer-card-top:10px;--composer-overlay-inset-x:14px;background:var(--panel);border-top:1px solid var(--line);padding:10px 14px 14px}.reply-composer .composer-row{border-radius:0}.thread-empty{text-align:center;grid-row:span 3;align-content:center;place-items:center;gap:8px;padding:32px 24px;display:grid}.thread-icon{background:var(--panel-2);width:56px;height:56px;color:var(--muted);border-radius:16px;place-items:center;display:grid}.thread-empty strong{color:var(--text-strong);font-size:15px}.thread-empty span{color:var(--muted);max-width:260px;font-size:13px;line-height:1.5}.profile-pane{overflow-y:auto}.profile-hero{background:linear-gradient(180deg, transparent, #0000003d), linear-gradient(135deg, hsl(var(--hue,220deg) 76% 58%), hsl(calc(var(--hue,220deg) + 54deg) 74% 38%));border-bottom:1px solid var(--line);place-items:end center;min-height:210px;padding:28px 20px;display:grid}.profile-avatar{aspect-ratio:1;color:#fff;background:#ffffff2e;border-radius:16px;place-items:center;width:min(240px,70%);font-size:clamp(48px,12vw,88px);font-weight:800;display:grid;overflow:hidden;box-shadow:0 26px 60px -30px #000000e6}.profile-avatar img{object-fit:cover;width:100%;height:100%}.profile-pane-body{gap:18px;padding:18px 16px 22px;display:grid}.profile-pane-title{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.profile-pane-title h2{color:var(--text-strong);letter-spacing:0;margin:0;font-size:22px}.profile-pane-title span{color:var(--muted);margin-top:3px;font-size:13px;display:block}.profile-pane-title .bot-badge{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);min-height:20px;color:var(--accent);border-radius:999px;align-items:center;margin-top:6px;padding:0 8px;font-size:11px;font-weight:800;line-height:1;display:inline-flex}.text-action{color:var(--accent);background:0 0;border:0;border-radius:6px;padding:4px 6px;font-size:13px;font-weight:700}.text-action:hover{background:var(--accent-soft)}.profile-presence{color:var(--text);align-items:center;gap:8px;font-size:14px;display:inline-flex}.profile-actions-row{grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px;display:grid}.profile-actions-row .primary-action,.profile-actions-row .ghost-action{border-radius:var(--radius);white-space:nowrap;justify-content:center;align-items:center;width:100%;min-width:0;height:48px;padding:0 16px;font-size:14px;font-weight:800;line-height:1;display:inline-flex}.moderation-actions{grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:8px;display:grid}.moderation-actions .primary-action,.moderation-actions .ghost-action,.moderation-actions .danger-action{border-radius:var(--radius);min-height:40px;font-size:13px;font-weight:800}.danger-action{border:1px solid color-mix(in srgb, var(--danger), transparent 35%);background:color-mix(in srgb, var(--danger), transparent 86%);color:var(--danger)}.role-pill{background:var(--panel-2);color:var(--muted);text-transform:uppercase;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800}.profile-info{border-top:1px solid var(--line);gap:12px;padding-top:18px;display:grid}.profile-info header{justify-content:space-between;align-items:center;gap:10px;display:flex}.profile-info header strong{color:var(--text-strong);font-size:14px}.profile-info-row{grid-template-columns:48px minmax(0,1fr);align-items:center;gap:14px;min-height:48px;display:grid}.info-icon{background:var(--panel-2);width:48px;height:48px;color:var(--muted);border-radius:12px;justify-content:center;align-items:center;line-height:1;display:inline-flex}.info-icon svg{flex:none;display:block}.profile-info-row>div>small,.profile-info-row>div>span{display:block}.profile-info-row>div>small{color:var(--muted);font-size:12px;line-height:1.2}.profile-info-row>div>span{color:var(--text);overflow-wrap:anywhere;font-size:14px;line-height:1.3}.profile-note{color:var(--muted);margin:0;font-size:13px;line-height:1.5}@media (width<=820px){.thread{min-height:100dvh}.thread>header{min-height:calc(60px + var(--safe-area-top));padding-top:calc(12px + var(--safe-area-top));padding-right:calc(16px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.thread-scroll{padding-right:calc(16px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.reply-composer{padding-right:calc(14px + var(--safe-area-right));padding-bottom:calc(14px + var(--safe-area-bottom));padding-left:calc(14px + var(--safe-area-left))}}.artifact-viewer{z-index:2;border-left:1px solid var(--line);background:var(--panel);opacity:0;pointer-events:none;grid-template-rows:auto minmax(0,1fr);min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(28px)}.artifact-viewer.open{opacity:1;pointer-events:auto;transform:translate(0)}.artifact-viewer__header{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--panel) 92%, var(--bg));justify-content:space-between;align-items:center;gap:16px;min-height:64px;padding:10px 12px 10px 16px;display:flex}.artifact-viewer__identity{grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:5px 10px;min-width:0;display:grid}.artifact-viewer__identity span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;grid-column:1/-1;font-size:11px;font-weight:700}.artifact-viewer__identity strong{min-width:0;color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.artifact-viewer__identity small{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}.artifact-viewer__actions,.artifact-viewer__segmented{align-items:center;gap:4px;display:inline-flex}.artifact-viewer__actions>a,.artifact-viewer__actions>button,.artifact-viewer__segmented button,.artifact-viewer__pdf-toolbar button{border-radius:var(--radius-sm);min-width:32px;height:32px;color:var(--muted);background:0 0;border:1px solid #0000;place-items:center;padding:0 9px;text-decoration:none;display:inline-grid}.artifact-viewer__office-toolbar button,.artifact-viewer__sheet-tabs button{border-radius:var(--radius-sm);min-height:30px;color:var(--muted);background:0 0;border:1px solid #0000;padding:0 10px;font-size:11px}.artifact-viewer__actions>button{font-size:20px;line-height:1}.artifact-viewer__actions>a:hover,.artifact-viewer__actions>button:hover,.artifact-viewer__segmented button:hover,.artifact-viewer__pdf-toolbar button:hover:not(:disabled){border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.artifact-viewer__actions :focus-visible,.artifact-viewer__pdf-toolbar button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.artifact-viewer__segmented{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);padding:2px}.artifact-viewer__segmented button{min-width:58px;height:28px;font-size:11px;font-weight:650}.artifact-viewer__segmented button.active{border-color:var(--line);background:var(--panel);color:var(--text-strong)}.artifact-viewer__body{background:var(--bg);min-height:0;overflow:auto}.artifact-viewer__state{min-height:100%;color:var(--muted);text-align:center;align-content:center;justify-items:center;gap:10px;padding:32px 24px;display:grid}.artifact-viewer__state strong{color:var(--text-strong);font-size:15px}.artifact-viewer__state p{max-width:34ch;margin:0;font-size:13px;line-height:1.5}.artifact-viewer__state a{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel);min-height:36px;color:var(--text-strong);margin-top:4px;padding:8px 12px;font-size:13px;font-weight:650;text-decoration:none}.artifact-viewer__state--error svg{color:var(--danger)}.artifact-viewer__spinner{border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;width:26px;height:26px;animation:.7s linear infinite artifact-spin}@keyframes artifact-spin{to{transform:rotate(360deg)}}.artifact-viewer__source{background:color-mix(in srgb, var(--bg) 90%, #090b10);width:max-content;min-width:100%;min-height:100%;color:var(--text);font-family:var(--font-mono);tab-size:2;white-space:pre;margin:0;padding:20px;font-size:12px;line-height:1.65}.artifact-viewer__source code{font:inherit}.artifact-viewer__document{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);width:min(100%,760px);min-height:calc(100% - 32px);color:var(--text);overflow-wrap:anywhere;margin:16px auto;padding:clamp(24px,5vw,56px);font-size:15px;line-height:1.65}.artifact-viewer__document>:first-child{margin-top:0}.artifact-viewer__document>:last-child{margin-bottom:0}.artifact-viewer__document h1,.artifact-viewer__document h2,.artifact-viewer__document h3{color:var(--text-strong);line-height:1.25}.artifact-viewer__document h1{font-size:28px}.artifact-viewer__document h2{margin-top:1.75em;font-size:21px}.artifact-viewer__document h3{margin-top:1.5em;font-size:17px}.artifact-viewer__document pre{border-radius:var(--radius);background:var(--panel-2);padding:14px;overflow:auto}.artifact-viewer__document code{font-family:var(--font-mono)}.artifact-viewer__document table{border-collapse:collapse;width:100%}.artifact-viewer__document th,.artifact-viewer__document td{border:1px solid var(--line-strong);text-align:left;padding:8px 10px}.artifact-viewer__document img{max-width:100%;height:auto}.artifact-viewer__document a{color:var(--accent)}.artifact-viewer__body.is-pdf{grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.artifact-viewer__body.is-office{grid-template-rows:auto minmax(0,1fr) auto;display:grid;overflow:hidden}.artifact-viewer__office-toolbar,.artifact-viewer__sheet-tabs{border-bottom:1px solid var(--line);background:var(--panel);min-height:44px;color:var(--muted);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:4px;padding:6px 10px;font-size:11px;display:flex}.artifact-viewer__office-toolbar button:disabled{cursor:not-allowed;opacity:.4}.artifact-viewer__office-toolbar button:hover:not(:disabled),.artifact-viewer__sheet-tabs button:hover,.artifact-viewer__sheet-tabs button.active{border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.artifact-viewer__office-toolbar button:focus-visible,.artifact-viewer__sheet-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.artifact-viewer__office-toolbar{flex-wrap:wrap}.artifact-viewer__spreadsheet{background:var(--panel);min-height:0;overflow:auto}.artifact-viewer__spreadsheet table{table-layout:fixed;border-spacing:0;border-collapse:separate;width:max-content;color:var(--text);font-size:12px}.artifact-viewer__spreadsheet th,.artifact-viewer__spreadsheet td{box-sizing:border-box;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--panel);text-align:left;text-overflow:ellipsis;white-space:nowrap;width:160px;min-width:160px;max-width:160px;height:30px;padding:5px 8px;overflow:hidden}.artifact-viewer__spreadsheet thead th{z-index:2;background:var(--panel-2);color:var(--muted);text-align:center;position:sticky;top:0}.artifact-viewer__spreadsheet .row-heading{z-index:1;background:var(--panel-2);width:44px;min-width:44px;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;position:sticky;left:0}.artifact-viewer__spreadsheet thead .row-heading{z-index:3}.artifact-viewer__grid-note{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:max-content;max-width:min(480px,100vw - 48px);color:var(--muted);white-space:normal;margin:16px;padding:8px 10px;font-size:12px;line-height:1.45;position:sticky;left:0}.artifact-viewer__sheet-tabs{border-top:1px solid var(--line);border-bottom:0;justify-content:flex-start;overflow-x:auto}.artifact-viewer__sheet-tabs button{flex:none}.artifact-viewer__slide-stage{align-content:center;place-items:center;gap:12px;min-height:0;padding:24px;display:grid;overflow:auto}.artifact-viewer__slide{aspect-ratio:16/9;color:#172033;background:#fff;flex-direction:column;justify-content:safe center;width:min(100%,860px);padding:48px;display:flex;overflow:auto;box-shadow:0 16px 48px -24px #000000a6}.artifact-viewer__slide h2{letter-spacing:0;margin:0 0 .7em;font-size:36px;line-height:1.15}.artifact-viewer__slide p{margin:.35em 0;font-size:20px;line-height:1.4}.artifact-viewer__office-note{color:var(--muted);margin:0;font-size:12px}@media (width<=640px){.artifact-viewer__slide{padding:28px}.artifact-viewer__slide h2{font-size:24px}.artifact-viewer__slide p{font-size:15px}}.artifact-viewer__pdf-toolbar{border-bottom:1px solid var(--line);background:var(--panel);min-height:44px;color:var(--muted);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:4px;padding:6px 10px;font-size:11px;display:flex}.artifact-viewer__pdf-toolbar button{min-width:30px;height:30px;font-size:11px}.artifact-viewer__pdf-toolbar button:disabled{cursor:not-allowed;opacity:.4}.artifact-viewer__toolbar-divider{background:var(--line);width:1px;height:18px;margin:0 4px}.artifact-viewer__pdf-stage{text-align:center;min-height:0;padding:24px;overflow:auto}.artifact-viewer__pdf-stage canvas{background:#fff;max-width:none;transition:opacity .12s;display:inline-block;box-shadow:0 16px 48px -24px #000000a6}.artifact-viewer__pdf-text{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.artifact-viewer__pdf-stage.is-rendering canvas{opacity:.55}.hljs-comment,.hljs-quote{color:var(--muted);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-section,.hljs-link{color:var(--accent)}.hljs-string,.hljs-title,.hljs-name,.hljs-type,.hljs-attribute,.hljs-symbol,.hljs-bullet,.hljs-addition{color:var(--success)}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-params{color:var(--activity-accent)}.hljs-deletion{color:var(--danger)}@media (width<=820px){.artifact-viewer{z-index:40;border-left:0;min-height:100dvh;position:fixed;inset:0}.artifact-viewer__header{min-height:calc(64px + var(--safe-area-top));padding-top:calc(10px + var(--safe-area-top));padding-right:calc(12px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.artifact-viewer__identity small{display:none}.artifact-viewer__document{border:0;border-radius:0;min-height:100%;margin:0}}@media (prefers-reduced-motion:reduce){.artifact-viewer{transition:none}.artifact-viewer__spinner{animation-duration:1.4s}}.modal-scrim{z-index:50;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#05080f8a;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-backdrop{background:0 0;border:0;position:absolute;inset:0}.modal-backdrop:focus{outline:0}.profile-modal{z-index:1;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius-xl);width:min(480px,100%);box-shadow:var(--key-edge), var(--shadow);animation:.15s ease-out settings-modal-fade;position:relative;overflow:hidden}.profile-modal>header{justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 20px 4px;display:flex}.profile-modal>header p{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;margin:0 0 4px;font-size:10px;font-weight:600}.profile-modal>header h2{color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:20px;font-weight:700}.profile-modal>header>button{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:28px;height:28px;color:var(--muted);flex:none;place-items:center;font-size:16px;line-height:1;display:grid}.profile-modal>header>button:hover{background:var(--panel-3);color:var(--text-strong)}.create-modal{width:min(420px,100%)}.profile-form{gap:14px;padding:20px;display:grid}.profile-preview{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);align-items:center;gap:14px;padding:14px;display:flex}.profile-preview strong,.profile-preview span{display:block}.profile-preview strong{color:var(--text-strong);font-size:15px}.profile-preview span{color:var(--muted);font-size:13px}.field{gap:6px;display:grid}.field span{color:var(--muted);font-size:12px;font-weight:700}.field input,.field select{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:100%;height:38px;color:var(--text);padding:0 12px}.field select{cursor:pointer}.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.check-field{align-items:center;gap:10px;display:flex}.check-field input{width:16px;height:16px;padding:0}.profile-status{color:var(--success);font-size:12px}.profile-status.error{color:var(--danger)}.profile-actions{justify-content:flex-end;gap:8px;padding-top:4px;display:flex}.person-picker{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);gap:4px;max-height:240px;padding:4px;display:grid;overflow-y:auto}.person-choice{border-radius:var(--radius-sm);width:100%;min-height:44px;color:var(--text);text-align:left;background:0 0;border:0;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:10px;padding:6px 8px;display:grid}.person-choice:hover{background:var(--hover-strong)}.person-choice .dm-avatar{width:32px;height:32px}.person-choice strong,.person-choice small{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.person-choice strong{color:var(--text-strong);font-size:13px}.person-choice small{color:var(--muted);font-size:12px}.person-empty{color:var(--muted);padding:10px 8px;font-size:12px}.profile-actions .ghost-action,.profile-actions .primary-action,.profile-actions .danger-action{box-sizing:border-box;border-radius:var(--radius);white-space:nowrap;min-height:44px;box-shadow:var(--key-edge);flex:none;justify-content:center;align-items:center;padding:0 14px;font-weight:700;line-height:1;transition:background .12s,box-shadow 80ms,transform 80ms;display:inline-flex}.ghost-action{border:1px solid var(--line-strong);background:var(--panel);color:var(--text)}.primary-action{border:1px solid color-mix(in srgb, var(--accent) 70%, var(--text-strong));background:var(--accent);color:var(--accent-contrast)}.profile-actions .danger-action{border:1px solid color-mix(in srgb, var(--danger) 76%, var(--text-strong));background:var(--danger);color:#fff}.ghost-action:hover{background:var(--hover)}.primary-action:hover{background:var(--accent-hover)}.profile-actions .danger-action:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 86%, #000)}.profile-actions .ghost-action:disabled,.profile-actions .primary-action:disabled,.profile-actions .danger-action:disabled{cursor:default;opacity:.58}.profile-actions .ghost-action:active,.profile-actions .primary-action:active,.profile-actions .danger-action:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.delete-message-scrim{padding:20px}.delete-message-modal{width:min(520px,100%)}.delete-message-modal>header{padding-bottom:10px}.delete-message-content{gap:18px;padding:4px 20px 20px;display:grid}.delete-message-content>p{color:var(--text);margin:0;font-size:14px;line-height:1.5}.delete-message-preview{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);grid-template-columns:36px minmax(0,1fr);align-items:start;gap:12px;padding:14px;display:grid}.delete-message-preview__content{min-width:0}.delete-message-preview>.avatar{border-radius:9px;width:36px;height:36px;margin:0}.delete-message-preview__meta{align-items:baseline;gap:8px;min-width:0;display:flex}.delete-message-preview__meta strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.delete-message-preview__meta time{color:var(--muted);flex:none;font-size:11px}.delete-message-preview__body{max-height:128px;color:var(--text);overflow-wrap:anywhere;white-space:pre-wrap;margin-top:4px;font-size:14px;line-height:1.45;overflow:auto}.delete-message-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-top:0;display:grid}.delete-message-actions button{width:100%}@media (width<=520px){.delete-message-modal{width:100%}.delete-message-content,.delete-message-modal>header{padding-inline:16px}}.image-viewer-scrim{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#000000c7;padding:28px}.image-viewer{z-index:1;color:#fff;background:#07090f;border:1px solid #ffffff1f;border-radius:14px;grid-template-rows:auto minmax(0,1fr);width:min(1280px,100%);height:min(900px,100dvh - 56px);max-height:100%;animation:.15s cubic-bezier(.2,.8,.2,1) picker-in;display:grid;position:relative;overflow:hidden;box-shadow:0 34px 90px -34px #000000f2}.image-viewer>header{background:#ffffff0a;border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;gap:16px;min-height:52px;padding:10px 12px 10px 16px;display:flex}.image-viewer>header strong{color:#fff;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.image-viewer>header div{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.image-viewer>header a{color:#fff;background:#ffffff14;border-radius:7px;align-items:center;height:30px;padding:0 10px;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.image-viewer>header a:hover{background:#ffffff24}.image-viewer>header a:focus-visible,.image-viewer>header button:focus-visible{outline-offset:2px;outline:2px solid #fff}.image-viewer>header button{color:#ffffffc7;background:0 0;border:0;border-radius:7px;place-items:center;width:30px;height:30px;font-size:22px;line-height:1;display:grid}.image-viewer>header button:hover{color:#fff;background:#ffffff1f}.image-viewer-stage{place-items:center;min-height:0;padding:18px;display:grid}.image-viewer-stage img{object-fit:contain;background:#ffffff0a;border-radius:8px;max-width:100%;max-height:100%;display:block}@media (width<=720px),(height<=520px) and (orientation:landscape){.image-viewer-scrim{padding:0}.image-viewer{border:0;border-radius:0;width:100%;height:100dvh}.image-viewer>header{padding-top:calc(10px + var(--safe-area-top));padding-right:calc(12px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.image-viewer-stage{padding-right:calc(12px + var(--safe-area-right));padding-bottom:calc(12px + var(--safe-area-bottom));padding-left:calc(12px + var(--safe-area-left))}}.mobile-nav-toggle{top:calc(14px + var(--safe-area-top));left:calc(14px + var(--safe-area-left));z-index:30;border:1px solid var(--line-strong);background:var(--panel);width:38px;height:38px;color:var(--text);border-radius:10px;font-size:22px;line-height:1;display:none;position:fixed}.mobile-nav-toggle .bars{gap:3px;display:grid}.mobile-nav-toggle .bars i{background:currentColor;border-radius:2px;width:16px;height:2px;display:block}.mobile-nav-backdrop{display:none}@media (width<=1180px){.shell{grid-template-columns:72px 240px minmax(0,1fr)}.shell.sidebar-collapsed,.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:72px 0 minmax(0,1fr)}.thread,.search-results{width:min(420px,100vw);box-shadow:var(--shadow);z-index:4;border-left:1px solid var(--line-strong);transition:transform .18s;position:fixed;inset:0 0 0 auto;transform:translate(100%)}.thread.open,.search-results{transform:translate(0)}.desktop-shell .thread,.desktop-shell .search-results{top:52px;bottom:0}}@media (width<=820px){.mobile-nav-toggle{place-items:center;display:grid}.shell,.shell.thread-open,.shell.search-open,.shell.sidebar-collapsed,.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:1fr}.sidebar-collapsed .sidebar{opacity:1;pointer-events:none;transform:translate(calc(-100% - 72px))}.guild-rail,.sidebar{z-index:20;pointer-events:none;height:100dvh;transition:transform .18s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.guild-rail{width:72px;padding-top:calc(14px + var(--safe-area-top));padding-bottom:calc(14px + var(--safe-area-bottom))}.sidebar{width:min(260px,100vw - 72px);left:72px;transform:translate(calc(-100% - 72px))}.nav-open .guild-rail,.nav-open .sidebar{pointer-events:auto;transform:translate(0,0)}.nav-open .guild-rail{padding-top:calc(62px + var(--safe-area-top))}.desktop-shell .guild-rail,.desktop-shell .sidebar{height:calc(100dvh - 52px);top:52px}.desktop-shell.nav-open .guild-rail{padding-top:calc(14px + var(--safe-area-top))}.desktop-shell .mobile-nav-backdrop{top:52px}.mobile-nav-backdrop{z-index:15;background:#05081075;border:0;padding:0;display:block;position:fixed;inset:0 0 0 min(332px,100vw)}.topbar{min-height:calc(60px + var(--safe-area-top));padding-top:calc(12px + var(--safe-area-top));padding-right:calc(20px + var(--safe-area-right));padding-left:calc(64px + var(--safe-area-left))}.search{width:180px}}@media (width<=520px){.search,.topbar-meta,.topbar-divider{display:none}}.message-row.highlight,.thread-root.highlight,.reply.highlight{animation:1.4s ease-out quote-flash}@keyframes quote-flash{0%{background:color-mix(in srgb, var(--accent) 22%, transparent)}to{background:0 0}}.quote-block{color:inherit;cursor:pointer;text-align:left;max-width:100%;font:inherit;background:0 0;border:0;border-radius:6px;align-items:stretch;gap:.5rem;margin:0 0 .35rem;padding:.25rem .5rem .25rem 0;display:inline-flex}.quote-block:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 8%, transparent)}.quote-block:disabled{cursor:default;opacity:.75}.quote-block .quote-bar{background:var(--accent);border-radius:2px;flex:0 0 3px;align-self:stretch;width:3px}.quote-block .quote-content{flex-direction:column;gap:.1rem;min-width:0;display:flex}.quote-block .quote-author{color:var(--accent);font-size:.78rem;font-weight:600}.quote-block .quote-snippet{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:56ch;font-size:.85rem;overflow:hidden}.quote-block .quote-snippet.muted{opacity:.75;font-style:italic}.quote-preview{background:color-mix(in srgb, var(--accent) 5%, transparent);border:0;border-bottom:1px solid var(--line);color:var(--muted);border-radius:0;align-items:center;gap:.5rem;margin:0;padding:6px 10px 6px 12px;font-size:12.5px;display:flex}.quote-preview .quote-bar{display:none}.quote-preview-body{flex:1;align-items:baseline;gap:.4rem;min-width:0;display:flex;overflow:hidden}.quote-preview-label{color:color-mix(in srgb, var(--accent) 85%, var(--text));white-space:nowrap;font-size:12px}.quote-preview-label strong{color:var(--text-strong);font-weight:600}.quote-preview-snippet{white-space:nowrap;text-overflow:ellipsis;color:var(--muted);flex:1;min-width:0;font-size:12px;overflow:hidden}.quote-preview-clear{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 6px;font-size:16px;line-height:1;transition:background .1s,color .1s}.quote-preview-clear:hover{color:var(--text-strong);background:var(--hover-strong)}.reply-quote-btn{color:var(--muted);cursor:pointer;opacity:0;background:0 0;border:0;margin-left:auto;padding:0 .3rem;font-size:.95rem;transition:opacity .15s;position:relative}.reply:hover .reply-quote-btn,.thread-root:hover .reply-quote-btn,.reply-quote-btn:focus-visible{opacity:1}.reply-quote-btn:hover{color:var(--accent)}.tooltip{position:relative}.tooltip:before,.reply-quote-btn:before{content:attr(data-tooltip);z-index:20;background:var(--tooltip-bg);color:var(--tooltip-fg);white-space:nowrap;opacity:0;pointer-events:none;border-radius:9px;padding:.42rem .62rem;font-size:.78rem;font-weight:700;line-height:1;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%,4px)scale(.96);box-shadow:0 10px 28px #00000047}.tooltip:after,.reply-quote-btn:after{content:"";z-index:20;background:var(--tooltip-bg);opacity:0;pointer-events:none;border-radius:2px;width:12px;height:12px;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 5px);left:50%;transform:translate(-50%,4px)rotate(45deg)scale(.9)}.tooltip:hover:before,.tooltip:focus-visible:before,.reply-quote-btn:hover:before,.reply-quote-btn:focus-visible:before,.tooltip:hover:after,.tooltip:focus-visible:after,.reply-quote-btn:hover:after,.reply-quote-btn:focus-visible:after{opacity:1;transform:translate(-50%)scale(1)}.tooltip:hover:after,.tooltip:focus-visible:after,.reply-quote-btn:hover:after,.reply-quote-btn:focus-visible:after{transform:translate(-50%)rotate(45deg)scale(1)}.tooltip-align-end:before{transform-origin:100% 100%;left:auto;right:0;transform:translateY(4px)scale(.96)}.tooltip-align-end:hover:before,.tooltip-align-end:focus-visible:before{transform:translateY(0)scale(1)}.settings-modal-scrim{z-index:1000;color:var(--text);-webkit-font-smoothing:antialiased;background:var(--lightningcss-light,#080a0e6b)var(--lightningcss-dark,#0000008c);place-items:center;font-size:14px;line-height:1.5;animation:.15s ease-out settings-modal-fade;display:grid;position:fixed;inset:0}@keyframes settings-modal-fade{0%{opacity:0}to{opacity:1}}.settings-modal{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);width:min(1100px,96vw);height:min(760px,92vh);box-shadow:var(--shadow);grid-template-columns:232px minmax(0,1fr);display:grid;position:relative;overflow:hidden}.settings-modal__close{z-index:6;width:28px;height:28px;color:var(--muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;place-items:center;transition:background .12s,color .12s;display:grid;position:absolute;top:14px;right:14px}.settings-modal__close:hover{background:var(--hover);color:var(--text-strong)}.settings-modal__rail{background:var(--panel-2);border-right:1px solid var(--line);flex-direction:column;padding:16px 10px;display:flex;overflow-y:auto}.settings-modal__rail-group+.settings-modal__rail-group{margin-top:14px}.settings-modal__rail-heading{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0;padding:6px 8px 4px;font-size:10px;font-weight:600}.settings-modal__rail ul{margin:0;padding:0;list-style:none}.settings-modal__rail-item{border-radius:var(--radius-sm);cursor:pointer;width:100%;font:inherit;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:10px;margin:1px 0;padding:6px 10px;font-size:13.5px;line-height:1.4;transition:background .1s,color .1s;display:flex}.settings-modal__rail-item:hover{background:var(--hover)}.settings-modal__rail-item.is-active{background:var(--hover-strong);color:var(--text-strong);font-weight:600}.settings-modal__rail-icon{width:16px;height:16px;color:var(--muted);flex-shrink:0;place-items:center;display:grid}.settings-modal__rail-icon svg{width:16px;height:16px;display:block}.settings-modal__rail-item.is-active .settings-modal__rail-icon{color:var(--text-strong)}.settings-modal__rail-avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:4px;flex-shrink:0;place-items:center;width:18px;height:18px;font-size:9px;font-weight:700;display:grid;overflow:hidden}.settings-modal__rail-avatar img{object-fit:cover;width:100%;height:100%;display:block}.settings-modal__rail-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.settings-modal__content{background:var(--panel);color:var(--text);padding:40px 56px 56px;overflow-y:auto}.settings-modal__content .settings-page__header{margin-bottom:32px}.settings-modal__content .settings-page__eyebrow{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0 0 6px;font-size:10px;font-weight:600}.settings-modal__content .settings-page__h1{letter-spacing:-.01em;color:var(--text-strong);font-size:26px;font-weight:700;line-height:1.2;font-family:var(--font-display);margin:0 0 6px}.settings-modal__content .settings-page__lead{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.settings-modal__content .settings-form{flex-direction:column;gap:24px;max-width:640px;display:flex}.settings-modal__content .settings-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-top:8px;padding-top:20px;display:flex}.settings-modal__content .settings-footer__spacer{flex:1}.settings-modal__content .settings-section{flex-direction:column;gap:20px;display:flex}.settings-modal__content .settings-section__h{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 4px;font-size:12px;font-weight:600}.settings-modal__content .settings-field{flex-direction:column;gap:6px;display:flex}.settings-modal__content .settings-field__label{color:var(--text-strong);font-size:13px;font-weight:600}.settings-modal__content .settings-field__hint{color:var(--muted);margin:0;font-size:12.5px;line-height:1.5}.settings-modal__content .settings-field__hint.is-error{color:var(--danger)}.settings-modal__content .settings-identity{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:14px;padding:14px 16px;display:flex}.settings-modal__content .settings-identity__meta{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.settings-modal__content .settings-identity__name{color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;line-height:1.25;overflow:hidden}.settings-modal__content .settings-identity__handle{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:13px;line-height:1.3;overflow:hidden}.settings-modal__content .settings-identity__tag{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:999px;flex-shrink:0;padding:3px 8px;font-size:10px;font-weight:600}.settings-modal__content .settings-rows{flex-direction:column;display:flex}.settings-modal__content .settings-rows--sectioned .settings-row2{border-top:0;align-items:center;padding:12px 0}.settings-modal__content .settings-row2{border-top:1px solid var(--line);grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:32px;padding:20px 0;display:grid}.settings-modal__content .settings-row2--toggle{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px}.settings-modal__content .settings-row2:first-child{border-top:0;padding-top:4px}.settings-modal__content .settings-row2__desc{min-width:0}.settings-modal__content .settings-row2__label{color:var(--text-strong);margin-bottom:4px;font-size:13.5px;font-weight:600;display:block}.settings-modal__content .settings-row2__hint{color:var(--muted);margin:0;font-size:12.5px;line-height:1.5}.settings-modal__content .settings-row2__control{flex-direction:column;align-items:flex-start;gap:8px;min-width:0;max-width:380px;display:flex}.settings-modal__content .settings-row2__control--end{flex-direction:row;justify-content:center;align-items:flex-end;max-width:none}.settings-modal__content .settings-rows__head{border-top:1px solid var(--line);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0;padding:24px 0 12px;font-size:11px;font-weight:600}.settings-modal__content .settings-rows__head:first-child{border-top:0;padding-top:4px}.settings-modal__content .settings-rows__head+.settings-row2{border-top:0;padding-top:0}.settings-modal__content .settings-input-group{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);align-items:stretch;width:100%;transition:border-color .12s,box-shadow .12s,background .12s;display:flex}.settings-modal__content .settings-input-group:hover{border-color:var(--line-strong)}.settings-modal__content .settings-input-group:focus-within{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px var(--accent-soft)}.settings-modal__content .settings-input-group__prefix{color:var(--muted);border-right:1px solid var(--line);background:var(--panel-2);border-radius:var(--radius-sm) 0 0 var(--radius-sm);place-items:center;padding:0 10px;font-size:14px;font-weight:500;display:grid}.settings-modal__content .settings-input--in-group{box-shadow:none!important;border-radius:0 var(--radius-sm) var(--radius-sm) 0!important;background:0 0!important;border:0!important;max-width:none!important}.settings-modal__content .settings-input--in-group:focus{box-shadow:none!important;background:0 0!important;border:0!important}.settings-modal__content .settings-linklike{color:var(--muted);cursor:pointer;font:inherit;text-underline-offset:2px;background:0 0;border:0;padding:2px 0;font-size:12.5px;text-decoration:underline;transition:color .12s}.settings-modal__content .settings-linklike:hover{color:var(--text-strong)}.settings-modal__content .settings-row{grid-template-columns:1fr auto;align-items:center;gap:24px;display:grid}.settings-modal__content .settings-row__main{min-width:0}.settings-modal__content .settings-row__label{color:var(--text-strong);margin-bottom:2px;font-size:13.5px;font-weight:600}.settings-modal__content .settings-row__hint{color:var(--muted);font-size:12.5px;line-height:1.5}.settings-modal__content .settings-row__hint.is-error{color:var(--danger)}.settings-modal__content .settings-input{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;max-width:420px;height:36px;color:var(--text);font:inherit;padding:0 12px;font-size:14px;transition:border-color .12s,box-shadow .12s,background .12s}.settings-modal__content .settings-input:hover{border-color:var(--line-strong)}.settings-modal__content .settings-input:focus{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-input--wide{max-width:560px}.settings-modal__content .settings-row .settings-input{width:auto;min-width:240px;max-width:320px}.settings-modal__content .settings-button{background:var(--panel-2);height:34px;color:var(--text);border:1px solid var(--line-strong);border-radius:var(--radius);font:inherit;cursor:pointer;white-space:nowrap;box-shadow:var(--key-edge);justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:13.5px;font-weight:600;transition:background .1s,border-color .1s,box-shadow 80ms,transform 80ms;display:inline-flex}.settings-modal__content .settings-button:hover{background:var(--panel-3);border-color:var(--line-strong)}.settings-modal__content .settings-button:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.settings-modal__content .settings-button:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-button:disabled{opacity:.55;cursor:not-allowed}.settings-modal__content .settings-button--primary{background:var(--accent);color:var(--accent-contrast);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong))}.settings-modal__content .settings-button--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.settings-modal__content .settings-switch{appearance:none;background:var(--line-strong);cursor:pointer;border:0;border-radius:9px;flex-shrink:0;width:32px;height:18px;margin:0;transition:background .15s;position:relative}.settings-modal__content .settings-switch:checked{background:var(--accent)}.settings-modal__content .settings-switch:disabled{opacity:.5;cursor:not-allowed}.settings-modal__content .settings-switch:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.settings-modal__content .settings-switch:checked:after{transform:translate(14px)}.settings-modal__content .settings-switch:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-actions{justify-content:flex-end;align-items:center;gap:12px;margin-top:4px;display:flex}.settings-modal__content .settings-status{color:var(--muted);margin:0;font-size:13px}.settings-modal__content .settings-status.is-error{color:var(--danger)}@media (width<=720px){.settings-modal{border-radius:0;grid-template-rows:auto 1fr;grid-template-columns:1fr;width:100vw;height:100dvh}.settings-modal__rail{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;padding:8px;overflow-x:auto}.settings-modal__content{padding:24px 20px 60px}.settings-modal__content .settings-row2{grid-template-columns:1fr;gap:10px}.settings-modal__content .settings-row2__control{max-width:none}}.ws-settings{color:var(--text);z-index:50;background:var(--lightningcss-light,#0f0f0f38)var(--lightningcss-dark,#00000059);place-items:center;padding:28px 80px 28px 28px;font-size:14px;line-height:1.5;display:grid;position:fixed;inset:0}.ws-settings__panel{background:var(--panel);border:1px solid var(--line);width:100%;max-width:1400px;height:100%;box-shadow:var(--shadow);grid-template-columns:260px minmax(0,1fr);display:grid;overflow:hidden}.ws-settings__rail{background:var(--panel-2);border-right:1px solid var(--line);flex-direction:column;padding:14px 10px 18px;display:flex;overflow-y:auto}.ws-settings__rail-search{margin:2px 4px 12px;position:relative}.ws-settings__rail-search-icon{color:var(--muted);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.ws-settings__rail-search-icon svg{width:14px;height:14px;display:block}.ws-settings__rail-search-input{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;height:32px;color:var(--text);font:inherit;padding:0 12px 0 32px;font-size:13px}.ws-settings__rail-search-input::placeholder{color:var(--muted)}.ws-settings__rail-search-input:disabled{cursor:not-allowed;opacity:.65}.ws-settings__rail-group{margin-top:6px}.ws-settings__rail-heading{color:var(--muted);letter-spacing:.02em;margin:0;padding:8px 10px 6px;font-size:11.5px;font-weight:600}.ws-settings__rail-heading-name{color:var(--text-strong);font-weight:700}.ws-settings__rail-list{margin:0;padding:0;list-style:none}.ws-settings__rail-item{border-radius:var(--radius-sm);cursor:pointer;width:100%;font:inherit;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:10px;margin:1px 0;padding:6px 10px;font-size:14px;line-height:1.4;transition:background .1s,color .1s;display:flex}.ws-settings__rail-item:hover{background:var(--hover)}.ws-settings__rail-item.is-active{background:var(--hover-strong);color:var(--text-strong);font-weight:600}.ws-settings__rail-item-icon{width:16px;height:16px;color:var(--muted);flex-shrink:0;place-items:center;display:grid}.ws-settings__rail-item-icon svg{width:16px;height:16px;display:block}.ws-settings__rail-item.is-active .ws-settings__rail-item-icon{color:var(--text-strong)}.ws-settings__rail-item-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ws-settings__content{background:var(--bg);position:relative;overflow-y:auto}.ws-settings__content-inner{max-width:740px;padding:56px 80px 80px}.ws-settings__close{border:1px solid var(--line-strong);background:var(--panel);width:36px;height:36px;color:var(--text-strong);cursor:pointer;z-index:60;border-radius:50%;place-items:center;transition:background .12s,color .12s,border-color .12s;display:grid;position:fixed;top:28px;right:22px;box-shadow:0 1px 3px #00000026}@media (width<=760px){.ws-settings{padding:0}.ws-settings__panel{border:0;border-radius:0;max-width:none}}.ws-settings__close:hover{background:var(--panel-2);color:var(--text-strong);border-color:var(--line-strong)}.ws-settings__error{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);color:var(--danger);margin:0 0 20px;padding:14px 16px;font-size:13.5px}.ws-settings .ws-page__header{margin-bottom:32px}.ws-settings .ws-page__h1{letter-spacing:-.01em;color:var(--text-strong);font-size:28px;font-weight:700;line-height:1.2;font-family:var(--font-display);margin:0 0 8px}.ws-settings .ws-page__lead{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.workspace-settings-empty{background:var(--panel-2);border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);padding:24px;font-size:14px;line-height:1.6}.workspace-settings-empty p{margin:0}.ws-section{border-top:1px solid var(--line);flex-direction:column;margin-top:24px;display:flex}.ws-section__h{color:var(--text-strong);margin:0;padding:18px 0 6px;font-size:14px;font-weight:700}.ws-row{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding:18px 0;display:grid}.ws-section>.ws-row:first-child,.ws-section>.ws-section__h+.ws-row{border-top:0}.ws-row__main{min-width:0}.ws-row__label{color:var(--text-strong);margin-bottom:4px;font-size:14px;font-weight:600}.ws-row__hint{color:var(--muted);font-size:13px;line-height:1.5}.ws-row__hint b{color:var(--text-strong);font-weight:600}.ws-row__value{color:var(--text-strong);text-align:right;word-break:break-word;max-width:320px;font-size:14px;font-weight:500}.ws-row__control{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;max-width:420px;display:flex}.ws-strip{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:12px;margin-bottom:8px;padding:10px 14px;font-size:14px;display:flex}.ws-strip__avatar{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));width:28px;height:28px;color:var(--brand-contrast);border-radius:6px;flex-shrink:0;place-items:center;font-size:12px;font-weight:700;display:grid;overflow:hidden}.ws-strip__avatar img{object-fit:cover;width:100%;height:100%;display:block}.ws-strip__name{color:var(--text-strong);font-weight:600}.ws-strip__pill{letter-spacing:.01em;border-radius:999px;margin-left:auto;padding:2px 10px;font-size:12px;font-weight:600}.ws-strip__pill--owner{background:color-mix(in srgb, var(--success) 15%, transparent);color:var(--success);border:1px solid color-mix(in srgb, var(--success) 32%, transparent)}.ws-strip__pill--moderator{background:color-mix(in srgb, var(--delivery-accent) 15%, transparent);color:var(--delivery-accent);border:1px solid color-mix(in srgb, var(--delivery-accent) 32%, transparent)}.ws-strip__pill--member,.ws-strip__pill--guest,.ws-strip__pill--bot{background:var(--panel-3,var(--hover));color:var(--text);border:1px solid var(--line)}.ws-input{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);width:220px;max-width:100%;height:34px;color:var(--text-strong);font:inherit;padding:0 12px;font-size:14px}.ws-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.ws-input:disabled{opacity:.65;cursor:not-allowed}.ws-select{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);width:220px;max-width:100%;height:34px;color:var(--text-strong);font:inherit;padding:0 34px 0 10px;font-size:13.5px}.ws-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.ws-select:disabled{opacity:.65;cursor:not-allowed}.ws-file{display:none}.ws-actions{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:12px;padding:14px 0 0;display:flex}.ws-status{min-height:20px;color:var(--muted);flex:1;margin:0;font-size:13px}.ws-status.is-error{color:var(--danger)}.ws-input[readonly]{cursor:default;color:var(--text)}.ws-btn{background:var(--panel-2);border:1px solid var(--line-strong);border-radius:var(--radius);height:34px;color:var(--text-strong);font:inherit;cursor:pointer;box-shadow:var(--key-edge);padding:0 14px;font-size:13.5px;font-weight:500;transition:background .12s,color .12s,border-color .12s,box-shadow 80ms,transform 80ms}.ws-btn:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.ws-btn:hover:not(:disabled){background:var(--panel-3,var(--hover-strong));border-color:var(--line-strong)}.ws-btn:disabled{opacity:.55;cursor:not-allowed}.ws-btn--danger{color:var(--danger);border-color:var(--line)}.ws-btn--danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 9%, transparent);border-color:var(--danger)}.ws-btn--primary{background:var(--accent);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong));color:var(--accent-contrast);align-items:center;gap:6px;display:inline-flex}.ws-btn--primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.ws-btn--primary svg{width:14px;height:14px}.ws-settings__content:has(.ws-members-page){overflow:hidden}.ws-settings__content-inner:has(.ws-members-page){flex-direction:column;max-width:none;height:100%;min-height:0;padding:56px 80px 28px;display:flex}.ws-members-page{flex-direction:column;flex:1;min-height:0;display:flex}.ws-members-page__header{flex:none}.ws-members__toolbar{background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:16px;margin:4px 0 12px;padding:14px 0 12px;display:flex}.ws-members__count{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:12.5px;font-weight:600}.ws-members__controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ws-members__search{align-items:center;display:flex;position:relative}.ws-members__search-icon{width:14px;height:14px;color:var(--muted);pointer-events:none;display:inline-flex;position:absolute;left:10px}.ws-members__search-icon svg{width:100%;height:100%}.ws-members__search-input{width:220px;height:34px;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;outline:none;padding:0 12px 0 32px;font-size:13px}.ws-members__search-input::-webkit-search-cancel-button{appearance:none}.ws-members__search-input:focus{border-color:var(--accent)}.ws-members__role-select{height:34px;color:var(--text);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:6px;outline:none;padding:0 28px 0 10px;font-size:13px}.ws-members__list{border:1px solid var(--line);background:var(--panel);border-radius:6px;flex:auto;min-height:0;overflow:hidden auto}.ws-members__row{border-bottom:1px solid var(--line);box-sizing:border-box;grid-template-columns:36px 1fr auto auto;align-items:center;gap:14px;padding:0 16px;display:grid}.ws-members__avatar{letter-spacing:-.02em;background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex;overflow:hidden}.ws-members__avatar--bot{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-members__avatar img{object-fit:cover;width:100%;height:100%}.ws-members__main{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-members__name{color:var(--text-strong,var(--text));white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.ws-members__meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:12.5px;display:flex;overflow:hidden}.ws-members__handle{font-family:var(--font-mono);color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:12px}.ws-members__dot{opacity:.6}.ws-members__pill{text-transform:capitalize;color:var(--text);white-space:nowrap;background:#7f7f7f24;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.ws-members__pill--owner{background:color-mix(in srgb, var(--success) 16%, transparent);color:var(--success)}.ws-members__pill--moderator{background:color-mix(in srgb, var(--delivery-accent) 16%, transparent);color:var(--delivery-accent)}.ws-members__pill--bot{background:var(--accent-soft);color:var(--accent)}.ws-members__pill--guest{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-members__actions{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.ws-members__actions:hover:not(:disabled){background:var(--bg);border-color:var(--line);color:var(--text)}.ws-members__actions:disabled{opacity:.45;cursor:not-allowed}.ws-members__empty{text-align:center;border:1px dashed var(--line);color:var(--muted);background:var(--panel);border-radius:8px;margin-top:24px;padding:36px 20px;font-size:13.5px}.ws-members__loading{color:var(--muted);text-align:center;border-top:1px solid var(--line);padding:10px 16px;font-size:12.5px}.ws-members__row--skeleton{height:64px}.ws-members__skeleton{background:linear-gradient(90deg,#7f7f7f14,#7f7f7f2e,#7f7f7f14) 0 0/200% 100%;border-radius:6px;animation:1.4s ease-in-out infinite ws-members-shimmer}.ws-members__skeleton--line{height:10px;margin:4px 0}.ws-members__skeleton--pill{border-radius:999px;width:64px;height:18px}@keyframes ws-members-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (width<=760px){.ws-settings__panel{grid-template-rows:auto 1fr;grid-template-columns:1fr}.ws-settings__rail{border-right:0;border-bottom:1px solid var(--line);padding:10px}.ws-settings__content-inner{padding:32px 20px 60px}.ws-settings__close{top:10px;right:12px}}.ws-bots-page{flex-direction:column;gap:0;display:flex}.ws-bots__toolbar{background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin:4px 0 12px;padding:14px 0 12px;display:flex}.ws-bots__count{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:12.5px;font-weight:600}.ws-bots__toolbar-actions{align-items:center;gap:8px;display:flex}.ws-bots__panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;margin:8px 0 16px;padding:18px 20px}.ws-bots__empty{text-align:center;border:1px dashed var(--line);color:var(--muted);background:var(--surface);border-radius:8px;margin-top:16px;padding:36px 20px;font-size:13.5px}.ws-bots__list{flex-direction:column;margin-bottom:60px;display:flex}.ws-bots__row{border-bottom:1px solid var(--line)}.ws-bots__row:last-child{border-bottom:0}.ws-bots__row.is-expanded{background:var(--surface)}.ws-bots__row-main{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;grid-template-columns:36px 1fr auto auto;align-items:center;gap:14px;padding:14px 16px;display:grid}.ws-bots__row-main:hover{background:var(--hover,#7f7f7f0f)}.ws-bots__row-text{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-bots__row-name{color:var(--text-strong,var(--text));white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.ws-bots__row-meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:12.5px;display:flex;overflow:hidden}.ws-bots__owner-pill{color:var(--text);white-space:nowrap;background:#7f7f7f24;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.ws-bots__owner-pill--service{background:color-mix(in srgb, var(--delivery-accent) 16%, transparent);color:var(--delivery-accent)}.ws-bots__owner-pill--user{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-bots__chevron{width:20px;height:20px;color:var(--muted);justify-content:center;align-items:center;display:inline-flex}.ws-bots__detail{border-top:1px dashed var(--line);flex-direction:column;gap:12px;padding:4px 16px 18px;display:flex}.ws-bots__detail-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;padding-top:14px;display:flex}.ws-bots__detail-title{color:var(--text-strong,var(--text));margin:0 0 4px;font-size:13.5px;font-weight:600}.ws-bots__detail-hint{color:var(--muted);max-width:60ch;margin:0;font-size:12.5px}.ws-bots__detail-actions{flex-wrap:wrap;gap:8px;display:flex}.ws-bots__detail-empty{color:var(--muted);background:var(--bg);border:1px dashed var(--line);border-radius:6px;margin:0;padding:16px;font-size:13px}.ws-bots__token-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.ws-bots__token-row{background:var(--bg);border:1px solid var(--line);border-radius:6px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px 16px;padding:12px 14px;display:flex}.ws-bots__token-row>.ws-btn{flex-shrink:0}.ws-bots__token-main{flex-direction:column;flex:240px;gap:4px;min-width:0;display:flex}.ws-bots__token-name{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-bots__token-meta{color:var(--muted);font-size:12.5px}.ws-bots__scope-row{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.ws-bots__scope-chip{font-family:var(--font-mono);background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:2px 8px;font-size:11.5px}.ws-bots__scope-chip--bundle{color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);border-color:color-mix(in srgb, var(--accent) 35%, transparent);font-family:inherit;font-weight:600}.ws-bots__scope-toggle{color:var(--muted);text-underline-offset:2px;cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:11.5px;text-decoration:underline}.ws-bots__scope-toggle:hover{color:var(--text)}.ws-bots__scope-details{margin-top:6px}.ws-bots__scope-details>summary{color:var(--muted);cursor:pointer;width:fit-content;font-size:11.5px}.ws-bots__scope-details[open]>summary{margin-bottom:6px}.ws-bots__form{flex-direction:column;gap:16px;display:flex}.ws-bots__form-header{flex-direction:column;gap:4px;display:flex}.ws-bots__form-title{color:var(--text-strong,var(--text));margin:0;font-size:16px;font-weight:600}.ws-bots__form-hint{color:var(--muted);max-width:60ch;margin:0;font-size:13px}.ws-bots__form-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=640px){.ws-bots__form-grid{grid-template-columns:1fr}}.ws-bots__form-field{border:0;flex-direction:column;gap:6px;min-width:0;margin:0;padding:0;display:flex}.ws-bots__form-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.ws-bots__form-input{height:34px;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:6px;outline:none;padding:0 12px;font-size:13.5px}.ws-bots__form-input:focus{border-color:var(--accent)}.ws-bots__form-handle{background:var(--surface);border:1px solid var(--line);border-radius:6px;align-items:center;gap:6px;padding:0 10px;display:flex}.ws-bots__form-handle span{color:var(--muted);font-family:var(--font-mono);font-size:13px}.ws-bots__form-handle .ws-bots__form-input{background:0 0;border:0;flex:1;padding-left:0}.ws-bots__choices{flex-direction:column;gap:8px;display:flex}.ws-bots__choice{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:6px;grid-template-rows:auto auto;grid-template-columns:18px 1fr;gap:2px 10px;padding:10px 12px;display:grid}.ws-bots__choice.is-active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 7%, transparent)}.ws-bots__choice input{accent-color:var(--accent);grid-row:1/span 2;align-self:center}.ws-bots__choice-title{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-bots__choice-hint{color:var(--muted);font-size:12.5px}.ws-bots__form-error{background:color-mix(in srgb, var(--danger) 9%, transparent);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 32%, transparent);border-radius:6px;margin:0;padding:10px 12px;font-size:13px}.ws-bots__form-actions{justify-content:flex-end;gap:8px;display:flex}.ws-bots__token-form-panel{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:14px}.ws-bots__token-form .ws-bots__choices{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}@media (width<=720px){.ws-bots__token-form .ws-bots__choices{grid-template-columns:1fr}}.ws-bots__reveal{background:var(--surface);border:1px solid var(--accent);border-radius:8px;flex-direction:column;gap:14px;margin:8px 0 16px;padding:18px 20px;display:flex}.ws-bots__reveal-header{flex-direction:column;gap:4px;display:flex}.ws-bots__reveal-title{color:var(--text-strong,var(--text));margin:0;font-size:16px;font-weight:600}.ws-bots__reveal-hint{color:var(--muted);max-width:60ch;margin:0;font-size:13px}.ws-bots__reveal-hint code{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--text);white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:12px}.ws-bots__reveal-field{flex-direction:column;gap:6px;display:flex}.ws-bots__reveal-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.ws-bots__reveal-row{align-items:center;gap:8px;display:flex}.ws-bots__reveal-input{height:34px;font-family:var(--font-mono);color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px;flex:1;padding:0 12px;font-size:13px}.ws-bots__reveal-snippet-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.ws-bots__reveal-details{border:1px solid var(--line);background:var(--bg);border-radius:6px}.ws-bots__reveal-summary{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;-webkit-user-select:none;user-select:none;padding:10px 14px;font-size:11px;font-weight:600}.ws-bots__reveal-summary:hover{color:var(--text)}.ws-bots__reveal-details-body{gap:8px;padding:0 14px 12px;display:grid}.ws-bots__reveal-details-body .ws-bots__reveal-hint{margin:0}.ws-bots__setup-mode{background:var(--bg);border:1px solid var(--line);border-radius:6px;grid-template-columns:repeat(2,minmax(0,1fr));width:min(320px,100%);padding:3px;display:inline-grid}.ws-bots__setup-mode button{min-height:30px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:0 12px;font-size:12.5px;font-weight:600}.ws-bots__setup-mode button.is-active{background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--line)}.ws-bots__reveal-snippet{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--text);white-space:pre-wrap;border-radius:6px;margin:0;padding:12px 14px;font-size:12.5px;overflow-x:auto}.ws-bots__reveal-ack{color:var(--text);align-items:center;gap:8px;font-size:13px;display:flex}.ws-bots__reveal-actions{justify-content:flex-end;display:flex}.ws-bots__my-list{flex-direction:column;gap:18px;display:flex}.ws-bots__my-group{flex-direction:column;gap:8px;display:flex}.ws-bots__my-group-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.ws-bots__my-group-title{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:13px;font-weight:600}.ws-bots__my-rows{border:1px solid var(--line);background:var(--surface);border-radius:6px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ws-bots__my-row{border-bottom:1px solid var(--line);grid-template-columns:36px 1fr auto;align-items:center;gap:14px;padding:12px 14px;display:grid}.ws-bots__my-row:last-child{border-bottom:0}.ws-bots__my-row-text{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-bots__my-row-name{color:var(--text-strong,var(--text));font-size:14px;font-weight:600}.ws-bots__my-row-meta{color:var(--muted);align-items:center;gap:6px;font-size:12.5px;display:flex}.appearance-preview{border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--bg);overflow:hidden}.appearance-preview__bar{border-bottom:1px solid var(--line);background:var(--panel);color:var(--text-strong);align-items:baseline;gap:8px;padding:9px 14px;font-size:12px;font-weight:700;display:flex}.appearance-preview__hash{color:var(--accent)}.appearance-preview__topic{color:var(--muted);font-size:11.5px;font-weight:500}.appearance-preview__chat{gap:14px;padding:14px 16px 16px;display:grid}.appearance-preview[data-density=compact] .appearance-preview__chat{gap:7px;padding:10px 14px 12px}.appearance-preview__msg{grid-template-columns:34px minmax(0,1fr);gap:10px;display:grid}.appearance-preview[data-density=compact] .appearance-preview__msg{grid-template-columns:24px minmax(0,1fr);gap:8px}.appearance-preview__avatar{background:var(--accent);width:34px;height:34px;color:var(--accent-contrast);border-radius:9px;place-items:center;font-size:14px;font-weight:700;display:grid}.appearance-preview[data-density=compact] .appearance-preview__avatar{border-radius:7px;width:24px;height:24px;font-size:11px}.appearance-preview__avatar.is-agent{background:var(--accent-2)}.appearance-preview__body{gap:3px;min-width:0;display:grid}.appearance-preview[data-density=compact] .appearance-preview__body{gap:1px}.appearance-preview__head{align-items:baseline;gap:7px;display:flex}.appearance-preview__who{color:var(--text-strong);font-size:13px;font-weight:700}.appearance-preview[data-density=compact] .appearance-preview__who{font-size:12px}.appearance-preview__when{color:var(--muted);font-size:10px}.appearance-preview__text{font-size:13px;line-height:1.5}.appearance-preview[data-density=compact] .appearance-preview__text{font-size:12.5px;line-height:1.4}.appearance-preview__activity{background:color-mix(in srgb, var(--accent-2) 9%, var(--panel));color:var(--muted);border-radius:7px 7px 0 0;margin-top:3px;padding:6px 10px;font-size:11.5px}.appearance-preview__activity code{color:var(--text-strong);font-family:var(--font-mono,ui-monospace, monospace);font-size:10.5px}.appearance-preview__answer{background:color-mix(in srgb, var(--accent) 7%, var(--panel));border-radius:0 0 7px 7px;padding:7px 10px 8px;font-size:13px;line-height:1.5}.appearance-preview[data-density=compact] .appearance-preview__activity{padding:4px 8px;font-size:11px}.appearance-preview[data-density=compact] .appearance-preview__answer{padding:5px 8px 6px;font-size:12.5px}.appearance-preview[data-layout=outlined] .appearance-preview__activity{border:1px solid color-mix(in srgb, var(--accent-2) 45%, var(--line));background:0 0;border-bottom:0}.appearance-preview[data-layout=outlined] .appearance-preview__answer{border:1px solid color-mix(in srgb, var(--accent) 40%, var(--line));background:0 0}.appearance-preview__reactions{gap:5px;margin-top:5px;display:flex}.appearance-preview[data-density=compact] .appearance-preview__reactions{margin-top:2px}.appearance-preview__reaction{border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:11px}.appearance-preview__reaction.is-mine{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, var(--panel));color:var(--text-strong)}.appearance-preview__caption{color:var(--muted-2);text-align:right;margin:-14px 2px 0;font-size:11px}.appearance-rows{display:grid}.appearance-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding:14px 0;display:grid}.appearance-row+.appearance-row{border-top:1px solid var(--line)}.appearance-row__meta{gap:2px;display:grid}.appearance-row__label{color:var(--text-strong);font-size:13.5px;font-weight:650}.appearance-row__desc{color:var(--muted);font-size:12px}.appearance-row__control{align-items:center;gap:12px;display:inline-flex}.appearance-seg{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel-2);gap:2px;padding:2px;display:inline-flex}.appearance-seg__btn{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:5px 12px;font-size:12.5px;font-weight:600}.appearance-seg__btn:hover{color:var(--text-strong)}.appearance-seg__btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.appearance-seg__btn.is-active{border-color:var(--line-strong);background:var(--panel);color:var(--text-strong);box-shadow:0 1px 2px #10151d1a}.board-chips__name{min-width:44px;color:var(--muted);text-align:right;font-size:12px}.board-chips{align-items:center;gap:10px;display:inline-flex}.board-chip{border:1px solid var(--line-strong);background:linear-gradient(135deg, var(--panel) 52%, var(--accent) 52%);cursor:pointer;border-radius:8px;width:26px;height:26px;padding:0;position:relative}.board-chip:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.board-chip.is-active:after{content:"";border:2px solid var(--accent);border-radius:11px;position:absolute;inset:-5px}@media (width<=640px){.appearance-row{grid-template-columns:1fr;gap:10px}.appearance-row__control,.board-chips__name{text-align:left;justify-self:start}}.ws-intg-page{padding-bottom:60px}.ws-intg__app-icon{background:var(--surface);border:1px solid var(--line);width:36px;height:36px;color:var(--text);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ws-intg__wizard{background:var(--surface);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:16px;margin:8px 0 16px;padding:18px 20px;display:flex}.ws-intg__wizard-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.ws-intg__wizard-step{color:var(--muted);white-space:nowrap;padding-top:2px;font-size:11.5px;font-weight:600}.ws-intg__wizard-body{flex-direction:column;gap:14px;display:flex}.ws-intg__catalog{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.ws-intg__catalog-card{border:1px solid var(--line);text-align:left;cursor:pointer;color:inherit;background:0 0;border-radius:8px;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;transition:border-color .12s,background .12s;display:flex}.ws-intg__catalog-card:hover{border-color:var(--accent);background:var(--hover,#7f7f7f0f)}.ws-intg__catalog-name{color:var(--text-strong,var(--text));font-size:14px;font-weight:600}.ws-intg__catalog-desc{color:var(--muted);font-size:12.5px;line-height:1.45}.ws-intg__chips{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.ws-intg__chip{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--text);border-radius:999px;align-items:center;gap:6px;padding:3px 6px 3px 10px;font-size:12px;font-weight:600;display:inline-flex}.ws-intg__chip-remove{width:16px;height:16px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;font-size:13px;line-height:1;display:inline-flex}.ws-intg__chip-remove:hover{color:var(--text);background:#7f7f7f2e}.ws-intg__member-results{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex-direction:column;gap:2px;max-height:220px;margin:6px 0 0;padding:4px;list-style:none;display:flex;overflow-y:auto}.ws-intg__member-result{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-size:13px;display:flex}.ws-intg__member-result:hover{background:var(--hover,#7f7f7f14)}.ws-intg__toggle{cursor:pointer;align-items:flex-start;gap:10px;display:flex}.ws-intg__toggle input[type=checkbox]{flex-shrink:0;margin-top:3px}.ws-intg__toggle>span{flex-direction:column;gap:2px;display:flex}.ws-intg__panel{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex-direction:column;gap:12px;padding:14px 16px;display:flex}.ws-intg__panel-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.ws-intg__panel-title{color:var(--text-strong,var(--text));margin:0 0 3px;font-size:13px;font-weight:600}.ws-intg__panel-hint{color:var(--muted);max-width:560px;margin:0;font-size:12.5px;line-height:1.45}.ws-intg__panel-empty{color:var(--muted);margin:0;font-size:12.5px}.ws-intg__inline-form{border:1px dashed var(--line);border-radius:8px;flex-direction:column;gap:12px;padding:14px;display:flex}.ws-intg__item-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ws-intg__item-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:14px;padding:11px 0;display:flex}.ws-intg__item-row:last-child{border-bottom:0}.ws-intg__item-row--stacked{flex-direction:column;align-items:stretch}.ws-intg__item-top{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.ws-intg__item-main{flex-direction:column;gap:4px;min-width:0;display:flex}.ws-intg__item-name{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-intg__item-meta{color:var(--muted);overflow-wrap:anywhere;font-size:12px}.ws-intg__url{font-family:var(--mono,ui-monospace, monospace);font-size:11.5px}.ws-intg__item-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;display:flex}.ws-intg__type-chips{flex-wrap:wrap;gap:5px;display:flex}.ws-intg__secret{border:1px solid color-mix(in srgb, var(--warn) 45%, var(--line));background:color-mix(in srgb, var(--warn) 7%, transparent);border-radius:8px;flex-direction:column;gap:6px;margin-top:6px;padding:10px 12px;display:flex}.ws-intg__secret-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:11px;font-weight:700}.ws-intg__secret-row{align-items:center;gap:8px;display:flex}.ws-intg__secret-row .ws-bots__reveal-input{flex:1;min-width:0}.ws-intg__confirm{border:1px solid color-mix(in srgb, var(--danger,#d33) 40%, var(--line));background:color-mix(in srgb, var(--danger,#d33) 6%, transparent);border-radius:8px;flex-direction:column;gap:12px;padding:14px 16px;display:flex}.ws-intg__confirm-text{color:var(--text);margin:0;font-size:13px;line-height:1.5}.ws-intg__event-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px;margin-top:10px;display:grid}.ws-intg__event-option{border:1px solid var(--line);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-size:12px;display:flex}.ws-intg__event-option.is-active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.ws-intg__deliveries{border-top:1px dashed var(--line);flex-direction:column;gap:8px;padding-top:10px;display:flex}.ws-intg__deliveries-scroll{border:1px solid var(--line);border-radius:8px;max-height:420px;overflow-y:auto}.ws-intg__delivery{border-bottom:1px solid var(--line)}.ws-intg__delivery:last-child{border-bottom:0}.ws-intg__delivery-row{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;grid-template-columns:84px 1fr auto auto;align-items:center;gap:12px;padding:10px 12px;font-size:12.5px;display:grid}.ws-intg__delivery-row:hover{background:var(--hover,#7f7f7f0f)}.ws-intg__delivery-status{text-align:center;white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.ws-intg__delivery-status--ok{background:color-mix(in srgb, var(--delivery-accent,#2a9d5c) 16%, transparent);color:var(--delivery-accent,#2a9d5c)}.ws-intg__delivery-status--fail{background:color-mix(in srgb, var(--danger,#d33) 14%, transparent);color:var(--danger,#d33)}.ws-intg__delivery-type{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.ws-intg__delivery-attempt,.ws-intg__delivery-time{color:var(--muted);white-space:nowrap;font-size:11.5px}.ws-intg__delivery-detail{flex-direction:column;gap:10px;padding:4px 12px 14px;display:flex}.ws-intg__delivery-block{flex-direction:column;gap:4px;display:flex}.ws-intg__delivery-block .ws-bots__reveal-snippet{max-height:260px;overflow:auto}.ws-intg__deliveries-more{justify-content:center;display:flex}.ws-intg__deliveries-retry{justify-content:space-between;align-items:center;gap:12px;display:flex}.ws-intg__section{flex-direction:column;gap:12px;margin-top:28px;display:flex}.ws-intg__section-title{color:var(--text-strong,var(--text));margin:0;font-size:15px;font-weight:600}.ws-intg__section-hint{color:var(--muted);margin:-6px 0 0;font-size:12.5px}.ws-bots__choice.is-disabled{opacity:.55;cursor:not-allowed} diff --git a/apps/api/internal/webassets/dist/_app/immutable/assets/pdf.worker.CPbhI6B3.mjs b/apps/api/internal/webassets/dist/_app/immutable/assets/pdf.worker.CLesOks4.mjs similarity index 98% rename from apps/api/internal/webassets/dist/_app/immutable/assets/pdf.worker.CPbhI6B3.mjs rename to apps/api/internal/webassets/dist/_app/immutable/assets/pdf.worker.CLesOks4.mjs index 72a8a90e..66ae0d0b 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/assets/pdf.worker.CPbhI6B3.mjs +++ b/apps/api/internal/webassets/dist/_app/immutable/assets/pdf.worker.CLesOks4.mjs @@ -21,8 +21,8 @@ */ /** - * pdfjsVersion = 6.1.200 - * pdfjsBuild = 6353acefe + * pdfjsVersion = 6.2.108 + * pdfjsBuild = 0365cbde0 */ ;// ./src/shared/util.js @@ -481,9 +481,6 @@ function stringToBytes(str) { } return bytes; } -function objectSize(obj) { - return Object.keys(obj).length; -} class FeatureTest { static get isLittleEndian() { const buffer8 = new Uint8Array(4); @@ -785,6 +782,12 @@ function _isValidExplicitDest(validRef, validName, dest) { const makeArr = () => []; const makeMap = () => new Map(); const makeObj = () => Object.create(null); +const makeSet = () => new Set(); +if (typeof Iterator.prototype.join !== "function") { + Iterator.prototype.join = function (separator) { + return [...this].join(separator); + }; +} ;// ./src/core/primitives.js @@ -974,15 +977,14 @@ class Dict { } } class Ref { - constructor(num, gen) { + #str; + constructor(str, num, gen) { + this.#str = str; this.num = num; this.gen = gen; } toString() { - if (this.gen === 0) { - return `${this.num}R`; - } - return `${this.num}R${this.gen}`; + return this.#str; } static fromString(str) { const ref = RefCache[str]; @@ -993,11 +995,13 @@ class Ref { if (!m || m[1] === "0") { return null; } - return RefCache[str] = new Ref(parseInt(m[1], 10), !m[2] ? 0 : parseInt(m[2], 10)); + const num = parseInt(m[1], 10), + gen = !m[2] ? 0 : parseInt(m[2], 10); + return RefCache[str] = new Ref(str, num, gen); } static get(num, gen) { - const key = gen === 0 ? `${num}R` : `${num}R${gen}`; - return RefCache[key] ||= new Ref(num, gen); + const str = gen === 0 ? `${num}R` : `${num}R${gen}`; + return RefCache[str] ||= new Ref(str, num, gen); } } class RefSet { @@ -1037,6 +1041,14 @@ class RefSetCache { putAlias(ref, aliasRef) { this._map.set(ref.toString(), this.get(aliasRef)); } + getOrPutComputed(ref, callback) { + const map = this._map, + refStr = ref.toString(); + if (!map.has(refStr)) { + map.set(refStr, callback(ref)); + } + return map.get(refStr); + } [Symbol.iterator]() { return this._map.values(); } @@ -1446,7 +1458,7 @@ function escapePDFName(str) { if (start < i) { buffer.push(str.substring(start, i)); } - buffer.push(`#${char.toString(16)}`); + buffer.push(`#${char.toString(16).padStart(2, "0")}`); start = i + 1; } } @@ -1541,7 +1553,7 @@ function collectActions(xref, dict, eventType) { actions.Action = list; } } - return objectSize(actions) > 0 ? actions : null; + return Object.keys(actions).length ? actions : null; } const XMLEntities = { 0x3c: "<", @@ -1578,7 +1590,7 @@ function encodeToXmlString(str) { buffer.push(str.substring(start, i)); } buffer.push(`&#x${char.toString(16).toUpperCase()};`); - if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) { + if (char > 0xffff) { i++; } start = i + 1; @@ -1694,15 +1706,14 @@ function getSizeInBytes(x) { } ;// ./external/qcms/qcms_utils.js +const ALPHA_MASK = new Uint8Array(new Uint32Array([1]).buffer)[0] === 1 ? 0xff000000 : 0x000000ff; +const RGB_MASK = ~ALPHA_MASK; class QCMS { static #memoryArray = null; static _memory = null; - static _mustAddAlpha = false; static _destBuffer = null; static _destOffset = 0; - static _destLength = 0; - static _cssColor = ""; - static _makeHexColor = null; + static _keepAlpha = false; static get _memoryArray() { const array = this.#memoryArray; if (array?.byteLength) { @@ -1713,46 +1724,30 @@ class QCMS { } function copy_result(ptr, len) { const { - _mustAddAlpha, _destBuffer, _destOffset, - _destLength, + _keepAlpha, _memoryArray } = QCMS; - if (len === _destLength) { + if (!_keepAlpha) { _destBuffer.set(_memoryArray.subarray(ptr, ptr + len), _destOffset); return; } - if (_mustAddAlpha) { - for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 3, j += 4) { - _destBuffer[j] = _memoryArray[i]; - _destBuffer[j + 1] = _memoryArray[i + 1]; - _destBuffer[j + 2] = _memoryArray[i + 2]; - _destBuffer[j + 3] = 255; - } - } else { - for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 3, j += 4) { - _destBuffer[j] = _memoryArray[i]; - _destBuffer[j + 1] = _memoryArray[i + 1]; - _destBuffer[j + 2] = _memoryArray[i + 2]; + const count = len >> 2; + const destStart = _destBuffer.byteOffset + _destOffset; + if (((destStart | ptr) & 3) === 0) { + const dest32 = new Uint32Array(_destBuffer.buffer, destStart, count); + const src32 = new Uint32Array(QCMS._memory.buffer, ptr, count); + for (let i = 0; i < count; i++) { + dest32[i] = dest32[i] & ALPHA_MASK | src32[i] & RGB_MASK; } + return; + } + for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 4, j += 4) { + _destBuffer[j] = _memoryArray[i]; + _destBuffer[j + 1] = _memoryArray[i + 1]; + _destBuffer[j + 2] = _memoryArray[i + 2]; } -} -function copy_rgb(ptr) { - const { - _destBuffer, - _destOffset, - _memoryArray - } = QCMS; - _destBuffer[_destOffset] = _memoryArray[ptr]; - _destBuffer[_destOffset + 1] = _memoryArray[ptr + 1]; - _destBuffer[_destOffset + 2] = _memoryArray[ptr + 2]; -} -function make_cssRGB(ptr) { - const { - _memoryArray - } = QCMS; - QCMS._cssColor = QCMS._makeHexColor(_memoryArray[ptr], _memoryArray[ptr + 1], _memoryArray[ptr + 2]); } ;// ./external/qcms/qcms.js @@ -1781,19 +1776,22 @@ const Intent = Object.freeze({ AbsoluteColorimetric: 3, "3": "AbsoluteColorimetric" }); -function qcms_convert_array(transformer, src) { +function qcms_convert_array(transformer, src, add_alpha) { const ptr0 = passArray8ToWasm0(src, wasm.__wbindgen_malloc); const len0 = WASM_VECTOR_LEN; - wasm.qcms_convert_array(transformer, ptr0, len0); + wasm.qcms_convert_array(transformer, ptr0, len0, add_alpha); } -function qcms_convert_four(transformer, src1, src2, src3, src4, css) { - wasm.qcms_convert_four(transformer, src1, src2, src3, src4, css); +function qcms_convert_four(transformer, src1, src2, src3, src4) { + const ret = wasm.qcms_convert_four(transformer, src1, src2, src3, src4); + return ret >>> 0; } -function qcms_convert_one(transformer, src, css) { - wasm.qcms_convert_one(transformer, src, css); +function qcms_convert_one(transformer, src) { + const ret = wasm.qcms_convert_one(transformer, src); + return ret >>> 0; } -function qcms_convert_three(transformer, src1, src2, src3, css) { - wasm.qcms_convert_three(transformer, src1, src2, src3, css); +function qcms_convert_three(transformer, src1, src2, src3) { + const ret = wasm.qcms_convert_three(transformer, src1, src2, src3); + return ret >>> 0; } function qcms_drop_transformer(transformer) { wasm.qcms_drop_transformer(transformer); @@ -1807,18 +1805,12 @@ function qcms_transformer_from_memory(mem, in_type, intent) { function __wbg_get_imports() { const import0 = { __proto__: null, - __wbg___wbindgen_throw_6b64449b9b9ed33c: function (arg0, arg1) { + __wbg___wbindgen_throw_344f42d3211c4765: function (arg0, arg1) { throw new Error(getStringFromWasm0(arg0, arg1)); }, __wbg_copy_result_0d15f3bf9d9012ae: function (arg0, arg1) { copy_result(arg0 >>> 0, arg1 >>> 0); }, - __wbg_copy_rgb_0106d9d9464fce43: function (arg0) { - copy_rgb(arg0 >>> 0); - }, - __wbg_make_cssRGB_8e24b34f71f5363e: function (arg0) { - make_cssRGB(arg0 >>> 0); - }, __wbindgen_init_externref_table: function () { const table = wasm.__wbindgen_externrefs; const offset = table.grow(4); @@ -1835,8 +1827,7 @@ function __wbg_get_imports() { }; } function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return decodeText(ptr, len); + return decodeText(ptr >>> 0, len); } let cachedUint8ArrayMemory0 = null; function getUint8ArrayMemory0() { @@ -1871,8 +1862,9 @@ function decodeText(ptr, len) { return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); } let WASM_VECTOR_LEN = 0; -let wasmModule, wasm; +let wasmModule, wasmInstance, wasm; function __wbg_finalize_init(instance, module) { + wasmInstance = instance; wasm = instance.exports; wasmModule = module; cachedUint8ArrayMemory0 = null; @@ -2075,6 +2067,15 @@ class ColorSpace { getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { unreachable("Should not call ColorSpace.getRgbBuffer"); } + getRgbItems(src, count, dest, destOffset, alpha01) { + const { + numComps + } = this; + for (let i = 0, srcOffset = 0; i < count; i++, srcOffset += numComps) { + this.getRgbItem(src, srcOffset, dest, destOffset); + destOffset += 3 + alpha01; + } + } getOutputLength(inputLength, alpha01) { unreachable("Should not call ColorSpace.getOutputLength"); } @@ -2165,6 +2166,21 @@ class AlternateCS extends ColorSpace { this.tintFn(src, srcOffset, tmpBuf, 0); this.base.getRgbItem(tmpBuf, 0, dest, destOffset); } + getRgbItems(src, count, dest, destOffset, alpha01) { + const { + base, + numComps, + tintFn + } = this; + const baseNumComps = base.numComps; + const tinted = new Float32Array(count * baseNumComps); + for (let i = 0, srcOffset = 0, tintedOffset = 0; i < count; i++) { + tintFn(src, srcOffset, tinted, tintedOffset); + srcOffset += numComps; + tintedOffset += baseNumComps; + } + base.getRgbItems(tinted, count, dest, destOffset, alpha01); + } getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { const tintFn = this.tintFn; const base = this.base; @@ -2210,50 +2226,47 @@ class PatternCS extends ColorSpace { } } class IndexedCS extends ColorSpace { + #rgbLookup; constructor(base, highVal, lookup) { super("Indexed", 1); - this.base = base; this.highVal = highVal; - const length = base.numComps * (highVal + 1); - this.lookup = new Uint8Array(length); + const count = highVal + 1; + const length = base.numComps * count; + const palette = new Uint8Array(length); if (lookup instanceof BaseStream) { - const bytes = lookup.getBytes(length); - this.lookup.set(bytes); + palette.set(lookup.getBytes(length)); } else if (typeof lookup === "string") { for (let i = 0; i < length; ++i) { - this.lookup[i] = lookup.charCodeAt(i) & 0xff; + palette[i] = lookup.charCodeAt(i); } } else { throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`); } + this.#rgbLookup = new Uint8ClampedArray(count * 3); + base.getRgbBuffer(palette, 0, count, this.#rgbLookup, 0, 8, 0); } getRgbItem(src, srcOffset, dest, destOffset) { - const { - base, - highVal, - lookup - } = this; - const start = MathClamp(Math.round(src[srcOffset]), 0, highVal) * base.numComps; - base.getRgbBuffer(lookup, start, 1, dest, destOffset, 8, 0); + const rgbLookup = this.#rgbLookup; + const pos = MathClamp(Math.round(src[srcOffset]), 0, this.highVal) * 3; + dest[destOffset] = rgbLookup[pos]; + dest[destOffset + 1] = rgbLookup[pos + 1]; + dest[destOffset + 2] = rgbLookup[pos + 2]; } getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { const { - base, - highVal, - lookup + highVal } = this; - const { - numComps - } = base; - const outputDelta = base.getOutputLength(numComps, alpha01); + const rgbLookup = this.#rgbLookup; for (let i = 0; i < count; ++i) { - const lookupPos = MathClamp(Math.round(src[srcOffset++]), 0, highVal) * numComps; - base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01); - destOffset += outputDelta; + const pos = MathClamp(Math.round(src[srcOffset++]), 0, highVal) * 3; + dest[destOffset++] = rgbLookup[pos]; + dest[destOffset++] = rgbLookup[pos + 1]; + dest[destOffset++] = rgbLookup[pos + 2]; + destOffset += alpha01; } } getOutputLength(inputLength, alpha01) { - return this.base.getOutputLength(inputLength * this.base.numComps, alpha01); + return inputLength * (3 + alpha01); } isDefaultDecode(decode, bpc) { if (isDefaultDecodeHelper(decode, 2)) { @@ -2684,15 +2697,15 @@ class IccColorSpace extends ColorSpace { switch (numComps) { case 1: inType = DataType.Gray8; - this.#convertPixel = (src, srcOffset, css) => qcms_convert_one(this.#transformer, src[srcOffset] * 255, css); + this.#convertPixel = (src, srcOffset) => qcms_convert_one(this.#transformer, src[srcOffset] * 255); break; case 3: inType = DataType.RGB8; - this.#convertPixel = (src, srcOffset, css) => qcms_convert_three(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255, css); + this.#convertPixel = (src, srcOffset) => qcms_convert_three(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255); break; case 4: inType = DataType.CMYK; - this.#convertPixel = (src, srcOffset, css) => qcms_convert_four(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255, src[srcOffset + 3] * 255, css); + this.#convertPixel = (src, srcOffset) => qcms_convert_four(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255, src[srcOffset + 3] * 255); break; default: throw new Error(`Unsupported number of components: ${numComps}`); @@ -2707,14 +2720,28 @@ class IccColorSpace extends ColorSpace { IccColorSpace.#finalizer.register(this, this.#transformer); } getRgbHex(src, srcOffset) { - this.#convertPixel(src, srcOffset, true); - return QCMS._cssColor; + const color = this.#convertPixel(src, srcOffset); + return Util.makeHexColor(color >> 16, color >> 8 & 0xff, color & 0xff); } getRgbItem(src, srcOffset, dest, destOffset) { + const color = this.#convertPixel(src, srcOffset); + dest[destOffset] = color >> 16; + dest[destOffset + 1] = color >> 8 & 0xff; + dest[destOffset + 2] = color & 0xff; + } + getRgbItems(src, count, dest, destOffset, alpha01) { + const { + numComps + } = this; + const length = count * numComps; + const scaled = new Uint8Array(length); + for (let i = 0; i < length; i++) { + scaled[i] = src[i] * 255; + } QCMS._destBuffer = dest; QCMS._destOffset = destOffset; - QCMS._destLength = 3; - this.#convertPixel(src, srcOffset, false); + QCMS._keepAlpha = alpha01 === 1; + qcms_convert_array(this.#transformer, scaled, alpha01 === 1); QCMS._destBuffer = null; } getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { @@ -2725,12 +2752,10 @@ class IccColorSpace extends ColorSpace { src[i] *= scale; } } - QCMS._mustAddAlpha = alpha01 && dest.buffer === src.buffer; QCMS._destBuffer = dest; QCMS._destOffset = destOffset; - QCMS._destLength = count * (3 + alpha01); - qcms_convert_array(this.#transformer, src); - QCMS._mustAddAlpha = false; + QCMS._keepAlpha = alpha01 === 1 && dest.buffer !== src.buffer; + qcms_convert_array(this.#transformer, src, alpha01 === 1); QCMS._destBuffer = null; } getOutputLength(inputLength, alpha01) { @@ -2758,7 +2783,6 @@ class IccColorSpace extends ColorSpace { }); isUsable = !!this._module; QCMS._memory = this._module.memory; - QCMS._makeHexColor = Util.makeHexColor.bind(Util); } catch (e) { warn(`ICCBased color space: "${e}".`); } @@ -4109,9 +4133,7 @@ class ColorSpaceUtils { break; case "Pattern": baseCS = cs[1] || null; - if (baseCS) { - baseCS = this.#subParse(baseCS, options); - } + baseCS &&= this.#subParse(baseCS, options); return new PatternCS(baseCS); case "I": case "Indexed": @@ -6048,6 +6070,10 @@ const ShadingType = { COONS_PATCH_MESH: 6, TENSOR_PATCH_MESH: 7 }; +const MAX_SAMPLED_COLOR_COMPONENTS = 1 << 16; +function getColorConversionBatchSize(count, numComps) { + return MathClamp(Math.floor(MAX_SAMPLED_COLOR_COMPONENTS / numComps), 1, count); +} class Pattern { static #hasGPU = false; constructor() { @@ -6137,20 +6163,30 @@ class RadialAxialShading extends BaseShading { info("Bad shading domain."); return; } - const color = new Float32Array(cs.numComps), - ratio = new Float32Array(1); + const { + numComps + } = cs; + const ratio = new Float32Array(1); + const batchSize = getColorConversionBatchSize(NUMBER_OF_SAMPLES, numComps); + const comps = new Float32Array(batchSize * numComps); + const rgb = new Uint8ClampedArray(NUMBER_OF_SAMPLES * 3); + for (let start = 0; start < NUMBER_OF_SAMPLES; start += batchSize) { + const count = Math.min(batchSize, NUMBER_OF_SAMPLES - start); + for (let i = 0, offset = 0; i < count; i++, offset += numComps) { + ratio[0] = t0 + (start + i) * step; + fn(ratio, 0, comps, offset); + } + cs.getRgbItems(comps, count, rgb, start * 3, 0); + } let iBase = 0; - ratio[0] = t0; - fn(ratio, 0, color, 0); - const rgbBuffer = new Uint8ClampedArray(3); - cs.getRgb(color, 0, rgbBuffer); - let [rBase, gBase, bBase] = rgbBuffer; + let rBase = rgb[0], + gBase = rgb[1], + bBase = rgb[2]; colorStops.push([0, Util.makeHexColor(rBase, gBase, bBase)]); let iPrev = 1; - ratio[0] = t0 + step; - fn(ratio, 0, color, 0); - cs.getRgb(color, 0, rgbBuffer); - let [rPrev, gPrev, bPrev] = rgbBuffer; + let rPrev = rgb[3], + gPrev = rgb[4], + bPrev = rgb[5]; let maxSlopeR = rPrev - rBase + 1; let maxSlopeG = gPrev - gBase + 1; let maxSlopeB = bPrev - bBase + 1; @@ -6158,10 +6194,10 @@ class RadialAxialShading extends BaseShading { let minSlopeG = gPrev - gBase - 1; let minSlopeB = bPrev - bBase - 1; for (let i = 2; i < NUMBER_OF_SAMPLES; i++) { - ratio[0] = t0 + i * step; - fn(ratio, 0, color, 0); - cs.getRgb(color, 0, rgbBuffer); - const [r, g, b] = rgbBuffer; + const rgbOffset = i * 3; + const r = rgb[rgbOffset], + g = rgb[rgbOffset + 1], + b = rgb[rgbOffset + 2]; const run = i - iBase; maxSlopeR = Math.min(maxSlopeR, (r - rBase + 1) / run); maxSlopeG = Math.min(maxSlopeG, (g - gBase + 1) / run); @@ -6348,13 +6384,19 @@ class FunctionBasedShading extends BaseShading { const totalVertices = (stepsY + 1) * verticesPerRow; const coords = this.coords = new Float32Array(totalVertices * 2); const colors = this.colors = new Uint8ClampedArray(totalVertices * 4); + const { + numComps + } = cs; const xyBuf = new Float32Array(2); - const colorBuf = new Float32Array(cs.numComps); + const batchSize = getColorConversionBatchSize(totalVertices, numComps); + const comps = new Float32Array(batchSize * numComps); const rangeX = (x1 - x0) / stepsX; const rangeY = (y1 - y0) / stepsY; const halfStepX = rangeX / 2; const halfStepY = rangeY / 2; let coordOffset = 0; + let compOffset = 0; + let batchCount = 0; let colorOffset = 0; for (let row = 0; row <= stepsY; row++) { const yDomain = y0 + rangeY * row; @@ -6362,15 +6404,23 @@ class FunctionBasedShading extends BaseShading { for (let col = 0; col <= stepsX; col++) { const xDomain = x0 + rangeX * col; xyBuf[0] = col === stepsX ? xDomain - halfStepX : xDomain; - fn(xyBuf, 0, colorBuf, 0); + fn(xyBuf, 0, comps, compOffset); + compOffset += numComps; + batchCount++; coords[coordOffset] = xDomain; coords[coordOffset + 1] = yDomain; Util.applyTransform(coords, matrix, coordOffset); coordOffset += 2; - cs.getRgbItem(colorBuf, 0, colors, colorOffset); - colorOffset += 4; + if (batchCount === batchSize) { + cs.getRgbItems(comps, batchCount, colors, colorOffset, 1); + colorOffset += batchCount * 4; + compOffset = batchCount = 0; + } } } + if (batchCount > 0) { + cs.getRgbItems(comps, batchCount, colors, colorOffset, 1); + } const ps = new Uint32Array(totalVertices); for (let i = 0; i < totalVertices; i++) { ps[i] = i; @@ -6482,21 +6532,18 @@ class MeshStreamReader { return colorSpace.getRgb(color, 0); } } -let bCache = Object.create(null); -function buildB(count) { - const lut = []; - for (let i = 0; i <= count; i++) { +let bCache = null; +function getB(count) { + return (bCache ??= new Map()).getOrInsertComputed(count, () => Array.from({ + length: count + 1 + }, (_, i) => { const t = i / count, t_ = 1 - t; - lut.push(new Float32Array([t_ ** 3, 3 * t * t_ ** 2, 3 * t ** 2 * t_, t ** 3])); - } - return lut; -} -function getB(count) { - return bCache[count] ||= buildB(count); + return new Float32Array([t_ ** 3, 3 * t * t_ ** 2, 3 * t ** 2 * t_, t ** 3]); + })); } function clearPatternCaches() { - bCache = Object.create(null); + bCache?.clear(); } class MeshShading extends BaseShading { static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3; @@ -9813,9 +9860,7 @@ class CCITTFaxStream extends DecodeStream { if (this.eof) { return this.buffer; } - if (!bytes) { - bytes = this.stream.isAsync ? (await this.stream.asyncGetBytes()) || this.bytes : this.bytes; - } + bytes ??= this.stream.isAsync ? (await this.stream.asyncGetBytes()) || this.bytes : this.bytes; this.buffer = await JBig2CCITTFaxImage.instance.decode(bytes, this.dict.get("W", "Width"), this.dict.get("H", "Height"), null, this.params); this.bufferLength = this.buffer.length; this.eof = true; @@ -12687,287 +12732,6 @@ class CMapFactory { } } -;// ./src/shared/obj_bin_transform_utils.js -class CSS_FONT_INFO { - static strings = ["fontFamily", "fontWeight", "italicAngle"]; -} -class SYSTEM_FONT_INFO { - static strings = ["css", "loadedName", "baseFontName", "src"]; -} -class FONT_INFO { - static bools = ["black", "bold", "disableFontFace", "fontExtraProperties", "isInvalidPDFjsFont", "isType3Font", "italic", "missingFile", "remeasure", "vertical"]; - static numbers = ["ascent", "defaultWidth", "descent"]; - static strings = ["fallbackName", "loadedName", "mimetype", "name"]; - static OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8); - static OFFSET_BBOX = this.OFFSET_NUMBERS + this.numbers.length * 8; - static OFFSET_FONT_MATRIX = this.OFFSET_BBOX + 1 + 2 * 4; - static OFFSET_DEFAULT_VMETRICS = this.OFFSET_FONT_MATRIX + 1 + 8 * 6; - static OFFSET_STRINGS = this.OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3; -} -class PATTERN_INFO { - static KIND = 0; - static HAS_BBOX = 1; - static HAS_BACKGROUND = 2; - static SHADING_TYPE = 3; - static N_COORD = 4; - static N_COLOR = 8; - static N_STOP = 12; - static N_FIGURES = 16; -} - -;// ./src/core/obj_bin_transform_core.js - - -function compileCssFontInfo(info) { - const encoder = new TextEncoder(); - const encodedStrings = {}; - let stringsLength = 0; - for (const prop of CSS_FONT_INFO.strings) { - const encoded = encoder.encode(info[prop]); - encodedStrings[prop] = encoded; - stringsLength += 4 + encoded.length; - } - const buffer = new ArrayBuffer(stringsLength); - const data = new Uint8Array(buffer); - const view = new DataView(buffer); - let offset = 0; - for (const prop of CSS_FONT_INFO.strings) { - const encoded = encodedStrings[prop]; - const length = encoded.length; - view.setUint32(offset, length); - data.set(encoded, offset + 4); - offset += 4 + length; - } - assert(offset === buffer.byteLength, "compileCssFontInfo: Buffer overflow"); - return buffer; -} -function compileSystemFontInfo(info) { - const encoder = new TextEncoder(); - const encodedStrings = {}; - let stringsLength = 0; - for (const prop of SYSTEM_FONT_INFO.strings) { - const encoded = encoder.encode(info[prop]); - encodedStrings[prop] = encoded; - stringsLength += 4 + encoded.length; - } - stringsLength += 4; - let encodedStyleStyle, - encodedStyleWeight, - lengthEstimate = 1 + stringsLength; - if (info.style) { - encodedStyleStyle = encoder.encode(info.style.style); - encodedStyleWeight = encoder.encode(info.style.weight); - lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length; - } - const buffer = new ArrayBuffer(lengthEstimate); - const data = new Uint8Array(buffer); - const view = new DataView(buffer); - let offset = 0; - view.setUint8(offset++, info.guessFallback ? 1 : 0); - view.setUint32(offset, 0); - offset += 4; - stringsLength = 0; - for (const prop of SYSTEM_FONT_INFO.strings) { - const encoded = encodedStrings[prop]; - const length = encoded.length; - stringsLength += 4 + length; - view.setUint32(offset, length); - data.set(encoded, offset + 4); - offset += 4 + length; - } - view.setUint32(offset - stringsLength - 4, stringsLength); - if (info.style) { - view.setUint32(offset, encodedStyleStyle.length); - data.set(encodedStyleStyle, offset + 4); - offset += 4 + encodedStyleStyle.length; - view.setUint32(offset, encodedStyleWeight.length); - data.set(encodedStyleWeight, offset + 4); - offset += 4 + encodedStyleWeight.length; - } - assert(offset <= buffer.byteLength, "compileSystemFontInfo: Buffer overflow"); - return buffer.transferToFixedLength(offset); -} -function compileFontInfo(font) { - const systemFontInfoBuffer = font.systemFontInfo ? compileSystemFontInfo(font.systemFontInfo) : null; - const cssFontInfoBuffer = font.cssFontInfo ? compileCssFontInfo(font.cssFontInfo) : null; - const encoder = new TextEncoder(); - const encodedStrings = {}; - let stringsLength = 0; - for (const prop of FONT_INFO.strings) { - encodedStrings[prop] = encoder.encode(font[prop]); - stringsLength += 4 + encodedStrings[prop].length; - } - const lengthEstimate = FONT_INFO.OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer?.byteLength ?? 0) + 4 + (cssFontInfoBuffer?.byteLength ?? 0) + 4 + (font.data?.length ?? 0); - const buffer = new ArrayBuffer(lengthEstimate); - const data = new Uint8Array(buffer); - const view = new DataView(buffer); - let offset = 0; - const numBools = FONT_INFO.bools.length; - let boolByte = 0, - boolBit = 0; - for (let i = 0; i < numBools; i++) { - const value = font[FONT_INFO.bools[i]]; - const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01; - boolByte |= bits << boolBit; - boolBit += 2; - if (boolBit === 8 || i === numBools - 1) { - view.setUint8(offset++, boolByte); - boolByte = 0; - boolBit = 0; - } - } - assert(offset === FONT_INFO.OFFSET_NUMBERS, "compileFontInfo: Boolean properties offset mismatch"); - for (const prop of FONT_INFO.numbers) { - view.setFloat64(offset, font[prop]); - offset += 8; - } - assert(offset === FONT_INFO.OFFSET_BBOX, "compileFontInfo: Number properties offset mismatch"); - if (font.bbox) { - view.setUint8(offset++, 4); - for (const coord of font.bbox) { - view.setInt16(offset, coord, true); - offset += 2; - } - } else { - view.setUint8(offset++, 0); - offset += 2 * 4; - } - assert(offset === FONT_INFO.OFFSET_FONT_MATRIX, "compileFontInfo: BBox properties offset mismatch"); - if (font.fontMatrix) { - view.setUint8(offset++, 6); - for (const point of font.fontMatrix) { - view.setFloat64(offset, point, true); - offset += 8; - } - } else { - view.setUint8(offset++, 0); - offset += 8 * 6; - } - assert(offset === FONT_INFO.OFFSET_DEFAULT_VMETRICS, "compileFontInfo: FontMatrix properties offset mismatch"); - if (font.defaultVMetrics) { - view.setUint8(offset++, 3); - for (const metric of font.defaultVMetrics) { - view.setInt16(offset, metric, true); - offset += 2; - } - } else { - view.setUint8(offset++, 0); - offset += 3 * 2; - } - assert(offset === FONT_INFO.OFFSET_STRINGS, "compileFontInfo: DefaultVMetrics properties offset mismatch"); - view.setUint32(FONT_INFO.OFFSET_STRINGS, 0); - offset += 4; - for (const prop of FONT_INFO.strings) { - const encoded = encodedStrings[prop]; - const length = encoded.length; - view.setUint32(offset, length); - data.set(encoded, offset + 4); - offset += 4 + length; - } - view.setUint32(FONT_INFO.OFFSET_STRINGS, offset - FONT_INFO.OFFSET_STRINGS - 4); - if (!systemFontInfoBuffer) { - view.setUint32(offset, 0); - offset += 4; - } else { - const length = systemFontInfoBuffer.byteLength; - view.setUint32(offset, length); - assert(offset + 4 + length <= buffer.byteLength, "compileFontInfo: Buffer overflow at systemFontInfo"); - data.set(new Uint8Array(systemFontInfoBuffer), offset + 4); - offset += 4 + length; - } - if (!cssFontInfoBuffer) { - view.setUint32(offset, 0); - offset += 4; - } else { - const length = cssFontInfoBuffer.byteLength; - view.setUint32(offset, length); - assert(offset + 4 + length <= buffer.byteLength, "compileFontInfo: Buffer overflow at cssFontInfo"); - data.set(new Uint8Array(cssFontInfoBuffer), offset + 4); - offset += 4 + length; - } - if (font.data === undefined) { - view.setUint32(offset, 0); - offset += 4; - } else { - view.setUint32(offset, font.data.length); - data.set(font.data, offset + 4); - offset += 4 + font.data.length; - } - assert(offset <= buffer.byteLength, "compileFontInfo: Buffer overflow"); - return buffer.transferToFixedLength(offset); -} -function compilePatternInfo(ir) { - let kind, - bbox = null, - coords = [], - colors = [], - colorStops = [], - shadingType = null, - background = null; - switch (ir[0]) { - case "RadialAxial": - kind = ir[1] === "axial" ? 1 : 2; - bbox = ir[2]; - colorStops = ir[3]; - if (kind === 1) { - coords.push(...ir[4], ...ir[5]); - } else { - coords.push(ir[4][0], ir[4][1], ir[6], ir[5][0], ir[5][1], ir[7]); - } - break; - case "Mesh": - kind = 3; - shadingType = ir[1]; - coords = ir[2]; - colors = ir[3]; - bbox = ir[6]; - background = ir[7]; - break; - default: - throw new Error(`Unsupported pattern type: ${ir[0]}`); - } - const nCoord = Math.floor(coords.length / 2); - const nColor = Math.floor(colors.length / 4); - const nStop = colorStops.length; - const byteLen = 20 + nCoord * 8 + nColor * 4 + nStop * 8 + (bbox ? 16 : 0) + (background ? 3 : 0); - const buffer = new ArrayBuffer(byteLen); - const dataView = new DataView(buffer); - const u8data = new Uint8Array(buffer); - dataView.setUint8(PATTERN_INFO.KIND, kind); - dataView.setUint8(PATTERN_INFO.HAS_BBOX, bbox ? 1 : 0); - dataView.setUint8(PATTERN_INFO.HAS_BACKGROUND, background ? 1 : 0); - dataView.setUint8(PATTERN_INFO.SHADING_TYPE, shadingType); - dataView.setUint32(PATTERN_INFO.N_COORD, nCoord, true); - dataView.setUint32(PATTERN_INFO.N_COLOR, nColor, true); - dataView.setUint32(PATTERN_INFO.N_STOP, nStop, true); - dataView.setUint32(PATTERN_INFO.N_FIGURES, 0, true); - let offset = 20; - const coordsView = new Float32Array(buffer, offset, nCoord * 2); - coordsView.set(coords); - offset += nCoord * 8; - u8data.set(colors, offset); - offset += nColor * 4; - for (const [pos, hex] of colorStops) { - dataView.setFloat32(offset, pos, true); - offset += 4; - dataView.setUint32(offset, parseInt(hex.slice(1), 16), true); - offset += 4; - } - if (bbox) { - for (const v of bbox) { - dataView.setFloat32(offset, v, true); - offset += 4; - } - } - if (background) { - u8data.set(background, offset); - } - return buffer; -} -function compileFontPathInfo(path) { - return path.slice().buffer; -} - ;// ./src/core/encodings.js const ExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "", "", "", "isuperior", "", "", "lsuperior", "msuperior", "nsuperior", "osuperior", "", "", "rsuperior", "ssuperior", "tsuperior", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdownsmall", "centoldstyle", "Lslashsmall", "", "", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "", "Dotaccentsmall", "", "", "Macronsmall", "", "", "figuredash", "hypheninferior", "", "", "Ogoneksmall", "Ringsmall", "Cedillasmall", "", "", "", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"]; const MacExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "centoldstyle", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "", "threequartersemdash", "", "questionsmall", "", "", "", "", "Ethsmall", "", "", "onequarter", "onehalf", "threequarters", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "", "", "", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hypheninferior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "asuperior", "centsuperior", "", "", "", "", "Aacutesmall", "Agravesmall", "Acircumflexsmall", "Adieresissmall", "Atildesmall", "Aringsmall", "Ccedillasmall", "Eacutesmall", "Egravesmall", "Ecircumflexsmall", "Edieresissmall", "Iacutesmall", "Igravesmall", "Icircumflexsmall", "Idieresissmall", "Ntildesmall", "Oacutesmall", "Ogravesmall", "Ocircumflexsmall", "Odieresissmall", "Otildesmall", "Uacutesmall", "Ugravesmall", "Ucircumflexsmall", "Udieresissmall", "", "eightsuperior", "fourinferior", "threeinferior", "sixinferior", "eightinferior", "seveninferior", "Scaronsmall", "", "centinferior", "twoinferior", "", "Dieresissmall", "", "Caronsmall", "osuperior", "fiveinferior", "", "commainferior", "periodinferior", "Yacutesmall", "", "dollarinferior", "", "", "Thornsmall", "", "nineinferior", "zeroinferior", "Zcaronsmall", "AEsmall", "Oslashsmall", "questiondownsmall", "oneinferior", "Lslashsmall", "", "", "", "", "", "", "Cedillasmall", "", "", "", "", "", "OEsmall", "figuredash", "hyphensuperior", "", "", "", "", "exclamdownsmall", "", "Ydieresissmall", "", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "ninesuperior", "zerosuperior", "", "esuperior", "rsuperior", "tsuperior", "", "", "isuperior", "ssuperior", "dsuperior", "", "", "", "", "", "lsuperior", "Ogoneksmall", "Brevesmall", "Macronsmall", "bsuperior", "nsuperior", "msuperior", "commasuperior", "periodsuperior", "Dotaccentsmall", "Ringsmall", "", "", "", ""]; @@ -17708,9 +17472,7 @@ function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) { const glyphName = differences[charCode]; glyphId = glyphNames.indexOf(glyphName); if (glyphId === -1) { - if (!glyphsUnicodeMap) { - glyphsUnicodeMap = getGlyphsUnicode(); - } + glyphsUnicodeMap ??= getGlyphsUnicode(); const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap); if (standardGlyphName !== glyphName) { glyphId = glyphNames.indexOf(standardGlyphName); @@ -18607,9 +18369,7 @@ class CFFParser { } else if (localSubrIndex) { localSubrToUse = localSubrIndex; } - if (valid) { - valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex); - } + valid &&= this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex); if (state.width !== null) { const nominalWidth = privateDictToUse.getByName("nominalWidthX"); widths[i] = nominalWidth + state.width; @@ -19622,6 +19382,10 @@ const getNonStdFontMap = getLookupTableFactory(function (t) { t["MS-PMincho-Italic"] = "MS PMincho-Italic"; t.NuptialScript = "Times-Italic"; t.SegoeUISymbol = "Helvetica"; + t.TrebuchetMS = "Helvetica"; + t["TrebuchetMS-Bold"] = "Helvetica-Bold"; + t["TrebuchetMS-BoldItalic"] = "Helvetica-BoldOblique"; + t["TrebuchetMS-Italic"] = "Helvetica-Oblique"; }); const getSerifFonts = getLookupTableFactory(function (t) { t["Adobe Jenson"] = true; @@ -20400,6 +20164,7 @@ function isKnownFontName(name) { } ;// ./src/core/glyf.js + const ON_CURVE_POINT = 1 << 0; const X_SHORT_VECTOR = 1 << 1; const Y_SHORT_VECTOR = 1 << 2; @@ -20999,12 +20764,7 @@ function pruneCompositeGlyphCycles(glyfTable, locaEntries, numGlyphs) { }); continue; } - let removeSet = backEdges.get(top.node); - if (!removeSet) { - removeSet = new Set(); - backEdges.set(top.node, removeSet); - } - removeSet.add(compIdx); + backEdges.getOrInsertComputed(top.node, makeSet).add(compIdx); } } const droppedGlyphs = new Set(); @@ -21116,7 +20876,7 @@ class IdentityToUnicodeMap { class CFFFont { constructor(file, properties) { this.properties = properties; - const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED); + const parser = new CFFParser(file, properties, (/* inlined export .SEAC_ANALYSIS_ENABLED */true)); this.cff = parser.parse(); this.cff.duplicateFirstGlyph(); const compiler = new CFFCompiler(this.cff); @@ -21212,6 +20972,287 @@ class CFFFont { } } +;// ./src/shared/obj_bin_transform_utils.js +class CSS_FONT_INFO { + static strings = ["fontFamily", "fontWeight", "italicAngle"]; +} +class SYSTEM_FONT_INFO { + static strings = ["css", "loadedName", "baseFontName", "src"]; +} +class FONT_INFO { + static bools = ["black", "bold", "disableFontFace", "fontExtraProperties", "isInvalidPDFjsFont", "isType3Font", "italic", "missingFile", "remeasure", "vertical"]; + static numbers = ["ascent", "defaultWidth", "descent"]; + static strings = ["fallbackName", "loadedName", "mimetype", "name"]; + static OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8); + static OFFSET_BBOX = this.OFFSET_NUMBERS + this.numbers.length * 8; + static OFFSET_FONT_MATRIX = this.OFFSET_BBOX + 1 + 2 * 4; + static OFFSET_DEFAULT_VMETRICS = this.OFFSET_FONT_MATRIX + 1 + 8 * 6; + static OFFSET_STRINGS = this.OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3; +} +class PATTERN_INFO { + static KIND = 0; + static HAS_BBOX = 1; + static HAS_BACKGROUND = 2; + static SHADING_TYPE = 3; + static N_COORD = 4; + static N_COLOR = 8; + static N_STOP = 12; + static N_FIGURES = 16; +} + +;// ./src/core/obj_bin_transform_core.js + + +function compileCssFontInfo(info) { + const encoder = new TextEncoder(); + const encodedStrings = {}; + let stringsLength = 0; + for (const prop of CSS_FONT_INFO.strings) { + const encoded = encoder.encode(info[prop]); + encodedStrings[prop] = encoded; + stringsLength += 4 + encoded.length; + } + const buffer = new ArrayBuffer(stringsLength); + const data = new Uint8Array(buffer); + const view = new DataView(buffer); + let offset = 0; + for (const prop of CSS_FONT_INFO.strings) { + const encoded = encodedStrings[prop]; + const length = encoded.length; + view.setUint32(offset, length); + data.set(encoded, offset + 4); + offset += 4 + length; + } + assert(offset === buffer.byteLength, "compileCssFontInfo: Buffer overflow"); + return buffer; +} +function compileSystemFontInfo(info) { + const encoder = new TextEncoder(); + const encodedStrings = {}; + let stringsLength = 0; + for (const prop of SYSTEM_FONT_INFO.strings) { + const encoded = encoder.encode(info[prop]); + encodedStrings[prop] = encoded; + stringsLength += 4 + encoded.length; + } + stringsLength += 4; + let encodedStyleStyle, + encodedStyleWeight, + lengthEstimate = 1 + stringsLength; + if (info.style) { + encodedStyleStyle = encoder.encode(info.style.style); + encodedStyleWeight = encoder.encode(info.style.weight); + lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length; + } + const buffer = new ArrayBuffer(lengthEstimate); + const data = new Uint8Array(buffer); + const view = new DataView(buffer); + let offset = 0; + view.setUint8(offset++, info.guessFallback ? 1 : 0); + view.setUint32(offset, 0); + offset += 4; + stringsLength = 0; + for (const prop of SYSTEM_FONT_INFO.strings) { + const encoded = encodedStrings[prop]; + const length = encoded.length; + stringsLength += 4 + length; + view.setUint32(offset, length); + data.set(encoded, offset + 4); + offset += 4 + length; + } + view.setUint32(offset - stringsLength - 4, stringsLength); + if (info.style) { + view.setUint32(offset, encodedStyleStyle.length); + data.set(encodedStyleStyle, offset + 4); + offset += 4 + encodedStyleStyle.length; + view.setUint32(offset, encodedStyleWeight.length); + data.set(encodedStyleWeight, offset + 4); + offset += 4 + encodedStyleWeight.length; + } + assert(offset <= buffer.byteLength, "compileSystemFontInfo: Buffer overflow"); + return buffer.transferToFixedLength(offset); +} +function compileFontInfo(font) { + const systemFontInfoBuffer = font.systemFontInfo ? compileSystemFontInfo(font.systemFontInfo) : null; + const cssFontInfoBuffer = font.cssFontInfo ? compileCssFontInfo(font.cssFontInfo) : null; + const encoder = new TextEncoder(); + const encodedStrings = {}; + let stringsLength = 0; + for (const prop of FONT_INFO.strings) { + encodedStrings[prop] = encoder.encode(font[prop]); + stringsLength += 4 + encodedStrings[prop].length; + } + const lengthEstimate = FONT_INFO.OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer?.byteLength ?? 0) + 4 + (cssFontInfoBuffer?.byteLength ?? 0) + 4 + (font.data?.length ?? 0); + const buffer = new ArrayBuffer(lengthEstimate); + const data = new Uint8Array(buffer); + const view = new DataView(buffer); + let offset = 0; + const numBools = FONT_INFO.bools.length; + let boolByte = 0, + boolBit = 0; + for (let i = 0; i < numBools; i++) { + const value = font[FONT_INFO.bools[i]]; + const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01; + boolByte |= bits << boolBit; + boolBit += 2; + if (boolBit === 8 || i === numBools - 1) { + view.setUint8(offset++, boolByte); + boolByte = 0; + boolBit = 0; + } + } + assert(offset === FONT_INFO.OFFSET_NUMBERS, "compileFontInfo: Boolean properties offset mismatch"); + for (const prop of FONT_INFO.numbers) { + view.setFloat64(offset, font[prop]); + offset += 8; + } + assert(offset === FONT_INFO.OFFSET_BBOX, "compileFontInfo: Number properties offset mismatch"); + if (font.bbox) { + view.setUint8(offset++, 4); + for (const coord of font.bbox) { + view.setInt16(offset, coord, true); + offset += 2; + } + } else { + view.setUint8(offset++, 0); + offset += 2 * 4; + } + assert(offset === FONT_INFO.OFFSET_FONT_MATRIX, "compileFontInfo: BBox properties offset mismatch"); + if (font.fontMatrix) { + view.setUint8(offset++, 6); + for (const point of font.fontMatrix) { + view.setFloat64(offset, point, true); + offset += 8; + } + } else { + view.setUint8(offset++, 0); + offset += 8 * 6; + } + assert(offset === FONT_INFO.OFFSET_DEFAULT_VMETRICS, "compileFontInfo: FontMatrix properties offset mismatch"); + if (font.defaultVMetrics) { + view.setUint8(offset++, 3); + for (const metric of font.defaultVMetrics) { + view.setInt16(offset, metric, true); + offset += 2; + } + } else { + view.setUint8(offset++, 0); + offset += 3 * 2; + } + assert(offset === FONT_INFO.OFFSET_STRINGS, "compileFontInfo: DefaultVMetrics properties offset mismatch"); + view.setUint32(FONT_INFO.OFFSET_STRINGS, 0); + offset += 4; + for (const prop of FONT_INFO.strings) { + const encoded = encodedStrings[prop]; + const length = encoded.length; + view.setUint32(offset, length); + data.set(encoded, offset + 4); + offset += 4 + length; + } + view.setUint32(FONT_INFO.OFFSET_STRINGS, offset - FONT_INFO.OFFSET_STRINGS - 4); + if (!systemFontInfoBuffer) { + view.setUint32(offset, 0); + offset += 4; + } else { + const length = systemFontInfoBuffer.byteLength; + view.setUint32(offset, length); + assert(offset + 4 + length <= buffer.byteLength, "compileFontInfo: Buffer overflow at systemFontInfo"); + data.set(new Uint8Array(systemFontInfoBuffer), offset + 4); + offset += 4 + length; + } + if (!cssFontInfoBuffer) { + view.setUint32(offset, 0); + offset += 4; + } else { + const length = cssFontInfoBuffer.byteLength; + view.setUint32(offset, length); + assert(offset + 4 + length <= buffer.byteLength, "compileFontInfo: Buffer overflow at cssFontInfo"); + data.set(new Uint8Array(cssFontInfoBuffer), offset + 4); + offset += 4 + length; + } + if (font.data === undefined) { + view.setUint32(offset, 0); + offset += 4; + } else { + view.setUint32(offset, font.data.length); + data.set(font.data, offset + 4); + offset += 4 + font.data.length; + } + assert(offset <= buffer.byteLength, "compileFontInfo: Buffer overflow"); + return buffer.transferToFixedLength(offset); +} +function compilePatternInfo(ir) { + let kind, + bbox = null, + coords = [], + colors = [], + colorStops = [], + shadingType = null, + background = null; + switch (ir[0]) { + case "RadialAxial": + kind = ir[1] === "axial" ? 1 : 2; + bbox = ir[2]; + colorStops = ir[3]; + if (kind === 1) { + coords.push(...ir[4], ...ir[5]); + } else { + coords.push(ir[4][0], ir[4][1], ir[6], ir[5][0], ir[5][1], ir[7]); + } + break; + case "Mesh": + kind = 3; + shadingType = ir[1]; + coords = ir[2]; + colors = ir[3]; + bbox = ir[6]; + background = ir[7]; + break; + default: + throw new Error(`Unsupported pattern type: ${ir[0]}`); + } + const nCoord = Math.floor(coords.length / 2); + const nColor = Math.floor(colors.length / 4); + const nStop = colorStops.length; + const byteLen = 20 + nCoord * 8 + nColor * 4 + nStop * 8 + (bbox ? 16 : 0) + (background ? 3 : 0); + const buffer = new ArrayBuffer(byteLen); + const dataView = new DataView(buffer); + const u8data = new Uint8Array(buffer); + dataView.setUint8(PATTERN_INFO.KIND, kind); + dataView.setUint8(PATTERN_INFO.HAS_BBOX, bbox ? 1 : 0); + dataView.setUint8(PATTERN_INFO.HAS_BACKGROUND, background ? 1 : 0); + dataView.setUint8(PATTERN_INFO.SHADING_TYPE, shadingType); + dataView.setUint32(PATTERN_INFO.N_COORD, nCoord, true); + dataView.setUint32(PATTERN_INFO.N_COLOR, nColor, true); + dataView.setUint32(PATTERN_INFO.N_STOP, nStop, true); + dataView.setUint32(PATTERN_INFO.N_FIGURES, 0, true); + let offset = 20; + const coordsView = new Float32Array(buffer, offset, nCoord * 2); + coordsView.set(coords); + offset += nCoord * 8; + u8data.set(colors, offset); + offset += nColor * 4; + for (const [pos, hex] of colorStops) { + dataView.setFloat32(offset, pos, true); + offset += 4; + dataView.setUint32(offset, parseInt(hex.slice(1), 16), true); + offset += 4; + } + if (bbox) { + for (const v of bbox) { + dataView.setFloat32(offset, v, true); + offset += 4; + } + } + if (background) { + u8data.set(background, offset); + } + return buffer; +} +function compileFontPathInfo(path) { + return path.slice().buffer; +} + ;// ./src/core/font_renderer.js @@ -21219,6 +21260,7 @@ class CFFFont { + function getFloat214(view, offset) { return view.getInt16(offset) / 16384; } @@ -21895,35 +21937,34 @@ class Commands { } } class CompiledFont { + #compiledCharCodes = new Set(); + #compiledGlyphs = new Map(); constructor(fontMatrix) { this.fontMatrix = fontMatrix; - this.compiledGlyphs = Object.create(null); - this.compiledCharCodeToGlyphId = Object.create(null); } static get NOOP() { return shadow(this, "NOOP", FeatureTest.isFloat16ArraySupported ? new Float16Array(0) : new Float32Array(0)); } - getPathJs(unicode) { + getPath(unicode) { const { charCode, glyphId } = lookupCmap(this.cmap, unicode); - let fn = this.compiledGlyphs[glyphId], - compileEx; - if (fn === undefined) { + if (this.#compiledGlyphs.has(glyphId) && this.#compiledCharCodes.has(charCode)) { + return null; + } + const path = this.#compiledGlyphs.getOrInsertComputed(glyphId, () => { try { - fn = this.compileGlyph(this.glyphs[glyphId], glyphId); + return this.compileGlyph(this.glyphs[glyphId], glyphId); } catch (ex) { - fn = CompiledFont.NOOP; - compileEx = ex; + return ex; } - this.compiledGlyphs[glyphId] = fn; - } - this.compiledCharCodeToGlyphId[charCode] ??= glyphId; - if (compileEx) { - throw compileEx; + }); + this.#compiledCharCodes.add(charCode); + if (path instanceof Error) { + throw path; } - return fn; + return compileFontPathInfo(path); } compileGlyph(code, glyphId) { if (!code?.length || code[0] === 14) { @@ -21949,13 +21990,6 @@ class CompiledFont { compileGlyphImpl() { unreachable("Children classes should implement this."); } - hasBuiltPath(unicode) { - const { - charCode, - glyphId - } = lookupCmap(this.cmap, unicode); - return this.compiledGlyphs[glyphId] !== undefined && this.compiledCharCodeToGlyphId[charCode] !== undefined; - } } class TrueTypeCompiled extends CompiledFont { constructor(glyphs, cmap, fontMatrix) { @@ -25166,14 +25200,14 @@ class Type1CharString { } switch (value) { case 1: - if (!HINTING_ENABLED) { + if (true) { this.stack = []; break; } error = this.executeCommand(2, COMMAND_MAP.hstem); break; case 3: - if (!HINTING_ENABLED) { + if (true) { this.stack = []; break; } @@ -25258,14 +25292,14 @@ class Type1CharString { this.stack = []; break; case (12 << 8) + 1: - if (!HINTING_ENABLED) { + if (true) { this.stack = []; break; } error = this.executeCommand(2, COMMAND_MAP.vstem); break; case (12 << 8) + 2: - if (!HINTING_ENABLED) { + if (true) { this.stack = []; break; } @@ -25515,7 +25549,7 @@ class Type1Parser { privateData } }; - let token, length, data, lenIV; + let token, length, data; let subrsParsed = false; let charStringsParsed = false; while ((token = this.getToken()) !== null) { @@ -25545,8 +25579,7 @@ class Type1Parser { length = this.readInt(); this.getToken(); data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); - lenIV = privateData.get("lenIV"); - const encoded = this.readCharStrings(data, lenIV); + const encoded = this.readCharStrings(data, privateData.get("lenIV")); this.nextChar(); token = this.getToken(); if (token === "noaccess") { @@ -25572,8 +25605,7 @@ class Type1Parser { length = this.readInt(); this.getToken(); data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); - lenIV = privateData.get("lenIV"); - const encoded = this.readCharStrings(data, lenIV); + const encoded = this.readCharStrings(data, privateData.get("lenIV")); this.nextChar(); token = this.getToken(); if (token === "noaccess") { @@ -25587,9 +25619,8 @@ class Type1Parser { case "FamilyBlues": case "FamilyOtherBlues": const blueArray = this.readNumberArray(); - if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) { - privateData.set(token, blueArray); - } + if (false) // removed by dead control flow +{} break; case "StemSnapH": case "StemSnapV": @@ -26028,14 +26059,14 @@ class Type1Font { headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; } const headerBlock = getHeaderBlock(file, headerBlockLength); - const headerBlockParser = new Type1Parser(headerBlock.stream, false, SEAC_ANALYSIS_ENABLED); + const headerBlockParser = new Type1Parser(headerBlock.stream, false, (/* inlined export .SEAC_ANALYSIS_ENABLED */true)); headerBlockParser.extractFontHeader(properties); if (pfbHeaderPresent) { pfbHeader = file.getBytes(PFB_HEADER_SIZE); eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; } const eexecBlock = getEexecBlock(file, eexecBlockLength); - const eexecBlockParser = new Type1Parser(eexecBlock.stream, true, SEAC_ANALYSIS_ENABLED); + const eexecBlockParser = new Type1Parser(eexecBlock.stream, true, (/* inlined export .SEAC_ANALYSIS_ENABLED */true)); const data = eexecBlockParser.extractFontProgram(properties); this.#rawFileLength = headerBlock.length + eexecBlock.length; return data; @@ -26043,7 +26074,7 @@ class Type1Font { #parseCidKeyedType1(file, properties) { const fileStart = file.pos; const length = file.end - fileStart; - const parser = new Type1Parser(file, false, SEAC_ANALYSIS_ENABLED); + const parser = new Type1Parser(file, false, (/* inlined export .SEAC_ANALYSIS_ENABLED */true)); const data = parser.extractCidKeyedFontProgram(properties); if (!data) { file.pos = fileStart; @@ -27056,7 +27087,7 @@ class Font { this.seacMap = properties.seacMap; } get renderer() { - const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED); + const renderer = FontRendererFactory.create(this, (/* inlined export .SEAC_ANALYSIS_ENABLED */true)); return shadow(this, "renderer", renderer); } #getExportData(props) { @@ -27273,9 +27304,9 @@ class Font { throw new FormatError('TrueType Collection font must contain a "name" table.'); } const [nameTable] = readNameTable(potentialTables.name); - for (let j = 0, jj = nameTable.length; j < jj; j++) { - for (let k = 0, kk = nameTable[j].length; k < kk; k++) { - const nameEntry = nameTable[j][k]?.replaceAll(/\s/g, ""); + for (const nameArr of nameTable) { + for (const entry of nameArr) { + const nameEntry = entry?.replaceAll(/\s/g, ""); if (!nameEntry) { continue; } @@ -28199,7 +28230,7 @@ class Font { let parsedCff = null; if (!isTrueType) { try { - parsedCff = new CFFParser(new Stream(tables["CFF "].data), properties, SEAC_ANALYSIS_ENABLED).parse(); + parsedCff = new CFFParser(new Stream(tables["CFF "].data), properties, (/* inlined export .SEAC_ANALYSIS_ENABLED */true)).parse(); } catch { warn("Failed to parse font " + properties.loadedName); } @@ -28576,7 +28607,7 @@ class Font { return newMapping.nextAvailableFontCharCode++; } const seacs = font.seacs; - if (newMapping && SEAC_ANALYSIS_ENABLED && seacs?.length) { + if (newMapping && (/* inlined export .SEAC_ANALYSIS_ENABLED */true) && seacs?.length) { const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX; const charset = font.getCharset(); const seacMap = Object.create(null); @@ -28839,7 +28870,7 @@ class Font { const getCharCode = this.toUnicode instanceof IdentityToUnicodeMap ? unicode => this.toUnicode.charCodeOf(unicode) : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode)); for (let i = 0, ii = str.length; i < ii; i++) { const unicode = str.codePointAt(i); - if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) { + if (unicode > 0xffff) { i++; } if (this.toUnicode) { @@ -31130,6 +31161,17 @@ class PsWasmCompiler { this._code.push(b); } while (n !== 0); } + _emitSLEB128(n) { + for (;;) { + const b = n & 0x7f; + n >>= 7; + if (n === 0 && (b & 0x40) === 0 || n === -1 && (b & 0x40) !== 0) { + this._code.push(b); + return; + } + this._code.push(b | 0x80); + } + } _emitF64Const(value) { this._code.push(wasm_compiler_OP.f64_const); PsWasmCompiler.#f64View.setFloat64(0, value, true); @@ -31338,11 +31380,11 @@ class PsWasmCompiler { const shift = first.value; if (shift > 0) { code.push(wasm_compiler_OP.i32_const); - this._emitULEB128(shift); + this._emitSLEB128(shift); code.push(wasm_compiler_OP.i32_shl); } else if (shift < 0) { code.push(wasm_compiler_OP.i32_const); - this._emitULEB128(-shift); + this._emitSLEB128(-shift); code.push(wasm_compiler_OP.i32_shr_s); } code.push(wasm_compiler_OP.f64_convert_i32_s); @@ -31623,7 +31665,7 @@ class PsWasmCompiler { const min = this._range[i * 2]; const max = this._range[i * 2 + 1]; code.push(wasm_compiler_OP.i32_const); - this._emitULEB128(i * 8); + this._emitSLEB128(i * 8); if (!this._compileNode(outputs[i])) { return null; } @@ -31938,11 +31980,7 @@ class GlobalImageCache { return true; } shouldCache(ref, pageIndex) { - let pageIndexSet = this._refCache.get(ref); - if (!pageIndexSet) { - pageIndexSet = new Set(); - this._refCache.put(ref, pageIndexSet); - } + const pageIndexSet = this._refCache.getOrPutComputed(ref, makeSet); pageIndexSet.add(pageIndex); if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) { return false; @@ -33143,7 +33181,7 @@ class PDFImage { this.jpxDecoderOptions = { numComponents: 0, isIndexedColormap: false, - smaskInData: dict.has("SMaskInData"), + smaskInData: dict.get("SMaskInData") >= 1, reducePower }; if (reducePower) { @@ -33199,6 +33237,20 @@ class PDFImage { if (!this.imageMask) { let colorSpace = dict.getRaw("CS") || dict.getRaw("ColorSpace"); const hasColorSpace = !!colorSpace; + if (this.jpxDecoderOptions?.smaskInData && dict.get("SMaskInData") === 2) { + this.jpxPremultiplied = true; + if (this.matte) { + const matteColorSpace = ColorSpaceUtils.parse({ + cs: hasColorSpace ? colorSpace : Name.get("DeviceRGB"), + xref, + resources: isInline ? res : null, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache + }); + this.preblendMatte = matteColorSpace.getRgb(this.matte, 0); + } + } if (!hasColorSpace) { if (this.jpxDecoderOptions) { colorSpace = Name.get("DeviceRGBA"); @@ -33504,13 +33556,7 @@ class PDFImage { bits += 8; } const remainingBits = bits - bpc; - let value = buf >> remainingBits; - if (value < 0) { - value = 0; - } else if (value > max) { - value = max; - } - output[i] = value; + output[i] = MathClamp(buf >> remainingBits, 0, max); buf &= (1 << remainingBits) - 1; bits = remainingBits; } @@ -33573,16 +33619,7 @@ class PDFImage { stride: 4 }); } - undoPreblend(buffer, width, height) { - const matte = this.smask?.matte; - if (!matte) { - return; - } - const matteRgb = this.colorSpace.getRgb(matte, 0); - const matteR = matteRgb[0]; - const matteG = matteRgb[1]; - const matteB = matteRgb[2]; - const length = width * height * 4; + static #undoPreblend(buffer, length, matteR, matteG, matteB) { for (let i = 0; i < length; i += 4) { const alpha = buffer[i + 3]; if (alpha === 0) { @@ -33597,6 +33634,14 @@ class PDFImage { buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB; } } + undoPreblend(buffer, width, height) { + const matte = this.smask?.matte; + if (!matte) { + return; + } + const matteRgb = this.colorSpace.getRgb(matte, 0); + PDFImage.#undoPreblend(buffer, width * height * 4, matteRgb[0], matteRgb[1], matteRgb[2]); + } async createImageData(forceRGBA = false, isOffscreenCanvasSupported = false) { const drawWidth = this.drawWidth; const drawHeight = this.drawHeight; @@ -33618,6 +33663,10 @@ class PDFImage { const imgArray = imgData.data = await this.getImageBytes(originalHeight * originalWidth * 4, { internal: isOffscreenCanvasSupported && mustBeResized }); + if (this.jpxPremultiplied) { + const matteRgb = this.preblendMatte; + PDFImage.#undoPreblend(imgArray, imgArray.length, matteRgb?.[0] ?? 0, matteRgb?.[1] ?? 0, matteRgb?.[2] ?? 0); + } if (isOffscreenCanvasSupported) { if (!mustBeResized) { return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, imgArray); @@ -33991,52 +34040,45 @@ function normalizeBlendMode(value, parsingArray = false) { warn(`Unsupported blend mode Array: ${value}`); return "source-over"; } - if (!(value instanceof Name)) { - if (parsingArray) { - return null; - } - return "source-over"; - } - switch (value.name) { - case "Normal": - case "Compatible": - return "source-over"; - case "Multiply": - return "multiply"; - case "Screen": - return "screen"; - case "Overlay": - return "overlay"; - case "Darken": - return "darken"; - case "Lighten": - return "lighten"; - case "ColorDodge": - return "color-dodge"; - case "ColorBurn": - return "color-burn"; - case "HardLight": - return "hard-light"; - case "SoftLight": - return "soft-light"; - case "Difference": - return "difference"; - case "Exclusion": - return "exclusion"; - case "Hue": - return "hue"; - case "Saturation": - return "saturation"; - case "Color": - return "color"; - case "Luminosity": - return "luminosity"; - } - if (parsingArray) { - return null; - } - warn(`Unsupported blend mode: ${value.name}`); - return "source-over"; + if (value instanceof Name) { + switch (value.name) { + case "Normal": + case "Compatible": + return "source-over"; + case "Multiply": + return "multiply"; + case "Screen": + return "screen"; + case "Overlay": + return "overlay"; + case "Darken": + return "darken"; + case "Lighten": + return "lighten"; + case "ColorDodge": + return "color-dodge"; + case "ColorBurn": + return "color-burn"; + case "HardLight": + return "hard-light"; + case "SoftLight": + return "soft-light"; + case "Difference": + return "difference"; + case "Exclusion": + return "exclusion"; + case "Hue": + return "hue"; + case "Saturation": + return "saturation"; + case "Color": + return "color"; + case "Luminosity": + return "luminosity"; + } + warn(`Unsupported blend mode: ${value.name}`); + } + return parsingArray ? null : "source-over"; } function addCachedImageOps(opList, { objId, @@ -35301,40 +35343,64 @@ class PartialEvaluator { return; } case OPS.setFillColor: + if (!isNumberArray(args, null)) { + continue; + } cs = stateManager.state.fillColorSpace; args = [cs.getRgbHex(args, 0)]; fn = OPS.setFillRGBColor; break; case OPS.setStrokeColor: + if (!isNumberArray(args, null)) { + continue; + } cs = stateManager.state.strokeColorSpace; args = [cs.getRgbHex(args, 0)]; fn = OPS.setStrokeRGBColor; break; case OPS.setFillGray: + if (!isNumberArray(args, null)) { + continue; + } stateManager.state.fillColorSpace = ColorSpaceUtils.gray; args = [ColorSpaceUtils.gray.getRgbHex(args, 0)]; fn = OPS.setFillRGBColor; break; case OPS.setStrokeGray: + if (!isNumberArray(args, null)) { + continue; + } stateManager.state.strokeColorSpace = ColorSpaceUtils.gray; args = [ColorSpaceUtils.gray.getRgbHex(args, 0)]; fn = OPS.setStrokeRGBColor; break; case OPS.setFillCMYKColor: + if (!isNumberArray(args, null)) { + continue; + } stateManager.state.fillColorSpace = ColorSpaceUtils.cmyk; args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)]; fn = OPS.setFillRGBColor; break; case OPS.setStrokeCMYKColor: + if (!isNumberArray(args, null)) { + continue; + } stateManager.state.strokeColorSpace = ColorSpaceUtils.cmyk; args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)]; fn = OPS.setStrokeRGBColor; break; case OPS.setFillRGBColor: + if (!isNumberArray(args, null)) { + continue; + } stateManager.state.fillColorSpace = ColorSpaceUtils.rgb; args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)]; break; case OPS.setStrokeRGBColor: + if (!isNumberArray(args, null)) { + continue; + } stateManager.state.strokeColorSpace = ColorSpaceUtils.rgb; args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)]; break; @@ -35351,9 +35417,15 @@ class PartialEvaluator { break; } if (cs.name === "Pattern") { + if (!Array.isArray(args)) { + continue; + } next(self.handleColorN(operatorList, OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache, seenRefs)); return; } + if (!isNumberArray(args, null)) { + continue; + } args = [cs.getRgbHex(args, 0)]; fn = OPS.setFillRGBColor; break; @@ -35370,9 +35442,15 @@ class PartialEvaluator { break; } if (cs.name === "Pattern") { + if (!Array.isArray(args)) { + continue; + } next(self.handleColorN(operatorList, OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache, seenRefs)); return; } + if (!isNumberArray(args, null)) { + continue; + } args = [cs.getRgbHex(args, 0)]; fn = OPS.setStrokeRGBColor; break; @@ -36184,9 +36262,7 @@ class PartialEvaluator { continue; } const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000; - const elements = args[0]; - for (let i = 0, ii = elements.length; i < ii; i++) { - const item = elements[i]; + for (const item of args[0]) { if (typeof item === "string") { showSpacedTextBuffer.push(item); } else if (typeof item === "number" && item !== 0) { @@ -37277,10 +37353,10 @@ class PartialEvaluator { function buildPath(fontChar) { const glyphName = `${font.loadedName}_path_${fontChar}`; try { - if (font.renderer.hasBuiltPath(fontChar)) { + const buffer = font.renderer.getPath(fontChar); + if (!buffer) { return; } - const buffer = compileFontPathInfo(font.renderer.getPathJs(fontChar)); handler.send("commonobj", [glyphName, "FontPath", buffer], [buffer]); } catch (reason) { if (evaluatorOptions.ignoreErrors) { @@ -38175,7 +38251,8 @@ class AppearanceStreamEvaluator extends EvaluatorPreprocessor { result = stack.pop() || result; break; case OPS.setTextMatrix: - result.scaleFactor *= Math.hypot(args[0], args[1]); + const tm = Util.transform(this.stateManager.state.ctm, args); + result.scaleFactor *= Math.hypot(tm[0], tm[1]); break; case OPS.setFont: const [fontName, fontSize] = args; @@ -38183,7 +38260,7 @@ class AppearanceStreamEvaluator extends EvaluatorPreprocessor { result.fontName = fontName.name; } if (typeof fontSize === "number" && fontSize > 0) { - result.fontSize = fontSize * result.scaleFactor; + result.fontSize = fontSize; } break; case OPS.setFillColorSpace: @@ -38213,6 +38290,7 @@ class AppearanceStreamEvaluator extends EvaluatorPreprocessor { case OPS.showSpacedText: case OPS.nextLineShowText: case OPS.nextLineSetSpacingShowText: + result.fontSize *= result.scaleFactor; breakLoop = true; break; } @@ -38364,8 +38442,8 @@ class FakeUnicodeFont { if (rotation % 180 !== 0) { [w, h] = [h, w]; } - const lineHeight = LINE_FACTOR * fontSize; - const lineDescent = LINE_DESCENT_FACTOR * fontSize; + const lineHeight = (/* inlined export .LINE_FACTOR */1.35) * fontSize; + const lineDescent = (/* inlined export .LINE_DESCENT_FACTOR */0.35) * fontSize; return { coords: [0, h + lineDescent - lineHeight], bbox: [0, 0, w, h], @@ -38401,8 +38479,8 @@ class FakeUnicodeFont { } const hscale = maxWidth > w ? w / maxWidth : 1; let vscale = 1; - const lineHeight = LINE_FACTOR * fontSize; - const lineDescent = LINE_DESCENT_FACTOR * fontSize; + const lineHeight = (/* inlined export .LINE_FACTOR */1.35) * fontSize; + const lineDescent = (/* inlined export .LINE_DESCENT_FACTOR */0.35) * fontSize; const maxHeight = lineHeight * lines.length; if (maxHeight > h) { vscale = h / maxHeight; @@ -39235,6 +39313,95 @@ class MetadataParser { } } +;// ./src/core/sound.js + + +const WAV_HEADER_SIZE = 44; +function getSoundFormat(dict) { + if (!dict || dict.has("CO")) { + return null; + } + const sampleRate = dict.get("R"); + if (!Number.isInteger(sampleRate) || sampleRate <= 0) { + return null; + } + const channels = dict.get("C") ?? 1; + if (!Number.isInteger(channels) || channels < 1 || channels > 2) { + return null; + } + const bitsPerSample = dict.get("B") ?? 8; + if (bitsPerSample !== 8 && bitsPerSample !== 16) { + return null; + } + const e = dict.get("E"); + let encoding = "Raw"; + if (e !== undefined) { + encoding = e instanceof Name ? e.name : null; + } + if (encoding !== "Raw" && encoding !== "Signed") { + return null; + } + return { + channels, + sampleRate, + bitsPerSample, + encoding + }; +} +function soundStreamToWav(stream, samples) { + const format = getSoundFormat(stream.dict); + if (!format) { + return null; + } + const { + channels, + sampleRate, + bitsPerSample, + encoding + } = format; + const blockAlign = channels * (bitsPerSample >> 3); + const dataLength = samples.length - samples.length % blockAlign; + if (dataLength === 0) { + return null; + } + const wav = new Uint8Array(WAV_HEADER_SIZE + dataLength); + const view = new DataView(wav.buffer); + wav.set(stringToBytes("RIFF"), 0); + view.setUint32(4, WAV_HEADER_SIZE - 8 + dataLength, true); + wav.set(stringToBytes("WAVE"), 8); + wav.set(stringToBytes("fmt "), 12); + view.setUint32(16, 16, true); + view.setUint16(20, 1, true); + view.setUint16(22, channels, true); + view.setUint32(24, sampleRate, true); + view.setUint32(28, sampleRate * blockAlign, true); + view.setUint16(32, blockAlign, true); + view.setUint16(34, bitsPerSample, true); + wav.set(stringToBytes("data"), 36); + view.setUint32(40, dataLength, true); + if (bitsPerSample === 16) { + const signed = encoding === "Signed"; + for (let i = 0; i < dataLength; i += 2) { + let value = samples[i] << 8 | samples[i + 1]; + if (signed) { + if (value >= 0x8000) { + value -= 0x10000; + } + } else { + value -= 0x8000; + } + view.setInt16(WAV_HEADER_SIZE + i, value, true); + } + } else if (encoding === "Signed") { + for (let i = 0; i < dataLength; i++) { + wav[WAV_HEADER_SIZE + i] = samples[i] + 128 & 0xff; + } + } else { + wav.set(samples.subarray(0, dataLength), WAV_HEADER_SIZE); + } + return wav; +} + ;// ./src/core/struct_tree.js @@ -39299,12 +39466,7 @@ class StructTreeRoot { return; } this.structParentIds ||= new RefSetCache(); - let ids = this.structParentIds.get(pageRef); - if (!ids) { - ids = []; - this.structParentIds.put(pageRef, ids); - } - ids.push([id, type]); + this.structParentIds.getOrPutComputed(pageRef, makeArr).push([id, type]); } addAnnotationIdToPage(pageRef, id) { this.#addIdToPage(pageRef, id, StructElementType.ANNOTATION); @@ -39704,11 +39866,7 @@ class StructTreeRoot { fallbackKids.push(newTagRef); return; } - let cachedParentDict = cache.get(parentRef); - if (!cachedParentDict) { - cachedParentDict = parentDict.clone(); - cache.put(parentRef, cachedParentDict); - } + const cachedParentDict = cache.getOrPutComputed(parentRef, () => parentDict.clone()); const parentKidsRaw = cachedParentDict.getRaw("K"); let cachedParentKids = parentKidsRaw instanceof Ref ? cache.get(parentKidsRaw) : null; if (!cachedParentKids) { @@ -40079,6 +40237,7 @@ class StructTreePage { + const isRef = v => v instanceof Ref; const isValidExplicitDest = _isValidExplicitDest.bind(null, isRef, isName); function fetchDest(dest) { @@ -40105,6 +40264,7 @@ class Catalog { #actualNumPages = null; #annotationAttachmentIdByRef = new RefSetCache(); #annotationAttachmentRefById = new Map(); + #soundAttachmentIds = new Set(); #catDict = null; builtInCMapCache = new Map(); fontCache = new RefSetCache(); @@ -40128,19 +40288,21 @@ class Catalog { cloneDict() { return this.#catDict.clone(); } - getAttachmentIdForAnnotation(ref) { + getAttachmentIdForAnnotation(ref, isSound = false) { let id = this.#annotationAttachmentIdByRef.get(ref); - if (id) { - return id; + if (!id) { + const baseId = `attachmentRef:${ref.toString()}`; + id = baseId; + let i = 1; + while (this.#annotationAttachmentRefById.has(id) || this.attachments?.has(id)) { + id = `${baseId}-${i++}`; + } + this.#annotationAttachmentIdByRef.put(ref, id); + this.#annotationAttachmentRefById.set(id, ref); } - const baseId = `attachmentRef:${ref.toString()}`; - id = baseId; - let i = 1; - while (this.#annotationAttachmentRefById.has(id) || this.attachments?.has(id)) { - id = `${baseId}-${i++}`; + if (isSound) { + this.#soundAttachmentIds.add(id); } - this.#annotationAttachmentIdByRef.put(ref, id); - this.#annotationAttachmentRefById.set(id, ref); return id; } get version() { @@ -40622,21 +40784,20 @@ class Catalog { return this.#actualNumPages ?? this._pagesCount; } get destinations() { - const rawDests = this.#readDests(), - dests = Object.create(null); - for (const obj of rawDests) { + const dests = new Map(); + for (const obj of this.#readDests()) { if (obj instanceof NameTree) { for (const [key, value] of obj.getAll()) { const dest = fetchDest(value); if (dest) { - dests[stringToPDFString(key, true)] = dest; + dests.set(stringToPDFString(key, true), dest); } } } else if (obj instanceof Dict) { for (const [key, value] of obj) { const dest = fetchDest(value); if (dest) { - dests[stringToPDFString(key, true)] ||= dest; + dests.getOrInsert(stringToPDFString(key, true), dest); } } } @@ -40645,10 +40806,9 @@ class Catalog { } getDestination(id) { if (Object.hasOwn(this, "destinations")) { - return this.destinations[id] ?? null; + return this.destinations.get(id) ?? null; } - const rawDests = this.#readDests(); - for (const obj of rawDests) { + for (const obj of this.#readDests()) { if (obj instanceof NameTree || obj instanceof Dict) { const dest = fetchDest(obj.get(id)); if (dest) { @@ -40656,13 +40816,7 @@ class Catalog { } } } - if (rawDests.length) { - const dest = this.destinations[id]; - if (dest) { - return dest; - } - } - return null; + return this.destinations.get(id) ?? null; } #readDests() { const obj = this.#catDict.get("Names"); @@ -40893,11 +41047,8 @@ class Catalog { } break; case "PrintPageRange": - if (Array.isArray(value) && value.length % 2 === 0) { - const isValid = value.every((page, i, arr) => Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages); - if (isValid) { - prefValue = value; - } + if (Array.isArray(value) && value.length % 2 === 0 && value.every((page, i, arr) => Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages)) { + prefValue = value; } break; case "NumCopies": @@ -40913,14 +41064,13 @@ class Catalog { warn(`Bad value, for key "${key}", in ViewerPreferences: ${value}.`); continue; } - prefs ??= Object.create(null); - prefs[key] = prefValue; + (prefs ??= new Map()).set(key, prefValue); } return shadow(this, "viewerPreferences", prefs); } get openAction() { const obj = this.#catDict.get("OpenAction"); - const openAction = Object.create(null); + const openAction = new Map(); if (obj instanceof Dict) { const destDict = new Dict(this.xref); destDict.set("A", obj); @@ -40934,14 +41084,14 @@ class Catalog { resultObj }); if (Array.isArray(resultObj.dest)) { - openAction.dest = resultObj.dest; + openAction.set("dest", resultObj.dest); } else if (resultObj.action) { - openAction.action = resultObj.action; + openAction.set("action", resultObj.action); } } else if (isValidExplicitDest(obj)) { - openAction.dest = obj; + openAction.set("dest", obj); } - return shadow(this, "openAction", objectSize(openAction) > 0 ? openAction : null); + return shadow(this, "openAction", openAction.size ? openAction : null); } get attachments() { const obj = this.#catDict.get("Names"); @@ -40975,7 +41125,11 @@ class Catalog { if (ref) { const target = this.xref.fetch(ref); if (target instanceof BaseStream) { - return FileSpec.readStreamContent(target); + const content = FileSpec.readStreamContent(target); + if (this.#soundAttachmentIds.has(id)) { + return soundStreamToWav(target, content) ?? content; + } + return content; } return target instanceof Dict ? FileSpec.readContent(target) : null; } @@ -41007,10 +41161,7 @@ class Catalog { const obj = this.#catDict.get("Names"); let javaScript = null; function appendIfJavaScriptDict(name, jsDict) { - if (!(jsDict instanceof Dict)) { - return; - } - if (!isName(jsDict.get("S"), "JavaScript")) { + if (!(jsDict instanceof Dict) || !isName(jsDict.get("S"), "JavaScript")) { return; } let js = jsDict.get("JS"); @@ -41021,7 +41172,7 @@ class Catalog { } js = stringToPDFString(js, true).replaceAll("\x00", ""); if (js) { - (javaScript ||= new Map()).set(name, js); + (javaScript ??= new Map()).set(name, js); } } if (obj instanceof Dict && obj.has("JavaScript")) { @@ -41040,13 +41191,9 @@ class Catalog { const javaScript = this.#collectJavaScript(); let actions = collectActions(this.xref, this.#catDict, DocumentActionEventType); if (javaScript) { - actions ||= Object.create(null); + actions ??= Object.create(null); for (const [key, val] of javaScript) { - if (key in actions) { - actions[key].push(val); - } else { - actions[key] = [val]; - } + (actions[key] ??= []).push(val); } } return shadow(this, "jsActions", actions); @@ -41282,6 +41429,8 @@ class Catalog { const xref = this.xref; let total = 0, ref = pageRef; + const visited = new RefSet(); + visited.put(pageRef); while (true) { const node = await xref.fetchAsync(ref); if (isRefsEqual(ref, pageRef) && !isDict(node, "Page") && !(node instanceof Dict && !node.has("Type") && node.has("Contents"))) { @@ -41294,6 +41443,12 @@ class Catalog { throw new FormatError("Node must be a dictionary."); } const parentRef = node.getRaw("Parent"); + if (parentRef instanceof Ref) { + if (visited.has(parentRef)) { + throw new FormatError("Pages tree contains circular reference."); + } + visited.put(parentRef); + } const parent = await node.getAsync("Parent"); if (!parent) { break; @@ -41369,9 +41524,18 @@ class Catalog { } if (!pageRef) { const queue = [seDict]; + const visited = new RefSet(); + visited.put(seRef); while (queue.length > 0 && !pageRef) { const node = queue.shift(); - const kids = node.get("K"); + let kids = node.getRaw("K"); + if (kids instanceof Ref) { + if (visited.has(kids)) { + continue; + } + visited.put(kids); + kids = xref.fetch(kids); + } let kidsArr; if (Array.isArray(kids)) { kidsArr = kids; @@ -41381,6 +41545,12 @@ class Catalog { continue; } for (const kid of kidsArr) { + if (kid instanceof Ref) { + if (visited.has(kid)) { + continue; + } + visited.put(kid); + } const kidObj = xref.fetchIfRef(kid); if (!(kidObj instanceof Dict)) { continue; @@ -41768,8 +41938,7 @@ async function createImage(bitmap, xref, { const colorCounter = new Set(); let hasAlpha = false; let useFlate = true; - for (let i = 0, ii = buf32.length; i < ii; i++) { - const v = buf32[i]; + for (const v of buf32) { if ((isLE ? v >>> 24 : v & 0xff) !== 0xff) { hasAlpha = true; break; @@ -42292,9 +42461,7 @@ class FontFinder { this.addPdfFont(pdfFont); } for (const pdfFont of this.fonts.values()) { - if (!pdfFont.regular) { - pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic; - } + pdfFont.regular ||= pdfFont.italic || pdfFont.bold || pdfFont.bolditalic; } if (!reallyMissingFonts || reallyMissingFonts.size === 0) { return; @@ -42324,9 +42491,7 @@ class FontFinder { property += "italic"; } } - if (!property) { - property = "regular"; - } + property ||= "regular"; font[property] = pdfFont; } getDefault() { @@ -43152,7 +43317,7 @@ class XFAObject { [_getUnsetAttributes](protoAttributes) { const allAttr = this[_attributeNames]; const setAttr = this[_setAttributes]; - return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x)); + return protoAttributes.keys().filter(x => allAttr.has(x) && !setAttr.has(x)).toArray(); } [$resolvePrototypes](ids, ancestors = new Set()) { for (const child of this[_children]) { @@ -43200,9 +43365,7 @@ class XFAObject { proto = ids.get(id); } else { proto = searchNode(ids.get($root), this, somExpression, true, false); - if (proto) { - proto = proto[0]; - } + proto &&= proto[0]; } if (!proto) { warn(`XFA - Invalid prototype reference: ${ref}.`); @@ -46541,7 +46704,7 @@ class Field extends XFAObject { } } if (!this.ui.imageEdit && ui.children?.[0] && this.h) { - borderDims = borderDims || getBorderDims(this.ui[$getExtra]()); + borderDims ||= getBorderDims(this.ui[$getExtra]()); let captionHeight = 0; if (this.caption && ["top", "bottom"].includes(this.caption.placement)) { captionHeight = this.caption.reserve; @@ -49306,7 +49469,7 @@ class Binder { constructor(root) { this.root = root; this.datasets = root.datasets; - this.data = root.datasets?.data || new XmlObject(NamespaceIds.datasets.id, "data"); + this.data = root.datasets?.data || new XmlObject(bind_NS_DATASETS, "data"); this.emptyMerge = this.data[$getChildren]().length === 0; this.root.form = this.form = root.template[$clone](); } @@ -49357,7 +49520,7 @@ class Binder { return match; } } - if (dataNode[$namespaceId] === NamespaceIds.datasets.id && dataNode[$nodeName] === "data") { + if (dataNode[$namespaceId] === bind_NS_DATASETS && dataNode[$nodeName] === "data") { break; } dataNode = dataNode[$getParent](); @@ -52534,10 +52697,7 @@ class XFAFactory { return this.dataHandler.serialize(storage); } static _createDocument(data) { - if (!data["/xdp:xdp"]) { - return data["xdp:xdp"]; - } - return Object.values(data).join(""); + return !data.get("/xdp:xdp") ? data.get("xdp:xdp") : data.values().join(""); } static getRichTextAsHtml(rc) { if (!rc || typeof rc !== "string") { @@ -52561,9 +52721,7 @@ class XFAFactory { attributes } = html; if (attributes) { - if (attributes.class) { - attributes.class = attributes.class.filter(attr => !attr.startsWith("xfa")); - } + attributes.class &&= attributes.class.filter(attr => !attr.startsWith("xfa")); attributes.dir = "auto"; } return { @@ -52596,6 +52754,7 @@ class XFAFactory { + class AnnotationFactory { static createGlobals(pdfManager) { return Promise.all([pdfManager.ensureCatalog("acroForm"), pdfManager.ensureDoc("xfaDatasets"), pdfManager.ensureCatalog("structTreeRoot"), pdfManager.ensureCatalog("baseUrl"), pdfManager.ensureCatalog("attachments"), pdfManager.ensureCatalog("globalColorSpaceCache")]).then(([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments, globalColorSpaceCache]) => ({ @@ -52702,6 +52861,8 @@ class AnnotationFactory { return new RichMediaAnnotation(parameters); case "Screen": return new ScreenAnnotation(parameters); + case "Sound": + return new SoundAnnotation(parameters); default: if (!collectFields) { if (!subtype) { @@ -52722,8 +52883,7 @@ class AnnotationFactory { const pageRef = annotDict.getRaw("P"); if (pageRef instanceof Ref) { try { - const pageIndex = await pdfManager.ensureCatalog("getPageIndex", [pageRef]); - return pageIndex; + return await pdfManager.ensureCatalog("getPageIndex", [pageRef]); } catch (ex) { info(`_getPageIndex -- not a valid page reference: "${ex}".`); } @@ -53358,6 +53518,8 @@ class Annotation { const resources = await this.loadResources(RESOURCES_KEYS_TEXT_CONTENT, this.appearance); const text = []; const buffer = []; + let firstPositionX = Infinity; + let firstPositionY = Infinity; let firstPosition = null; const sink = { desiredSize: Math.Infinity, @@ -53367,7 +53529,8 @@ class Annotation { if (item.str === undefined) { continue; } - firstPosition ||= item.transform.slice(-2); + firstPositionX = Math.min(firstPositionX, item.transform[4]); + firstPositionY = Math.min(firstPositionY, item.transform[5]); buffer.push(item.str); if (item.hasEOL) { text.push(buffer.join("").trimEnd()); @@ -53386,6 +53549,9 @@ class Annotation { viewBox }); this.reset(); + if (firstPositionX !== Infinity) { + firstPosition = [firstPositionX, firstPositionY]; + } if (buffer.length) { text.push(buffer.join("").trimEnd()); } @@ -53463,14 +53629,14 @@ class Annotation { } return fieldName.join("."); } - _getAttachmentId(fsDict, fsRef, annotationGlobals) { + _getAttachmentId(fsDict, fsRef, annotationGlobals, isSound = false) { if (!(fsDict instanceof Dict)) { return undefined; } if (!(fsRef instanceof Ref)) { fsRef = FileSpec.pickPlatformItem(fsDict.get("EF"), true); } - return fsRef instanceof Ref ? annotationGlobals.catalog.getAttachmentIdForAnnotation(fsRef) : undefined; + return fsRef instanceof Ref ? annotationGlobals.catalog.getAttachmentIdForAnnotation(fsRef, isSound) : undefined; } get width() { return this.data.rect[2] - this.data.rect[0]; @@ -54173,13 +54339,13 @@ class WidgetAnnotation extends Annotation { let { fontSize } = this.data.defaultAppearanceData; - let lineHeight = (fontSize || 12) * LINE_FACTOR, + let lineHeight = (fontSize || 12) * (/* inlined export .LINE_FACTOR */1.35), numberOfLines = Math.round(height / lineHeight); if (!fontSize) { const roundWithTwoDigits = x => Math.floor(x * 100) / 100; if (lineCount === -1) { const textWidth = this._getTextWidth(text, font); - fontSize = roundWithTwoDigits(Math.min(height / LINE_FACTOR, width / textWidth)); + fontSize = roundWithTwoDigits(Math.min(height / (/* inlined export .LINE_FACTOR */1.35), width / textWidth)); numberOfLines = 1; } else { const lines = text.split(/\r\n?|\n/); @@ -54208,7 +54374,7 @@ class WidgetAnnotation extends Annotation { numberOfLines = Math.max(numberOfLines, lineCount); while (true) { lineHeight = height / numberOfLines; - fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR); + fontSize = roundWithTwoDigits(lineHeight / (/* inlined export .LINE_FACTOR */1.35)); if (isTooBig(fontSize)) { numberOfLines++; continue; @@ -54589,9 +54755,7 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { if (value === null && this.appearance) { return super.getOperatorList(evaluator, task, intent, annotationStorage); } - if (value === null || value === undefined) { - value = this.data.checkBox ? this.data.fieldValue === this.data.exportValue : this.data.fieldValue === this.data.buttonValue; - } + value ??= this.data.checkBox ? this.data.fieldValue === this.data.exportValue : this.data.fieldValue === this.data.buttonValue; return this.#getOperatorListForAppearance(evaluator, task, intent, annotationStorage, rotation, value ? this.checkedAppearance : this.uncheckedAppearance); } async save(evaluator, task, annotationStorage, changes) { @@ -55143,7 +55307,7 @@ class ChoiceWidgetAnnotation extends WidgetAnnotation { } else { defaultAppearance = this._defaultAppearance; } - const lineHeight = fontSize * LINE_FACTOR; + const lineHeight = fontSize * (/* inlined export .LINE_FACTOR */1.35); const vPadding = (lineHeight - fontSize) / 2; const numberOfVisibleLines = Math.floor(totalHeight / lineHeight); let firstIndex = 0; @@ -55181,6 +55345,7 @@ class ChoiceWidgetAnnotation extends WidgetAnnotation { } } class SignatureWidgetAnnotation extends WidgetAnnotation { + _hasValueFromXFA = false; constructor(params) { super(params); this.data.fieldValue = null; @@ -55454,8 +55619,8 @@ class FreeTextAnnotation extends MarkupAnnotation { } const hscale = totalWidth > w ? w / totalWidth : 1; let vscale = 1; - const lineHeight = LINE_FACTOR * fontSize; - const lineAscent = (LINE_FACTOR - LINE_DESCENT_FACTOR) * fontSize; + const lineHeight = (/* inlined export .LINE_FACTOR */1.35) * fontSize; + const lineAscent = ((/* inlined export .LINE_FACTOR */1.35) - (/* inlined export .LINE_DESCENT_FACTOR */0.35)) * fontSize; const totalHeight = lineHeight * lines.length; if (totalHeight > h) { vscale = h / totalHeight; @@ -55654,9 +55819,7 @@ class PolylineAnnotation extends MarkupAnnotation { const strokeColor = getPdfColorArray(this.color, [0, 0, 0]); const strokeAlpha = dict.get("CA"); let fillColor = getRgbColor(dict.getArray("IC"), null); - if (fillColor) { - fillColor = getPdfColorArray(fillColor); - } + fillColor &&= getPdfColorArray(fillColor); let operator; if (fillColor) { if (this.color) { @@ -55713,15 +55876,15 @@ class InkAnnotation extends MarkupAnnotation { if (!Array.isArray(rawInkLists)) { return; } - for (let i = 0, ii = rawInkLists.length; i < ii; ++i) { - if (!Array.isArray(rawInkLists[i])) { + for (const rawInkList of rawInkLists) { + if (!Array.isArray(rawInkList)) { continue; } - const inkList = new Float32Array(rawInkLists[i].length); + const inkList = new Float32Array(rawInkList.length); this.data.inkLists.push(inkList); - for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) { - const x = xref.fetchIfRef(rawInkLists[i][j]), - y = xref.fetchIfRef(rawInkLists[i][j + 1]); + for (let j = 0, jj = rawInkList.length; j < jj; j += 2) { + const x = xref.fetchIfRef(rawInkList[j]), + y = xref.fetchIfRef(rawInkList[j + 1]); if (typeof x === "number" && typeof y === "number") { inkList[j] = x; inkList[j + 1] = y; @@ -56257,11 +56420,12 @@ class MediaAnnotation extends Annotation { assetRef, assetDict, filename, - contentType + contentType, + wrapSound = false }, annotationGlobals) { this.data.noHTML = false; this.data.richMedia = { - fileId: this._getAttachmentId(assetDict, assetRef, annotationGlobals), + fileId: this._getAttachmentId(assetDict, assetRef, annotationGlobals, wrapSound), filename, contentType }; @@ -56477,6 +56641,40 @@ class ScreenAnnotation extends MediaAnnotation { }; } } +class SoundAnnotation extends MediaAnnotation { + constructor(params) { + super(params); + const { + dict, + xref, + annotationGlobals + } = params; + const soundRef = dict.getRaw("Sound"); + if (!(soundRef instanceof Ref)) { + return; + } + let sound; + try { + sound = xref.fetch(soundRef); + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn(`SoundAnnotation: "${ex}".`); + return; + } + if (!(sound instanceof BaseStream) || !getSoundFormat(sound.dict)) { + return; + } + this._setMediaData({ + assetRef: soundRef, + assetDict: sound.dict, + filename: "sound.wav", + contentType: "audio/wav", + wrapSound: true + }, annotationGlobals); + } +} ;// ./src/core/calculate_md5.js @@ -57165,6 +57363,22 @@ class DecryptStream extends DecodeStream { } } +;// ./src/core/sasl_prep.js +const NON_ASCII_SPACES = new Set([0x00a0, 0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200a, 0x200b, 0x202f, 0x205f, 0x3000]); +const COMMONLY_MAPPED_TO_NOTHING = new Set([0x00ad, 0x034f, 0x1806, 0x180b, 0x180c, 0x180d, 0x200b, 0x200c, 0x200d, 0x2060, 0xfe00, 0xfe01, 0xfe02, 0xfe03, 0xfe04, 0xfe05, 0xfe06, 0xfe07, 0xfe08, 0xfe09, 0xfe0a, 0xfe0b, 0xfe0c, 0xfe0d, 0xfe0e, 0xfe0f, 0xfeff]); +function saslPrep(str) { + let mapped = ""; + for (const char of str) { + const code = char.codePointAt(0); + if (NON_ASCII_SPACES.has(code)) { + mapped += " "; + } else if (!COMMONLY_MAPPED_TO_NOTHING.has(code)) { + mapped += char; + } + } + return mapped.normalize("NFKC"); +} + ;// ./src/core/crypto.js @@ -57172,6 +57386,7 @@ class DecryptStream extends DecodeStream { + class ARCFourCipher { a = 0; b = 0; @@ -57688,6 +57903,14 @@ class CipherTransform { return bytesToString(data); } } +function utf8PasswordToBytes(password) { + try { + password = utf8StringToString(password); + } catch { + warn("CipherTransformFactory: Unable to convert UTF8 encoded password."); + } + return stringToBytes(password); +} class CipherTransformFactory { #fileId; static get _defaultPasswordBytes() { @@ -57881,16 +58104,19 @@ class CipherTransformFactory { const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get("EncryptMetadata") !== false; this.encryptMetadata = encryptMetadata; const fileIdBytes = stringToBytes(fileId); - let passwordBytes; + let passwordBytes, rawPasswordBytes; if (password) { if (revision === 6) { - try { - password = utf8StringToString(password); - } catch { - warn("CipherTransformFactory: Unable to convert UTF8 encoded password."); + const preppedPassword = saslPrep(password); + passwordBytes = utf8PasswordToBytes(preppedPassword); + if (preppedPassword !== password) { + rawPasswordBytes = utf8PasswordToBytes(password); } + } else if (algorithm === 5) { + passwordBytes = utf8PasswordToBytes(password); + } else { + passwordBytes = stringToBytes(password); } - passwordBytes = stringToBytes(password); } let encryptionKey; if (algorithm !== 5) { @@ -57904,7 +58130,12 @@ class CipherTransformFactory { const ownerEncryption = stringToBytes(dict.get("OE")); const userEncryption = stringToBytes(dict.get("UE")); const perms = stringToBytes(dict.get("Perms")); - encryptionKey = this.#createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms); + for (const candidate of rawPasswordBytes ? [passwordBytes, rawPasswordBytes] : [passwordBytes]) { + encryptionKey = this.#createEncryptionKey20(revision, candidate, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms); + if (encryptionKey) { + break; + } + } } if (!encryptionKey) { if (!password) { @@ -57949,7 +58180,7 @@ class CipherTransformFactory { if (!this.encryptionKey) { throw new PasswordException("No password given", PasswordResponses.NEED_PASSWORD); } - if (this.algorithm === 5) { + if (this.algorithm === 5 || cfm.name === "AESV3") { return AES256Cipher.bind(null, this.encryptionKey); } if (cfm.name === "V2") { @@ -57958,9 +58189,6 @@ class CipherTransformFactory { if (cfm.name === "AESV2") { return AES128Cipher.bind(null, this.#buildObjectKey(num, gen, this.encryptionKey, true)); } - if (cfm.name === "AESV3") { - return AES256Cipher.bind(null, this.encryptionKey); - } throw new FormatError("Unknown crypto method"); }; const transform = new CipherTransform(resolveCipher, this.strf, this.stmf); @@ -57980,51 +58208,55 @@ class CipherTransformFactory { class XRef { + #cacheMap = new Map(); + #entries = []; + #newPersistentRefNum = null; + #newTemporaryRefNum = null; + #parsedWithRecovery = false; + #pendingRefs = new RefSet(); + #persistentRefsCache = null; + #xrefSectionOffsets = new Set(); + #xrefSectionsComplete = true; + #xrefStms = new Set(); constructor(stream, pdfManager) { this.stream = stream; this.pdfManager = pdfManager; - this.entries = []; - this._xrefStms = new Set(); - this._cacheMap = new Map(); - this._pendingRefs = new RefSet(); - this._newPersistentRefNum = null; - this._newTemporaryRefNum = null; - this._persistentRefsCache = null; } getNewPersistentRef(obj) { - if (this._newPersistentRefNum === null) { - this._newPersistentRefNum = this.entries.length || 1; + if (this.#newPersistentRefNum === null) { + this.#newPersistentRefNum = this.#entries.length || 1; } - const num = this._newPersistentRefNum++; - this._cacheMap.set(num, obj); + const num = this.#newPersistentRefNum++; + this.#cacheMap.set(num, obj); return Ref.get(num, 0); } getNewTemporaryRef() { - if (this._newTemporaryRefNum === null) { - this._newTemporaryRefNum = this.entries.length || 1; - if (this._newPersistentRefNum) { - this._persistentRefsCache = new Map(); - for (let i = this._newTemporaryRefNum; i < this._newPersistentRefNum; i++) { - this._persistentRefsCache.set(i, this._cacheMap.get(i)); - this._cacheMap.delete(i); + if (this.#newTemporaryRefNum === null) { + this.#newTemporaryRefNum = this.#entries.length || 1; + if (this.#newPersistentRefNum) { + this.#persistentRefsCache = new Map(); + for (let i = this.#newTemporaryRefNum; i < this.#newPersistentRefNum; i++) { + this.#persistentRefsCache.set(i, this.#cacheMap.get(i)); + this.#cacheMap.delete(i); } } } - return Ref.get(this._newTemporaryRefNum++, 0); + return Ref.get(this.#newTemporaryRefNum++, 0); } resetNewTemporaryRef() { - this._newTemporaryRefNum = null; - if (this._persistentRefsCache) { - for (const [num, obj] of this._persistentRefsCache) { - this._cacheMap.set(num, obj); + this.#newTemporaryRefNum = null; + if (this.#persistentRefsCache) { + for (const [num, obj] of this.#persistentRefsCache) { + this.#cacheMap.set(num, obj); } } - this._persistentRefsCache = null; + this.#persistentRefsCache = null; } setStartXRef(startXRef) { this.startXRefQueue = [startXRef]; } parse(recoveryMode = false) { + this.#parsedWithRecovery = recoveryMode; let trailerDict; if (!recoveryMode) { trailerDict = this.readXRef(); @@ -58078,31 +58310,29 @@ class XRef { throw new InvalidPDFException("Invalid Root reference."); } processXRefTable(parser) { - if (!("tableState" in this)) { - this.tableState = { - entryNum: 0, - streamPos: parser.lexer.stream.pos, - parserBuf1: parser.buf1, - parserBuf2: parser.buf2 - }; - } + this._tableState ??= { + entryNum: 0, + streamPos: parser.lexer.stream.pos, + parserBuf1: parser.buf1, + parserBuf2: parser.buf2 + }; const obj = this.readXRefTable(parser); if (!isCmd(obj, "trailer")) { throw new FormatError("Invalid XRef table: could not find trailer dictionary"); } let dict = parser.getObj(); - if (!(dict instanceof Dict) && dict.dict) { + if (dict instanceof BaseStream) { dict = dict.dict; } if (!(dict instanceof Dict)) { throw new FormatError("Invalid XRef table: could not parse trailer dictionary"); } - delete this.tableState; + delete this._tableState; return dict; } readXRefTable(parser) { const stream = parser.lexer.stream; - const tableState = this.tableState; + const tableState = this._tableState; stream.pos = tableState.streamPos; parser.buf1 = tableState.parserBuf1; parser.buf2 = tableState.parserBuf2; @@ -58125,9 +58355,10 @@ class XRef { tableState.entryNum = i; tableState.parserBuf1 = parser.buf1; tableState.parserBuf2 = parser.buf2; - const entry = {}; - entry.offset = parser.getObj(); - entry.gen = parser.getObj(); + const entry = { + offset: parser.getObj(), + gen: parser.getObj() + }; const type = parser.getObj(); if (type instanceof Cmd) { switch (type.cmd) { @@ -58145,9 +58376,7 @@ class XRef { if (i === 0 && entry.free && first === 1) { first = 0; } - if (!this.entries[i + first]) { - this.entries[i + first] = entry; - } + this.#entries[first + i] ??= entry; } tableState.entryNum = 0; tableState.streamPos = stream.pos; @@ -58156,7 +58385,7 @@ class XRef { delete tableState.firstEntryNum; delete tableState.entryCount; } - if (this.entries[0] && !this.entries[0].free) { + if (this.#entries[0] && !this.#entries[0].free) { throw new FormatError("Invalid XRef table: unexpected first object"); } return obj; @@ -58223,9 +58452,10 @@ class XRef { } generation = generation << 8 | generationByte; } - const entry = {}; - entry.offset = offset; - entry.gen = generation; + const entry = { + offset, + gen: generation + }; switch (type) { case 0: entry.free = true; @@ -58238,9 +58468,7 @@ class XRef { default: throw new FormatError(`Invalid XRef entry type: ${type}`); } - if (!this.entries[first + i]) { - this.entries[first + i] = entry; - } + this.#entries[first + i] ??= entry; } streamState.entryNum = 0; streamState.streamPos = stream.pos; @@ -58289,8 +58517,8 @@ class XRef { const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]); const startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]); const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]); - this.entries.length = 0; - this._cacheMap.clear(); + this.#entries.length = 0; + this.#cacheMap.clear(); const stream = this.stream; stream.pos = 0; const buffer = stream.getBytes(), @@ -58327,9 +58555,9 @@ class XRef { const startPos = position + token.length; let contentLength, updateEntries = false; - if (!this.entries[num]) { + if (!this.#entries[num]) { updateEntries = true; - } else if (this.entries[num].gen === gen) { + } else if (this.#entries[num].gen === gen) { try { const parser = new Parser({ lexer: new Lexer(stream.makeSubStream(startPos)) @@ -58345,7 +58573,7 @@ class XRef { } } if (updateEntries) { - this.entries[num] = { + this.#entries[num] = { offset: position - stream.start, gen, uncompressed: true @@ -58367,7 +58595,7 @@ class XRef { const xrefTagOffset = skipUntil(content, 0, xrefBytes); if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) { xrefStms.push(position - stream.start); - this._xrefStms.add(position - stream.start); + this.#xrefStms.add(position - stream.start); } position += contentLength; } else if (token.startsWith("trailer") && (token.length === 7 || /\s/.test(token[7]))) { @@ -58457,8 +58685,8 @@ class XRef { return this.topDict; } if (!trailerDicts.length) { - for (const num in this.entries) { - const entry = this.entries[num]; + for (const num in this.#entries) { + const entry = this.#entries[num]; if (!entry) { continue; } @@ -58501,12 +58729,10 @@ class XRef { let dict; if (isCmd(obj, "xref")) { dict = this.processXRefTable(parser); - if (!this.topDict) { - this.topDict = dict; - } + this.topDict ||= dict; obj = dict.get("XRefStm"); - if (Number.isInteger(obj) && !this._xrefStms.has(obj)) { - this._xrefStms.add(obj); + if (Number.isInteger(obj) && !this.#xrefStms.has(obj)) { + this.#xrefStms.add(obj); this.startXRefQueue.push(obj); } } else if (Number.isInteger(obj)) { @@ -58514,15 +58740,14 @@ class XRef { throw new FormatError("Invalid XRef stream"); } dict = this.processXRefStream(obj); - if (!this.topDict) { - this.topDict = dict; - } + this.topDict ||= dict; if (!dict) { throw new FormatError("Failed to read XRef stream"); } } else { throw new FormatError("Invalid XRef stream header"); } + this.#xrefSectionOffsets.add(startXRef); obj = dict.get("Prev"); if (Number.isInteger(obj)) { this.startXRefQueue.push(obj); @@ -58533,6 +58758,7 @@ class XRef { if (e instanceof MissingDataException) { throw e; } + this.#xrefSectionsComplete = false; info("(while reading XRef): " + e); } this.startXRefQueue.shift(); @@ -58545,25 +58771,32 @@ class XRef { } throw new XRefParseException(); } - getEntry(i) { - const xrefEntry = this.entries[i]; - if (xrefEntry && !xrefEntry.free && xrefEntry.offset) { - return xrefEntry; + countUpdatesAfter(offset) { + if (this.#parsedWithRecovery || !this.#xrefSectionsComplete) { + return null; } - return null; + const relativeOffset = offset - this.stream.start; + let count = 0; + for (const sectionOffset of this.#xrefSectionOffsets) { + if (sectionOffset >= relativeOffset && !this.#xrefStms.has(sectionOffset)) { + count++; + } + } + return count; + } + getEntry(i) { + const entry = this.#entries[i]; + return entry && !entry.free && entry.offset ? entry : null; } fetchIfRef(obj, suppressEncryption = false) { - if (obj instanceof Ref) { - return this.fetch(obj, suppressEncryption); - } - return obj; + return obj instanceof Ref ? this.fetch(obj, suppressEncryption) : obj; } fetch(ref, suppressEncryption = false) { if (!(ref instanceof Ref)) { throw new Error("ref object is not a reference"); } const num = ref.num; - const cacheEntry = this._cacheMap.get(num); + const cacheEntry = this.#cacheMap.get(num); if (cacheEntry !== undefined) { if (cacheEntry instanceof Dict && !cacheEntry.objId) { cacheEntry.objId = ref.toString(); @@ -58574,17 +58807,17 @@ class XRef { if (xrefEntry === null) { return xrefEntry; } - if (this._pendingRefs.has(ref)) { - this._pendingRefs.remove(ref); + if (this.#pendingRefs.has(ref)) { + this.#pendingRefs.remove(ref); warn(`Ignoring circular reference: ${ref}.`); return CIRCULAR_REF; } - this._pendingRefs.put(ref); + this.#pendingRefs.put(ref); try { xrefEntry = xrefEntry.uncompressed ? this.fetchUncompressed(ref, xrefEntry, suppressEncryption) : this.fetchCompressed(ref, xrefEntry, suppressEncryption); - this._pendingRefs.remove(ref); + this.#pendingRefs.remove(ref); } catch (ex) { - this._pendingRefs.remove(ref); + this.#pendingRefs.remove(ref); throw ex; } if (xrefEntry instanceof Dict) { @@ -58628,7 +58861,7 @@ class XRef { } xrefEntry = this.encrypt && !suppressEncryption ? parser.getObj(this.encrypt.createCipherTransform(num, gen)) : parser.getObj(); if (!(xrefEntry instanceof BaseStream)) { - this._cacheMap.set(num, xrefEntry); + this.#cacheMap.set(num, xrefEntry); } return xrefEntry; } @@ -58684,9 +58917,9 @@ class XRef { continue; } const num = nums[i], - entry = this.entries[num]; + entry = this.#entries[num]; if (entry && entry.offset === tableOffset && entry.gen === i) { - this._cacheMap.set(num, obj); + this.#cacheMap.set(num, obj); } } xrefEntry = entries[xrefEntry.gen]; @@ -58696,10 +58929,7 @@ class XRef { return xrefEntry; } async fetchIfRefAsync(obj, suppressEncryption) { - if (obj instanceof Ref) { - return this.fetchAsync(obj, suppressEncryption); - } - return obj; + return obj instanceof Ref ? this.fetchAsync(obj, suppressEncryption) : obj; } async fetchAsync(ref, suppressEncryption) { try { @@ -58743,6 +58973,7 @@ class XRef { const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; +const SIGNATURE_TAIL_CHUNK_SIZE = 65536; class Page { #resourcesPromise = null; constructor({ @@ -59362,6 +59593,7 @@ function find(stream, signature, limit = 1024, backwards = false) { } class PDFDocument { #pagePromises = new Map(); + #signatureData = null; #version = null; constructor(pdfManager, stream) { if (stream.length <= 0) { @@ -59502,7 +59734,10 @@ class PDFDocument { } return this.#hasOnlyDocumentSignatures(field.get("Kids"), recursionDepth); } - const isSignature = isName(field.get("FT"), "Sig"); + const isSignature = isName(getInheritableProperty({ + dict: field, + key: "FT" + }), "Sig"); const rectangle = field.get("Rect"); const isInvisible = Array.isArray(rectangle) && rectangle.every(value => value === 0); return isSignature && isInvisible; @@ -59572,13 +59807,13 @@ class PDFDocument { if (!streams) { return null; } - const data = Object.create(null); + const data = new Map(); for (const [key, stream] of streams) { if (!stream) { continue; } try { - data[key] = stringToUTF8String(stream.getString()); + data.set(key, stringToUTF8String(stream.getString())); } catch { warn("XFA - Invalid utf-8 string."); return null; @@ -60046,12 +60281,14 @@ class PDFDocument { name = name === "" ? partName : `${name}.${partName}`; } else { let obj = field; + const walkedRefs = new RefSet(); while (true) { obj = obj.getRaw("Parent") || parentRef; if (obj instanceof Ref) { - if (visitedRefs.has(obj)) { + if (visitedRefs.has(obj) || walkedRefs.has(obj)) { break; } + walkedRefs.put(obj); obj = await xref.fetchAsync(obj); } if (!(obj instanceof Dict)) { @@ -60111,12 +60348,172 @@ class PDFDocument { } await Promise.all(allPromises); return { - allFields: objectSize(allFields) > 0 ? allFields : null, + allFields: Object.keys(allFields).length ? allFields : null, orphanFields }; }); return shadow(this, "fieldObjects", promise); } + async #collectSignatureFields(fields, out, visitedRefs) { + if (!Array.isArray(fields)) { + return; + } + for (const fieldRef of fields) { + if (fieldRef instanceof Ref) { + if (visitedRefs.has(fieldRef)) { + continue; + } + visitedRefs.put(fieldRef); + } + const field = await this.xref.fetchIfRefAsync(fieldRef); + if (!(field instanceof Dict)) { + continue; + } + if (isName(await field.getAsync("FT"), "Sig")) { + const sigDict = await field.getAsync("V"); + if (sigDict instanceof Dict) { + const parsed = await this.#parseSignatureDict(field, sigDict, fieldRef); + if (parsed) { + out.push(parsed); + } + } + } + if (field.has("Kids")) { + await this.#collectSignatureFields(await field.getAsync("Kids"), out, visitedRefs); + } + } + } + async #getByteRange(begin, end) { + try { + return this.stream.getByteRange(begin, end); + } catch (ex) { + if (!(ex instanceof MissingDataException)) { + throw ex; + } + await this.pdfManager.requestRange(begin, end); + return this.#getByteRange(begin, end); + } + } + async #coversWholeDocument(signedEnd, modificationsAfterSignature) { + if (modificationsAfterSignature > 0) { + return false; + } + const fileLength = this.stream.end; + for (let begin = signedEnd; begin < fileLength; begin += SIGNATURE_TAIL_CHUNK_SIZE) { + const end = Math.min(begin + SIGNATURE_TAIL_CHUNK_SIZE, fileLength); + const tail = await this.#getByteRange(begin, end); + for (const byte of tail) { + if (byte !== 0x00 && byte !== 0x09 && byte !== 0x0a && byte !== 0x0c && byte !== 0x0d && byte !== 0x20) { + return false; + } + } + } + return true; + } + async #parseSignatureDict(field, sigDict, fieldRef) { + const byteRange = await sigDict.getAsync("ByteRange"); + if (!Array.isArray(byteRange) || byteRange.length !== 4 || byteRange.some(n => !Number.isInteger(n) || n < 0)) { + return null; + } + const [a, b, c, d] = byteRange; + const fileLength = this.stream.end || 0; + if (a !== 0 || b <= 0 || a + b > c || c + d > fileLength || fileLength === 0) { + return null; + } + const contents = await sigDict.getAsync("Contents"); + if (typeof contents !== "string" || contents.length === 0) { + return null; + } + const [filterName, subFilterName, t, name, reason, location, contactInfo, m] = await Promise.all([sigDict.getAsync("Filter"), sigDict.getAsync("SubFilter"), field.getAsync("T"), sigDict.getAsync("Name"), sigDict.getAsync("Reason"), sigDict.getAsync("Location"), sigDict.getAsync("ContactInfo"), sigDict.getAsync("M")]); + const filter = filterName instanceof Name ? filterName.name : null, + subFilter = subFilterName instanceof Name ? subFilterName.name : null; + let signatureType = null; + if (subFilter === "adbe.pkcs7.detached") { + signatureType = 0; + } else if (subFilter === "adbe.pkcs7.sha1") { + signatureType = 1; + } + const refKey = fieldRef instanceof Ref ? fieldRef.toString() : "inline"; + return { + id: `${refKey}:${a}-${b}-${c}-${d}`, + fieldName: typeof t === "string" ? stringToPDFString(t) : "", + signerName: typeof name === "string" ? stringToPDFString(name) : null, + reason: typeof reason === "string" ? stringToPDFString(reason) : null, + location: typeof location === "string" ? stringToPDFString(location) : null, + contactInfo: typeof contactInfo === "string" ? stringToPDFString(contactInfo) : null, + signingTime: typeof m === "string" ? m : null, + filter, + subFilter, + signatureType, + byteRange, + pkcs7: stringToBytes(contents), + revisionIndex: 0, + parentId: null + }; + } + get signatures() { + const promise = this.pdfManager.ensureDoc("formInfo").then(async formInfo => { + if (!formInfo.hasSignatures || !formInfo.hasFields) { + return null; + } + const annotationGlobals = await this.annotationGlobals; + if (!annotationGlobals) { + return null; + } + const fields = annotationGlobals.acroForm.get("Fields"); + const collected = []; + await this.#collectSignatureFields(fields, collected, new RefSet()); + await Promise.all(collected.map(async signature => { + const signedEnd = signature.byteRange[2] + signature.byteRange[3]; + signature.modificationsAfterSignature = this.xref.countUpdatesAfter(signedEnd); + signature.coversWholeDocument = await this.#coversWholeDocument(signedEnd, signature.modificationsAfterSignature); + })); + collected.sort((a, b) => b.byteRange[2] + b.byteRange[3] - (a.byteRange[2] + a.byteRange[3])); + for (let i = 0, ii = collected.length; i < ii; i++) { + const sig = collected[i]; + sig.revisionIndex = i; + for (let j = i - 1; j >= 0; j--) { + const candidate = collected[j]; + if (candidate.byteRange[2] + candidate.byteRange[3] > sig.byteRange[2] + sig.byteRange[3]) { + sig.parentId = candidate.id; + break; + } + } + } + const signatureData = new Map(); + const metadata = collected.map(sig => { + const { + pkcs7, + ...rest + } = sig; + signatureData.set(sig.id, { + byteRange: sig.byteRange, + pkcs7 + }); + return rest; + }); + this.#signatureData = signatureData; + return metadata.length ? metadata : null; + }); + return shadow(this, "signatures", promise); + } + async getSignatureData(id) { + await this.signatures; + const signature = this.#signatureData?.get(id); + if (!signature) { + return null; + } + const { + byteRange, + pkcs7 + } = signature; + const [a, b, c, d] = byteRange; + const data = await Promise.all([this.#getByteRange(a, a + b), this.#getByteRange(c, c + d)]); + return { + data, + pkcs7 + }; + } get hasJSActions() { const promise = this.pdfManager.ensureDoc("_parseHasJSActions"); return shadow(this, "hasJSActions", promise); @@ -60876,7 +61273,7 @@ function writeXFADataForAcroform(str, changes) { path, value } = xfa; - if (!path) { + if (!path || value === null) { continue; } const nodePath = parseXFAPath(path); @@ -61199,6 +61596,9 @@ class XRefWrapper { getNewTemporaryRef() { return this._getNewRef(); } + countUpdatesAfter(offset) { + return null; + } fetchIfRef(obj) { return obj instanceof Ref ? this.fetch(obj) : obj; } @@ -61391,12 +61791,7 @@ class PDFEditor { } } = this; if (resourceStreamPath.has(oldRef)) { - let ref = oldRefMapping.get(oldRef); - if (!ref) { - ref = this.newRef; - oldRefMapping.put(oldRef, ref); - } - return ref; + return oldRefMapping.getOrPutComputed(oldRef, () => this.newRef); } const key = oldRef.toString(); const pending = resourceStreamPromises.get(key); @@ -61444,6 +61839,13 @@ class PDFEditor { }); return ref; } + async #resolveStructKids(rawKids, xref) { + if (rawKids instanceof Ref) { + const fetched = await xref.fetchAsync(rawKids); + return Array.isArray(fetched) ? fetched : [rawKids]; + } + return Array.isArray(rawKids) ? rawKids : [rawKids]; + } async #cloneStructTreeNode(parentStructRef, node, xref, removedStructElements, dedupIDs, dedupClasses, dedupRoles, visited = new RefSet()) { const { currentDocument: { @@ -61455,18 +61857,11 @@ class PDFEditor { if (pg instanceof Ref && !pagesMap.has(pg)) { return null; } - let kids; - const k = kids = node.getRaw("K"); - if (k instanceof Ref) { - if (visited.has(k)) { - return null; - } - kids = await xref.fetchAsync(k); - if (!Array.isArray(kids)) { - kids = [k]; - } + const k = node.getRaw("K"); + if (k instanceof Ref && visited.has(k)) { + return null; } - kids = Array.isArray(kids) ? kids : [kids]; + const kids = await this.#resolveStructKids(k, xref); const newKids = []; const structElemIndices = []; for (let kid of kids) { @@ -61515,10 +61910,11 @@ class PDFEditor { if (!kidRef) { continue; } - const newKidRef = oldRefMapping.get(kidRef); - if (!newKidRef) { + const oldObjRef = kid.getRaw("Obj"); + if (oldObjRef instanceof Ref && !oldRefMapping.get(oldObjRef)) { continue; } + const newKidRef = oldRefMapping.get(kidRef) || (await this.#collectDependencies(kidRef, true, xref)); const newKid = this.xref[newKidRef.num]; const objRef = newKid.getRaw("Obj"); if (objRef instanceof Ref) { @@ -61585,11 +61981,18 @@ class PDFEditor { } for (let attr of attributes) { attr = this.xrefWrapper.fetchIfRef(attr); + if (!(attr instanceof Dict)) { + continue; + } if (isName(attr.get("O"), "Table") && attr.has("Headers")) { const headers = this.xrefWrapper.fetchIfRef(attr.getRaw("Headers")); if (Array.isArray(headers)) { for (let i = 0, ii = headers.length; i < ii; i++) { - const newId = dedupIDs.get(stringToPDFString(headers[i], false)); + const header = this.xrefWrapper.fetchIfRef(headers[i]); + if (typeof header !== "string") { + continue; + } + const newId = dedupIDs.get(stringToPDFString(header, false)); if (newId) { headers[i] = newId; } @@ -61955,8 +62358,11 @@ class PDFEditor { promises.push(xref.fetchIfRefAsync(annotationRef).then(async annotationDict => { if (!isName(annotationDict.get("Subtype"), "Link")) { if (isName(annotationDict.get("Subtype"), "Widget")) { - hasSignatureAnnotations ||= isName(annotationDict.get("FT"), "Sig"); - const parentRef = annotationDict.get("Parent") || null; + hasSignatureAnnotations ||= isName(getInheritableProperty({ + dict: annotationDict, + key: "FT" + }), "Sig"); + const parentRef = annotationDict.getRaw("Parent") || null; annotationDict.delete("Parent"); fieldToParent.put(annotationRef, parentRef); } @@ -61964,11 +62370,15 @@ class PDFEditor { return; } const action = annotationDict.get("A"); + if (action instanceof Dict && !isName(action.get("S"), "GoTo")) { + newAnnotations[newAnnotationIndex] = annotationRef; + return; + } const dest = action instanceof Dict ? action.get("D") : annotationDict.get("Dest"); if (!dest || Array.isArray(dest) && (!(dest[0] instanceof Ref) || pagesMap.has(dest[0]))) { newAnnotations[newAnnotationIndex] = annotationRef; - } else if (typeof dest === "string") { - const destString = stringToPDFString(dest, true); + } else if (dest instanceof Name || typeof dest === "string") { + const destString = stringToPDFString(dest instanceof Name ? dest.name : dest, true); if (destinations.has(destString)) { newAnnotations[newAnnotationIndex] = annotationRef; usedNamedDestinations.add(destString); @@ -62209,20 +62619,33 @@ class PDFEditor { newStructTreePronunciationLexicon.push(await this.#collectDependencies(lexiconRef, true, xref)); } } - let kids = structTreeRoot.dict.get("K"); - if (!kids) { + const rawKids = structTreeRoot.dict.getRaw("K"); + if (!rawKids) { continue; } - kids = Array.isArray(kids) ? kids : [kids]; + const kids = await this.#resolveStructKids(rawKids, xref); for (let kid of kids) { const kidRef = kid instanceof Ref ? kid : null; - if (kidRef && removedStructElements.has(kidRef)) { + kid = await xref.fetchIfRefAsync(kid); + if (!(kid instanceof Dict)) { continue; } - kid = await xref.fetchIfRefAsync(kid); + let setAsSpan = false; + if (kidRef && removedStructElements.has(kidRef)) { + if (!isName(kid.get("S"), "Link")) { + continue; + } + setAsSpan = true; + } const newKidRef = await this.#cloneStructTreeNode(kidRef, kid, xref, removedStructElements, dedupIDs, dedupClasses, dedupRoles); if (newKidRef) { structTreeKids.push(newKidRef); + if (kidRef) { + oldRefMapping.put(kidRef, newKidRef); + } + if (setAsSpan) { + this.xref[newKidRef.num].setIfName("S", "Span"); + } } } for (const [id, nodeRef] of idTree || []) { @@ -62268,7 +62691,7 @@ class PDFEditor { pagesMap } = documentData; const newDestinations = documentData.destinations = new Map(); - for (const [key, dest] of Object.entries(destinations)) { + for (const [key, dest] of destinations) { const pageRef = dest[0]; const pageData = pageRef instanceof Ref && pagesMap.get(pageRef); if (!pageData) { @@ -62662,7 +63085,7 @@ class PDFEditor { #fixFields(fieldToParent, xref) { const newFields = []; const processed = new RefSet(); - for (const [fieldRef, parentRef] of fieldToParent) { + for (const [fieldRef, parentRef] of fieldToParent.items()) { if (!parentRef) { newFields.push(fieldRef); continue; @@ -62771,7 +63194,7 @@ class PDFEditor { if (data.parentRef) { newKid.set("Parent", data.parentRef); } - if (acroFormDefaultAppearance && isName(newKid.get("FT"), "Tx") && !newKid.has("DA")) { + if (acroFormDefaultAppearance && !newKid.has("DA")) { daToFix.push(newKid); } if (acroFormDefaultResources && !newKid.has("Kids") && newKid.get("AP") instanceof Dict) { @@ -62782,6 +63205,13 @@ class PDFEditor { } } for (const field of daToFix) { + const fieldType = getInheritableProperty({ + dict: field, + key: "FT" + }); + if (!isName(fieldType, "Tx")) { + continue; + } const da = getInheritableProperty({ dict: field, key: "DA" @@ -62791,28 +63221,37 @@ class PDFEditor { } } const resourcesValuesCache = new Map(); - for (const field of drToFix) { - const ap = field.get("AP"); - for (const [, value] of ap) { - if (!(value instanceof BaseStream)) { + const fixAppearanceResources = async stream => { + let resources = stream.dict.getRaw("Resources"); + resources &&= this.xrefWrapper.fetchIfRef(resources); + if (!(resources instanceof Dict)) { + const newResourcesRef = await resourcesValuesCache.getOrInsertComputed(acroFormDefaultResources, () => this.#cloneObject(acroFormDefaultResources, xref)); + stream.dict.set("Resources", newResourcesRef); + return; + } + for (const [resKey, resValue] of acroFormDefaultResources.getRawEntries()) { + if (resources.has(resKey)) { continue; } - let resources = value.dict.getRaw("Resources"); - if (!resources) { - const newResourcesRef = await resourcesValuesCache.getOrInsertComputed(acroFormDefaultResources, () => this.#cloneObject(acroFormDefaultResources, xref)); - value.dict.set("Resources", newResourcesRef); - continue; + let newResValue = resValue; + if (resValue instanceof Ref) { + newResValue = await this.#collectDependencies(resValue, true, xref); + } else if (resValue instanceof Dict || resValue instanceof BaseStream || Array.isArray(resValue)) { + newResValue = await resourcesValuesCache.getOrInsertComputed(resValue, () => this.#cloneObject(resValue, xref)); } - resources = xref.fetchIfRef(resources); - for (const [resKey, resValue] of acroFormDefaultResources.getRawEntries()) { - if (!resources.has(resKey)) { - let newResValue = resValue; - if (resValue instanceof Ref) { - newResValue = await this.#collectDependencies(resValue, true, xref); - } else if (resValue instanceof Dict || resValue instanceof BaseStream || Array.isArray(resValue)) { - newResValue = await resourcesValuesCache.getOrInsertComputed(resValue, () => this.#cloneObject(resValue, xref)); + resources.set(resKey, newResValue); + } + }; + for (const field of drToFix) { + const ap = field.get("AP"); + for (const [, value] of ap) { + if (value instanceof BaseStream) { + await fixAppearanceResources(value); + } else if (value instanceof Dict) { + for (const [, stream] of value) { + if (stream instanceof BaseStream) { + await fixAppearanceResources(stream); } - resources.set(resKey, newResValue); } } } @@ -63096,7 +63535,7 @@ class PDFEditor { rootDict.set("Pages", pagesRef); pagesDict.setIfName("Type", "Pages"); pagesDict.set("Count", pages.length); - const maxLeaves = MAX_LEAVES_PER_PAGES_NODE <= 1 ? pages.length : MAX_LEAVES_PER_PAGES_NODE; + const maxLeaves = false ? 0 : MAX_LEAVES_PER_PAGES_NODE; const stack = [{ dict: pagesDict, kids: pages, @@ -63137,8 +63576,16 @@ class PDFEditor { } } #makeNameNumTree(map, areNames) { - const allEntries = map.sort(areNames ? ([keyA], [keyB]) => keyA.localeCompare(keyB) : ([keyA], [keyB]) => keyA - keyB); - const maxLeaves = MAX_IN_NAME_TREE_NODE <= 1 ? allEntries.length : MAX_IN_NAME_TREE_NODE; + const allEntries = map.sort(areNames ? ([keyA], [keyB]) => { + if (keyA < keyB) { + return -1; + } + if (keyA > keyB) { + return 1; + } + return 0; + } : ([keyA], [keyB]) => keyA - keyB); + const maxLeaves = false ? 0 : MAX_IN_NAME_TREE_NODE; const [treeRef, treeDict] = this.newDict; const stack = [{ dict: treeDict, @@ -63211,7 +63658,7 @@ class PDFEditor { if (embeddedFiles.has(name)) { const displayName = stringToPDFString(key, true); for (let i = 1;; i++) { - const deduped = `${displayName}_${i}`; + const deduped = stringToAsciiOrUTF16BE(`${displayName}_${i}`); if (!embeddedFiles.has(deduped)) { name = deduped; break; @@ -63247,7 +63694,7 @@ class PDFEditor { [this.namesRef, this.namesDict] = this.newDict; this.rootDict.set("Names", this.namesRef); } - this.namesDict.set("Dests", this.#makeNameNumTree(Array.from(namedDestinations.entries()), true)); + this.namesDict.set("Dests", this.#makeNameNumTree(Array.from(namedDestinations, ([name, dest]) => [stringToAsciiOrUTF16BE(name), dest]), true)); } #makeStructTree() { const { @@ -63328,7 +63775,7 @@ class PDFEditor { acroForm.set("SigFlags", this.acroFormSigFlags); } acroForm.setIfArray("CO", this.acroFormCalculationOrder); - acroForm.setIfDict("DR", this.acroFormDefaultResources); + acroForm.setIfDefined("DR", this.acroFormDefaultResources); if (this.acroFormDefaultAppearance) { acroForm.set("DA", this.acroFormDefaultAppearance); } @@ -63711,7 +64158,7 @@ class WorkerMessageHandler { docId, apiVersion } = docParams; - const workerVersion = "6.1.200"; + const workerVersion = "6.2.108"; if (apiVersion !== workerVersion) { throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`); } @@ -63908,45 +64355,49 @@ class WorkerMessageHandler { }, () => {}); }).then(pdfManagerReady, onFailure); } - handler.on("GetPage", function (data) { - return pdfManager.getPage(data.pageIndex).then(function (page) { - return Promise.all([pdfManager.ensure(page, "rotate"), pdfManager.ensure(page, "ref"), pdfManager.ensure(page, "userUnit"), pdfManager.ensure(page, "view")]).then(function ([rotate, ref, userUnit, view]) { - return { - rotate, - ref, - refStr: ref?.toString() ?? null, - userUnit, - view - }; - }); - }); + handler.on("GetPage", async function ({ + pageIndex + }) { + const page = await pdfManager.getPage(pageIndex); + const [rotate, ref, userUnit, view] = await Promise.all([pdfManager.ensure(page, "rotate"), pdfManager.ensure(page, "ref"), pdfManager.ensure(page, "userUnit"), pdfManager.ensure(page, "view")]); + return { + rotate, + ref, + refStr: ref?.toString() ?? null, + userUnit, + view + }; }); - handler.on("GetPageIndex", function (data) { - const pageRef = Ref.get(data.num, data.gen); - return pdfManager.ensureCatalog("getPageIndex", [pageRef]); + handler.on("GetPageIndex", function ({ + num, + gen + }) { + return pdfManager.ensureCatalog("getPageIndex", [Ref.get(num, gen)]); }); - handler.on("GetDestinations", function (data) { + handler.on("GetDestinations", function () { return pdfManager.ensureCatalog("destinations"); }); - handler.on("GetDestination", function (data) { - return pdfManager.ensureCatalog("getDestination", [data.id]); + handler.on("GetDestination", function ({ + id + }) { + return pdfManager.ensureCatalog("getDestination", [id]); }); - handler.on("GetPageLabels", function (data) { + handler.on("GetPageLabels", function () { return pdfManager.ensureCatalog("pageLabels"); }); - handler.on("GetPageLayout", function (data) { + handler.on("GetPageLayout", function () { return pdfManager.ensureCatalog("pageLayout"); }); - handler.on("GetPageMode", function (data) { + handler.on("GetPageMode", function () { return pdfManager.ensureCatalog("pageMode"); }); - handler.on("GetViewerPreferences", function (data) { + handler.on("GetViewerPreferences", function () { return pdfManager.ensureCatalog("viewerPreferences"); }); - handler.on("GetOpenAction", function (data) { + handler.on("GetOpenAction", function () { return pdfManager.ensureCatalog("openAction"); }); - handler.on("GetAttachments", function (data) { + handler.on("GetAttachments", function () { return pdfManager.ensureCatalog("attachments"); }); handler.on("GetAttachmentContent", async function (id) { @@ -63967,13 +64418,14 @@ class WorkerMessageHandler { } } }); - handler.on("GetDocJSActions", function (data) { + handler.on("GetDocJSActions", function () { return pdfManager.ensureCatalog("jsActions"); }); - handler.on("GetPageJSActions", function ({ + handler.on("GetPageJSActions", async function ({ pageIndex }) { - return pdfManager.getPage(pageIndex).then(page => pdfManager.ensure(page, "jsActions")); + const page = await pdfManager.getPage(pageIndex); + return pdfManager.ensure(page, "jsActions"); }); handler.on("GetAnnotationsByType", async function ({ types, @@ -64006,43 +64458,52 @@ class WorkerMessageHandler { } } }); - handler.on("GetOutline", function (data) { + handler.on("GetOutline", function () { return pdfManager.ensureCatalog("documentOutline"); }); - handler.on("GetOptionalContentConfig", function (data) { + handler.on("GetOptionalContentConfig", function () { return pdfManager.ensureCatalog("optionalContentConfig"); }); - handler.on("GetPermissions", function (data) { + handler.on("GetPermissions", function () { return pdfManager.ensureCatalog("permissions"); }); - handler.on("GetMetadata", function (data) { + handler.on("GetMetadata", function () { return Promise.all([pdfManager.ensureDoc("documentInfo"), pdfManager.ensureCatalog("metadata"), pdfManager.ensureCatalog("hasStructTree")]); }); - handler.on("GetMarkInfo", function (data) { + handler.on("GetMarkInfo", function () { return pdfManager.ensureCatalog("markInfo"); }); - handler.on("GetData", function (data) { - return pdfManager.requestLoadedStream().then(stream => stream.bytes); + handler.on("GetData", async function () { + const stream = await pdfManager.requestLoadedStream(); + return stream.bytes; }); - handler.on("GetAnnotations", function ({ + handler.on("GetAnnotations", async function ({ pageIndex, intent }) { - return pdfManager.getPage(pageIndex).then(function (page) { - const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`); - startWorkerTask(task); - return page.getAnnotationsData(handler, task, intent).finally(() => { - finishWorkerTask(task); - }); - }); + const page = await pdfManager.getPage(pageIndex); + const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`); + startWorkerTask(task); + try { + return await page.getAnnotationsData(handler, task, intent); + } finally { + finishWorkerTask(task); + } + }); + handler.on("GetFieldObjects", async function () { + const fieldObjects = await pdfManager.ensureDoc("fieldObjects"); + return fieldObjects?.allFields || null; }); - handler.on("GetFieldObjects", function (data) { - return pdfManager.ensureDoc("fieldObjects").then(fieldObjects => fieldObjects?.allFields || null); + handler.on("GetSignatures", function () { + return pdfManager.ensureDoc("signatures"); }); - handler.on("HasJSActions", function (data) { + handler.on("GetSignatureData", function (id) { + return pdfManager.ensureDoc("getSignatureData", [id]); + }); + handler.on("HasJSActions", function () { return pdfManager.ensureDoc("hasJSActions"); }); - handler.on("GetCalculationOrderIds", function (data) { + handler.on("GetCalculationOrderIds", function () { return pdfManager.ensureDoc("calculationOrderIds"); }); handler.on("ExtractPages", async function ({ @@ -64123,8 +64584,7 @@ class WorkerMessageHandler { const pdfEditor = new PDFEditor(); task = new WorkerTask(`ExtractPages: ${pageInfos.length} page(s)`); startWorkerTask(task); - const buffer = await pdfEditor.extractPages(pageInfos, annotationStorage, pdfManager.pdfDocument, handler, task); - return buffer; + return await pdfEditor.extractPages(pageInfos, annotationStorage, pdfManager.pdfDocument, handler, task); } catch (reason) { warn(`extractPages: "${reason}".`); return null; @@ -64272,11 +64732,14 @@ class WorkerMessageHandler { xref.resetNewTemporaryRef(); }); }); - handler.on("GetOperatorList", function (data, sink) { - const { - pageId, - pageIndex - } = data; + handler.on("GetOperatorList", function ({ + pageId, + pageIndex, + intent, + cacheKey, + annotationStorage, + modifiedIds + }, sink) { pdfManager.getPage(pageId).then(function (page) { const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`); startWorkerTask(task); @@ -64285,14 +64748,14 @@ class WorkerMessageHandler { handler, sink, task, - intent: data.intent, - cacheKey: data.cacheKey, - annotationStorage: data.annotationStorage, - modifiedIds: data.modifiedIds, + intent, + cacheKey, + annotationStorage, + modifiedIds, pageIndex - }).then(operatorListInfo => { + }).then(opListInfo => { if (start) { - info(`page=${pageIndex + 1} - getOperatorList: time=` + `${Date.now() - start}ms, len=${operatorListInfo.length}`); + info(`${task.name}; time=${Date.now() - start}ms, len=${opListInfo.length}`); } sink.close(); }, reason => { @@ -64305,13 +64768,12 @@ class WorkerMessageHandler { }); }); }); - handler.on("GetTextContent", function (data, sink) { - const { - pageId, - pageIndex, - includeMarkedContent, - disableNormalization - } = data; + handler.on("GetTextContent", function ({ + pageId, + pageIndex, + includeMarkedContent, + disableNormalization + }, sink) { pdfManager.getPage(pageId).then(function (page) { const task = new WorkerTask("GetTextContent: page " + pageIndex); startWorkerTask(task); @@ -64324,7 +64786,7 @@ class WorkerMessageHandler { disableNormalization }).then(() => { if (start) { - info(`page=${pageIndex + 1} - getTextContent: time=` + `${Date.now() - start}ms`); + info(`${task.name}; time=${Date.now() - start}ms`); } sink.close(); }, reason => { @@ -64337,16 +64799,21 @@ class WorkerMessageHandler { }); }); }); - handler.on("GetStructTree", function (data) { - return pdfManager.getPage(data.pageIndex).then(page => pdfManager.ensure(page, "getStructTree")); + handler.on("GetStructTree", async function ({ + pageIndex + }) { + const page = await pdfManager.getPage(pageIndex); + return pdfManager.ensure(page, "getStructTree"); }); - handler.on("FontFallback", function (data) { - return pdfManager.fontFallback(data.id, handler); + handler.on("FontFallback", function ({ + id + }) { + return pdfManager.fontFallback(id, handler); }); - handler.on("Cleanup", function (data) { + handler.on("Cleanup", function () { return pdfManager.cleanup(true); }); - handler.on("Terminate", async function (data) { + handler.on("Terminate", async function () { terminated = true; const waitOn = []; if (pdfManager) { @@ -64366,7 +64833,7 @@ class WorkerMessageHandler { handler.destroy(); handler = null; }); - handler.on("Ready", function (data) { + handler.on("Ready", function () { setupDoc(docParams); docParams = null; }); diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/-xOSXMZB.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/-xOSXMZB.js new file mode 100644 index 00000000..874c2059 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/-xOSXMZB.js @@ -0,0 +1,3 @@ +import{t as e}from"./DK3Fl9T5.js";var t=Array.isArray,n=Array.prototype.indexOf,r=Array.prototype.includes,i=Array.from,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyDescriptors,c=Object.prototype,l=Array.prototype,u=Object.getPrototypeOf,d=Object.isExtensible,f=()=>{};function p(e){return typeof e?.then==`function`}function m(e){return e()}function h(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}var _=1<<24,v=1024,y=2048,b=4096,x=8192,S=16384,ee=32768,te=1<<25,ne=65536,re=1<<18,ie=1<<19,ae=1<<20,oe=1<<25,se=65536,ce=1<<21,le=1<<22,ue=1<<23,C=Symbol(`$state`),de=Symbol(`legacy props`),fe=Symbol(``),pe=Symbol(`attributes`),me=Symbol(`class`),he=Symbol(`style`),ge=Symbol(`text`),_e=Symbol(`form reset`),ve=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},ye=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function be(e){throw Error(`https://svelte.dev/e/experimental_async_required`)}function xe(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function Se(){throw Error(`https://svelte.dev/e/missing_context`)}function Ce(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function we(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Te(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Ee(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function De(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Oe(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function ke(){throw Error(`https://svelte.dev/e/fork_discarded`)}function Ae(){throw Error(`https://svelte.dev/e/fork_timing`)}function je(){throw Error(`https://svelte.dev/e/get_abort_signal_outside_reaction`)}function Me(){throw Error(`https://svelte.dev/e/hydration_failed`)}function Ne(e){throw Error(`https://svelte.dev/e/lifecycle_legacy_only`)}function Pe(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Fe(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ie(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Le(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Re(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var ze={},w=Symbol(`uninitialized`),Be=`http://www.w3.org/1999/xhtml`,Ve=`http://www.w3.org/2000/svg`,He=`http://www.w3.org/1998/Math/MathML`;function Ue(){console.warn(`https://svelte.dev/e/derived_inert`)}function We(e){console.warn(`https://svelte.dev/e/hydratable_missing_but_expected`)}function Ge(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Ke(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function qe(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var T=!1;function E(e){T=e}var D;function O(e){if(e===null)throw Ge(),ze;return D=e}function k(){return O(R(D))}function Je(e){if(T){if(R(D)!==null)throw Ge(),ze;D=e}}function Ye(e=1){if(T){for(var t=e,n=D;t--;)n=R(n);D=n}}function Xe(e=!0){for(var t=0,n=D;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=R(n);e&&n.remove(),n=i}}function Ze(e){if(!e||e.nodeType!==8)throw Ge(),ze;return e.data}function Qe(e){return e===this.v}function $e(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function et(e){return!$e(e,this.v)}var tt=!1;function nt(){tt=!0}var A=null;function rt(e){A=e}function it(){let e={};return[()=>(st(e)||Se(),at(e)),t=>ot(e,t)]}function at(e){return ft(`getContext`).get(e)}function ot(e,t){return ft(`setContext`).set(e,t),t}function st(e){return ft(`hasContext`).has(e)}function ct(){return ft(`getAllContexts`)}function lt(e,t=!1,n){A={p:A,i:!1,c:null,e:null,s:e,x:null,r:G,l:tt&&!t?{s:null,u:null,$:[]}:null}}function ut(e){var t=A,n=t.e;if(n!==null){t.e=null;for(var r of n)Xn(r)}return e!==void 0&&(t.x=e),t.i=!0,A=t.p,e??{}}function dt(){return!tt||A!==null&&A.l===null}function ft(e){return A===null&&xe(e),A.c??=new Map(pt(A)||void 0)}function pt(e){let t=e.p;for(;t!==null;){let e=t.c;if(e!==null)return e;t=t.p}return null}var mt=[];function ht(){var e=mt;mt=[],h(e)}function j(e){if(mt.length===0&&!en){var t=mt;queueMicrotask(()=>{t===mt&&ht()})}mt.push(e)}function gt(){for(;mt.length>0;)ht()}function _t(e){var t=G;if(t===null)return H.f|=ue,e;if(!(t.f&32768)&&!(t.f&4))throw e;vt(e,t)}function vt(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var yt=~(y|b|v);function M(e,t){e.f=e.f&yt|t}function bt(e){e.f&512||e.deps===null?M(e,v):M(e,b)}function xt(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=se,xt(t.deps))}function St(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),xt(e.deps),M(e,v)}var Ct=[];function wt(e,t=f){let n=null,r=new Set;function i(t){if($e(e,t)&&(e=t,n)){let t=!Ct.length;for(let t of r)t[1](),Ct.push(t,e);if(t){for(let e=0;e{r.delete(c),r.size===0&&n&&(n(),n=null)}}return{set:i,update:a,subscribe:o}}var Tt=!1;function Et(e){var t=Tt;try{return Tt=!1,[e(),Tt]}finally{Tt=t}}function Dt(e,t){if(t){let t=document.body;e.autofocus=!0,j(()=>{document.activeElement===t&&e.focus()})}}function Ot(e){T&&L(e)!==null&&Vn(e)}var kt=!1;function At(){kt||(kt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[_e]?.()})},{capture:!0}))}function jt(e){var t=H,n=G;W(null),K(null);try{return e()}finally{W(t),K(n)}}function Mt(e,t,n,r=n){e.addEventListener(t,()=>jt(n));let i=e[_e];e[_e]=i?()=>{i(),r(!0)}:()=>r(!0),At()}function Nt(e){let t=0,n=xn(0),r;return()=>{qn()&&(Z(n),rr(()=>(t===0&&(r=Q(()=>e(()=>Dn(n)))),t+=1,()=>{j(()=>{--t,t===0&&(r?.(),r=void 0,Dn(n))})})))}}var Pt=ne|ie;function Ft(e,t,n,r){new It(e,t,n,r)}var It=class{parent;is_pending=!1;transform_error;#e;#t=T?D:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=Nt(()=>(this.#m=xn(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=G;t.b=this,t.f|=128,n(e)},this.parent=G.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=or(()=>{if(T){let e=this.#t;k();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#y():this.#g()}else this.#b()},Pt),T&&(this.#e=D)}#g(){try{this.#a=B(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed,{reset:n,invoke_onerror:r}=this.#v(e);j(r),t&&(this.#s=B(()=>{t(this.#e,()=>e,()=>n)}))}#v(e){var t=!1,n=!1;let r=()=>{if(t){qe();return}t=!0,n&&Re(),this.#s!==null&&pr(this.#s,()=>{this.#s=null}),this.#S(()=>{this.#b()})};return{reset:r,invoke_onerror:()=>{try{n=!0,this.#n.onerror?.(e,r),n=!1}catch(e){vt(e,this.#i&&this.#i.parent)}}}}#y(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=B(()=>e(this.#e)),j(()=>{var e=this.#c=document.createDocumentFragment(),t=I();e.append(t),this.#a=this.#S(()=>B(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,pr(this.#o,()=>{this.#o=null}),this.#x(N))}))}#b(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=B(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();_r(this.#a,e);let t=this.#n.pending;this.#o=B(()=>t(this.#e))}else this.#x(N)}catch(e){this.error(e)}}#x(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){St(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#S(e){var t=G,n=H,r=A;K(this.#i),W(this.#i),rt(this.#i.ctx);try{return sn.ensure(),e()}catch(e){return _t(e),null}finally{K(t),W(n),rt(r)}}#C(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#C(e,t);return}this.#u+=e,this.#u===0&&(this.#x(t),this.#o&&pr(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#C(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,j(()=>{this.#d=!1,this.#m&&wn(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),Z(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;N?.is_fork?(this.#a&&N.skip_effect(this.#a),this.#o&&N.skip_effect(this.#o),this.#s&&N.skip_effect(this.#s),N.oncommit(()=>{this.#w(e)})):this.#w(e)}#w(e){this.#a&&=(V(this.#a),null),this.#o&&=(V(this.#o),null),this.#s&&=(V(this.#s),null),T&&(O(this.#t),Ye(),O(Xe()));let t=this.#n.failed,n=e=>{let{reset:n,invoke_onerror:r}=this.#v(e);r(),t&&(this.#s=this.#S(()=>{try{return B(()=>{var r=G;r.b=this,r.f|=128,t(this.#e,()=>e,()=>n)})}catch(e){return vt(e,this.#i.parent),null}}))};j(()=>{var t;try{t=this.transform_error(e)}catch(e){vt(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(n,e=>vt(e,this.#i&&this.#i.parent)):n(t)})}};function Lt(e,t,n,r){let i=dt()?Vt:Gt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=G,c=Rt(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){vt(e,s)}zt()}}var d=Bt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Ut(e))).then(u).catch(e=>vt(e,s)).finally(d)}l?l.then(()=>{c(),f(),zt()}):f()}function Rt(){var e=G,t=H,n=A,r=N;return function(i=!0){K(e),W(t),rt(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function zt(e=!0){K(null),W(null),rt(null),e&&N?.deactivate()}function Bt(){var e=G,t=e.b,n=N,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Vt(e){var t=2|y;return G!==null&&(G.f|=ie),{ctx:A,deps:null,effects:null,equals:Qe,f:t,fn:e,reactions:null,rv:0,v:w,wv:0,parent:G,ac:null}}var Ht=Symbol(`obsolete`);function Ut(e,t,n){let r=G;r===null&&Ce();var i=void 0,a=xn(w),o=!H,s=new Set;return nr(()=>{var t=G,n=g();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ve&&n.reject(e)}).finally(zt)}catch(e){n.reject(e),zt()}var c=N;if(o){if(t.f&32768)var l=Bt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(Ht);else for(let e of s.values())e.reject(Ht);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==Ht&&(c.activate(),t?(a.f|=ue,wn(a,t)):(a.f&8388608&&(a.f^=ue),wn(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),Jn(()=>{for(let e of s)e.reject(Ht)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function Wt(e){let t=Vt(e);return Sr(t),t}function Gt(e){let t=Vt(e);return t.equals=et,t}function Kt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n{t.ac.abort(ve),t.ac=null}),t.fn!==null&&(t.teardown=f),Nr(t,0),lr(t))}function Xt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Pr(t)}var Zt=null,N=null,Qt=null,P=null,$t=null,en=!1,tn=!1,nn=null,rn=null,an=0,on=1,sn=class e{id=on++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Zt===null?Zt=this:(Zt.#n=this,this.#t=Zt),Zt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)M(r,y),t(r);for(r of n.m)M(r,b),t(r)}this.#p.add(e)}#g(){this.#e=!0,an++>1e3&&(this.#x(),ln());for(let e of this.#u)this.#d.delete(e),M(e,y),this.schedule(e);for(let e of this.#d)M(e,b),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=nn=[],r=[],i=rn=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw hn(e),this.#h()||this.discard(),t}if(N=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(nn=null,rn=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)mn(e,t);i.length>0&&N.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),Qt=this,dn(r),dn(n),Qt=null,this.#s?.resolve();var s=N;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=!!(i&96);if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):kr(r)&&(i&16&&this.#d.add(r),Pr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),M(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),N=this,this.#g()}#b(e){for(var t=0;t{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=g()).promise}static ensure(){if(N===null){let t=N=new e;!tn&&!en&&j(()=>{t.#e||t.flush()})}return N}apply(){P=null}schedule(e){if($t=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(nn!==null&&t===G&&(H===null||!(H.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Zt=e:t.#t=e,this.linked=!1}}};function cn(e){var t=en;en=!0;try{var n;for(e&&(N!==null&&!N.is_fork&&N.flush(),n=e());;){if(gt(),N===null)return n;N.flush()}}finally{en=t}}function ln(){try{Oe()}catch(e){vt(e,$t)}}var un=null;function dn(e){var t=e.length;if(t!==0){for(var n=0;n0)){vn.clear();for(let e of un){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)un.has(n)&&(un.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Pr(n)}}un.clear()}}un=null}}function fn(e,t){if(e.reactions!==null)for(let n of e.reactions){let e=n.f;e&2?fn(n,t):e&131072&&(M(n,y),t.add(n))}}function pn(e){N.schedule(e)}function mn(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),M(e,v);for(var n=e.first;n!==null;)mn(n,t),n=n.next}}function hn(e){M(e,v);for(var t=e.first;t!==null;)hn(t),t=t.next}function gn(e){be(`fork`),N!==null&&Ae();var t=sn.ensure();t.is_fork=!0,P=new Map;var n=!1,r=t.settled();return cn(e),{commit:async()=>{if(n){await r;return}t.linked||ke(),n=!0,t.is_fork=!1;for(var[e,[i]]of t.current)e.v=i,e.wv=Or();cn(()=>{var e=new Set;for(var n of t.current.keys())fn(n,e);yn(e),Tn()}),t.flush(),await r},discard:()=>{for(var e of t.current.keys())e.wv=Or();!n&&t.linked&&t.discard()}}}var _n=new Set,vn=new Map;function yn(e){_n=e}var bn=!1;function xn(e,t){return{f:0,v:e,reactions:null,equals:Qe,rv:0,wv:0}}function Sn(e,t){let n=xn(e,t);return Sr(n),n}function Cn(e,t=!1,n=!0){let r=xn(e);return t||(r.equals=et),tt&&n&&A!==null&&A.l!==null&&(A.l.s??=[]).push(r),r}function F(e,t,n=!1){return H!==null&&(!U||H.f&131072)&&dt()&&H.f&4325394&&(q===null||!q.has(e))&&Le(),wn(e,n?kn(t):t,rn)}function wn(e,t,n=null){if(!e.equals(t)){vn.set(e,br?t:e.v);var r=sn.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&qt(t),P===null&&bt(t)}e.wv=Or(),On(e,y,n),dt()&&G!==null&&G.f&1024&&!(G.f&96)&&(X===null?Cr([e]):X.push(e)),!r.is_fork&&_n.size>0&&!bn&&Tn()}return t}function Tn(){bn=!1;for(let e of _n){e.f&1024&&M(e,b);let t;try{t=kr(e)}catch{t=!0}t&&Pr(e)}_n.clear()}function En(e,t=1){var n=Z(e),r=t===1?n++:n--;return F(e,n),r}function Dn(e){F(e,e.v+1)}function On(e,t,n){var r=e.reactions;if(r!==null)for(var i=dt(),a=r.length,o=0;o{if(Er===d)return e();var t=H,n=Er;W(null),Dr(d);var r=e();return W(t),Dr(n),r};return i&&r.set(`length`,Sn(e.length,s)),new Proxy(e,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Fe();var i=r.get(t);return i===void 0?f(()=>{var e=Sn(n.value,s);return r.set(t,e),e}):F(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>Sn(w,s));r.set(t,e),Dn(a)}}else F(n,w),Dn(a);return!0},get(t,n,i){if(n===C)return e;var a=r.get(n),c=n in t;if(a===void 0&&(!c||o(t,n)?.writable)&&(a=f(()=>Sn(kn(c?t[n]:w),s)),r.set(n,a)),a!==void 0){var l=Z(a);return l===w?void 0:l}return Reflect.get(t,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=Z(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==w)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===C)return!0;var n=r.get(t),i=n!==void 0&&n.v!==w||Reflect.has(e,t);return(n!==void 0||G!==null&&(!i||o(e,t)?.writable))&&(n===void 0&&(n=f(()=>Sn(i?kn(e[t]):w,s)),r.set(t,n)),Z(n)===w)?!1:i},set(e,t,n,c){var l=r.get(t),u=t in e;if(i&&t===`length`)for(var d=n;dSn(w,s)),r.set(d+``,p)):F(p,w)}if(l===void 0)(!u||o(e,t)?.writable)&&(l=f(()=>Sn(void 0,s)),F(l,kn(n)),r.set(t,l));else{u=l.v!==w;var m=f(()=>kn(n));F(l,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(c,n),!u){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&F(g,_+1)}Dn(a)}return!0},ownKeys(e){Z(a);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==w});for(var[n,i]of r)i.v!==w&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ie()}})}function An(e){try{if(typeof e==`object`&&e&&C in e)return e[C]}catch{}return e}function jn(e,t){return Object.is(An(e),An(t))}var Mn,Nn,Pn,Fn,In;function Ln(){if(Mn===void 0){Mn=window,Nn=document,Pn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Fn=o(t,`firstChild`).get,In=o(t,`nextSibling`).get,d(e)&&(e[me]=void 0,e[pe]=null,e[he]=void 0,e.__e=void 0),d(n)&&(n[ge]=void 0)}}function I(e=``){return document.createTextNode(e)}function L(e){return Fn.call(e)}function R(e){return In.call(e)}function Rn(e,t){if(!T)return L(e);var n=L(D);if(n===null)n=D.appendChild(I());else if(t&&n.nodeType!==3){var r=I();return n?.before(r),O(r),r}return t&&Wn(n),O(n),n}function zn(e,t=!1){if(!T){var n=L(e);return n instanceof Comment&&n.data===``?R(n):n}if(t){if(D?.nodeType!==3){var r=I();return D?.before(r),O(r),r}Wn(D)}return D}function Bn(e,t=1,n=!1){let r=T?D:e;for(var i;t--;)i=r,r=R(r);if(!T)return r;if(n){if(r?.nodeType!==3){var a=I();return r===null?i?.after(a):r.before(a),O(a),a}Wn(r)}return O(r),r}function Vn(e){e.textContent=``}function Hn(){return!1}function Un(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function Wn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Gn(e){G===null&&(H===null&&De(e),Ee()),br&&Te(e)}function Kn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function z(e,t){var n=G;n!==null&&n.f&8192&&(e|=x);var r={ctx:A,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};N?.register_created_effect(r);var i=r;if(e&4)nn===null?sn.ensure().schedule(r):nn.push(r);else if(t!==null){try{Pr(r)}catch(e){throw V(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=ne))}if(i!==null&&(i.parent=n,n!==null&&Kn(i,n),H!==null&&H.f&2&&!(e&64))){var a=H;(a.effects??=[]).push(i)}return r}function qn(){return H!==null&&!U}function Jn(e){let t=z(8,null);return M(t,v),t.teardown=e,t}function Yn(e){Gn(`$effect`);var t=G.f;if(!H&&t&32&&A!==null&&!A.i){var n=A;(n.e??=[]).push(e)}else return Xn(e)}function Xn(e){return z(4|ae,e)}function Zn(e){return Gn(`$effect.pre`),z(8|ae,e)}function Qn(e){sn.ensure();let t=z(64|ie,e);return(e={})=>new Promise(n=>{e.outro?pr(t,()=>{V(t),n(void 0)}):(V(t),n(void 0))})}function $n(e){return z(4,e)}function er(e,t){var n=A,r={effect:null,ran:!1,deps:e};n.l.$.push(r),r.effect=rr(()=>{if(e(),!r.ran){r.ran=!0;var n=G;try{K(n.parent),Q(t)}finally{K(n)}}})}function tr(){var e=A;rr(()=>{for(var t of e.l.$){t.deps();var n=t.effect;n.f&1024&&n.deps!==null&&M(n,b),kr(n)&&Pr(n),t.ran=!1}})}function nr(e){return z(le|ie,e)}function rr(e,t=0){return z(8|t,e)}function ir(e,t=[],n=[],r=[]){Lt(r,t,n,t=>{z(8,()=>{e(...t.map(Z))})})}function ar(e,t=[],n=[],r=[]){Lt(r,t,n,t=>{z(4,()=>e(...t.map(Z)))})}function or(e,t=0){return z(16|t,e)}function sr(e,t=0){return z(_|t,e)}function B(e){return z(32|ie,e)}function cr(e){var t=e.teardown;if(t!==null){let e=br,n=H;xr(!0),W(null);try{t.call(null)}finally{xr(e),W(n)}}}function lr(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&jt(()=>{e.abort(ve)});var r=n.next;n.f&64?n.parent=null:V(n,t),n=r}}function ur(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||V(t),t=n}}function V(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(dr(e.nodes.start,e.nodes.end),n=!0),e.f|=te,lr(e,t&&!n),Nr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();cr(e),e.f^=te,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&fr(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function dr(e,t){for(;e!==null;){var n=e===t?null:R(e);e.remove(),e=n}}function fr(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function pr(e,t,n=!0){var r=[];mr(e,r,!0);var i=()=>{n&&V(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function mr(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=!!(i.f&65536)||!!(i.f&32)&&!!(e.f&16);mr(i,t,o?n:!1)}i=a}}}function hr(e){gr(e,!0)}function gr(e,t){if(e.f&8192){e.f^=x,e.f&1024||(M(e,y),sn.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=!!(n.f&65536)||!!(n.f&32);gr(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function _r(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:R(n);t.append(n),n=i}}var vr=null,yr=!1,br=!1;function xr(e){br=e}var H=null,U=!1;function W(e){H=e}var G=null;function K(e){G=e}var q=null;function Sr(e){H!==null&&(q??=new Set).add(e)}var J=null,Y=0,X=null;function Cr(e){X=e}var wr=1,Tr=0,Er=Tr;function Dr(e){Er=e}function Or(){return++wr}function kr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~se),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&P===null&&M(e,v)}return!1}function Ar(e,t,n=!0){var r=e.reactions;if(r!==null&&!(q!==null&&q.has(e)))for(var i=0;i{e.ac.abort(ve)}),e.ac=null);try{e.f|=ce;var u=e.fn,d=u();e.f|=ee;var f=e.deps,p=N?.is_fork;if(J!==null){var m;if(p||Nr(e,Y),f!==null&&Y>0)for(f.length=Y+J.length,m=0;m{s.ac.abort(ve),s.ac=null,M(s,y)}),Yt(s),Nr(s,0)}}function Nr(e,t){var n=e.deps;if(n!==null)for(var r=t;r{e.isConnected&&e.dispatchEvent(t)}))}function ti(e,t,n,r={}){function i(e){if(r.capture||oi.call(t,e),!e.cancelBubble)return jt(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?j(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function ni(e,t,n,r,i){var a={capture:r,passive:i},o=ti(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Jn(()=>{t.removeEventListener(e,o,a)})}function ri(e,t,n){(t[Zr]??={})[e]=n}function ii(e){for(var t=0;t{throw e});throw p}}finally{e[Zr]=t,delete e.currentTarget,W(d),K(f)}}}var si=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function ci(e){return si?.createHTML(e)??e}function li(e){var t=Un(`template`);return t.innerHTML=ci(e.replaceAll(``,``)),t.content}function $(e,t){var n=G;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function ui(e,t){var n=!!(t&1),r=!!(t&2),i,a=!e.startsWith(``);return()=>{if(T)return $(D,null),D;i===void 0&&(i=li(a?e:``+e),n||(i=L(i)));var t=r||Pn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=L(t),s=t.lastChild;$(o,s)}else $(t,t);return t}}function di(e,t,n=`svg`){var r=!e.startsWith(``),i=!!(t&1),a=`<${n}>${r?e:``+e}`,o;return()=>{if(T)return $(D,null),D;if(!o){var e=L(li(a));if(i)for(o=document.createDocumentFragment();L(e);)o.appendChild(L(e));else o=L(e)}var t=o.cloneNode(!0);if(i){var n=L(t),r=t.lastChild;$(n,r)}else $(t,t);return t}}function fi(e,t){return di(e,t,`svg`)}function pi(e=``){if(!T){var t=I(e+``);return $(t,t),t}var n=D;return n.nodeType===3?Wn(n):(n.before(n=I()),O(n)),$(n,n),n}function mi(){if(T)return $(D,null),D;var e=document.createDocumentFragment(),t=document.createComment(``),n=I();return e.append(t,n),$(t,n),e}function hi(e,t){if(T){var n=G;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=D),k();return}e!==null&&e.before(t)}function gi(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[ge]??=e.nodeValue)&&(e[ge]=n,e.nodeValue=`${n}`)}function _i(e,t){return bi(e,t)}function vi(e,t){Ln(),t.intro=t.intro??!1;let n=t.target,r=T,i=D;try{for(var a=L(n);a&&(a.nodeType!==8||a.data!==`[`);)a=R(a);if(!a)throw ze;E(!0),O(a);let r=bi(e,{...t,anchor:a});return E(!1),r}catch(r){if(r instanceof Error&&r.message.split(` +`).some(e=>e.startsWith(`https://svelte.dev/e/`)))throw r;return r!==ze&&console.warn(`Failed to hydrate: `,r),t.recover===!1&&Me(),Ln(),Vn(n),E(!1),_i(e,t)}finally{E(r),O(i)}}var yi=new Map;function bi(e,{target:t,anchor:n,props:r={},events:a,context:o,intro:s=!0,transformError:c}){Ln();var l=void 0,u=Qn(()=>{var s=n??t.appendChild(I());Ft(s,{pending:()=>{}},t=>{lt({});var n=A;if(o&&(n.c=o),a&&(r.$$events=a),T&&$(t,null),l=e(t,r)||{},T&&(G.nodes.end=D,D===null||D.nodeType!==8||D.data!==`]`))throw Ge(),ze;ut()},c);var u=new Set,d=e=>{for(var n=0;n{for(var e of u)for(let n of[t,document]){var r=yi.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,oi),r.delete(e),r.size===0&&yi.delete(n)):r.set(e,i)}$r.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return xi.set(l,u),l}var xi=new WeakMap;function Si(e,t){let n=xi.get(e);return n?(xi.delete(e),n(t)):Promise.resolve()}var Ci=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)hr(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(hr(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(V(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();_r(r,t),t.append(I()),this.#n.set(e,{effect:r,fragment:t})}else V(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),pr(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(V(n.effect),this.#n.delete(e))};ensure(e,t){var n=N,r=Hn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=I();i.append(a),this.#n.set(e,{effect:B(()=>t(a)),fragment:i})}else this.#t.set(e,B(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else T&&(this.anchor=D),this.#a(n)}},wi=0,Ti=1,Ei=2;function Di(e,t,n,r,i){T&&k();var a=dt(),o=w,s=a?xn(o):Cn(o,!1,!1),c=a?xn(o):Cn(o,!1,!1),l=new Ci(e);or(()=>{var a=N,o=t(),u=!1;let d=T&&p(o)===(e.data===`[!`);if(d&&(O(Xe()),E(!1)),p(o)){var f=Rt(),m=!1;let e=e=>{if(!u){m=!0,f(!1),N===a&&a.deactivate(),sn.ensure();try{e()}finally{zt(!1),en||cn()}}};o.then(t=>{e(()=>{wn(s,t),l.ensure(Ti,r&&(e=>r(e,s)))})},t=>{e(()=>{if(wn(c,t),l.ensure(Ei,i&&(e=>i(e,c))),!i)throw c.v})}),T?l.ensure(wi,n):j(()=>{m||e(()=>{l.ensure(wi,n)})})}else wn(s,o),l.ensure(Ti,r&&(e=>r(e,s)));return d&&E(!0),()=>{u=!0}})}function Oi(e,t,n=!1){var r;T&&(r=D,k());var i=new Ci(e),a=n?ne:0;function o(e,t){if(T){var n=Ze(r);if(e!==parseInt(n.substring(1))){var a=Xe();O(a),i.anchor=a,E(!1),i.ensure(e,t),E(!0);return}}i.ensure(e,t)}or(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}var ki=Symbol(`NaN`);function Ai(e,t,n){T&&k();var r=new Ci(e),i=!dt();or(()=>{var e=t();e!==e&&(e=ki),i&&typeof e==`object`&&e&&(e={}),r.ensure(e,n)})}function ji(e,t){return t}function Mi(e,t,n){for(var r=[],a=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Ni(e,i(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=r.length===0&&n!==null;if(l){var u=n,d=u.parentNode;Vn(d),d.append(u),e.items.clear()}Ni(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Ni(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var e=r();return t(e)?e:e==null?[]:i(e)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,Li(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=oe,zi(d,null,c)):hr(d):pr(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:or(()=>{p=Z(f);var e=p.length;let t=!1;T&&Ze(c)===`[!`!=(e===0)&&(c=Xe(),O(c),E(!1),t=!0);for(var i=new Set,u=N,v=Hn(),y=0;ys(c)):(d=B(()=>s(Pi??=I())),d.f|=oe)),e>i.size&&we(``,``,``),T&&e>0&&O(Xe()),!h)if(m.set(u,i),v){for(let[e,t]of l)i.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&E(!0),Z(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,T&&(c=D)}function Ii(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Li(e,t,n,r,a){var o=!!(r&8),s=t.length,c=e.items,l=Ii(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v0){var re=r&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Ri(e,t,n,r,i,a,o,s){var c=o&1?o&16?xn(n):Cn(n,!1,!1):null,l=o&2?xn(i):null;return{v:c,i:l,e:B(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function zi(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=R(r);if(a.before(r),r===i)return;r=o}}function Bi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Vi(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;T&&(o=O(L(c)))}ir(()=>{var e=G;if(s===(s=t()??``)){T&&k();return}if(n&&!T){e.nodes=null,c.innerHTML=s,s!==``&&$(L(c),c.lastChild);return}if(e.nodes!==null&&(dr(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(T){for(var a=D.data,l=k(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=R(l);if(l===null)throw Ge(),ze;$(D,u),o=O(l);return}var d=Un(r?`svg`:i?`math`:`template`,r?Ve:i?He:void 0);d.innerHTML=s;var f=r||i?d:d.content;if($(L(f),f.lastChild),r||i)for(;L(f);)o.before(L(f));else o.before(f)}})}function Hi(e,t,...n){var r=new Ci(e);or(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},ne)}function Ui(e){return(t,...n)=>{var r=e(...n),i;T?(i=D,k()):(i=L(li(r.render().trim())),t.before(i));let a=r.setup?.(i);$(i,i),typeof a==`function`&&Jn(a)}}function Wi(e,t,n){var r;T&&(r=D,k());var i=new Ci(e);or(()=>{var e=t()??null;if(T&&Ze(r)===`[`!=(e!==null)){var a=Xe();O(a),i.anchor=a,E(!1),i.ensure(e,e&&(t=>n(t,e))),E(!0);return}i.ensure(e,e&&(t=>n(t,e)))},ne)}function Gi(e,t,n,r,i,a){let o=T;T&&k();var s=null;T&&D.nodeType===1&&(s=D,k());var c=T?D:e,l=new Ci(c,!1);or(()=>{let e=t()||null;var a=i?i():n||e===`svg`?Ve:void 0;if(e===null){l.ensure(null,null);return}return l.ensure(e,t=>{if(e){if(s=T?s:Un(e,a),$(s,s),r){var n=null;T&&Xr(e)&&s.append(n=document.createComment(``));var i=T?L(s):s.appendChild(I());T&&(i===null?E(!1):O(i)),r(s,i),n?.remove()}G.nodes.end=s,t.before(s)}T&&O(t)}),()=>{}},ne),Jn(()=>{}),o&&(E(!0),O(c))}function Ki(e,t){let n=null,r=T;var i;if(T){n=D;for(var a=L(document.head);a!==null&&(a.nodeType!==8||a.data!==e);)a=R(a);if(a===null)E(!1);else{var o=R(a);a.remove(),O(o)}}T||(i=document.head.appendChild(I()));try{or(()=>{var e=B(()=>t(i));e.f|=re})}finally{r&&(E(!0),O(n))}}function qi(e,t,n){$n(()=>{var r=Q(()=>t(e,n?.())||{});if(n&&r?.update){var i=!1,a={};rr(()=>{var e=n();zr(e),i&&$e(a,e)&&(a=e,r.update(e))}),i=!0}if(r?.destroy)return()=>r.destroy()})}function Ji(e,t){var n=void 0,r;sr(()=>{n!==(n=t())&&(r&&=(V(r),null),n&&(r=B(()=>{$n(()=>n(e))})))})}function Yi(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||Qi.includes(r[o-1]))&&(s===r.length||Qi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function ea(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function ta(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function na(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(ta)),i&&c.push(...Object.keys(i).map(ta));var l=0,u=-1;let t=e.length;for(var d=0;d{`__value`in e&&oa(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Jn(()=>{t.disconnect()})}function ca(e,t,n=t){var r=new WeakSet,i=!0;Mt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),la);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&la(o)}n(a),e.__value=a,N!==null&&r.add(N)}),$n(()=>{var a=t();if(e===document.activeElement){var o=N;if(r.has(o))return}if(oa(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=la(s),n(a))}e.__value=a,i=!1}),sa(e)}function la(e){return`__value`in e?e.__value:e.value}var ua=Symbol(`class`),da=Symbol(`style`),fa=Symbol(`is custom element`),pa=Symbol(`is html`),ma=ye?`link`:`LINK`,ha=ye?`input`:`INPUT`,ga=ye?`option`:`OPTION`,_a=ye?`select`:`SELECT`,va=ye?`progress`:`PROGRESS`;function ya(e){if(T){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;Ca(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;Ca(e,`checked`,null),e.checked=r}}};e[_e]=n,j(n),At()}}function ba(e,t){var n=Ea(e);n.value!==(n.value=t??void 0)&&(e.value!==t||t===0&&e.nodeName===va)&&(e.value=t??``)}function xa(e,t){var n=Ea(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function Sa(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function Ca(e,t,n,r){var i=Ea(e);T&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ma)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[fe]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&Oa(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function wa(e,t,n,r,i=!1,a=!1){if(T&&i&&e.nodeName===ha){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||ya(o)}var s=Ea(e),c=s[fa],l=!s[pa];let u=T&&c;u&&E(!1);var d=t||{},f=e.nodeName===ga;for(var p in t)p in n||(n[p]=null);n.class?n.class=Zi(n.class):(r||n[ua])&&(n.class=null),n[da]&&(n.style??=null);var m=Oa(e);if(e.nodeName===ha&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,Ca(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){ra(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[ua],n[ua]),d[i]=o,d[ua]=n[ua];continue}if(i===`style`){aa(e,o,t?.[da],n[da]),d[i]=o,d[da]=n[da];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=Ur(r);if(Vr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)ri(r,e,o),ii([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=ti(r,e,a,t)}}else if(i===`style`)Ca(e,i,o);else if(i===`autofocus`)Dt(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)Sa(e,o);else{var y=i;l||(y=Kr(y));var b=y===`defaultValue`||y===`defaultChecked`;if(o==null&&!c&&!b)if(s[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else b||m.includes(y)&&(c||typeof o!=`string`)?(e[y]=o,y in s&&(s[y]=w)):typeof o!=`function`&&Ca(e,y,o,a)}}}return u&&E(!0),d}function Ta(e,t,n=[],r=[],i=[],a,o=!1,s=!1){Lt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===_a,l=!1;if(sr(()=>{var u=t(...n.map(Z)),d=wa(e,r,u,a,o,s);l&&c&&`value`in u&&oa(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||V(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&V(i[t]),i[t]=B(()=>Ji(e,()=>f))),d[t]=f}r=d}),c){var u=e;$n(()=>{oa(u,r.value,!0),sa(u)})}l=!0})}function Ea(e){return e[pe]??={[fa]:e.nodeName.includes(`-`),[pa]:e.namespaceURI===Be}}var Da=new Map;function Oa(e){var t=e.getAttribute(`is`)||e.nodeName,n=Da.get(t);if(n)return n;Da.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=s(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.push(o);i=u(i)}return n}function ka(e,t,n=t){var r=new WeakSet;Mt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Pa(e)?Fa(a):a,n(a),N!==null&&r.add(N),await Fr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(T&&e.defaultValue!==e.value||Q(t)==null&&e.value)&&(n(Pa(e)?Fa(e.value):e.value),N!==null&&r.add(N)),rr(()=>{var n=t();if(e===document.activeElement){var i=N;if(r.has(i))return}Pa(e)&&n===Fa(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}var Aa=new Set;function ja(e,t,n,r,i=r){var a=n.getAttribute(`type`)===`checkbox`,o=e;let s=!1;if(t!==null)for(var c of t)o=o[c]??=[];o.push(n),Mt(n,`change`,()=>{var e=n.__value;a&&(e=Na(o,e,n.checked)),i(e)},()=>i(a?[]:null)),rr(()=>{var e=r();if(T&&n.defaultChecked!==n.checked){s=!0;return}a?(e||=[],n.checked=e.includes(n.__value)):n.checked=jn(n.__value,e)}),Jn(()=>{var e=o.indexOf(n);e!==-1&&o.splice(e,1)}),Aa.has(o)||(Aa.add(o),j(()=>{o.sort((e,t)=>e.compareDocumentPosition(t)===4?-1:1),Aa.delete(o)})),j(()=>{if(s){var e=a?Na(o,e,n.checked):o.find(e=>e.checked)?.__value;i(e)}})}function Ma(e,t,n=t){Mt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(T&&e.defaultChecked!==e.checked||Q(t)==null)&&n(e.checked),rr(()=>{e.checked=!!t()})}function Na(e,t,n){for(var r=new Set,i=0;i{var o,s;return rr(()=>{o=s,s=r?.()||[],Q(()=>{Ia(n(...s),e)||(t(e,...s),o&&Ia(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Ia(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Ra(e=!1){let t=A,n=t.l.u;if(!n)return;let r=()=>zr(t.s);if(e){let e=0,n={},i=Vt(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>Z(i)}n.b.length&&Zn(()=>{za(t,r),h(n.b)}),Yn(()=>{let e=Q(()=>n.m.map(m));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Yn(()=>{za(t,r),h(n.a)})}function za(e,t){if(e.l.s)for(let t of e.l.s)Z(t);t()}function Ba(e,t,n,r){var i=!tt||!!(n&2),a=!!(n&8),s=!!(n&16),c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Vt(r),Z(u)):(l&&(l=!1,c=s?Q(r):r),c);let f;if(a){var p=C in e||de in e;f=o(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;a?[m,h]=Et(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Pe(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Vt:Gt)(()=>(v=!1,g()));a&&Z(y);var b=G;return(function(e,t){if(arguments.length>0){let n=t?Z(y):i&&a?kn(e):e;return F(y,n),v=!0,c!==void 0&&(c=n),e}return br&&v||b.f&16384?y.v:Z(y)})}function Va(e){return class extends Ha{constructor(t){super({component:e,...t})}}}var Ha=class{#e;#t;constructor(e){var t=new Map,n=(e,n)=>{var r=Cn(n,!1,!1);return t.set(e,r),r};let r=new Proxy({...e.props||{},$$events:{}},{get(e,r){return Z(t.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===de||(Z(t.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,i){return F(t.get(r)??n(r,i),i),Reflect.set(e,r,i)}});this.#t=(e.hydrate?vi:_i)(e.component,{target:e.target,anchor:e.anchor,props:r,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),(!e?.props?.$$host||e.sync===!1)&&cn(),this.#e=r.$$events;for(let e of Object.keys(this.#t))e!==`$set`&&e!==`$destroy`&&e!==`$on`&&a(this,e,{get(){return this.#t[e]},set(t){this.#t[e]=t},enumerable:!0});this.#t.$set=e=>{Object.assign(r,e)},this.#t.$destroy=()=>{Si(this.#t)}}$set(e){this.#t.$set(e)}$on(e,t){this.#e[e]=this.#e[e]||[];let n=(...e)=>t.call(this,...e);return this.#e[e].push(n),()=>{this.#e[e]=this.#e[e].filter(e=>e!==n)}}$destroy(){this.#t.$destroy()}};function Ua(e,t){if(be(`hydratable`),T){let t=window.__svelte?.h;if(t?.has(e))return t.get(e);We(e)}return t()}var Wa=e({afterUpdate:()=>Za,beforeUpdate:()=>Xa,createContext:()=>it,createEventDispatcher:()=>Ya,createRawSnippet:()=>Ui,flushSync:()=>cn,fork:()=>gn,getAbortSignal:()=>Ga,getAllContexts:()=>ct,getContext:()=>at,hasContext:()=>st,hydratable:()=>Ua,hydrate:()=>vi,mount:()=>_i,onDestroy:()=>qa,onMount:()=>Ka,setContext:()=>ot,settled:()=>Ir,tick:()=>Fr,unmount:()=>Si,untrack:()=>Q});function Ga(){return H===null&&je(),(H.ac??=new AbortController).signal}function Ka(e){A===null&&xe(`onMount`),tt&&A.l!==null?Qa(A).m.push(e):Yn(()=>{let t=Q(e);if(typeof t==`function`)return t})}function qa(e){A===null&&xe(`onDestroy`),Ka(()=>()=>Q(e))}function Ja(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function Ya(){let e=A;return e===null&&xe(`createEventDispatcher`),(n,r,i)=>{let a=e.s.$$events?.[n];if(a){let o=t(a)?a.slice():[a],s=Ja(n,r,i);for(let t of o)t.call(e.x,s);return!s.defaultPrevented}return!0}}function Xa(e){A===null&&xe(`beforeUpdate`),A.l===null&&Ne(`beforeUpdate`),Qa(A).b.push(e)}function Za(e){A===null&&xe(`afterUpdate`),A.l===null&&Ne(`afterUpdate`),Qa(A).a.push(e)}function Qa(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}export{Yn as $,Ai as A,ri as B,Ki as C,Vi as D,Hi as E,mi as F,Ir as G,ei as H,ui as I,ar as J,Fr as K,fi as L,Di as M,gi as N,Fi as O,hi as P,ir as Q,pi as R,qi as S,f as St,Wi as T,zr as U,ni as V,Z as W,er as X,$n as Y,tr as Z,sa as _,lt as _t,Ba as a,Bn as at,ra as b,Ye as bt,Ma as c,F as ct,Ta as d,Gt as dt,Zn as et,ya as f,Wt as ft,ca as g,ut as gt,ba as h,at as ht,Va as i,zn as it,Oi as j,ji as k,ja as l,Sn as lt,xa as m,wt as mt,qa as n,Mn as nt,Ra as o,kn as ot,Ca as p,Ot as pt,Q as q,Ka as r,Rn as rt,La as s,Cn as st,Wa as t,Nn as tt,ka as u,En as ut,oa as v,ot as vt,Gi as w,Zi as x,Je as xt,aa as y,nt as yt,ii as z}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/70DTYTnm.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/70DTYTnm.js new file mode 100644 index 00000000..616e3e59 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/70DTYTnm.js @@ -0,0 +1 @@ +import{n as e,t}from"./BEqsQr3A.js";async function n(t){let n=new URLSearchParams;t.limit&&n.set(`limit`,String(t.limit)),t.cursor&&n.set(`cursor`,t.cursor);let r=t.query?.trim();r&&n.set(`q`,r),t.role&&n.set(`role`,t.role);let i=n.toString(),a=`/api/workspaces/${t.workspaceID}/members${i?`?${i}`:``}`;return e(a)}function r(e){if(e instanceof t){if(e.status===401||e.status===403)return`You don't have permission to view this workspace's members.`;if(e.status===400)return`That search isn't valid. Try a different query or filter.`}return e instanceof Error?e.message:`Could not load members`}export{r as n,n as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/9dGTdiTk.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/9dGTdiTk.js new file mode 100644 index 00000000..7bd06d3f --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/9dGTdiTk.js @@ -0,0 +1 @@ +import{G as e,K as t,W as n,ct as r,lt as i,mt as a,r as o,t as s}from"./-xOSXMZB.js";import{i as c,n as l,r as u,t as d}from"./Dt-HX3Vu.js";new URL(`sveltekit-internal://`);function f(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function p(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function ee(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(e,t,n,r=!1){let i=new URL(e);Object.defineProperty(i,"searchParams",{value:new Proxy(i.searchParams,{get(e,r){if(r===`get`||r===`getAll`||r===`has`)return(t,...i)=>(n(t),e[r](t,...i));t();let i=Reflect.get(e,r);return typeof i==`function`?i.bind(e):i}}),enumerable:!0,configurable:!0});let a=[`href`,`pathname`,`search`,`toString`,`toJSON`];r&&a.push(`hash`);for(let n of a)Object.defineProperty(i,n,{get(){return t(),e[n]},enumerable:!0,configurable:!0});return i}function g(){}function _(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}var te=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&v.delete(b(e)),te(e,t));var v=new Map;function y(e,t){let n=b(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=d(e));let i=r.getAttribute(`data-ttl`);return i&&v.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function ne(e,t,n){if(v.size>0){let t=b(e,n),r=v.get(t);if(r){if(performance.now(){let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return le(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return le(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=re.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return le(e)}).join(``)}).join(``)}/?$`),params:t}}function oe(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function se(e){return e.slice(1).split(`/`).filter(oe)}function ce(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;ee).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function le(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function ue({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=ae(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return ce(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function de(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function fe(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var x=globalThis.__sveltekit_375u9e?.base??``,pe=globalThis.__sveltekit_375u9e?.assets??x??``,me=`sveltekit:snapshot`,he=`sveltekit:scroll`,ge=`sveltekit:states`,S=`sveltekit:history`,C=`sveltekit:navigation`,w={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},_e=location.origin;function ve(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function T(){return{x:pageXOffset,y:pageYOffset}}function E(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ye={...w,"":w.hover};function be(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function xe(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=be(e)}}function Se(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||O(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===_e&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function D(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=E(s,`preload-code`)),i===null&&(i=E(s,`preload-data`)),t===null&&(t=E(s,`keepfocus`)),n===null&&(n=E(s,`noscroll`)),a===null&&(a=E(s,`reload`)),o===null&&(o=E(s,`replacestate`)),s=be(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ye[r??`off`],preload_data:ye[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Ce(e){let t=a(e),n=!0;function r(){n=!0,t.update(e=>e)}function i(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:i,subscribe:o}}var we={v:g};function Te(){let{set:e,subscribe:t}=a(!1),n;async function r(){clearTimeout(n);try{let t=await fetch(`${pe}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let r=(await t.json()).version!==`dev`;return r&&(e(!0),we.v(),clearTimeout(n)),r}catch{return!1}}return{subscribe:t,check:r}}function O(e,t,n){return e.origin!==_e||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Ee(e){}var De=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...De],[...new Set([...De])];function Oe(e){return e.filter(e=>e!=null)}function k(e,t){return e+`/`+t}function ke(e){return e instanceof l||e instanceof c?e.status:500}function Ae(e){return e instanceof c?e.text:`Internal Error`}var A,j,je,Me=o.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(o.toString()),Ne=`a:`;Me?(A={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ne)},j={current:null},je={current:!1}):(A=new class{#e=i({});get data(){return n(this.#e)}set data(e){r(this.#e,e)}#t=i(null);get form(){return n(this.#t)}set form(e){r(this.#t,e)}#n=i(null);get error(){return n(this.#n)}set error(e){r(this.#n,e)}#r=i({});get params(){return n(this.#r)}set params(e){r(this.#r,e)}#i=i({id:null});get route(){return n(this.#i)}set route(e){r(this.#i,e)}#a=i({});get state(){return n(this.#a)}set state(e){r(this.#a,e)}#o=i(-1);get status(){return n(this.#o)}set status(e){r(this.#o,e)}#s=i(new URL(Ne));get url(){return n(this.#s)}set url(e){r(this.#s,e)}},j=new class{#e=i(null);get current(){return n(this.#e)}set current(e){r(this.#e,e)}},je=new class{#e=i(!1);get current(){return n(this.#e)}set current(e){r(this.#e,e)}},we.v=()=>je.current=!0);function Pe(e){Object.assign(A,e)}var Fe={spanContext(){return Ie},setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording(){return!1},recordException(){return this},addLink(){return this},addLinks(){return this}},Ie={traceId:``,spanId:``,traceFlags:0},{onMount:Le,tick:Re}=s,ze=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),M=null,N=de(`sveltekit:scroll`)??{},P=de(`sveltekit:snapshot`)??{},F={url:Ce({}),page:Ce({}),navigating:a(null),updated:Te()};function Be(e){N[e]=T()}function Ve(e,t){let n=e+1;for(;N[n];)delete N[n],n+=1;for(n=t+1;P[n];)delete P[n],n+=1}function I(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(g)}async function He(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(x||`/`);e&&await e.update()}}var Ue,We,L,R,Ge,z,Ke={},qe={},Je=[],Ye=[],B=null;function V(){B?.fork?.then(e=>e?.discard()),B=null,Q={element:void 0,href:void 0}}var Xe=new Map,Ze=new Set,Qe=new Set,H=new Set,U={branch:[],error:null,url:null,nav:null},$e=!1,et=!1,tt=!0,W=!1,G=!1,nt=!1,K=!1,rt,q,J,Y,it=new Set,at,ot=new Map,st=new Map;async function ct(e,t,n){if(globalThis.__sveltekit_375u9e.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_375u9e.data;for(let t in e)Ke[t]=e[t];for(let e in n)Ke[e]=n[e];for(let e in r)Ke[e]=r[e];for(let e in t)qe[e]=t[e]}document.URL!==location.href&&(location.href=location.href),z=e,await e.hooks.init?.(),Ue=ue(e),R=document.documentElement,Ge=t,We=e.nodes[0],L=e.nodes[1],We(),L(),q=history.state?.[S],J=history.state?.[C],q||(q=J=Date.now(),history.replaceState({...history.state,[S]:q,[C]:J},``));let r=N[q];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Bt(Ge,n)):(await Z({type:`enter`,url:ve(z.hash?Kt(new URL(location.href)):location.href),replace_state:!0}),i()),zt()}async function lt(e=!0,t=!0){if(await(at||=Promise.resolve()),!at)return;at=null;let n=Y={},r=await X(U.url,!0);V();let i=new Map;if(K){for(let e of ot.values())for(let{resource:t}of e.values())t.refresh();for(let[e,t]of st)for(let[n,{resource:r}]of t){let t=k(e,n),a=r.reconnect();a.catch(g),i.set(t,a)}}if(e){let e=A.state,i=r&&await Tt(r);if(!i||n!==Y)return;if(i.type===`redirect`)return mt(new URL(i.location,U.url).href,{replaceState:!0},1,n);t||(i.props.page.state=e),Pe(i.props.page),U={...i.state,nav:U.nav},ut(),rt.$set(i.props)}else ut();let a=[];for(let e of ot.values())for(let{resource:t}of e.values())a.push(t);for(let[e,t]of st)for(let n of t.keys()){let t=k(e,n),r=i.get(t);r&&a.push(r)}await Promise.all(a).catch(g)}function ut(){Je.length=0,K=!1}function dt(e){Ye.some(e=>e?.snapshot)&&(P[e]=Ye.map(e=>e?.snapshot?.capture()))}function ft(e){P[e]?.forEach((e,t)=>{Ye[t]?.snapshot?.restore(e)})}function pt(){Be(q),fe(he,N),dt(J),fe(me,P)}async function mt(e,n,r,i){let a,o;n.invalidateAll&&V(),await Z({type:`goto`,url:ve(e),keepfocus:n.keepFocus,noscroll:n.noScroll,replace_state:n.replaceState,state:n.state,redirect_count:r,nav_token:i,accept:()=>{if(n.invalidateAll){K=!0,a=new Set;for(let[e,t]of ot)for(let[n,r]of t)r.resource?.reset(),a.add(k(e,n));o=new Set;for(let[e,t]of st)for(let n of t.keys())o.add(k(e,n))}n.invalidate&&n.invalidate.forEach(Lt)}}),n.invalidateAll&&t().then(t).then(()=>{for(let[e,t]of ot)for(let[n,{resource:r}]of t)a?.has(k(e,n))&&r.start();for(let[e,t]of st)for(let[n,{resource:r}]of t)o?.has(k(e,n))&&r.reconnect()})}async function ht(e){if(e.id!==B?.id){V();let t={};it.add(t),B={id:e.id,token:t,promise:Tt({...e,preload:t}).then(e=>(it.delete(t),e.type===`loaded`&&e.state.error&&V(),e)),fork:null}}return B.promise}async function gt(e){let t=(await X(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function _t(e,t,n){let r={params:U.params,route:{id:U.route?.id??null},url:new URL(location.href)};if(U={...e.state,nav:r},Pe(e.props.page),rt=new z.root({target:t,props:{...e.props,stores:F,components:Ye},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:N[q]??T()},willUnload:!1,type:`enter`,complete:Promise.resolve()};H.forEach(t=>t(e))}ft(J),et=!0}async function vt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(x&&(e.pathname===x||e.pathname===x+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=f(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Oe(n).map(e=>e.node.component),page:Gt(A)}};s!==void 0&&(l.props.form=s);let u={},d=!A,p=0;for(let e=0;e(s&&(c.route=!0),e[t])}),params:new Proxy(r,{get:(e,t)=>(s&&c.params.add(t),e[t])}),data:a?.data??null,url:h(n,()=>{s&&(c.url=!0)},e=>{s&&c.search_params.add(e)},z.hash),async fetch(t,r){t instanceof Request&&(r={body:t.method===`GET`||t.method===`HEAD`?void 0:await t.blob(),cache:t.cache,credentials:t.credentials,headers:[...t.headers].length>0?t?.headers:void 0,integrity:t.integrity,keepalive:t.keepalive,method:t.method,mode:t.mode,redirect:t.redirect,referrer:t.referrer,referrerPolicy:t.referrerPolicy,signal:t.signal,...r});let{resolved:i,promise:a}=bt(t,r,n);return s&&e(i.href),a},setHeaders:g,depends:e,parent(){return s&&(c.parent=!0),t()},untrack(e){s=!1;try{return e()}finally{s=!0}}};o=await l.universal.load.call(null,u)??null}return{node:l,loader:e,server:a,universal:l.universal?.load?{type:`data`,data:o,uses:c}:null,data:o??a?.data??null,slash:l.universal?.trailingSlash??a?.slash}}function bt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:et?ne(r,i.href,t):y(r,t)}}function xt(e,t,n,r,i,a){if(K)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==U.params[e])return!0;for(let e of i.dependencies)if(Je.some(t=>t(new URL(e))))return!0;return!1}function St(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function Ct(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function wt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Gt(A),constructors:[]}}}async function Tt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(B?.id===e)return it.delete(B.token),B.promise;let{errors:o,layouts:s,leaf:c}=i,d=[...s,c];o.forEach(e=>e?.().catch(g)),d.forEach(e=>e?.[1]().catch(g));let f=U.url?e!==At(U.url):!1,p=U.route?i.id!==U.route.id:!1,ee=Ct(U.url,n),m=!1,h=d.map(async(e,t)=>{if(!e)return;let a=U.branch[t];return e[1]===a?.loader&&!xt(m,p,f,ee,a.universal?.uses,r)?a:(m=!0,yt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;nPromise.resolve({}),server_data_node:St(null)}),{node:await L(),loader:L,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof u){await mt(new URL(t.location,location.href),{},0);return}let a=await z.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&`).replace(//g,`>`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Ot(e){let t=e.href;if(Xe.has(t))return Xe.get(t);let n;try{let r=(async()=>{let t=await z.hooks.reroute({url:new URL(e),fetch:async(t,n)=>bt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);z.hash?n.hash=t:n.pathname=t,t=n}return t})();Xe.set(t,r),n=await r}catch{Xe.delete(t);return}return n}async function X(e,t){if(e&&!O(e,x,z.hash)){let n=await Ot(e);if(!n)return;let r=kt(n);for(let n of Ue){let i=n.exec(r);if(i)return{id:At(e),invalidating:t,route:n,params:ee(i),url:e}}}}function kt(e){return p(z.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(x.length))||`/`}function At(e){return(z.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function jt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Wt(U,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return W||Ze.forEach(e=>e(c)),o?null:s}async function Z({type:n,url:r,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:l={},redirect_count:u=0,nav_token:d={},accept:f=g,block:p=g,event:ee}){let m=Y;Y=d;let h=await X(r,!1),_=n===`enter`?Wt(U,h,r,n):jt({url:r,type:n,delta:i?.delta,intent:h,scroll:i?.scroll,event:ee});if(!_){p(),Y===d&&(Y=m);return}let te=q,v=J;f(),W=!0,et&&_.navigation.type!==`enter`&&F.navigating.set(j.current=_.navigation);let y=h&&await Tt(h);if(!y){if(O(r,x,z.hash))return await I(r,s);y=await Mt(r,{id:null},await $(new c(404,`Not Found`,`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404,s)}if(r=h?.url||r,Y!==d){_.reject(Error(`navigation aborted`));return}if(!y)return;if(y.type===`redirect`){if(u<20){await Z({type:n,url:new URL(y.location,r),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:l,redirect_count:u+1,nav_token:d}),_.fulfil(void 0);return}if(y=await Dt({status:500,error:await $(Error(`Redirect loop`),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}}),!y)return}else if(y.props.page.status>=400&&await F.updated.check())return await He(),await I(r,s);if(ut(),Be(te),dt(v),y.props.page.url.pathname!==r.pathname&&(r.pathname=y.props.page.url.pathname),l=i?i.state:l,!i){let e=+!s,t={[S]:q+=e,[C]:J+=e,[ge]:l};(s?history.replaceState:history.pushState).call(history,t,``,r),s||Ve(q,J)}let ne=h&&B?.id===h.id?B.fork:null;B?.fork&&!ne?V():(B=null,Q={element:void 0,href:void 0}),y.props.page.state=l;let b;if(et){let t=(await Promise.all(Array.from(Qe,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(t.length>0){function e(){t.forEach(e=>{H.delete(e)})}t.push(e),t.forEach(e=>{H.add(e)})}let n=_.navigation.to;U={...y.state,nav:{params:n.params,route:n.route,url:n.url}},y.props.page&&(y.props.page.url=r),!a&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let i=ne&&await ne;i?b=i.commit():(M=null,rt.$set(y.props),M&&Object.assign(y.props.page,M),Pe(y.props.page),b=e?.()),nt=!0}else await _t(y,Ge,!1);let{activeElement:re}=document;if(await b,await t(),await t(),Y!==d){_.reject(Error(`navigation aborted`));return}y.props.page&&M&&Object.assign(y.props.page,M);let ie=null;if(tt){let e=i?i.scroll:o?T():null;e?scrollTo(e.x,e.y):(ie=r.hash&&document.getElementById(qt(r)))?ie.scrollIntoView():scrollTo(0,0)}let ae=document.activeElement!==re&&document.activeElement!==document.body;!a&&!ae&&Ut(r,!ie),tt=!0,W=!1,_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=T()),H.forEach(e=>e(_.navigation)),n===`popstate`&&ft(J),F.navigating.set(j.current=null)}async function Mt(e,t,n,r,i){return e.origin===_e&&e.pathname===location.pathname&&!$e?await Dt({status:r,error:n,url:e,route:t}):await I(e,i)}var Q={element:void 0,href:void 0};function Nt(){let e,t;R.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,w.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],w.tap)}R.addEventListener(`mousedown`,n),R.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(gt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=xe(e,R),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=Se(r,x,z.hash);if(o||s)return;let c=D(r),l=a&&At(U.url)===At(a);if(!(c.reload||l))if(n<=c.preload_data){Q={element:r,href:r.href},t=w.tap;let e=await X(a,!1);if(!e)return;ht(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,gt(a))}function a(){r.disconnect();for(let e of R.querySelectorAll(`a`)){let{url:t,external:n,download:i}=Se(e,x,z.hash);if(n||i)continue;let a=D(e);a.reload||(a.preload_code===w.viewport&&r.observe(e),a.preload_code===w.eager&>(t))}}H.add(a),a()}function $(e,t){if(e instanceof l)return e.body;let n=ke(e),r=Ae(e);return z.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Pt(e,t){Le(()=>(e.add(t),()=>{e.delete(t)}))}function Ft(e){Pt(H,e)}function It(e,t={}){return e=new URL(ve(e)),e.origin===_e?mt(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function Lt(e){if(typeof e==`function`)Je.push(e);else{let{href:t}=new URL(e,location.href);Je.push(e=>e.href===t)}}function Rt(){return K=!0,lt()}function zt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(pt(),!W){let e=Wt(U,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};Ze.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&pt()}),navigator.connection?.saveData||Nt(),R.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=xe(t.composedPath()[0],R);if(!n)return;let{url:r,external:i,target:a,download:o}=Se(n,x,z.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=D(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&r.protocol!==`https:`&&r.protocol!==`http:`||o)return;let[c,l]=(z.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){jt({url:r,type:`link`,event:t})?W=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=U.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(G=!0,Be(q),e(r),!s.replace_state)return;G=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),R.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(O(r,x,!1))return;let i=e.target,a=D(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Ht)if(t.state?.[`sveltekit:history`]){let n=t.state[S];if(Y={},n===q)return;let r=N[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[C],s=U.url?m(location)===m(U.url):!1;if(o===J&&(nt||s)){i!==A.state&&(A.state=i),e(a),N[q]=T(),r&&scrollTo(r.x,r.y),q=n;return}let c=n-q;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{q=n,J=o},block:()=>{history.go(-c)},nav_token:Y,event:t})}else G||(e(new URL(location.href)),z.hash&&location.reload())}),addEventListener(`hashchange`,()=>{G&&(G=!1,history.replaceState({...history.state,[S]:++q,[C]:J},``,location.href))});for(let e of document.querySelectorAll(`link`))ze.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&F.navigating.set(j.current=null)});function e(e){U.url=A.url=e,F.page.set(Gt(A)),F.page.notify()}}async function Bt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){$e=!0;let l=new URL(location.href),d;({params:i={},route:a={id:null}}=await X(l,!1)||{}),d=Ue.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Vt(r.uses)),yt({loader:z.nodes[t],url:l,params:i,route:a,parent:async()=>{let t={};for(let r=0;r{let a=history.state;Ht=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Ht=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t{if(r.rangeCount===e.length){for(let t=0;t{a=e,o=t});return s.catch(g),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:T()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Gt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Kt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function qt(e){let t;if(z.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{F as a,je as c,ct as i,Ee as l,It as n,j as o,Rt as r,A as s,Ft as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/AwlLA_94.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/AwlLA_94.js new file mode 100644 index 00000000..19fc8402 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/AwlLA_94.js @@ -0,0 +1 @@ +import{$ as e,B as t,D as n,F as r,I as i,K as a,N as o,O as s,P as c,Q as l,R as u,S as d,St as f,V as p,W as m,_t as h,a as g,at as _,b as v,bt as y,ct as b,ft as x,gt as S,it as C,j as w,k as ee,lt as T,n as te,ot as ne,p as E,rt as D,s as O,xt as k,y as A,z as j}from"./-xOSXMZB.js";import"./xihTtKlq.js";import{M,N as re,R as ie,S as ae,a as oe,b as se,c as ce,d as le,f as ue,i as de,l as N,n as P,o as F,r as fe,s as I,t as pe,w as me,x as he,y as ge}from"./CQx5QjGd.js";import{t as _e}from"./DlGnnCJo.js";import{t as ve}from"./CgfADbOh.js";var ye=i(`
`),be=i(`
`);function L(e,t){let n=g(t,`rows`,3,3);var r=be();s(r,21,()=>Array.from({length:n()}),ee,(e,t,n)=>{var r=ye();A(r,`--history-row: ${n}`),c(e,r)}),k(r),l(()=>{v(r,1,`history-loader history-loader--${t.direction}`),E(r,`aria-label`,t.direction===`older`?`Loading older messages`:`Loading newer messages`)}),c(e,r)}var R={bash:{glyph:`🖥`,action:`Ran shell command`},exec:{glyph:`🖥`,action:`Ran shell command`},command:{glyph:`🖥`,action:`Ran shell command`},bashsession:{glyph:`🖥`,action:`Managed shell session`},sessions_send:{glyph:`🖥`,action:`Managed shell session`},read:{glyph:`📖`,action:`Read file`},write:{glyph:`📝`,action:`Wrote file`},edit:{glyph:`✏`,action:`Edited file`},apply_patch:{glyph:`🧩`,action:`Applied patch`},applypatch:{glyph:`🧩`,action:`Applied patch`},browsercontrol:{glyph:`🌐`,action:`Controlled browser`},websearch:{glyph:`🔍`,action:`Searched the web`},webfetch:{glyph:`🔗`,action:`Fetched a page`},image:{glyph:`🖼`,action:`Analyzed image`},imagecreate:{glyph:`🎨`,action:`Generated image`},scheduler:{glyph:`⏰`,action:`Scheduled a job`},sendmessage:{glyph:`📤`,action:`Sent a message`},message:{glyph:`📤`,action:`Sent a message`},systemctl:{glyph:`⚙`,action:`Controlled the system`},process:{glyph:`⚙`,action:`Managed a process`},devicecontrol:{glyph:`📱`,action:`Controlled a device`},pdfparse:{glyph:`📄`,action:`Parsed a PDF`},statuscheck:{glyph:`📊`,action:`Checked status`}},z=[{test:e=>e.includes(`search`),glyph:`🔍`,action:`Searched`},{test:e=>e.includes(`fetch`),glyph:`🔗`,action:`Fetched`},{test:e=>e.includes(`browser`),glyph:`🌐`,action:`Controlled browser`},{test:e=>e.includes(`patch`),glyph:`🧩`,action:`Applied patch`},{test:e=>e.includes(`write`),glyph:`📝`,action:`Wrote file`},{test:e=>e.includes(`edit`),glyph:`✏`,action:`Edited file`},{test:e=>e.includes(`read`),glyph:`📖`,action:`Read file`},{test:e=>e.includes(`session`),glyph:`🖥`,action:`Managed shell session`},{test:e=>e.includes(`bash`)||e.includes(`shell`)||e.includes(`exec`),glyph:`🖥`,action:`Ran command`},{test:e=>e.includes(`image`),glyph:`🖼`,action:`Worked with image`},{test:e=>e.includes(`message`)||e.includes(`send`),glyph:`📤`,action:`Sent a message`},{test:e=>e.includes(`agent`)||e.includes(`subagent`),glyph:`🤖`,action:`Ran a sub-agent`},{test:e=>e.includes(`schedul`)||e.includes(`cron`),glyph:`⏰`,action:`Scheduled a job`},{test:e=>e.includes(`device`),glyph:`📱`,action:`Controlled a device`},{test:e=>e.includes(`file`)||e.includes(`dir`),glyph:`📁`,action:`Worked with files`}];function B(e,t){let n=String(e||``).trim(),r=n.toLowerCase().replace(/[^a-z0-9_]/g,``),i=String(t||``).trim()||void 0,a=R[r];if(a)return{name:n,glyph:a.glyph,action:a.action,detail:i};for(let e of z)if(e.test(r))return{name:n,glyph:e.glyph,action:e.action,detail:i};return{name:n||`tool`,glyph:`🔧`,action:`Used tool`,detail:i}}var V=i(`
`),H=i(` `),xe=i(` `),Se=i(`
`),Ce=i(`
`),we=i(`
`),U=i(`
`),W=i(`
`),Te=i(`
`);function Ee(i,a){h(a,!0);let u=T(!0),f=T(void 0);e(()=>{(m(f)===void 0||a.block.final!==m(f))&&(b(f,a.block.final,!0),b(u,!a.block.final))});let p=ne({});function g(e){p[e]=!p[e]}function y(e){let t=e.match(/^\*\*([^]*?)\*\*\s*\n*([^]*)$/);if(!t)return{text:e};let n=t[1].trim(),r=t[2].trim();return{head:n||void 0,text:r}}let ee=x(()=>a.block.items.map(e=>e.type===`tool`?{item:e,tool:B(e.name,e.detail)}:{item:e,tool:null})),te=x(()=>a.block.final?m(u)?`expanded`:`collapsed`:`live`),O=x(()=>m(u)?`Hide preamble`:`Show preamble`);var A=Te();let j;var M=D(A),re=D(M);let ae;var oe=_(re,2);let se;var ce=D(oe,!0);k(oe);var ue=_(oe,2),de=D(ue,!0);k(ue),k(M);var N=_(M,2),P=e=>{var i=W();s(i,21,()=>m(ee),e=>e.item.id,(e,i)=>{var a=r(),s=C(a),u=e=>{var t=V();n(t,()=>le(m(i).item.body),!0),k(t),d(t,e=>ie?.(e)),c(e,t)},f=e=>{let r=x(()=>p[m(i).item.id]===!0);var a=U();let s;var u=D(a),f=D(u);let h;var b=_(f,2),S=D(b,!0);k(b);var C=_(b,2),ee=D(C,!0);k(C);var T=_(C,2),te=e=>{var t=H(),n=D(t,!0);k(t),l(()=>o(n,m(i).tool.name)),c(e,t)};w(T,e=>{m(i).tool.name&&m(i).tool.name!==`tool`&&e(te)});var ne=_(T,2),O=e=>{var t=xe(),n=D(t,!0);k(t),l(()=>{E(t,`title`,m(i).tool.detail),o(n,m(i).tool.detail)}),c(e,t)};w(ne,e=>{!m(r)&&m(i).tool.detail&&e(O)}),k(u);var A=_(u,2),j=e=>{let t=x(()=>y(m(i).item.full));var r=we(),a=D(r),s=e=>{var n=Se(),r=D(n,!0);k(n),l(()=>o(r,m(t).head)),c(e,n)};w(a,e=>{m(t).head&&e(s)});var u=_(a,2),f=e=>{var r=Ce();n(r,()=>le(m(t).text),!0),k(r),d(r,e=>ie?.(e)),c(e,r)};w(u,e=>{m(t).text&&e(f)}),k(r),c(e,r)};w(A,e=>{m(r)&&e(j)}),k(a),l(()=>{s=v(a,1,`preamble-tool`,null,s,{expanded:m(r)}),E(u,`aria-expanded`,m(r)),h=v(f,1,`tool-line-chevron`,null,h,{open:m(r)}),o(S,m(i).tool.glyph),o(ee,m(i).tool.action)}),t(`click`,u,()=>g(m(i).item.id)),c(e,a)};w(s,e=>{m(i).item.type===`commentary`?e(u):m(i).tool&&e(f,1)}),c(e,a)}),k(i),c(e,i)};w(N,e=>{m(u)&&e(P)}),k(A),l(()=>{j=v(A,1,`preamble-contract`,null,j,{"is-final":a.block.final}),E(M,`aria-expanded`,m(u)),ae=v(re,1,`preamble-chevron`,null,ae,{open:m(u)}),se=v(oe,1,`preamble-state`,null,se,{"is-live":!a.block.final}),o(ce,m(te)),o(de,m(O))}),t(`click`,M,()=>b(u,!m(u))),c(i,A),S()}j([`click`]);var De=i(``),Oe=i(` `);function ke(e,n){h(n,!0);var i=r(),a=C(i),s=e=>{var i=r(),a=C(i),s=e=>{var r=De(),i=D(r,!0);k(r),l(()=>{E(r,`aria-label`,`Filter by topic ${n.topic.name}`),o(i,n.topic.name)}),t(`click`,r,e=>{e.stopPropagation(),n.onSelect(n.topic.id)}),c(e,r)},u=e=>{var t=Oe(),r=D(t,!0);k(t),l(()=>o(r,n.topic.name)),c(e,t)};w(a,e=>{n.onSelect?e(s):e(u,-1)}),c(e,i)};w(a,e=>{n.topic&&e(s)}),c(e,i),S()}j([`click`]);var Ae=i(`
This message was deleted.
`),je=i(`(edited)`),G=i(`
`),Me=i(``),Ne=i(``),Pe=i(``),Fe=i(`
`,1),Ie=i(``),Le=i(` `,1),K=i(``),Re=i(` `),ze=i(``),q=i(` `,1),Be=i(` `,1),Ve=i(`
`),He=i(`
`),Ue=i(`
`);function We(i,u){h(u,!0);let f=g(u,`reactionsDisabled`,3,!1),y=g(u,`canDeleteAnyMessage`,3,!1),A=g(u,`deleting`,3,!1),j=g(u,`editScope`,3,``),M=g(u,`topics`,19,()=>[]),re=g(u,`onSelectTopic`,3,()=>{}),N=x(()=>u.editController?.session(j())),ge=x(()=>m(N)?.surface===`timeline`&&m(N).messageID===u.message.id);async function _e(){await a(),m(tt)?.focus()}function ve(){u.editController?.start(j(),u.message,`timeline`)===`cancelled`&&_e()}function ye(){u.editController?.cancel(j(),`timeline`)&&_e()}async function be(){if(!u.editController)return;let e=await u.editController.save(j(),u.message,e=>u.onMessageEdited?.(e));(e===`saved`||e===`cancelled`)&&await _e()}let L=x(()=>u.message.status===`pending`),R=x(()=>u.message.status===`failed`),z=x(()=>!!u.message.deleted_at),B=x(()=>y()||!!u.currentUserID&&(u.message.author?.id||u.message.author_id)===u.currentUserID),V=x(()=>!!u.currentUserID&&(u.message.author?.id||u.message.author_id)===u.currentUserID),H=x(()=>u.message.preamble_block),xe=x(()=>!!u.previousMessage?.preamble_block&&!m(H)),Se=x(()=>!!m(H)&&!!u.nextMessage&&!u.nextMessage?.preamble_block),Ce=x(()=>u.message.thread_state?.reply_count||0),we=x(()=>m(Ce)>0),U=x(()=>he(u.message)),W=x(()=>u.selectedThreadID===u.message.id),Te=x(()=>!m(H)&&!m(L)&&!m(R)&&(!m(z)||m(we)||m(W))),De=x(()=>M().find(e=>e.id===u.message.topic_id));function Oe(e){if(kt||m(wt)){kt=!1,e.preventDefault(),e.stopPropagation();return}m(Te)&&(window.getSelection()?.toString()||e.target?.closest(xt)||u.onOpenThread(u.message))}function We(e){return e.addEventListener(`click`,Oe),{destroy(){e.removeEventListener(`click`,Oe)}}}let J=T(!1),Y=T(!1),X=T(``),Ge=T(!1),Ke=T(!1),Z=T(void 0),qe=T(!1),Je=T(!1),Ye=x(()=>m(qe)||m(Je)||u.selected),Xe=T(!1);function Ze(){let e=m(Z)?.closest(`.messages-scroll`);if(!m(Z)||!e){b(Xe,!1);return}let t=m(Z).getBoundingClientRect().top-e.getBoundingClientRect().top;b(Xe,t<26)}let Qe=T(void 0),$e=T(void 0),et=T(void 0),tt=T(void 0),nt,rt,it=!1,at=x(()=>`toolbar-reaction-picker-${u.message.id}`),ot=x(()=>u.reactionController.pending(u.message.id)),Q=x(()=>f()||!u.currentUserID||m(L)||m(R)||m(ot));function st(e){m(Q)||u.reactionController.toggle(u.message,e)}function ct(){m(Q)||(m(J)||b(Ge,de(m(Qe),130),!0),b(J,!m(J)))}function lt(e){m(Q)||(u.reactionController.toggle(u.message,e),b(J,!1))}function ut(){b(J,!1),m(et)?.focus()}async function dt(){m(Y)||b(Ke,de(m($e),160),!0),b(Y,!m(Y)),m(Y)&&(await a(),mt()[0]?.focus())}function ft(){if(m(Ct)){Pt(m(tt));return}dt()}function pt(e=!0){b(Y,!1),e&&m(tt)?.focus()}function mt(){return[...m($e)?.querySelectorAll(`[role="menuitem"]:not(:disabled)`)??[]].filter(e=>e.getClientRects().length>0)}function ht(e){if(e.key===`Escape`){e.preventDefault(),pt();return}if(e.key===`Tab`){pt(!1);return}let t=mt();if(t.length===0)return;let n=t.indexOf(document.activeElement),r;e.key===`ArrowDown`?r=n<0?0:(n+1)%t.length:e.key===`ArrowUp`?r=n<=0?t.length-1:n-1:e.key===`Home`?r=0:e.key===`End`&&(r=t.length-1),r!==void 0&&(e.preventDefault(),t[r]?.focus())}function gt(e){it||(b(X,e,!0),nt&&window.clearTimeout(nt),nt=window.setTimeout(()=>{b(X,``),nt=void 0},1800))}async function _t(){pt(),await vt()}async function vt(){try{if(!navigator.clipboard)throw Error(`Clipboard unavailable`);return await navigator.clipboard.writeText(u.message.body??``),gt(`copied`),!0}catch{return gt(`failed`),!1}}function yt(){pt(!1),ve()}function bt(){pt(!1),u.onDeleteMessage?.(u.message)}let xt=`a, button, input, textarea, select, .attachment-grid, .media-tile, .markdown img, .gif-player, .markdown-table-scroll, .message-actions, .message-failed`,St=typeof window<`u`?window.matchMedia(`(hover: none), (pointer: coarse)`):null,Ct=T(ne(St?.matches??!1)),wt=T(!1),Tt,Et,Dt=0,Ot=T(void 0),kt=!1,At=x(()=>`message-action-sheet-${u.message.id}`);e(()=>{if(!St)return;let e=()=>{b(Ct,St.matches,!0)};return St.addEventListener(`change`,e),()=>St.removeEventListener(`change`,e)});function jt(){Tt!==void 0&&(window.clearTimeout(Tt),Tt=void 0)}function Mt(){Et?.(),Et=void 0}function Nt(){rt!==void 0&&(window.clearTimeout(rt),rt=void 0)}function Pt(e){Nt(),Dt+=1,b(Ot,e,!0),b(Y,!1),b(J,!1),b(wt,!0)}function Ft(e){if(e.pointerType!==`touch`||!e.isPrimary||e.button!==0||m(H)||m(z)||m(L)||m(R)||m(ge)||e.target?.closest(xt))return;Mt();let t=e.pointerId,n=e.clientX,r=e.clientY;Tt=window.setTimeout(()=>{Tt=void 0,kt=!0,Pt()},450);let i=e=>{e.pointerId===t&&(Math.abs(e.clientX-n)>10||Math.abs(e.clientY-r)>10)&&o()},a=e=>{e.pointerId===t&&o()},o=()=>{jt(),window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,a),window.removeEventListener(`pointercancel`,a),Et===o&&(Et=void 0)};Et=o,window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,a),window.addEventListener(`pointercancel`,a)}function It(e){(m(wt)||Tt!==void 0)&&e.preventDefault()}function Lt(){Nt(),Dt+=1,b(wt,!1),kt=!1}function Rt(e){Lt(),!m(Q)&&u.reactionController.toggle(u.message,e)}function zt(){Lt(),u.onOpenThread(u.message)}function Bt(){Lt(),u.onReply(u.message,u.replyContext)}async function Vt(){Nt();let e=Dt;!await vt()||!m(wt)||e!==Dt||(rt=window.setTimeout(()=>{rt=void 0,!it&&e===Dt&&Lt()},900))}function Ht(){Lt(),ve()}function Ut(){Lt(),u.onDeleteMessage?.(u.message)}e(()=>{if(!m(J)&&!m(Y))return;let e=e=>{let t=e.target;m(J)&&m(Qe)&&!m(Qe).contains(t)&&b(J,!1),m(Y)&&m($e)&&!m($e).contains(t)&&b(Y,!1)};return document.addEventListener(`click`,e),()=>document.removeEventListener(`click`,e)}),e(()=>{m(Q)&&b(J,!1)}),te(()=>{it=!0,nt&&window.clearTimeout(nt),Nt(),Mt()}),e(()=>{if(!(m(Y)||m(J)||m(Ye))||!m(Z))return;let e=m(Z).parentElement;for(;e&&e.style.position!==`absolute`;)e=e.parentElement;if(!e)return;let t=e.style.zIndex;return e.style.zIndex=`10`,()=>{e.style.zIndex=t}});var $=Ue();let Wt;var Gt=D($),Kt=D(Gt,!0);k(Gt);var qt=_(Gt,2),Jt=D(qt),Yt=e=>{Ee(e,{get block(){return m(H)}})},Xt=e=>{var t=Ae();c(e,t)},Zt=e=>{var t=r(),n=C(t),i=e=>{P(e,{get body(){return m(N).draft},get errorMessage(){return m(N).error},get saving(){return m(N).saving},onBody:e=>u.editController?.updateDraft(j(),e),onCancel:ye,onSave:be})};w(n,e=>{m(N)&&e(i)}),c(e,t)},Qt=e=>{var r=Fe(),i=C(r);ke(i,{get topic(){return m(De)},get onSelect(){return re()}});var a=_(i,2);pe(a,{get message(){return u.message},get onJump(){return u.onJumpToQuote}});var o=_(a,2);n(o,()=>le(u.message.body),!0),k(o),d(o,e=>ie?.(e));var p=_(o,2),h=e=>{var t=je();l(e=>E(t,`title`,`Edited ${e??``}`),[()=>ue(u.message.edited_at)]),c(e,t)};w(p,e=>{u.message.edited_at&&e(h)});var g=_(p,2),v=e=>{{let t=x(()=>u.reactionController.reactionsFor(u.message)),n=x(()=>u.reactionController.pending(u.message.id)),r=x(()=>u.reactionController.error(u.message.id)),i=x(()=>f()||!u.currentUserID);F(e,{get messageId(){return u.message.id},get reactions(){return m(t)},get pending(){return m(n)},get error(){return m(r)},get disabled(){return m(i)},onToggle:e=>void u.reactionController.toggle(u.message,e)})}};w(g,e=>{!m(L)&&!m(R)&&e(v)});var y=_(g,2),b=e=>{var t=G();s(t,21,()=>u.message.attachments,e=>e.id,(e,t)=>{{let n=x(()=>me(m(t)));fe(e,{get upload(){return m(t)},get url(){return m(n)},get onOpenImage(){return u.onOpenImage},get onOpenArtifact(){return u.onOpenArtifact}})}}),k(t),c(e,t)};w(y,e=>{u.message.attachments?.length&&e(b)});var S=_(y,2),ee=e=>{var n=Pe(),r=_(D(n),2),i=e=>{var n=Me();t(`click`,n,()=>u.onRetry?.(u.message)),c(e,n)};w(r,e=>{u.onRetry&&e(i)});var a=_(r,2),o=e=>{var n=Ne();t(`click`,n,()=>u.onDiscard?.(u.message)),c(e,n)};w(a,e=>{u.onDiscard&&e(o)}),k(n),c(e,n)};w(S,e=>{m(R)&&e(ee)}),c(e,r)};w(Jt,e=>{m(H)?e(Yt):m(z)?e(Xt,1):m(ge)?e(Zt,2):e(Qt,-1)});var $t=_(Jt,2),en=e=>{var n=K();let r;var i=_(D(n),2),a=e=>{var t=Le(),n=C(t),r=D(n,!0);k(n);var i=_(n,2),a=e=>{var t=Ie(),n=D(t,!0);k(t),l(()=>{E(t,`datetime`,u.message.thread_state?.last_reply_at),o(n,m(U))}),c(e,t)};w(i,e=>{m(U)&&e(a)}),l(e=>o(r,e),[()=>se(u.message)]),c(e,t)};w(i,e=>{(m(we)||m(W))&&e(a)}),k(n),l((e,t)=>{r=v(n,1,`thread-hint tooltip`,null,r,{"has-replies":m(we),"is-open":m(W)}),E(n,`data-tooltip`,e),E(n,`aria-label`,t)},[()=>ae(u.message,u.selectedThreadID),()=>ae(u.message,u.selectedThreadID)]),t(`click`,n,()=>u.onOpenThread(u.message)),c(e,n)};w($t,e=>{m(Te)&&e(en)}),k(qt);var tn=_(qt,2),nn=e=>{var n=He(),r=D(n),i=e=>{var t=Re();let n;var r=D(t,!0);k(t),l(()=>{n=v(t,1,`message-copy-status`,null,n,{"is-error":m(X)===`failed`}),o(r,m(X)===`copied`?`Copied`:`Couldn't copy`)}),c(e,t)};w(r,e=>{m(X)&&e(i)});var a=_(r,2);s(a,17,()=>ce,ee,(e,n)=>{var r=ze(),i=D(r,!0);k(r),l(()=>{E(r,`aria-label`,`React with ${m(n)}`),E(r,`data-tooltip`,`React with ${m(n)}`),r.disabled=m(Q),o(i,m(n))}),t(`click`,r,()=>st(m(n))),c(e,r)});var d=_(a,2),f=D(d);O(f,e=>b(et,e),()=>m(et));var p=_(f,2),h=e=>{{let t=x(()=>m(Ge)?`above-right`:`below`);I(e,{get id(){return m(at)},get placement(){return m(t)},get disabled(){return m(Q)},onPick:lt,onEscape:ut})}};w(p,e=>{m(J)&&e(h)}),k(d),O(d,e=>b(Qe,e),()=>m(Qe));var g=_(d,4),y=_(g,2),S=_(y,4),T=D(S);let te;O(T,e=>b(tt,e),()=>m(tt));var ne=_(T,2),M=e=>{var n=Ve();let r;var i=D(n),a=_(i,2),o=e=>{var n=q(),r=_(C(n),2);t(`click`,r,yt),c(e,n)};w(a,e=>{m(V)&&u.editController&&j()&&!m(ge)&&e(o)});var s=_(a,2),d=e=>{var n=Be(),r=_(C(n),2);l(()=>r.disabled=A()),t(`click`,r,bt),c(e,n)};w(s,e=>{m(B)&&u.onDeleteMessage&&e(d)}),k(n),l(()=>r=v(n,1,`message-menu`,null,r,{above:m(Ke)})),t(`keydown`,n,ht),t(`click`,i,_t),c(e,n)};w(ne,e=>{m(Y)&&e(M)}),k(S),O(S,e=>b($e,e),()=>m($e)),k(n),l(e=>{E(f,`aria-controls`,m(at)),E(f,`aria-expanded`,m(J)),f.disabled=m(Q),E(g,`data-tooltip`,e),g.disabled=m(L)||m(R),y.disabled=m(L)||m(R),te=v(T,1,`message-actions-trigger`,null,te,{tooltip:!m(Ct),"tooltip-align-end":!m(Ct)}),E(T,`data-tooltip`,m(Ct)?void 0:`More actions`),E(T,`aria-haspopup`,m(Ct)?`dialog`:`menu`),E(T,`aria-controls`,m(Ct)?m(At):void 0),E(T,`aria-expanded`,m(Ct)?m(wt):m(Y)),T.disabled=m(L)||m(R)},[()=>ae(u.message,u.selectedThreadID)]),t(`click`,f,ct),t(`click`,g,()=>u.onOpenThread(u.message)),t(`click`,y,()=>u.onReply(u.message,u.replyContext)),t(`click`,T,ft),c(e,n)};w(tn,e=>{!m(H)&&!m(z)&&e(nn)});var rn=_(tn,2),an=e=>{{let t=x(()=>!m(Q)),n=x(()=>!m(L)&&!m(R)),r=x(()=>m(V)&&!!u.editController&&!!j()&&!m(ge)),i=x(()=>m(B)&&!!u.onDeleteMessage);oe(e,{get id(){return m(At)},get canReact(){return m(t)},get canReply(){return m(n)},get canOpenThread(){return m(Te)},get canEdit(){return m(r)},get canDelete(){return m(i)},get deleting(){return A()},get copyStatus(){return m(X)},onReact:Rt,onOpenThread:zt,onReply:Bt,onCopy:Vt,onEdit:Ht,onDelete:Ut,onClose:Lt,get returnFocus(){return m(Ot)}})}};w(rn,e=>{m(wt)&&e(an)}),k($),O($,e=>b(Z,e),()=>m(Z)),d($,e=>We?.(e)),l((e,t)=>{Wt=v($,1,`message-row`,null,Wt,e),E($,`data-message-id`,u.message.id),o(Kt,t)},[()=>({selected:u.selected,"is-pending":m(L),"is-failed":m(R),"is-deleted":m(z),"is-preamble":!!m(H),"is-preamble-collapsed":m(H)?.final===!0,"is-preamble-live":m(H)?.final===!1,"before-final-message":m(Se),"after-preamble":m(xe),"can-open-thread":m(Te),editing:m(ge),"menu-open":m(Y)||m(J),"actions-flip":m(Xe)}),()=>u.index===0?``:ue(u.message.created_at)]),t(`pointerdown`,$,Ft),t(`contextmenu`,$,It),p(`mouseenter`,$,()=>{!m(qe)&&!m(Je)&&Ze(),b(qe,!0)}),p(`mouseleave`,$,()=>b(qe,!1)),t(`focusin`,$,()=>{!m(qe)&&!m(Je)&&Ze(),b(Je,!0)}),t(`focusout`,$,e=>{m(Z)?.contains(e.relatedTarget)||b(Je,!1)}),c(i,$),S()}j([`pointerdown`,`contextmenu`,`focusin`,`focusout`,`click`,`keydown`]);var J=i(` deleted bot`,1),Y=i(`bot`),X=i(` `,1),Ge=i(` `),Ke=i(`
`);function Z(e,n){h(n,!0);let r=g(n,`reactionsDisabled`,3,!1),i=g(n,`canDeleteAnyMessage`,3,!1),a=g(n,`deletingMessageIDs`,19,()=>new Set),u=g(n,`editScope`,3,``),d=g(n,`topics`,19,()=>[]),f=g(n,`onSelectTopic`,3,()=>{}),p=x(()=>n.group.messages[0]?.author),b=x(()=>m(p)?.kind===`bot`),ee=x(()=>!m(b)&&!!n.currentUserID&&n.group.authorID===n.currentUserID);var T=Ke();let te;var ne=D(T);{let e=x(()=>n.group.authorDeleted?`avatar`:`avatar avatar-button`),t=x(()=>n.group.authorDeleted?void 0:`View profile for ${n.group.authorName}`);N(ne,{get class(){return m(e)},get id(){return n.group.authorID},get name(){return n.group.authorName},get src(){return n.group.authorAvatarURL},size:38,get buttonLabel(){return m(t)},onclick:()=>n.onOpenProfile(n.group.messages[0]?.author)})}var E=_(ne,2),O=D(E),A=D(O),j=e=>{var t=J(),r=C(t),i=D(r,!0);k(r),y(2),l(()=>o(i,n.group.authorName)),c(e,t)},M=e=>{var r=X(),i=C(r),a=D(i,!0);k(i);var s=_(i,2),u=e=>{var t=Y();c(e,t)};w(s,e=>{m(b)&&e(u)}),l(()=>o(a,n.group.authorName)),t(`click`,i,()=>n.onOpenProfile(n.group.messages[0]?.author)),c(e,r)};w(A,e=>{n.group.authorDeleted?e(j):e(M,-1)});var ie=_(A,2),ae=e=>{var t=Ge(),r=D(t,!0);k(t),l(e=>o(r,e),[()=>re(n.group.authorHandle)]),c(e,t)};w(ie,e=>{n.group.authorHandle&&e(ae)});var oe=_(ie,2),se=D(oe,!0);k(oe),k(O);var ce=_(O,2);s(ce,19,()=>n.group.messages,e=>e.id,(e,t,o)=>{{let s=x(()=>n.selectedThreadID===m(t).id),c=x(()=>a().has(m(t).id));We(e,{get message(){return m(t)},get index(){return m(o)},get previousMessage(){return n.group.messages[m(o)-1]},get nextMessage(){return n.group.messages[m(o)+1]},get selected(){return m(s)},get replyContext(){return n.replyContext},get selectedThreadID(){return n.selectedThreadID},get currentUserID(){return n.currentUserID},get reactionController(){return n.reactionController},get reactionsDisabled(){return r()},get canDeleteAnyMessage(){return i()},get deleting(){return m(c)},get editController(){return n.editController},get editScope(){return u()},get onMessageEdited(){return n.onMessageEdited},get onReply(){return n.onReply},get onOpenThread(){return n.onOpenThread},get onJumpToQuote(){return n.onJumpToQuote},get onOpenImage(){return n.onOpenImage},get onOpenArtifact(){return n.onOpenArtifact},get onRetry(){return n.onRetry},get onDiscard(){return n.onDiscard},get onDeleteMessage(){return n.onDeleteMessage},get topics(){return d()},get onSelectTopic(){return f()}})}}),k(E),k(T),l(e=>{te=v(T,1,`message-group`,null,te,{"is-agent":m(b),"is-self":m(ee)}),o(se,e)},[()=>ue(n.group.timestamp)]),c(e,T),S()}j([`click`]);var qe=i(`
Send a message in Markdown — code fences, lists, links all work. Threads open from any message.
`),Je=i(`
`),Ye=i(`
`),Xe=i(`
New
`),Ze=i(`
`),Qe=i(`
`),$e=i(`
`);function et(n,i){h(i,!0);let s=g(i,`loading`,3,!1),d=g(i,`unreadCount`,3,0),p=g(i,`unreadBoundarySeq`,3,0),ee=g(i,`unreadBoundaryLoaded`,3,!1),ne=g(i,`unreadSince`,3,``),A=g(i,`hasOlder`,3,!1),j=g(i,`hasNewer`,3,!1),re=g(i,`loadingOlder`,3,!1),ie=g(i,`loadingNewer`,3,!1),ae=g(i,`prepending`,3,!1),oe=g(i,`reactionsDisabled`,3,!1),se=g(i,`canDeleteAnyMessage`,3,!1),ce=g(i,`deletingMessageIDs`,19,()=>new Set),le=g(i,`editScope`,3,``),ue=g(i,`topics`,19,()=>[]),de=g(i,`onSelectTopic`,3,()=>{}),N=1.5,P=T(void 0),F=T(void 0),fe=T(void 0),I=T(0),pe=T(0),me=x(()=>i.selectedDirect?`dm`:`channel`),he=T(``),ye=T(-1),be=T(0),R=x(()=>m(he)===i.viewKey&&m(ye)===p()&&d()<=m(be)?0:d()),z=T(``),B=T(0),V=T(!1),H,xe=x(()=>m(R)>0?m(R):m(B));function Se(){H&&=(window.clearTimeout(H),void 0)}e(()=>{if(m(z)&&m(z)!==i.viewKey){Se(),b(B,0),b(z,``),b(V,!1);return}if(m(R)>0){Se(),b(z,i.viewKey,!0),b(B,m(R),!0),b(V,!1);return}m(B)>0&&!m(V)&&(b(V,!0),H=window.setTimeout(()=>{H=void 0,!(m(R)>0)&&(b(B,0),b(z,``),b(V,!1))},180))}),te(Se);let Ce=x(()=>{let e=p()+1;if(m(xe)<=0||e<=0)return!1;let t=1/0,n=0;for(let e of i.messages){if(e.parent_message_id)continue;let r=e.channel_seq||0;r<=0||(t=Math.min(t,r),n=Math.max(n,r))}return t<=e&&n>=e}),we=x(()=>ee()&&m(Ce)),U=x(()=>{let e=[],t=!1,n=e=>!m(we)||e.parent_message_id||e.author?.id===i.currentUserID||e.author_id===i.currentUserID?!1:m(xe)>0&&(e.channel_seq||0)>p();for(let r of ge(i.messages)){let i=-1;if(!t){for(let e=0;ei.messages.map(e=>{let t=e.preamble_block;if(!t)return``;let n=t.items.map(e=>e.type===`commentary`?`${e.id}\u0000${e.body}`:`${e.id}\u0000${e.name}\u0000${e.detail||``}\u0000${e.full}`).join(``);return`${e.id}\u0000${t.final?`final`:`live`}\u0000${n}`}).filter(Boolean).join(``)),Ee=T(!0),De=T(!1),Oe,ke=0,Ae=``,je,G=!1,Me=!1,Ne=!1,Pe=!1,Fe=0,Ie=0;function Le(e=!0){return e&&(G=!1,b(De,!0)),Ie+=1,Ie}function K(e,t){return Q(e)&&t===Ie}function Re(e=2){let t=++Fe;Me=!0;let n=e=>{requestAnimationFrame(()=>{if(t===Fe){if(e<=1){Me=!1;return}n(e-1)}})};n(e)}function ze(){if(!m(P))return 0;let e=m(P).getScrollSize()+m(I);return Math.max(0,e-m(P).getScrollOffset()-m(P).getViewportSize())}function q(){return!m(P)||ze()<=N}function Be(e=N){return!m(P)||ze()<=e}function Ve(){if(!m(P))return{atBottom:!0,nearOlder:!1,nearNewer:!1};let e=ze();return{atBottom:q(),nearOlder:m(P).getScrollOffset()-m(I)<=160,nearNewer:e<=260}}function He(){i.onHistorySettled?.(Ve())}function Ue(){j()||m(R)>0||i.onReachedBottom?.()}e(()=>{if(ie()){Pe=!0;return}Pe&&(Pe=!1,Ne=!1)});async function We(){!m(P)||m(U).length===0||(W=!j(),await J(Le()))}async function J(e=Le()){if(!m(P)||m(U).length===0)return;let t=i.viewKey;document.activeElement===m(F)&&m(F).blur();let n=-1;for(let r=0;r<6;r+=1){if(!m(P)||!K(t,e)||(W=!j(),Re(2),m(P).scrollToIndex(m(U).length-1,{align:`end`}),await a(),await rt(),!m(P)||!K(t,e)))return;let r=m(P).getScrollSize(),i=n>=0&&Math.abs(r-n)<=N;if(n=r,i&&q())break}b(De,!0),W=!j(),q()&&(b(Ee,!0),Ue()),He()}e(()=>{if(!m(F))return;let e=m(F),t=e=>{e.deltaY>0&&!G&&!Me&&j()&&q()&&(Ne=!0,i.onLoadNewer?.(`wheel`))};return e.addEventListener(`wheel`,t,{passive:!0}),()=>{e.removeEventListener(`wheel`,t)}});function Y(e){return m(U).findIndex(t=>t.kind===`group`&&t.group.messages.some(t=>t.id===e))}let X=x(()=>{if(!A()||s()||!ae())return 0;let e=Math.max(m(pe),480);return Math.max(4,Math.ceil(e/52))});e(()=>{if(!m(F))return;let e=()=>{m(F)&&b(pe,m(F).clientHeight,!0)};e();let t=new ResizeObserver(e);return t.observe(m(F)),()=>t.disconnect()});let Ge=0;e(()=>{if(!m(fe)||!m(F)){b(I,0),Ge=0;return}let e=m(fe),t=()=>{let t=e.offsetHeight,n=Ge;if(b(I,t,!0),Ge=t,n>0&&t!==n){let e=t-n;m(P)&&m(P).getScrollOffset()>0&&m(P).scrollBy(e)}};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect(),b(I,0),Ge=0}});function Ke(){return m(U).findIndex(e=>e.kind===`divider`)}function et(){if(!m(we)||m(xe)<=0)return``;for(let e of i.messages)if(!e.parent_message_id&&e.author?.id!==i.currentUserID&&e.author_id!==i.currentUserID&&(e.channel_seq||0)>p())return e.id;return``}function tt(){let e=0;for(let t of i.messages)e=Math.max(e,t.channel_seq||0);return e}function nt(){b(he,i.viewKey,!0),b(ye,p()),b(be,d()),i.onMarkRead?.(tt())}function rt(){return new Promise(e=>requestAnimationFrame(()=>e()))}function it(e){if(!m(F)||!m(P))return!1;let t=m(F).querySelector(e);if(!t)return!1;let n=t.getBoundingClientRect().top-m(F).getBoundingClientRect().top;return Math.abs(n)<=N||(m(P).scrollBy(n),!1)}function at(){if(!m(F))return null;let e=m(F).getBoundingClientRect(),t=new Map(i.messages.map((e,t)=>[e.id,t])),n=1/0,r=-1;for(let i of m(F).querySelectorAll(`[data-message-id]`)){let a=i.getBoundingClientRect();if(a.bottome.bottom)continue;let o=t.get(i.dataset.messageId||``);o!==void 0&&(n=Math.min(n,o),r=Math.max(r,o))}return r<0?null:{first:n,last:r}}function ot(e){if(!m(F)||!m(P))return!1;let t=i.messages.findIndex(t=>t.id===e),n=at();return t<0||!n?!1:n.first>t?(m(P).scrollBy(-Math.max(80,m(F).clientHeight*.85)),!0):n.lastY(e),`[data-message-id="${CSS.escape(e)}"]`,e),!0}function lt(e=!0){if(!m(P)||Ke()<0)return!1;W=!1;let t=i.viewKey,n=Le();return st(t,n,()=>Ke(),`[data-unread-divider='true']`,et()).then(r=>{e&&!r&&K(t,n)&&i.onJumpToUnread?.()}),!0}function ut(){if(!(m(we)&<(!1))&&i.onJumpToUnread){i.onJumpToUnread();return}}function dt(){if(!m(P))return null;if(q())return{atBottom:!0};let e=m(P).getScrollOffset(),t=m(P).findItemIndex(e),n=Math.max(0,e-m(I));for(let e=Math.max(0,t);e(i.onListRef({scrollToBottom:We,scrollToMessage:ct,scrollToDivider:lt,captureState:dt,isAtBottom:()=>q(),isNearBottom:e=>Be(e)}),()=>i.onListRef(null))),e(()=>{let e=i.viewKey,t=m(U).length,n=m(Te);if(e!==Oe){Oe=e,ke=t,Ae=n,je=i.restoreState,W=!0,b(Ee,!0),b(De,!1),Ne=!1,G=!0,pt(e,i.restoreState,!0);return}let r=i.restoreState;if(r&&r!==je){if(je=r,r.atBottom){ke=t,Ae=n,G=!0,pt(e,r,!0);return}if(r.anchorMessageID){ke=t,Ae=n,G=!0,pt(e,r,!1);return}}let a=t!==ke||n!==Ae;a&&W&&!j()&&!G?J():a&&!G&&ft(e),ke=t,Ae=n});async function ft(e){await a(),await rt(),e===Oe&&He()}async function pt(e,t,n){let r=Le(!1),i=!1;if(await a(),await new Promise(e=>requestAnimationFrame(e)),K(e,r)){if(t&&!t.atBottom&&t.anchorMessageID){let i=await mt(e,r,t.anchorMessageID,t.anchorPixelOffset??0);if(!K(e,r))return;!i&&n?await J(r):W=!1}else m(U).findIndex(e=>e.kind===`divider`)>=0&&m(P)?(i=!0,await st(e,r,()=>Ke(),`[data-unread-divider='true']`,et()),W=!1):await J(r);await new Promise(e=>requestAnimationFrame(e)),K(e,r)&&(G=!1,b(De,!0),b(Ee,q(),!0),W=m(Ee)&&!j(),i||(m(Ee)&&Ue(),m(P)&&ht(m(P).getScrollOffset())),He())}}async function mt(e,t,n,r){if(!m(P))return!1;let i=Y(n);if(i<0)return!1;for(let n=0;n<8;n++){if(!m(P)||!K(e,t))return!1;let n=m(I)+m(P).getItemOffset(i)+r;if(Re(),m(P).scrollTo(n),await new Promise(e=>requestAnimationFrame(e)),!K(e,t))return!1;let a=m(I)+m(P).getItemOffset(i)+r,o=m(P).getScrollOffset();if(Math.abs(a-n)<1&&Math.abs(o-n)<1)break}return!0}function ht(e){if(!m(P)||G&&!m(De))return;let t=ze(),n=q(),r=n||t<=260;W=n&&!j(),b(Ee,n,!0),j()||(Ne=!1),!n&&A()&&e-m(I)<=160&&i.onLoadOlder?.(),!Me&&j()&&r&&!Ne&&(Ne=!0,i.onLoadNewer?.(`scroll`)),n&&!Me&&Ue()}var gt=$e();let _t;var vt=D(gt),yt=e=>{var t=qe(),n=D(t),r=D(n),a=e=>{var t=u(`@`);c(e,t)},s=e=>{var t=u(`#`);c(e,t)};w(r,e=>{i.selectedDirect?e(a):e(s,-1)}),k(n);var d=_(n,2),f=D(d),p=e=>{var t=u();l(e=>o(t,`This is the start of your conversation with ${e??``}.`),[()=>M(i.selectedDirect,i.currentUserID)]),c(e,t)},m=e=>{var t=u();l(e=>o(t,`Welcome to #${e??``}!`),[()=>_e(i.selectedChannel)]),c(e,t)},h=e=>{var t=u(`Pick a channel to get started.`);c(e,t)};w(f,e=>{i.selectedDirect?e(p):i.selectedChannel?e(m,1):e(h,-1)}),k(d),y(2),k(t),c(e,t)},bt=e=>{var t=Ze(),n=_(D(t),2),a=e=>{var t=Je();L(D(t),{direction:`older`,get rows(){return m(X)}}),k(t),O(t,e=>b(fe,e),()=>m(fe)),l(()=>E(t,`aria-hidden`,re()?`false`:`true`)),c(e,t)};w(n,e=>{m(X)>0&&e(a)});var s=_(n,2);O(ve(s,{get data(){return m(U)},getKey:e=>e.id,get scrollRef(){return m(F)},get shift(){return ae()},get startMargin(){return m(I)},onscroll:ht,children:(e,t=f,n=f)=>{var a=r(),s=C(a),u=e=>{L(e,{get direction(){return t().direction},get rows(){return t().rows}})},d=e=>{var n=Ye(),r=D(n),i=D(r,!0);k(r),k(n),l(()=>o(i,t().label)),c(e,n)},p=e=>{var t=Xe();let n;l(()=>n=v(t,1,`new-messages-divider`,null,n,{"is-clearing":m(V)})),c(e,t)},h=e=>{Z(e,{get group(){return t().group},get currentUserID(){return i.currentUserID},get reactionController(){return i.reactionController},get reactionsDisabled(){return oe()},get selectedThreadID(){return i.selectedThreadID},get replyContext(){return m(me)},get canDeleteAnyMessage(){return se()},get deletingMessageIDs(){return ce()},get editController(){return i.editController},get editScope(){return le()},get onMessageEdited(){return i.onMessageEdited},get onOpenProfile(){return i.onOpenProfile},get onReply(){return i.onReply},get onOpenThread(){return i.onOpenThread},get onJumpToQuote(){return i.onJumpToQuote},get onOpenImage(){return i.onOpenImage},get onOpenArtifact(){return i.onOpenArtifact},get onRetry(){return i.onRetry},get onDiscard(){return i.onDiscard},get onDeleteMessage(){return i.onDeleteMessage},get topics(){return ue()},get onSelectTopic(){return de()}})};w(s,e=>{t().kind===`loader`?e(u):t().kind===`day`?e(d,1):t().kind===`divider`?e(p,2):t().kind===`group`&&e(h,3)}),c(e,a)},$$slots:{default:!0}}),e=>b(P,e,!0),()=>m(P)),k(t),O(t,e=>b(F,e),()=>m(F)),c(e,t)};w(vt,e=>{!s()&&i.messages.length===0?e(yt):i.messages.length>0&&e(bt,1)});var xt=_(vt,2),St=e=>{var n=Qe();let r;var i=D(n),a=D(i),s=D(a);k(a),k(i);var u=_(i,2);k(n),l(e=>{r=v(n,1,`unread-bar`,null,r,{"is-clearing":m(V)}),E(n,`aria-hidden`,m(V)?`true`:void 0),i.disabled=m(V),E(i,`aria-label`,e),o(s,`${(m(B)>99?`99+`:m(B))??``} new message${m(B)===1?``:`s`}${ne()?` since ${ne()}`:``}`),u.disabled=m(V)},[()=>`Jump to ${m(B)>0?m(B):``} new message${m(B)===1?``:`s`}`.replace(/ +/g,` `)]),t(`click`,i,ut),t(`click`,u,nt),c(e,n)};w(xt,e=>{!s()&&i.messages.length>0&&m(B)>0&&e(St)}),k(gt),l(()=>_t=v(gt,1,`messages`,null,_t,{"is-revealing":s()||!m(De)&&i.messages.length>0})),t(`pointerdown`,gt,function(...e){i.onActivateMessageComposer?.apply(this,e)}),t(`pointerup`,gt,function(...e){i.onInlineImagePointerUp?.apply(this,e)}),c(n,gt),S()}j([`pointerdown`,`pointerup`,`click`]);export{et as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/BLSaiFbc.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/BLSaiFbc.js new file mode 100644 index 00000000..f9ac651c --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/BLSaiFbc.js @@ -0,0 +1,54 @@ +import{t as e}from"./HclGiUj8.js";var t=typeof process==`object`&&process+``==`[object process]`&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!==`browser`),n=[1/0,1/0,-1/0,-1/0],r=new Float32Array(n),i=[.001,0,0,.001,0,0],a=`http://www.w3.org/2000/svg`,o={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},s={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},c=`pdfjs_internal_id_`,l=`pdfjs_internal_editor_`,u={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,POPUP:16,SIGNATURE:101,COMMENT:102},d={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,INK_COLOR_AND_OPACITY:24,HIGHLIGHT_COLOR:31,HIGHLIGHT_THICKNESS:32,HIGHLIGHT_FREE:33,HIGHLIGHT_SHOW_ALL:34,DRAW_STEP:41},f={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},p={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},m={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},h={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26,RICHMEDIA:27},g={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},_={ERRORS:0,WARNINGS:1,INFOS:5},v={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93,rawFillPath:94},y={moveTo:0,lineTo:1,curveTo:2,quadraticCurveTo:3,closePath:4},b={NEED_PASSWORD:1,INCORRECT_PASSWORD:2},x=_.WARNINGS;function S(e){Number.isInteger(e)&&(x=e)}function C(){return x}function w(e){x>=_.INFOS&&console.info(`Info: ${e}`)}function T(e){x>=_.WARNINGS&&console.warn(`Warning: ${e}`)}function E(e){throw Error(e)}function D(e,t){e||E(t)}function O(e){switch(e?.protocol){case`http:`:case`https:`:case`ftp:`:case`mailto:`:case`tel:`:return!0;default:return!1}}function k(e,t=null,n=null){if(!e)return null;if(n&&typeof e==`string`&&(n.addDefaultProtocol&&e.startsWith(`www.`)&&e.match(/\./g)?.length>=2&&(e=`http://${e}`),n.tryConvertEncoding))try{e=se(e)}catch{}let r=t?URL.parse(e,t):URL.parse(e);return O(r)?r:null}function A(e,t,n=!1){let r=URL.parse(e);return r?(r.hash=t,r.href):n&&k(e,`http://example.com`)?e.split(`#`,1)[0]+`${t?`#${t}`:``}`:``}function j(e){return e.substring(e.lastIndexOf(`/`)+1)}function M(e,t,n,r=!1){return Object.defineProperty(e,t,{value:n,enumerable:!r,configurable:!0,writable:!1}),n}var N=function(){function e(e,t){this.message=e,this.name=t}return e.prototype=Error(),e.constructor=e,e}(),ee=class extends N{constructor(e,t){super(e,`PasswordException`),this.code=t}},te=class extends N{constructor(e,t){super(e,`UnknownErrorException`),this.details=t}},ne=class extends N{constructor(e){super(e,`InvalidPDFException`)}},re=class extends N{constructor(e,t,n){super(e,`ResponseException`),this.status=t,this.missing=n}},ie=class extends N{constructor(e){super(e,`FormatError`)}},P=class extends N{constructor(e){super(e,`AbortException`)}};function ae(e){(typeof e!=`object`||e?.length===void 0)&&E(`Invalid argument for bytesToString`);let t=e.length,n=8192;if(t`u`)return M(this,`isAlphaColorInputSupported`,!1);let e=document.createElement(`input`);return e.type=`color`,e.setAttribute(`alpha`,``),e.value=`#ff000080`,M(this,`isAlphaColorInputSupported`,e.value!==`#ff0000`)}static get isBackdropFilterSupported(){return M(this,`isBackdropFilterSupported`,typeof CSS<`u`&&CSS.supports(`backdrop-filter`,`blur(1px)`))}},I=class{static get hexNums(){return M(this,`hexNums`,Array.from(Array(256).keys(),e=>e.toString(16).padStart(2,`0`)))}static makeHexColor(e,t,n){return`#${this.hexNums[e]}${this.hexNums[t]}${this.hexNums[n]}`}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static multiplyByDOMMatrix(e,t){return[e[0]*t.a+e[2]*t.b,e[1]*t.a+e[3]*t.b,e[0]*t.c+e[2]*t.d,e[1]*t.c+e[3]*t.d,e[0]*t.e+e[2]*t.f+e[4],e[1]*t.e+e[3]*t.f+e[5]]}static applyTransform(e,t,n=0){let r=e[n],i=e[n+1];e[n]=r*t[0]+i*t[2]+t[4],e[n+1]=r*t[1]+i*t[3]+t[5]}static applyTransformToBezier(e,t,n=0){let r=t[0],i=t[1],a=t[2],o=t[3],s=t[4],c=t[5];for(let t=0;t<6;t+=2){let l=e[n+t],u=e[n+t+1];e[n+t]=l*r+u*a+s,e[n+t+1]=l*i+u*o+c}}static applyInverseTransform(e,t){let n=e[0],r=e[1],i=t[0]*t[3]-t[1]*t[2];e[0]=(n*t[3]-r*t[2]+t[2]*t[5]-t[4]*t[3])/i,e[1]=(-n*t[1]+r*t[0]+t[4]*t[1]-t[5]*t[0])/i}static axialAlignedBoundingBox(e,t,n){let r=t[0],i=t[1],a=t[2],o=t[3],s=t[4],c=t[5],l=e[0],u=e[1],d=e[2],f=e[3],p=r*l+s,m=p,h=r*d+s,g=h,_=o*u+c,v=_,y=o*f+c,b=y;if(i!==0||a!==0){let e=i*l,t=i*d,n=a*u,r=a*f;p+=n,g+=n,h+=r,m+=r,_+=e,b+=e,y+=t,v+=t}n[0]=Math.min(n[0],p,h,m,g),n[1]=Math.min(n[1],_,y,v,b),n[2]=Math.max(n[2],p,h,m,g),n[3]=Math.max(n[3],_,y,v,b)}static inverseTransform(e){let t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static singularValueDecompose2dScale(e,t){let n=e[0],r=e[1],i=e[2],a=e[3],o=n**2+r**2,s=n*i+r*a,c=i**2+a**2,l=(o+c)/2,u=Math.sqrt(l**2-(o*c-s**2));t[0]=Math.sqrt(l+u||1),t[1]=Math.sqrt(l-u||1)}static normalizeRect(e){let t=e.slice(0);return e[0]>e[2]&&(t[0]=e[2],t[2]=e[0]),e[1]>e[3]&&(t[1]=e[3],t[3]=e[1]),t}static intersect(e,t){let n=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),r=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(n>r)return null;let i=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),a=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return i>a?null:[n,i,r,a]}static pointBoundingBox(e,t,n){n[0]=Math.min(n[0],e),n[1]=Math.min(n[1],t),n[2]=Math.max(n[2],e),n[3]=Math.max(n[3],t)}static rectBoundingBox(e,t,n,r,i){i[0]=Math.min(i[0],e,n),i[1]=Math.min(i[1],t,r),i[2]=Math.max(i[2],e,n),i[3]=Math.max(i[3],t,r)}static#e(e,t,n,r,i,a,o,s,c,l){if(c<=0||c>=1)return;let u=1-c,d=c*c,f=d*c,p=u*(u*(u*e+3*c*t)+3*d*n)+f*r,m=u*(u*(u*i+3*c*a)+3*d*o)+f*s;l[0]=Math.min(l[0],p),l[1]=Math.min(l[1],m),l[2]=Math.max(l[2],p),l[3]=Math.max(l[3],m)}static#t(e,t,n,r,i,a,o,s,c,l,u,d){if(Math.abs(c)<1e-12){Math.abs(l)>=1e-12&&this.#e(e,t,n,r,i,a,o,s,-u/l,d);return}let f=l**2-4*u*c;if(f<0)return;let p=Math.sqrt(f),m=2*c;this.#e(e,t,n,r,i,a,o,s,(-l+p)/m,d),this.#e(e,t,n,r,i,a,o,s,(-l-p)/m,d)}static bezierBoundingBox(e,t,n,r,i,a,o,s,c){c[0]=Math.min(c[0],e,o),c[1]=Math.min(c[1],t,s),c[2]=Math.max(c[2],e,o),c[3]=Math.max(c[3],t,s),this.#t(e,n,i,o,t,r,a,s,3*(-e+3*(n-i)+o),6*(e-2*n+i),3*(n-e),c),this.#t(e,n,i,o,t,r,a,s,3*(-t+3*(r-a)+s),6*(t-2*r+a),3*(r-t),c)}};function se(e){return decodeURIComponent(escape(e))}var ce=null,le=null;function ue(e){return ce||(ce=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,le=new Map([[`ſt`,`ſt`]])),e.replaceAll(ce,(e,t,n)=>t?t.normalize(`NFKC`):le.get(n))}function de(){if(typeof crypto.randomUUID==`function`)return crypto.randomUUID();let e=new Uint8Array(32);return crypto.getRandomValues(e),ae(e)}function fe(e,t,n){if(!Array.isArray(n)||n.length<2)return!1;let[r,i,...a]=n;if(!e(r)&&!Number.isInteger(r)||!t(i))return!1;let o=a.length,s=!0;switch(i.name){case`XYZ`:if(o<2||o>3)return!1;break;case`Fit`:case`FitB`:return o===0;case`FitH`:case`FitBH`:case`FitV`:case`FitBV`:if(o>1)return!1;break;case`FitR`:if(o!==4)return!1;s=!1;break;default:return!1}for(let e of a)if(!(typeof e==`number`||s&&e===null))return!1;return!0}var pe=()=>[],me=()=>new Map,he=()=>Object.create(null),ge=()=>new Set;typeof Iterator.prototype.join!=`function`&&(Iterator.prototype.join=function(e){return[...this].join(e)});function L(e,t,n){return Math.min(Math.max(e,t),n)}var _e=class e{constructor({viewBox:e,userUnit:t,scale:n,rotation:r,offsetX:i=0,offsetY:a=0,dontFlip:o=!1}){this.viewBox=e,this.userUnit=t,this.scale=n,this.rotation=r,this.offsetX=i,this.offsetY=a,n*=t;let s=(e[2]+e[0])/2,c=(e[3]+e[1])/2,l,u,d,f;switch(r%=360,r<0&&(r+=360),r){case 180:l=-1,u=0,d=0,f=1;break;case 90:l=0,u=1,d=1,f=0;break;case 270:l=0,u=-1,d=-1,f=0;break;case 0:l=1,u=0,d=0,f=-1;break;default:throw Error(`PageViewport: Invalid rotation, must be a multiple of 90 degrees.`)}o&&(d=-d,f=-f);let p,m,h,g;l===0?(p=Math.abs(c-e[1])*n+i,m=Math.abs(s-e[0])*n+a,h=(e[3]-e[1])*n,g=(e[2]-e[0])*n):(p=Math.abs(s-e[0])*n+i,m=Math.abs(c-e[1])*n+a,h=(e[2]-e[0])*n,g=(e[3]-e[1])*n),this.transform=[l*n,u*n,d*n,f*n,p-l*n*s-d*n*c,m-u*n*s-f*n*c],this.width=h,this.height=g}get rawDims(){let e=this.viewBox;return M(this,`rawDims`,{pageWidth:e[2]-e[0],pageHeight:e[3]-e[1],pageX:e[0],pageY:e[1]})}clone({scale:t=this.scale,rotation:n=this.rotation,offsetX:r=this.offsetX,offsetY:i=this.offsetY,dontFlip:a=!1}={}){return new e({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:t,rotation:n,offsetX:r,offsetY:i,dontFlip:a})}convertToViewportPoint(e,t){let n=[e,t];return I.applyTransform(n,this.transform),n}convertToPdfPoint(e,t){let n=[e,t];return I.applyInverseTransform(n,this.transform),n}},ve=class e{static textContent(t){let n=[],r={items:n,styles:Object.create(null)};function i(t){if(!t)return;let r=null,a=t.name;if(a===`#text`)r=t.value;else if(e.shouldBuildText(a))t?.attributes?.textContent?r=t.attributes.textContent:t.value&&(r=t.value);else return;if(r!==null&&n.push({str:r}),t.children)for(let e of t.children)i(e)}return i(t),r}static shouldBuildText(e){return e!==`textarea`&&e!==`input`&&e!==`option`&&e!==`select`}},ye=/url\(|image-set\(/i,be=/^on/i,xe=class{static get _allowedHtmlElements(){return M(this,`_allowedHtmlElements`,new Set([`a`,`b`,`br`,`button`,`div`,`i`,`img`,`input`,`label`,`li`,`ol`,`option`,`p`,`select`,`span`,`sub`,`sup`,`textarea`,`ul`]))}static get _allowedSvgElements(){return M(this,`_allowedSvgElements`,new Set([`ellipse`,`line`,`path`,`rect`,`svg`]))}static get _allowedRichTextElements(){return M(this,`_allowedRichTextElements`,new Set([`a`,`b`,`br`,`div`,`i`,`li`,`ol`,`p`,`span`,`sub`,`sup`,`ul`]))}static get _allowedRichTextAttributes(){return M(this,`_allowedRichTextAttributes`,new Set([`class`,`dir`,`style`]))}static get _allowedRichTextStyles(){return M(this,`_allowedRichTextStyles`,new Set(`color.font.fontFamily.fontSize.fontStretch.fontStyle.fontWeight.kerningMode.letterSpacing.lineHeight.margin.marginBottom.marginLeft.marginRight.marginTop.orphans.paddingLeft.paddingRight.breakAfter.breakBefore.breakInside.tabInterval.tabStop.textAlign.textDecoration.textIndent.transform.verticalAlign.widows`.split(`.`)))}static setupStorage(e,t,n,r,i){let a=r.getValue(t,{value:null});switch(n.name){case`textarea`:if(a.value!==null&&(e.textContent=a.value),i===`print`)break;e.addEventListener(`input`,e=>{r.setValue(t,{value:e.target.value})});break;case`input`:if(n.attributes.type===`radio`||n.attributes.type===`checkbox`){if(a.value===n.attributes.xfaOn?e.setAttribute(`checked`,!0):a.value===n.attributes.xfaOff&&e.removeAttribute(`checked`),i===`print`)break;e.addEventListener(`change`,e=>{r.setValue(t,{value:e.target.checked?e.target.getAttribute(`xfaOn`):e.target.getAttribute(`xfaOff`)})})}else{if(a.value!==null&&e.setAttribute(`value`,a.value),i===`print`)break;e.addEventListener(`input`,e=>{r.setValue(t,{value:e.target.value})})}break;case`select`:if(a.value!==null){e.setAttribute(`value`,a.value);for(let e of n.children)e.attributes.value===a.value?e.attributes.selected=!0:Object.hasOwn(e.attributes,`selected`)&&delete e.attributes.selected}e.addEventListener(`input`,e=>{let n=e.target.options,i=n.selectedIndex===-1?``:n[n.selectedIndex].value;r.setValue(t,{value:i})})}}static setAttributes({html:e,element:t,storage:n=null,intent:r,linkService:i}){let{attributes:a}=t,o=e instanceof HTMLAnchorElement;a.type===`radio`&&(a.name=`${a.name}-${r}`);for(let[t,n]of Object.entries(a))if(n!=null&&!be.test(t)&&!(r===`richText`&&!this._allowedRichTextAttributes.has(t)))switch(t){case`class`:n.length&&e.setAttribute(t,n.join(` `));break;case`dataId`:break;case`id`:e.setAttribute(`data-element-id`,n);break;case`style`:if(r===`richText`){let t=this._allowedRichTextStyles;for(let[r,i]of Object.entries(n))t.has(r)&&!ye.test(i)&&(e.style[r]=i)}else Object.assign(e.style,n);break;case`textContent`:e.textContent=n;break;default:(!o||t!==`href`&&t!==`newWindow`)&&e.setAttribute(t,n)}o&&i?.addLinkAttributes(e,a.href,a.newWindow),n&&a.dataId&&this.setupStorage(e,a.dataId,t,n)}static#e(e,t,n){return n===`richText`?!t&&this._allowedRichTextElements.has(e)?document.createElement(e):null:t?t===a&&this._allowedSvgElements.has(e)?document.createElementNS(a,e):null:this._allowedHtmlElements.has(e)?document.createElement(e):null}static render(e){let t=e.annotationStorage,n=e.linkService,r=e.xfaHtml,i=e.intent||`display`,a=this.#e(r.name,r.attributes?.xmlns,i)??document.createElement(`div`);r.attributes&&this.setAttributes({html:a,element:r,intent:i,linkService:n});let o=i!==`richText`,s=e.div;if(s.append(a),e.viewport){let t=`matrix(${e.viewport.transform.join(`,`)})`;s.style.transform=t}o&&s.setAttribute(`class`,`xfaLayer xfaFont`);let c=[];if(r.children.length===0){if(r.value){let e=document.createTextNode(r.value);a.append(e),o&&ve.shouldBuildText(r.name)&&c.push(e)}return{textDivs:c}}let l=[[r,-1,a]];for(;l.length>0;){let[e,r,a]=l.at(-1);if(r+1===e.children.length){l.pop();continue}let s=e.children[++l.at(-1)[1]];if(s===null)continue;let{name:u}=s;if(u===`#text`){let e=document.createTextNode(s.value);c.push(e),a.append(e);continue}let d=this.#e(u,s.attributes?.xmlns,i);if(d){if(a.append(d),s.attributes&&this.setAttributes({html:d,element:s,storage:t,intent:i,linkService:n}),s.children?.length>0)l.push([s,-1,d]);else if(s.value){let e=document.createTextNode(s.value);o&&ve.shouldBuildText(u)&&c.push(e),d.append(e)}}}for(let e of s.querySelectorAll(`.xfaNonInteractive input, .xfaNonInteractive textarea`))e.setAttribute(`readOnly`,!0);return{textDivs:c}}static update(e){let t=`matrix(${e.viewport.transform.join(`,`)})`;e.div.style.transform=t,e.div.hidden=!1}static getPageViewport(e,{scale:t=1,rotation:n=0}){let{width:r,height:i}=e.attributes.style;return new _e({viewBox:[0,0,parseInt(r,10),parseInt(i,10)],userUnit:1,scale:t,rotation:n})}},Se=class{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF};async function Ce(e,t=`text`){if(Ae(e,document.baseURI)){let n=await fetch(e);if(!n.ok)throw Error(n.statusText);switch(t){case`blob`:return n.blob();case`bytes`:return n.bytes();case`json`:return n.json()}return n.text()}return new Promise((n,r)=>{let i=new XMLHttpRequest;i.open(`GET`,e,!0),i.responseType=t===`bytes`?`arraybuffer`:t,i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE){if(i.status===200||i.status===0){switch(t){case`bytes`:n(new Uint8Array(i.response));return;case`blob`:case`json`:n(i.response);return}n(i.responseText);return}r(Error(i.statusText))}},i.send(null)})}var we=class extends N{constructor(e,t=0){super(e,`RenderingCancelledException`),this.extraDelay=t}};function Te(e){let t=e.length,n=0;for(;n{try{return new URL(e)}catch{}try{return new URL(decodeURIComponent(e))}catch{}try{return new URL(e,`https://foo.bar`)}catch{}try{return new URL(decodeURIComponent(e),`https://foo.bar`)}catch{}return null})(e);if(!n)return t;let r=e=>{try{let t=decodeURIComponent(e);return t.includes(`/`)&&(t=j(t),t.length===4&&i.test(t))?e:t}catch{return e}},i=/\.pdf$/i,a=j(n.pathname);if(i.test(a))return r(a);if(n.searchParams.size>0){let e=e=>[...e].findLast(e=>i.test(e)),t=e(n.searchParams.values())??e(n.searchParams.keys());if(t)return r(t)}if(n.hash){let e=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i.exec(n.hash);if(e)return r(e[0])}return t}var ke=class{#e=new Map;times=[];time(e){this.#e.has(e)&&T(`Timer is already running for ${e}`),this.#e.set(e,Date.now())}timeEnd(e){this.#e.has(e)||T(`Timer has not been started for ${e}`),this.times.push({name:e,start:this.#e.get(e),end:Date.now()}),this.#e.delete(e)}toString(){let e=Math.max(...this.times.map(e=>e.name.length));return this.times.map(t=>`${t.name.padEnd(e)} ${t.end-t.start}ms\n`).join(``)}};function Ae(e,t){let n=t?URL.parse(e,t):URL.parse(e);return/https?:/.test(n?.protocol??``)}function R(e){e.preventDefault()}function z(e){e.preventDefault(),e.stopPropagation()}var je=class{static#e;static toDateObject(e){if(e instanceof Date)return e;if(!e||typeof e!=`string`)return null;this.#e||=RegExp(`^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+\\-])?(\\d{2})?'?(\\d{2})?'?`);let t=this.#e.exec(e);if(!t)return null;let n=parseInt(t[1],10),r=parseInt(t[2],10);r=r>=1&&r<=12?r-1:0;let i=parseInt(t[3],10);i=i>=1&&i<=31?i:1;let a=parseInt(t[4],10);a=a>=0&&a<=23?a:0;let o=parseInt(t[5],10);o=o>=0&&o<=59?o:0;let s=parseInt(t[6],10);s=s>=0&&s<=59?s:0;let c=t[7]||`Z`,l=parseInt(t[8],10);l=l>=0&&l<=23?l:0;let u=parseInt(t[9],10)||0;return u=u>=0&&u<=59?u:0,c===`-`?(a+=l,o+=u):c===`+`&&(a-=l,o-=u),new Date(Date.UTC(n,r,i,a,o,s))}};function Me(e){if(e.startsWith(`#`)){let t=e.slice(1);return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16),t.length>=8?parseInt(t.slice(6,8),16)/255:1]}if(e.startsWith(`rgb(`)){let[t,n,r]=e.slice(4,-1).split(`,`).map(e=>parseInt(e,10));return[t,n,r,1]}if(e.startsWith(`rgba(`)){let t=e.slice(5,-1).split(`,`);return[parseInt(t[0],10),parseInt(t[1],10),parseInt(t[2],10),parseFloat(t[3])]}let t=e.match(/^color\(srgb\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*([\d.]+|none))?\)$/);return t?[Math.round(parseFloat(t[1])*255),Math.round(parseFloat(t[2])*255),Math.round(parseFloat(t[3])*255),t[4]!==void 0&&t[4]!==`none`?parseFloat(t[4]):1]:null}function Ne(e){let t=Me(e);return t?t.slice(0,3):(T(`Not a valid color format: "${e}"`),[0,0,0])}function Pe(e){let t=document.createElement(`span`);t.style.visibility=`hidden`,t.style.colorScheme=`only light`,document.body.append(t);for(let n of e.keys()){t.style.color=n;let r=window.getComputedStyle(t).color;e.set(n,Ne(r))}t.remove()}function B(e){let{a:t,b:n,c:r,d:i,e:a,f:o}=e.getTransform();return[t,n,r,i,a,o]}function V(e){let{a:t,b:n,c:r,d:i,e:a,f:o}=e.getTransform().invertSelf();return[t,n,r,i,a,o]}function Fe(e,t,n=!1,r=!0){if(t instanceof _e){let{pageWidth:r,pageHeight:i}=t.rawDims,{style:a}=e,o=`round(down, var(--total-scale-factor) * ${r}px, var(--scale-round-x))`,s=`round(down, var(--total-scale-factor) * ${i}px, var(--scale-round-y))`;!n||t.rotation%180==0?(a.width=o,a.height=s):(a.width=s,a.height=o)}r&&e.setAttribute(`data-main-rotation`,t.rotation)}var Ie=class e{constructor(){let{pixelRatio:t}=e;this.sx=t,this.sy=t}get scaled(){return this.sx!==1||this.sy!==1}get symmetric(){return this.sx===this.sy}limitCanvas(t,n,r,i,a=-1){let o=1/0,s=1/0,c=1/0;r=e.capPixels(r,a),r>0&&(o=Math.sqrt(r/(t*n))),i!==-1&&(s=i/t,c=i/n);let l=Math.min(o,s,c);return this.sx>l||this.sy>l?(this.sx=l,this.sy=l,!0):!1}static get pixelRatio(){return globalThis.devicePixelRatio||1}static capPixels(e,t){if(t>=0){let n=Math.ceil(window.screen.availWidth*window.screen.availHeight*this.pixelRatio**2*(1+t/100));return e>0?Math.min(e,n):n}return e}},Le=[`image/apng`,`image/avif`,`image/bmp`,`image/gif`,`image/jpeg`,`image/png`,`image/svg+xml`,`image/webp`,`image/x-icon`],Re=class{static get isDarkMode(){return M(this,`isDarkMode`,!!window?.matchMedia?.(`(prefers-color-scheme: dark)`).matches)}},ze=class{static get commentForegroundColor(){let e=document.createElement(`span`);e.classList.add(`comment`,`sidebar`);let{style:t}=e;t.width=t.height=`0`,t.display=`none`,t.color=`var(--comment-fg-color)`,document.body.append(e);let{color:n}=window.getComputedStyle(e);return e.remove(),M(this,`commentForegroundColor`,Ne(n))}};function Be(e,t){t=L(t??1,0,1);let n=255*(1-t);return e.map(e=>Math.round(e*t+n))}function Ve(e,t){let n=e[0]/255,r=e[1]/255,i=e[2]/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2;if(a===o)t[0]=t[1]=0;else{let e=a-o;switch(t[1]=s<.5?e/(a+o):e/(2-a-o),a){case n:t[0]=((r-i)/e+(ri?(r+.05)/(i+.05):(i+.05)/(r+.05)}var Ge=new Map;function Ke(e,t){let n=e[0]+e[1]*256+e[2]*65536+t[0]*16777216+t[1]*4294967296+t[2]*1099511627776,r=Ge.get(n);if(r)return r;let i=new Float32Array(9),a=i.subarray(0,3),o=i.subarray(3,6);Ve(e,o);let s=i.subarray(6,9);Ve(t,s);let c=s[2]<.5,l=c?12:4.5;if(o[2]=c?Math.sqrt(o[2]):1-Math.sqrt(1-o[2]),We(o,s,a).005;){let n=o[2]=(e+t)/2;c===We(o,s,a){n.delete()},{signal:n._signal}),this.#r.append(r)}get#p(){let e=document.createElement(`div`);return e.className=`divider`,e}async addAltText(e){let t=await e.render();this.#f(t),this.#r.append(t,this.#p),this.#i=e}addComment(e,t=null){if(this.#a)return;let n=e.renderForToolbar();if(!n)return;this.#f(n);let r=this.#o=this.#p;t?(this.#r.insertBefore(n,t),this.#r.insertBefore(r,t)):this.#r.append(n,r),this.#a=e,e.toolbar=this}addColorPicker(e){if(this.#t)return;this.#t=e;let t=e.renderButton();this.#f(t),this.#r.append(t,this.#p)}async addEditSignatureButton(e){let t=this.#s=await e.renderEditButton(this.#n);this.#f(t),this.#r.append(t,this.#p)}removeButton(e){e===`comment`&&(this.#a?.removeToolbarCommentButton(),this.#a=null,this.#o?.remove(),this.#o=null)}async addButton(e,t){switch(e){case`colorPicker`:t&&this.addColorPicker(t);break;case`altText`:t&&await this.addAltText(t);break;case`editSignature`:t&&await this.addEditSignatureButton(t);break;case`delete`:this.addDeleteButton();break;case`comment`:t&&this.addComment(t)}}async addButtonBefore(e,t,n){if(!t&&e===`comment`)return;let r=this.#r.querySelector(n);r&&e===`comment`&&this.addComment(t,r)}updateEditSignatureButton(e){this.#s&&(this.#s.title=e)}remove(){this.#e.remove(),this.#t?.destroy(),this.#t=null}},Xe=class{#e=null;#t=null;#n;constructor(e){this.#n=e}#r(){let e=this.#t=document.createElement(`div`);e.className=`editToolbar`,e.setAttribute(`role`,`toolbar`);let t=this.#n._signal;t instanceof AbortSignal&&!t.aborted&&e.addEventListener(`contextmenu`,R,{signal:t});let n=this.#e=document.createElement(`div`);return n.className=`buttons`,e.append(n),this.#n.hasCommentManager()&&this.#a(`commentButton`,`pdfjs-comment-floating-button`,`pdfjs-comment-floating-button-label`,()=>{this.#n.commentSelection(`floating_button`)}),this.#a(`highlightButton`,`pdfjs-highlight-floating-button1`,`pdfjs-highlight-floating-button-label`,()=>{this.#n.highlightSelection(`floating_button`)}),e}#i(e,t){let n=0,r=0;for(let i of e){let e=i.y+i.height;if(en){r=a,n=e;continue}t?a>r&&(r=a):a=1}static clearPointerType(){e.#r=null}static clearPointerIds(){e.#e=NaN,e.#t=null}static clearTimeStamp(){e.#n=NaN}},$e=class{#e=0;get id(){return`${l}${this.#e++}`}},et=class e{#e=de();#t=0;#n=null;static get _isSVGFittingCanvas(){let e=`data:image/svg+xml;charset=UTF-8,`,t=new OffscreenCanvas(1,3).getContext(`2d`,{willReadFrequently:!0}),n=new Image;n.src=e;let r=n.decode().then(()=>(t.drawImage(n,0,0,1,1,0,0,1,3),new Uint32Array(t.getImageData(0,0,1,1).data.buffer)[0]===0));return M(this,`_isSVGFittingCanvas`,r)}async#r(t,n){this.#n||=new Map;let r=this.#n.get(t);if(r===null)return null;if(r?.bitmap)return r.refCounter+=1,r;try{r||={bitmap:null,id:`image_${this.#e}_${this.#t++}`,refCounter:0,isSvg:!1};let t;if(typeof n==`string`?(r.url=n,t=await Ce(n,`blob`)):n instanceof File?t=r.file=n:n instanceof Blob&&(t=n),t.type===`image/svg+xml`){let n=e._isSVGFittingCanvas,i=new FileReader,a=new Image,o=new Promise((e,t)=>{a.onload=()=>{r.bitmap=a,r.isSvg=!0,e()},i.onload=async()=>{let e=r.svgUrl=i.result;a.src=await n?`${e}#svgView(preserveAspectRatio(none))`:e},a.onerror=i.onerror=t});i.readAsDataURL(t),await o}else r.bitmap=await createImageBitmap(t);r.refCounter=1}catch(e){T(e),r=null}return this.#n.set(t,r),r&&this.#n.set(r.id,r),r}async getFromFile(e){let{lastModified:t,name:n,size:r,type:i}=e;return this.#r(`${t}_${n}_${r}_${i}`,e)}async getFromUrl(e){return this.#r(e,e)}async getFromBlob(e,t){let n=await t;return this.#r(e,n)}async getFromId(e){this.#n||=new Map;let t=this.#n.get(e);if(!t)return null;if(t.bitmap)return t.refCounter+=1,t;if(t.file)return this.getFromFile(t.file);if(t.blobPromise){let{blobPromise:e}=t;return delete t.blobPromise,this.getFromBlob(t.id,e)}return this.getFromUrl(t.url)}getFromCanvas(e,t){this.#n||=new Map;let n=this.#n.get(e);if(n?.bitmap)return n.refCounter+=1,n;let r=new OffscreenCanvas(t.width,t.height);return r.getContext(`2d`).drawImage(t,0,0),n={bitmap:r.transferToImageBitmap(),id:`image_${this.#e}_${this.#t++}`,refCounter:1,isSvg:!1},this.#n.set(e,n),this.#n.set(n.id,n),n}getSvgUrl(e){let t=this.#n.get(e);return t?.isSvg?t.svgUrl:null}deleteId(e){this.#n||=new Map;let t=this.#n.get(e);if(!t||(--t.refCounter,t.refCounter!==0))return;let{bitmap:n}=t;if(!t.url&&!t.file){let e=new OffscreenCanvas(n.width,n.height);e.getContext(`bitmaprenderer`).transferFromImageBitmap(n),t.blobPromise=e.convertToBlob()}n.close?.(),t.bitmap=null}isValidId(e){return e.startsWith(`image_${this.#e}_`)}},tt=class{#e=[];#t=!1;#n;#r=-1;constructor(e=128){this.#n=e}add({cmd:e,undo:t,post:n,mustExec:r,type:i=NaN,overwriteIfSameType:a=!1,keepUndo:o=!1}){if(r&&e(),this.#t)return;let s={cmd:e,undo:t,post:n,type:i};if(this.#r===-1){this.#e.length>0&&(this.#e.length=0),this.#r=0,this.#e.push(s);return}if(a&&this.#e[this.#r].type===i){o&&(s.undo=this.#e[this.#r].undo),this.#e[this.#r]=s;return}let c=this.#r+1;c===this.#n?this.#e.splice(0,1):(this.#r=c,c=0;t--)if(this.#e[t].type!==e){this.#e.splice(t+1,this.#r-t),this.#r=t;return}this.#e.length=0,this.#r=-1}}destroy(){this.#e=null}},nt=class e{static ALT=1;static CTRL=2;static META=4;static SHIFT=8;constructor(t){this.callbacks=new Map;let{isMac:n}=F.platform;for(let[r,i,a={}]of t){let t=r.some(e=>e.startsWith(`mac+`));for(let o of r){let r=o;if(t){let e=o.startsWith(`mac+`);if(n!==e)continue;e&&(r=o.slice(4))}let[s,c]=e.#e(r);s!==null&&this.callbacks.getOrInsertComputed(s,pe).push({callback:i,options:a,modifiers:c})}}}static#e(t){let n=null,r=0;for(let i of t.split(`+`)){if(i=i.trim(),!i)continue;let a=i.toUpperCase(),o=e[a];if(o){r|=o;continue}if(n!==null){T(`KeyboardManager: multiple keys in shortcut "${t}"`);break}n=a===`SPACE`?` `:i}return n===null&&T(`KeyboardManager: no key found in shortcut "${t}"`),[n,r]}static#t(e){let t=/^(?:Key([A-Z])|(?:Digit|Numpad)(\d))$/.exec(e);return t?t[1]?.toLowerCase()??t[2]:null}exec(t,n){let r=this.callbacks.get(n.key);if(!r){if(/^[a-z]$/i.test(n.key))return;let t=e.#t(n.code);if(t===null||t===n.key||(r=this.callbacks.get(t),!r))return}let i=(n.altKey?e.ALT:0)|(n.ctrlKey?e.CTRL:0)|(n.metaKey?e.META:0)|(n.shiftKey?e.SHIFT:0),a=r.find(e=>e.modifiers===i);if(!a)return;let{callback:o,options:{bubbles:s=!1,args:c=[],checker:l=null}}=a;l&&!l(t,n)||(o.bind(t,...c,n)(),s||z(n))}},rt=class e{static _colorsMapping=new Map([[`CanvasText`,[0,0,0]],[`Canvas`,[255,255,255]]]);get _colors(){let e=new Map([[`CanvasText`,null],[`Canvas`,null]]);return Pe(e),M(this,`_colors`,e)}convert(t){let n=Ne(t);if(!window.matchMedia(`(forced-colors: active)`).matches)return n;for(let[t,r]of this._colors)if(r.every((e,t)=>e===n[t]))return e._colorsMapping.get(t);return n}getHexCode(e){let t=this._colors.get(e);return t?I.makeHexColor(...t):e}},it=class e{#e=new AbortController;#t=null;#n=null;#r=new Map;#i=new Map;#a=null;#o=null;#s=null;#c=null;#l=new tt;#u=null;#d=null;#f=null;#p=0;#m=new Set;#h=null;#g=null;#_=new Set;_editorUndoBar=null;#v=!1;#y=!1;#b=!1;#x=null;#S=null;#C=null;#w=null;#T=!1;#E=null;#D=new $e;#O=!1;#k=!1;#A=!1;#j=null;#M=null;#N=null;#P=null;#F=null;#I=u.NONE;#L=new Set;#R=null;#z=null;#B=null;#V=null;#H=null;#U={isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1};#W=[0,0];#G=null;#K=null;#q=null;#J=null;#Y=null;static TRANSLATE_SMALL=1;static TRANSLATE_BIG=10;static get _keyboardManager(){let t=e.prototype,n=e=>e.#K.contains(document.activeElement)&&document.activeElement.tagName!==`BUTTON`&&e.hasSomethingToControl(),r=(e,{target:t})=>{if(t instanceof HTMLInputElement){let{type:e}=t;return e!==`text`&&e!==`number`}return!0},i=this.TRANSLATE_SMALL,a=this.TRANSLATE_BIG;return M(this,`_keyboardManager`,new nt([[[`ctrl+a`,`mac+meta+a`],t.selectAll,{checker:r}],[[`ctrl+z`,`mac+meta+z`],t.undo,{checker:r}],[[`ctrl+y`,`ctrl+shift+z`,`mac+meta+shift+z`,`ctrl+shift+Z`,`mac+meta+shift+Z`],t.redo,{checker:r}],[[`Backspace`,`alt+Backspace`,`ctrl+Backspace`,`shift+Backspace`,`mac+Backspace`,`mac+alt+Backspace`,`mac+ctrl+Backspace`,`Delete`,`ctrl+Delete`,`shift+Delete`,`mac+Delete`],t.delete,{checker:r}],[[`Enter`],t.addNewEditorFromKeyboard,{checker:(e,{target:t})=>!(t instanceof HTMLButtonElement)&&e.#K.contains(t)&&!e.isEnterHandled}],[[`Space`],t.addNewEditorFromKeyboard,{checker:(e,{target:t})=>!(t instanceof HTMLButtonElement)&&e.#K.contains(document.activeElement)}],[[`Escape`],t.unselectAll],[[`ArrowLeft`],t.translateSelectedEditors,{args:[-i,0],checker:n}],[[`ctrl+ArrowLeft`,`mac+shift+ArrowLeft`],t.translateSelectedEditors,{args:[-a,0],checker:n}],[[`ArrowRight`],t.translateSelectedEditors,{args:[i,0],checker:n}],[[`ctrl+ArrowRight`,`mac+shift+ArrowRight`],t.translateSelectedEditors,{args:[a,0],checker:n}],[[`ArrowUp`],t.translateSelectedEditors,{args:[0,-i],checker:n}],[[`ctrl+ArrowUp`,`mac+shift+ArrowUp`],t.translateSelectedEditors,{args:[0,-a],checker:n}],[[`ArrowDown`],t.translateSelectedEditors,{args:[0,i],checker:n}],[[`ctrl+ArrowDown`,`mac+shift+ArrowDown`],t.translateSelectedEditors,{args:[0,a],checker:n}]]))}constructor(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){let g=this._signal=this.#e.signal;this.#K=e,this.#q=t,this.#J=n,this.#o=r,this.#u=i,this.#z=a,this.#H=s,this._eventBus=o;let _={signal:g,...Ze};o.on(`editingaction`,this.onEditingAction.bind(this),_),o.on(`pagechanging`,this.onPageChanging.bind(this),_),o.on(`scalechanging`,this.onScaleChanging.bind(this),_),o.on(`rotationchanging`,this.onRotationChanging.bind(this),_),o.on(`setpreference`,this.onSetPreference.bind(this),_),o.on(`switchannotationeditorparams`,e=>this.updateParams(e.type,e.value),_),window.addEventListener(`pointerdown`,()=>{this.#k=!0},{capture:!0,signal:g}),window.addEventListener(`pointerup`,()=>{this.#k=!1},{capture:!0,signal:g}),window.addEventListener(`beforeunload`,this.endCurrentEditing.bind(this),{capture:!0,signal:g}),this.#te(),this.#ce(),this.#ie(),this.#s=s.annotationStorage,this.#x=s.filterFactory,this.#B=c,this.#w=l||null,this.#v=u,this.#y=d,this.#b=f,this.#F=p||null,this.viewParameters={realScale:Se.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1,this._editorUndoBar=m||null,this._supportsPinchToZoom=h!==!1,i?.setSidebarUiManager(this)}destroy(){this.#Y?.resolve(),this.#Y=null,this.#e?.abort(),this.#e=null,this._signal=null;for(let e of this.#i.values())e.destroy();this.#i.clear(),this.#r.clear(),this.#_.clear(),this.#P?.clear(),this.#t=null,this.#L.clear(),this.#l.destroy(),this.#o?.destroy(),this.#u?.destroy(),this.#z?.destroy(),this.#E?.hide(),this.#E=null,this.#N?.destroy(),this.#N=null,this.#n=null,this.#S&&=(clearTimeout(this.#S),null),this.#G&&=(clearTimeout(this.#G),null),this._editorUndoBar?.destroy(),this.#H=null}combinedSignal(e){return AbortSignal.any([this._signal,e.signal])}get mlManager(){return this.#F}get useNewAltTextFlow(){return this.#y}get useNewAltTextWhenAddingImage(){return this.#b}get hcmFilter(){return M(this,`hcmFilter`,this.#B?this.#x.addHCMFilter(this.#B.foreground,this.#B.background):`none`)}get direction(){return M(this,`direction`,getComputedStyle(this.#K).direction)}get _highlightColors(){return M(this,`_highlightColors`,this.#w?new Map(this.#w.split(`,`).map(e=>(e=e.split(`=`).map(e=>e.trim()),e[1]=e[1].toUpperCase(),e))):null)}get highlightColors(){let{_highlightColors:e}=this;if(!e)return M(this,`highlightColors`,null);let t=new Map,n=!!this.#B;for(let[r,i]of e){let e=r.endsWith(`_HCM`);if(n&&e){t.set(r.replace(`_HCM`,``),i);continue}!n&&!e&&t.set(r,i)}return M(this,`highlightColors`,t)}get highlightColorNames(){return M(this,`highlightColorNames`,this.highlightColors?new Map(Array.from(this.highlightColors,e=>e.reverse())):null)}getNonHCMColor(e){if(!this._highlightColors)return e;let t=this.highlightColorNames.get(e);return this._highlightColors.get(t)||e}getNonHCMColorName(e){return this.highlightColorNames.get(e)||e}setCurrentDrawingSession(e){e?(this.unselectAll(),this.disableUserSelect(!0)):this.disableUserSelect(!1),this.#f=e}setMainHighlightColorPicker(e){this.#N=e}editAltText(e,t=!1){this.#o?.editAltText(this,e,t)}hasCommentManager(){return!!this.#u}editComment(e,t,n,r){this.#u?.showDialog(this,e,t,n,r)}selectComment(e,t){(this.#i.get(e)?.getEditorByUID(t))?.toggleComment(!0,!0)}updateComment(e){this.#u?.updateComment(e.getData())}updatePopupColor(e){this.#u?.updatePopupColor(e)}removeComment(e){this.#u?.removeComments([e.uid])}deleteComment(e,t){let n=()=>{e.comment=t};this.addCommands({cmd:()=>{this._editorUndoBar?.show(n,`comment`),this.toggleComment(null),e.comment=null},undo:n,mustExec:!0})}toggleComment(e,t,n=void 0){this.#u?.toggleCommentPopup(e,t,n)}makeCommentColor(e,t){return e&&this.#u?.makeCommentColor(e,t)||null}getCommentDialogElement(){return this.#u?.dialogElement||null}async waitForEditorsRendered(e){if(this.#i.has(e-1))return;let{resolve:t,promise:n}=Promise.withResolvers(),r=n=>{n.pageNumber===e&&(this._eventBus.off(`editorsrendered`,r),t())};this._eventBus.on(`editorsrendered`,r,Ze),await n}getSignature(e){this.#z?.getSignature({uiManager:this,editor:e})}get signatureManager(){return this.#z}switchToMode(e,t){this._eventBus.on(`annotationeditormodechanged`,t,{once:!0,signal:this._signal,...Ze}),this._eventBus.dispatch(`showannotationeditorui`,{source:this,mode:e})}setPreference(e,t){this._eventBus.dispatch(`setpreference`,{source:this,name:e,value:t})}onSetPreference({name:e,value:t}){e===`enableNewAltTextWhenAddingImage`&&(this.#b=t)}onPageChanging({pageNumber:e}){this.#p=e-1}deletePage(e){for(let t of this.getEditors(e))t.remove();this.#i.delete(e),this.#p===e&&(this.#p=0)}focusMainContainer(){this.#K.focus()}findParent(e,t){for(let n of this.#i.values()){let{x:r,y:i,width:a,height:o}=n.div.getBoundingClientRect();if(e>=r&&e<=r+a&&t>=i&&t<=i+o)return n}return null}disableUserSelect(e=!1){this.#q.classList.toggle(`noUserSelect`,e)}addShouldRescale(e){this.#_.add(e)}removeShouldRescale(e){this.#_.delete(e)}onScaleChanging({scale:e}){this.commitOrRemove(),this.viewParameters.realScale=e*Se.PDF_TO_CSS_UNITS;for(let e of this.#_)e.onScaleChanging();this.#f?.onScaleChanging()}onRotationChanging({pagesRotation:e}){this.commitOrRemove(),this.viewParameters.rotation=e}#X({anchorNode:e}){return e.nodeType===Node.TEXT_NODE?e.parentElement:e}#Z(e){let{currentLayer:t}=this;if(t.hasTextLayer(e))return t;for(let t of this.#i.values())if(t.hasTextLayer(e))return t;return null}highlightSelection(e=``,t=!1){let n=document.getSelection();if(!n||n.isCollapsed)return;let{anchorNode:r,anchorOffset:i,focusNode:a,focusOffset:o}=n,s=n.toString(),c=this.#X(n).closest(`.textLayer`),l=this.getSelectionBoxes(c);if(!l)return;n.empty();let d=this.#Z(c),f=this.#I===u.NONE,p=()=>{let n=d?.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:e,boxes:l,anchorNode:r,anchorOffset:i,focusNode:a,focusOffset:o,text:s});f&&this.showAllEditors(`highlight`,!0,!0),t&&n?.editComment()};if(f){this.switchToMode(u.HIGHLIGHT,p);return}p()}commentSelection(e=``){this.highlightSelection(e,!0)}endCurrentEditing(){this.commitOrRemove(),this.currentLayer?.endDrawingSession(!1)}#Q(){let e=document.getSelection();if(!e||e.isCollapsed)return;let t=this.#X(e).closest(`.textLayer`),n=this.getSelectionBoxes(t);n&&(this.#E||=new Xe(this),this.#E.show(t,n,this.direction===`ltr`))}getAndRemoveDataFromAnnotationStorage(e){if(!this.#s)return null;let t=`${l}${e}`,n=this.#s.getRawValue(t);return n&&this.#s.remove(t),n}addToAnnotationStorage(e){!e.isEmpty()&&this.#s&&!this.#s.has(e.id)&&this.#s.setValue(e.id,e)}a11yAlert(e,t=null){let n=this.#J;n&&(n.setAttribute(`data-l10n-id`,e),t?n.setAttribute(`data-l10n-args`,JSON.stringify(t)):n.removeAttribute(`data-l10n-args`))}#$(){let e=document.getSelection();if(!e||e.isCollapsed){this.#R&&(this.#E?.hide(),this.#R=null,this.#le({hasSelectedText:!1}));return}let{anchorNode:t}=e;if(t===this.#R)return;let n=this.#X(e).closest(`.textLayer`);if(!n){this.#R&&(this.#E?.hide(),this.#R=null,this.#le({hasSelectedText:!1}));return}if(this.#E?.hide(),this.#R=t,this.#le({hasSelectedText:!0}),(this.#I===u.HIGHLIGHT||this.#I===u.NONE)&&(this.#I===u.HIGHLIGHT&&this.showAllEditors(`highlight`,!0,!0),this.#T=this.isShiftKeyDown,!this.isShiftKeyDown)){let e=this.#I===u.HIGHLIGHT?this.#Z(n):null;if(e?.toggleDrawing(),this.#k){let t=new AbortController,n=this.combinedSignal(t),r=n=>{(n.type!==`pointerup`||n.button===0)&&(t.abort(),e?.toggleDrawing(!0),n.type===`pointerup`&&this.#ee(`main_toolbar`))};window.addEventListener(`pointerup`,r,{signal:n}),window.addEventListener(`blur`,r,{signal:n})}else e?.toggleDrawing(!0),this.#ee(`main_toolbar`)}}#ee(e=``){this.#I===u.HIGHLIGHT?this.highlightSelection(e):this.#v&&this.#Q()}#te(){document.addEventListener(`selectionchange`,this.#$.bind(this),{signal:this._signal})}#ne(){if(this.#C)return;this.#C=new AbortController;let e=this.combinedSignal(this.#C);window.addEventListener(`focus`,this.focus.bind(this),{signal:e}),window.addEventListener(`blur`,this.blur.bind(this),{signal:e})}#re(){this.#C?.abort(),this.#C=null}blur(){if(this.isShiftKeyDown=!1,this.#T&&(this.#T=!1,this.#ee(`main_toolbar`)),!this.hasSelection)return;let{activeElement:e}=document;for(let t of this.#L)if(t.div.contains(e)){this.#M=[t,e],t._focusEventsAllowed=!1;break}}focus(){if(!this.#M)return;let[e,t]=this.#M;this.#M=null,t.addEventListener(`focusin`,()=>{e._focusEventsAllowed=!0},{once:!0,signal:this._signal}),t.focus()}#ie(){if(this.#j)return;this.#j=new AbortController;let e=this.combinedSignal(this.#j);window.addEventListener(`keydown`,this.keydown.bind(this),{signal:e}),window.addEventListener(`keyup`,this.keyup.bind(this),{signal:e})}#ae(){this.#j?.abort(),this.#j=null}#oe(){if(this.#d)return;this.#d=new AbortController;let e=this.combinedSignal(this.#d);document.addEventListener(`copy`,this.copy.bind(this),{signal:e}),document.addEventListener(`cut`,this.cut.bind(this),{signal:e}),document.addEventListener(`paste`,this.paste.bind(this),{signal:e})}#se(){this.#d?.abort(),this.#d=null}#ce(){let e=this._signal;document.addEventListener(`dragover`,this.dragOver.bind(this),{signal:e}),document.addEventListener(`drop`,this.drop.bind(this),{signal:e})}addEditListeners(){this.#ie(),this.setEditingState(!0)}removeEditListeners(){this.#ae(),this.setEditingState(!1)}dragOver(e){for(let{type:t}of e.dataTransfer.items)for(let n of this.#g)if(n.isHandlingMimeForPasting(t)){e.dataTransfer.dropEffect=`copy`,e.preventDefault();return}}drop(e){for(let t of e.dataTransfer.items)for(let n of this.#g)if(n.isHandlingMimeForPasting(t.type)){n.paste(t,this.currentLayer),e.preventDefault();return}}copy(e){if(e.preventDefault(),this.#t?.commitOrRemove(),!this.hasSelection)return;let t=[];for(let e of this.#L){let n=e.serialize(!0);n&&t.push(n)}t.length!==0&&e.clipboardData.setData(`application/pdfjs`,JSON.stringify(t))}cut(e){this.copy(e),this.delete()}async paste(e){e.preventDefault();let{clipboardData:t}=e;for(let e of t.items)for(let t of this.#g)if(t.isHandlingMimeForPasting(e.type)){t.paste(e,this.currentLayer);return}let n=t.getData(`application/pdfjs`);if(!n)return;try{n=JSON.parse(n)}catch(e){T(`paste: "${e.message}".`);return}if(!Array.isArray(n))return;this.unselectAll();let r=this.currentLayer;try{let e=[];for(let t of n){let n=await r.deserialize(t);if(!n)return;e.push(n)}this.addCommands({cmd:()=>{for(let t of e)this.#pe(t);this.#ge(e)},undo:()=>{for(let t of e)t.remove()},mustExec:!0})}catch(e){T(`paste: "${e.message}".`)}}keydown(t){!this.isShiftKeyDown&&t.key===`Shift`&&(this.isShiftKeyDown=!0),this.#I!==u.NONE&&!this.isEditorHandlingKeyboard&&e._keyboardManager.exec(this,t)}keyup(e){this.isShiftKeyDown&&e.key===`Shift`&&(this.isShiftKeyDown=!1,this.#T&&(this.#T=!1,this.#ee(`main_toolbar`)))}onEditingAction({name:e}){switch(e){case`undo`:case`redo`:case`delete`:case`selectAll`:this[e]();break;case`highlightSelection`:this.highlightSelection(`context_menu`);break;case`commentSelection`:this.commentSelection(`context_menu`)}}updatePageIndex(e,t){for(let n of this.getEditors(e))n.pageIndex=t;let n=this.#a.get(e);n&&(n.pageIndex=t,this.#i.set(t,n),this.#O?n.enable():n.disable())}startUpdatePages(){this.#a=new Map(this.#i),this.#i.clear()}endUpdatePages(){this.#a=null}clonePage(e,t){for(let n of this.getEditors(e)){let e=n.serialize(n.mode!==u.HIGHLIGHT);e&&(e.pageIndex=t,e.id=this.getId(),e.isClone=!0,delete e.popupRef,this.#s.setValue(e.id,e))}}findClonesForPage(e){let t=[],{pageIndex:n}=e;for(let[r,i]of this.#s)i.pageIndex===n&&i.isClone&&(this.#s.remove(r),t.push(e.deserialize(i).then(t=>{t&&(t.isClone=!0,e.addOrRebuild(t))})));return Promise.all(t)}#le(e){Object.entries(e).some(([e,t])=>this.#U[e]!==t)&&(this._eventBus.dispatch(`editingstateschanged`,{source:this,details:Object.assign(this.#U,e)}),this.#I===u.HIGHLIGHT&&e.hasSelectedEditor===!1&&this.#ue([[d.HIGHLIGHT_FREE,!0]]))}#ue(e){this._eventBus.dispatch(`annotationeditorparamschanged`,{source:this,details:e})}setEditingState(e){e?(this.#ne(),this.#oe(),this.#le({isEditing:this.#I!==u.NONE,isEmpty:this.#he(),hasSomethingToUndo:this.#l.hasSomethingToUndo(),hasSomethingToRedo:this.#l.hasSomethingToRedo(),hasSelectedEditor:!1})):(this.#re(),this.#se(),this.#le({isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(e){if(!this.#g){this.#g=e;for(let e of this.#g)this.#ue(e.defaultPropertiesToUpdate)}}getId(){return this.#D.id}get currentLayer(){return this.#i.get(this.#p)}getLayer(e){return this.#i.get(e)}get currentPageIndex(){return this.#p}addLayer(e){this.#i.set(e.pageIndex,e),this.#O?e.enable():e.disable()}removeLayer(e){this.#i.delete(e.pageIndex)}async updateMode(e,t=null,n=!1,r=!1,i=!1,a=!1){if(this.#I!==e&&!(this.#Y&&(await this.#Y.promise,!this.#Y))){if(this.#Y=Promise.withResolvers(),this.#f?.commitOrRemove(),this.#I===u.POPUP&&this.#u?.hideSidebar(),this.#u?.destroyPopup(),this.#I=e,e===u.NONE){this.setEditingState(!1),this.#fe();for(let e of this.#r.values())e.hideStandaloneCommentButton();this._editorUndoBar?.hide(),this.toggleComment(null),this.#Y.resolve();return}for(let e of this.#r.values())e.addStandaloneCommentButton();e===u.SIGNATURE&&await this.#z?.loadSignatures(),n&&H.clearPointerType(),this.setEditingState(!0),await this.#de(),this.unselectAll();for(let t of this.#i.values())t.updateMode(e);if(e===u.POPUP){this.#n||=await this.#H.getAnnotationsByType(new Set(this.#g.map(e=>e._editorType)));let e=new Set,t=[];for(let n of this.#r.values()){let{annotationElementId:r,hasComment:i,deleted:a}=n;r&&e.add(r),i&&!a&&t.push(n.getData())}for(let n of this.#n){let{id:r,popupRef:i,contentsObj:a}=n;i&&a?.str&&!e.has(r)&&!this.#m.has(r)&&t.push(n)}this.#u?.showSidebar(t)}if(!t){r&&this.addNewEditorFromKeyboard(),this.#Y.resolve();return}for(let e of this.#r.values())e.uid===t?(this.setSelected(e),a?e.editComment():i?e.enterInEditMode():e.focus()):e.unselect();this.#Y.resolve()}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(e){e.mode!==this.#I&&this._eventBus.dispatch(`switchannotationeditormode`,{source:this,...e})}updateParams(e,t){if(this.#g){switch(e){case d.CREATE:this.currentLayer.addNewEditor(t);return;case d.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch(`reporttelemetry`,{source:this,details:{type:`editing`,data:{type:`highlight`,action:`toggle_visibility`}}}),(this.#V||=new Map).set(e,t),this.showAllEditors(`highlight`,t)}if(this.hasSelection)for(let n of this.#L)n.updateParams(e,t);else for(let n of this.#g)n.updateDefaultParams(e,t)}}showAllEditors(e,t,n=!1){for(let n of this.#r.values())n.editorType===e&&n.show(t);(this.#V?.get(d.HIGHLIGHT_SHOW_ALL)??!0)!==t&&this.#ue([[d.HIGHLIGHT_SHOW_ALL,t]])}enableWaiting(e=!1){if(this.#A!==e){this.#A=e;for(let t of this.#i.values())e?t.disableClick():t.enableClick(),t.div.classList.toggle(`waiting`,e)}}async#de(){if(!this.#O){this.#O=!0;let e=[];for(let t of this.#i.values())e.push(t.enable());await Promise.all(e);for(let e of this.#r.values())e.enable()}}#fe(){if(this.unselectAll(),this.#O){this.#O=!1;for(let e of this.#i.values())e.disable();for(let e of this.#r.values())e.disable()}}*getEditors(e){for(let t of this.#r.values())t.pageIndex===e&&(yield t)}getEditor(e){return this.#r.get(e)}addEditor(e){this.#r.set(e.id,e)}removeEditor(e){e.div.contains(document.activeElement)&&(this.#S&&clearTimeout(this.#S),this.#S=setTimeout(()=>{this.focusMainContainer(),this.#S=null},0)),this.#r.delete(e.id),e.annotationElementId&&this.#P?.delete(e.annotationElementId),this.unselect(e),(!e.annotationElementId||!this.#m.has(e.annotationElementId))&&this.#s?.remove(e.id)}addDeletedAnnotationElement(e){this.#m.add(e.annotationElementId),this.addChangedExistingAnnotation(e),e.deleted=!0}isDeletedAnnotationElement(e){return this.#m.has(e)}removeDeletedAnnotationElement(e){this.#m.delete(e.annotationElementId),this.removeChangedExistingAnnotation(e),e.deleted=!1}#pe(e){let t=this.#i.get(e.pageIndex);t?t.addOrRebuild(e):(this.addEditor(e),this.addToAnnotationStorage(e))}setActiveEditor(e){this.#t!==e&&(this.#t=e,e&&this.#ue(e.propertiesToUpdate))}get#me(){let e=null;for(e of this.#L);return e}updateUI(e){this.#me===e&&this.#ue(e.propertiesToUpdate)}updateUIForDefaultProperties(e){this.#ue(e.defaultPropertiesToUpdate)}toggleSelected(e){if(this.#L.has(e)){this.#L.delete(e),e.unselect(),this.#le({hasSelectedEditor:this.hasSelection});return}this.#L.add(e),e.select(),this.#ue(e.propertiesToUpdate),this.#le({hasSelectedEditor:!0})}setSelected(e){this.updateToolbar({mode:e.mode,editId:e.uid}),this.#f?.commitOrRemove();for(let t of this.#L)t!==e&&t.unselect();this.#u?.destroyPopup(),this.#L.clear(),this.#L.add(e),e.select(),this.#ue(e.propertiesToUpdate),this.#le({hasSelectedEditor:!0})}get firstSelectedEditor(){return this.#L.values().next().value}unselect(e){e.unselect(),this.#L.delete(e),this.#le({hasSelectedEditor:this.hasSelection})}get hasSelection(){return this.#L.size!==0}get isEnterHandled(){return this.#L.size===1&&this.firstSelectedEditor.isEnterHandled}undo(){this.#l.undo(),this.#le({hasSomethingToUndo:this.#l.hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:this.#he()}),this._editorUndoBar?.hide()}redo(){this.#l.redo(),this.#le({hasSomethingToUndo:!0,hasSomethingToRedo:this.#l.hasSomethingToRedo(),isEmpty:this.#he()})}addCommands(e){this.#l.add(e),this.#le({hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:this.#he()})}cleanUndoStack(e){this.#l.cleanType(e)}#he(){if(this.#r.size===0)return!0;if(this.#r.size===1)for(let e of this.#r.values())return e.isEmpty();return!1}delete(){this.commitOrRemove();let e=this.currentLayer?.endDrawingSession(!0);if(!this.hasSelection&&!e)return;let t=e?[e]:[...this.#L],n=()=>{this._editorUndoBar?.show(r,t.length===1?t[0].editorType:t.length);for(let e of t)e.remove()},r=()=>{for(let e of t)this.#pe(e)};this.addCommands({cmd:n,undo:r,mustExec:!0})}commitOrRemove(){this.#t?.commitOrRemove()}hasSomethingToControl(){return this.#t||this.hasSelection}#ge(e){for(let e of this.#L)e.unselect();this.#L.clear();for(let t of e)t.isEmpty()||(this.#L.add(t),t.select());this.#le({hasSelectedEditor:this.hasSelection})}selectAll(){for(let e of this.#L)e.commit();this.#ge(this.#r.values())}unselectAll(){if(!(this.#t&&(this.#t.commitOrRemove(),this.#I!==u.NONE))&&!this.#f?.commitOrRemove()&&(this.#u?.destroyPopup(),this.hasSelection)){for(let e of this.#L)e.unselect();this.#L.clear(),this.#le({hasSelectedEditor:!1})}}translateSelectedEditors(e,t,n=!1){if(n||this.commitOrRemove(),!this.hasSelection)return;this.#W[0]+=e,this.#W[1]+=t;let[r,i]=this.#W,a=[...this.#L];this.#G&&clearTimeout(this.#G),this.#G=setTimeout(()=>{this.#G=null,this.#W[0]=this.#W[1]=0,this.addCommands({cmd:()=>{for(let e of a)this.#r.has(e.id)&&(e.translateInPage(r,i),e.translationDone())},undo:()=>{for(let e of a)this.#r.has(e.id)&&(e.translateInPage(-r,-i),e.translationDone())},mustExec:!1})},1e3);for(let n of a)n.translateInPage(e,t),n.translationDone()}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),this.#h=new Map;for(let e of this.#L)this.#h.set(e,{savedX:e.x,savedY:e.y,savedPageIndex:e.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!this.#h)return!1;this.disableUserSelect(!1);let e=this.#h;this.#h=null;let t=!1;for(let[{x:n,y:r,pageIndex:i},a]of e)a.newX=n,a.newY=r,a.newPageIndex=i,t||=n!==a.savedX||r!==a.savedY||i!==a.savedPageIndex;if(!t)return!1;let n=(e,t,n,r)=>{if(this.#r.has(e.id)){let i=this.#i.get(r);i?e._setParentAndPosition(i,t,n):(e.pageIndex=r,e.x=t,e.y=n)}};return this.addCommands({cmd:()=>{for(let[t,{newX:r,newY:i,newPageIndex:a}]of e)n(t,r,i,a)},undo:()=>{for(let[t,{savedX:r,savedY:i,savedPageIndex:a}]of e)n(t,r,i,a)},mustExec:!0}),!0}dragSelectedEditors(e,t){if(this.#h)for(let n of this.#h.keys())n.drag(e,t)}rebuild(e){if(e.parent===null){let t=this.getLayer(e.pageIndex);t?(t.changeParent(e),t.addOrRebuild(e)):(this.addEditor(e),this.addToAnnotationStorage(e),e.rebuild())}else e.parent.addOrRebuild(e)}get isEditorHandlingKeyboard(){return this.getActive()?.shouldGetKeyboardEvents()||this.#L.size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(e){return this.#t===e}getActive(){return this.#t}getMode(){return this.#I}isEditingMode(){return this.#I!==u.NONE}get imageManager(){return M(this,`imageManager`,new et)}getSelectionBoxes(e){if(!e)return null;let t=document.getSelection();for(let n=0,r=t.rangeCount;n({x:(t-r)/a,y:1-(e+o-n)/i,width:s/a,height:o/i});break;case`180`:o=(e,t,o,s)=>({x:1-(e+o-n)/i,y:1-(t+s-r)/a,width:o/i,height:s/a});break;case`270`:o=(e,t,o,s)=>({x:1-(t+s-r)/a,y:(e-n)/i,width:s/a,height:o/i});break;default:o=(e,t,o,s)=>({x:(e-n)/i,y:(t-r)/a,width:o/i,height:s/a})}let s=[];for(let e=0,n=t.rangeCount;ee.stopPropagation(),{signal:r});let i=e=>{e.preventDefault(),this.#c._uiManager.editAltText(this.#c),this.#d&&this.#c._reportTelemetry({action:`pdfjs.image.alt_text.image_status_label_clicked`,data:{label:this.#p}})};return t.addEventListener(`click`,i,{capture:!0,signal:r}),t.addEventListener(`keydown`,e=>{e.target===t&&e.key===`Enter`&&(this.#o=!0,i(e))},{signal:r}),await this.#m(),t}get#p(){return this.#e&&`added`||this.#e===null&&this.guessedText&&`review`||`missing`}finish(){this.#n&&(this.#n.focus({focusVisible:this.#o}),this.#o=!1)}isEmpty(){return this.#d?this.#e===null:!this.#e&&!this.#t}hasData(){return this.#d?this.#e!==null||!!this.#l:this.isEmpty()}get guessedText(){return this.#l}async setGuessedText(t){this.#e===null&&(this.#l=t,this.#u=await e._l10n.get(`pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer`,{generatedAltText:t}),this.#m())}toggleAltTextBadge(e=!1){if(!this.#d||this.#e){this.#s?.remove(),this.#s=null;return}if(!this.#s){let e=this.#s=document.createElement(`div`);e.className=`noAltTextBadge`,this.#c.div.append(e)}this.#s.classList.toggle(`hidden`,!e)}serialize(e){let t=this.#e;return!e&&this.#l===t&&(t=this.#u),{altText:t,decorative:this.#t,guessedText:this.#l,textWithDisclaimer:this.#u}}get data(){return{altText:this.#e,decorative:this.#t}}set data({altText:e,decorative:t,guessedText:n,textWithDisclaimer:r,cancel:i=!1}){n&&(this.#l=n,this.#u=r),(this.#e!==e||this.#t!==t)&&(i||(this.#e=e,this.#t=t),this.#m())}toggle(e=!1){this.#n&&(!e&&this.#a&&(clearTimeout(this.#a),this.#a=null),this.#n.disabled=!e)}shown(){this.#c._reportTelemetry({action:`pdfjs.image.alt_text.image_status_label_displayed`,data:{label:this.#p}})}destroy(){this.#n?.remove(),this.#n=null,this.#r=null,this.#i=null,this.#s?.remove(),this.#s=null}async#m(){let t=this.#n;if(!t)return;if(this.#d){if(t.classList.toggle(`done`,!!this.#e),t.setAttribute(`data-l10n-id`,e.#f[this.#p]),this.#r?.setAttribute(`data-l10n-id`,e.#f[`${this.#p}-label`]),!this.#e){this.#i?.remove();return}}else{if(!this.#e&&!this.#t){t.classList.remove(`done`),this.#i?.remove();return}t.classList.add(`done`),t.setAttribute(`data-l10n-id`,`pdfjs-editor-alt-text-edit-button`)}let n=this.#i;if(!n){this.#i=n=document.createElement(`span`),n.className=`tooltip`,n.setAttribute(`role`,`tooltip`),n.id=`alt-text-tooltip-${this.#c.id}`;let e=this.#c._uiManager._signal;e.addEventListener(`abort`,()=>{clearTimeout(this.#a),this.#a=null},{once:!0}),t.addEventListener(`mouseenter`,()=>{this.#a=setTimeout(()=>{this.#a=null,this.#i.classList.add(`show`),this.#c._reportTelemetry({action:`alt_text_tooltip`})},100)},{signal:e}),t.addEventListener(`mouseleave`,()=>{this.#a&&=(clearTimeout(this.#a),null),this.#i?.classList.remove(`show`)},{signal:e})}this.#t?n.setAttribute(`data-l10n-id`,`pdfjs-editor-alt-text-decorative-tooltip`):(n.removeAttribute(`data-l10n-id`),n.textContent=this.#e),n.parentNode||t.append(n),this.#c.getElementForAltText()?.setAttribute(`aria-describedby`,n.id)}},ot=class{#e=null;#t=null;#n=!1;#r=null;#i=null;#a=null;#o=null;#s=null;#c=!1;#l=null;constructor(e){this.#r=e}renderForToolbar(){let e=this.#t=document.createElement(`button`);return e.className=`comment`,this.#u(e,!1)}renderForStandalone(){let e=this.#e=document.createElement(`button`);e.className=`annotationCommentButton`;let t=this.#r.commentButtonPosition;if(t){let{style:n}=e;n.insetInlineEnd=`calc(${100*(this.#r._uiManager.direction===`ltr`?1-t[0]:t[0])}% - var(--comment-button-dim))`,n.top=`calc(${100*t[1]}% - var(--comment-button-dim))`;let r=this.#r.commentButtonColor;r&&(n.backgroundColor=r)}return this.#u(e,!0)}focusButton(){setTimeout(()=>{(this.#e??this.#t)?.focus()},0)}onUpdatedColor(){if(!this.#e)return;let e=this.#r.commentButtonColor;e&&(this.#e.style.backgroundColor=e),this.#r._uiManager.updatePopupColor(this.#r)}get commentButtonWidth(){return(this.#e?.getBoundingClientRect().width??0)/this.#r.parent.boundingClientRect.width}get commentPopupPositionInLayer(){if(this.#l)return this.#l;if(!this.#e)return null;let{x:e,y:t,height:n}=this.#e.getBoundingClientRect(),{x:r,y:i,width:a,height:o}=this.#r.parent.boundingClientRect;return[(e-r)/a,(t+n-i)/o]}set commentPopupPositionInLayer(e){this.#l=e}hasDefaultPopupPosition(){return this.#l===null}removeStandaloneCommentButton(){this.#e?.remove(),this.#e=null}removeToolbarCommentButton(){this.#t?.remove(),this.#t=null}setCommentButtonStates({selected:e,hasPopup:t}){this.#e&&(this.#e.classList.toggle(`selected`,e),this.#e.ariaExpanded=t)}#u(e,t){if(!this.#r._uiManager.hasCommentManager())return null;e.tabIndex=`0`,e.ariaHasPopup=`dialog`,t?(e.ariaControls=`commentPopup`,e.setAttribute(`data-l10n-id`,`pdfjs-show-comment-button`)):(e.ariaControlsElements=[this.#r._uiManager.getCommentDialogElement()],e.setAttribute(`data-l10n-id`,`pdfjs-editor-add-comment-button`));let n=this.#r._uiManager._signal;if(!(n instanceof AbortSignal)||n.aborted)return e;e.addEventListener(`contextmenu`,R,{signal:n}),t&&(e.addEventListener(`focusin`,e=>{this.#r._focusEventsAllowed=!1,z(e)},{capture:!0,signal:n}),e.addEventListener(`focusout`,e=>{this.#r._focusEventsAllowed=!0,z(e)},{capture:!0,signal:n})),e.addEventListener(`pointerdown`,e=>e.stopPropagation(),{signal:n});let r=t=>{t.preventDefault(),e===this.#t?this.edit():this.#r.toggleComment(!0)};return e.addEventListener(`click`,r,{capture:!0,signal:n}),e.addEventListener(`keydown`,t=>{t.target===e&&t.key===`Enter`&&(this.#n=!0,r(t))},{signal:n}),e.addEventListener(`pointerenter`,()=>{this.#r.toggleComment(!1,!0)},{signal:n}),e.addEventListener(`pointerleave`,()=>{this.#r.toggleComment(!1,!1)},{signal:n}),e}edit(e){let t=this.commentPopupPositionInLayer,n,r;if(t)[n,r]=t;else{[n,r]=this.#r.commentButtonPosition;let{width:e,height:t,x:i,y:a}=this.#r;n=i+n*e,r=a+r*t}let i=this.#r.parent.boundingClientRect,{x:a,y:o,width:s,height:c}=i;this.#r._uiManager.editComment(this.#r,a+n*s,o+r*c,{...e,parentDimensions:i})}finish(){this.#t&&(this.#t.focus({focusVisible:this.#n}),this.#n=!1)}isDeleted(){return this.#c||this.#o===``}isEmpty(){return this.#o===null}hasBeenEdited(){return this.isDeleted()||this.#o!==this.#i}serialize(){return this.data}get data(){return{text:this.#o,richText:this.#a,date:this.#s,deleted:this.isDeleted()}}set data(e){if(e!==this.#o&&(this.#a=null),e===null){this.#o=``,this.#c=!0;return}this.#o=e,this.#s=new Date,this.#c=!1}restoreData({text:e,richText:t,date:n}){this.#o=e,this.#a=t,this.#s=n,this.#c=!1}setInitialText(e,t=null){this.#i=e,this.data=e,this.#s=null,this.#a=t}shown(){}destroy(){this.#t?.remove(),this.#t=null,this.#e?.remove(),this.#e=null,this.#o=``,this.#a=null,this.#s=null,this.#r=null,this.#n=!1,this.#c=!1}},st=class e{#e;#t=!1;#n=null;#r;#i;#a;#o;#s=null;#c;#l=null;#u;#d=null;constructor({container:e,isPinchingDisabled:t=null,isPinchingStopped:n=null,onPinchStart:r=null,onPinching:i=null,onPinchEnd:a=null,signal:o}){this.#e=e,this.#n=n,this.#r=t,this.#i=r,this.#a=i,this.#o=a,this.#u=new AbortController,this.#c=AbortSignal.any([o,this.#u.signal]),e.addEventListener(`touchstart`,this.#f.bind(this),{passive:!1,signal:this.#c})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return 35/Ie.pixelRatio}#f(e){if(this.#r?.())return;if(e.touches.length===1){if(this.#s)return;let e=this.#s=new AbortController,t=AbortSignal.any([this.#c,e.signal]),n=this.#e,r={capture:!0,signal:t,passive:!1},i=e=>{e.pointerType===`touch`&&(this.#s?.abort(),this.#s=null)};n.addEventListener(`pointerdown`,e=>{e.pointerType===`touch`&&(z(e),i(e))},r),n.addEventListener(`pointerup`,i,r),n.addEventListener(`pointercancel`,i,r);return}if(!this.#d){this.#d=new AbortController;let e=AbortSignal.any([this.#c,this.#d.signal]),t=this.#e,n={signal:e,capture:!1,passive:!1};t.addEventListener(`touchmove`,this.#p.bind(this),n);let r=this.#m.bind(this);t.addEventListener(`touchend`,r,n),t.addEventListener(`touchcancel`,r,n),n.capture=!0,t.addEventListener(`pointerdown`,z,n),t.addEventListener(`pointermove`,z,n),t.addEventListener(`pointercancel`,z,n),t.addEventListener(`pointerup`,z,n),this.#i?.()}if(z(e),e.touches.length!==2||this.#n?.()){this.#l=null;return}let[t,n]=e.touches;t.identifier>n.identifier&&([t,n]=[n,t]),this.#l={touch0X:t.screenX,touch0Y:t.screenY,touch1X:n.screenX,touch1Y:n.screenY}}#p(t){if(!this.#l||t.touches.length!==2)return;z(t);let[n,r]=t.touches;n.identifier>r.identifier&&([n,r]=[r,n]);let{screenX:i,screenY:a}=n,{screenX:o,screenY:s}=r,c=this.#l,{touch0X:l,touch0Y:u,touch1X:d,touch1Y:f}=c,p=d-l,m=f-u,h=o-i,g=s-a,_=Math.hypot(h,g)||1,v=Math.hypot(p,m)||1;if(!this.#t&&Math.abs(v-_)<=e.MIN_TOUCH_DISTANCE_TO_PINCH)return;if(c.touch0X=i,c.touch0Y=a,c.touch1X=o,c.touch1Y=s,!this.#t){this.#t=!0;return}let y=[(i+o)/2,(a+s)/2];this.#a?.(y,v,_)}#m(e){e.touches.length>=2||(this.#d&&(this.#d.abort(),this.#d=null,this.#o?.()),this.#l&&(z(e),this.#l=null,this.#t=!1))}destroy(){this.#u?.abort(),this.#u=null,this.#s?.abort(),this.#s=null}},U=class e{#e=null;#t=null;#n=null;#r=null;#i=null;#a=!1;#o=null;#s=``;#c=null;#l=null;#u=null;#d=null;#f=null;#p=``;#m=!1;#h=null;#g=!1;#_=!1;#v=!1;#y=null;#b=0;#x=0;#S=null;#C=null;isSelected=!1;_isCopy=!1;_editToolbar=null;_initialOptions=Object.create(null);_initialData=null;_isVisible=!0;_uiManager=null;_focusEventsAllowed=!0;static _l10n=null;static _l10nAlert=null;static _l10nResizer=null;#w=!1;#T=e._zIndex++;static _borderLineWidth=-1;static _colorManager=new rt;static _zIndex=1;static _telemetryTimeout=1e3;static get _resizerKeyboardManager(){let t=e.prototype._resizeWithKeyboard,n=it.TRANSLATE_SMALL,r=it.TRANSLATE_BIG;return M(this,`_resizerKeyboardManager`,new nt([[[`ArrowLeft`],t,{args:[-n,0]}],[[`ctrl+ArrowLeft`,`mac+shift+ArrowLeft`],t,{args:[-r,0]}],[[`ArrowRight`],t,{args:[n,0]}],[[`ctrl+ArrowRight`,`mac+shift+ArrowRight`],t,{args:[r,0]}],[[`ArrowUp`],t,{args:[0,-n]}],[[`ctrl+ArrowUp`,`mac+shift+ArrowUp`],t,{args:[0,-r]}],[[`ArrowDown`],t,{args:[0,n]}],[[`ctrl+ArrowDown`,`mac+shift+ArrowDown`],t,{args:[0,r]}],[[`Escape`],e.prototype._stopResizingWithKeyboard]]))}constructor(e){this.parent=e.parent,this.id=e.id,this.width=this.height=null,this.pageIndex=e.parent.pageIndex,this.name=e.name,this.div=null,this._uiManager=e.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=e.isCentered,this._structTreeParentId=null,this.annotationElementId=e.annotationElementId||null,this.creationDate=e.creationDate||new Date,this.modificationDate=e.modificationDate||null,this.canAddComment=!0;let{rotation:t,rawDims:{pageWidth:n,pageHeight:r,pageX:i,pageY:a}}=this.parent.viewport;this.rotation=t,this.pageRotation=(360+t-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[n,r],this.pageTranslation=[i,a];let[o,s]=this.parentDimensions;this.x=e.x/o,this.y=e.y/s,this.isAttachedToDOM=!1,this.deleted=!1}updatePageIndex(e){this.pageIndex=e}get editorType(){return Object.getPrototypeOf(this).constructor._type}get mode(){return Object.getPrototypeOf(this).constructor._editorType}static get isDrawer(){return!1}static get _defaultLineColor(){return M(this,`_defaultLineColor`,this._colorManager.getHexCode(`CanvasText`))}static deleteAnnotationElement(e){let t=new ct({id:e._uiManager.getId(),parent:e.parent,uiManager:e._uiManager});t.annotationElementId=e.annotationElementId,t.deleted=!0,t._uiManager.addToAnnotationStorage(t)}static initialize(t,n){if(e._l10n??=t,e._l10nAlert??=Object.freeze({highlight:`pdfjs-editor-highlight-added-alert`,freetext:`pdfjs-editor-freetext-added-alert`,ink:`pdfjs-editor-ink-added-alert`,stamp:`pdfjs-editor-stamp-added-alert`,signature:`pdfjs-editor-signature-added-alert`}),e._l10nResizer??=Object.freeze({topLeft:`pdfjs-editor-resizer-top-left`,topMiddle:`pdfjs-editor-resizer-top-middle`,topRight:`pdfjs-editor-resizer-top-right`,middleRight:`pdfjs-editor-resizer-middle-right`,bottomRight:`pdfjs-editor-resizer-bottom-right`,bottomMiddle:`pdfjs-editor-resizer-bottom-middle`,bottomLeft:`pdfjs-editor-resizer-bottom-left`,middleLeft:`pdfjs-editor-resizer-middle-left`}),e._borderLineWidth!==-1)return;let r=getComputedStyle(document.documentElement);e._borderLineWidth=parseFloat(r.getPropertyValue(`--outline-width`))||0}static updateDefaultParams(e,t){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(e){return!1}static paste(e,t){E(`Not implemented`)}get propertiesToUpdate(){return[]}get _isDraggable(){return this.#w}set _isDraggable(e){this.#w=e,this.div?.classList.toggle(`draggable`,e)}get uid(){return this.annotationElementId||this.id}get isEnterHandled(){return!0}center(){let[e,t]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*t/(e*2),this.y+=this.width*e/(t*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*t/(e*2),this.y-=this.width*e/(t*2);break;default:this.x-=this.width/2,this.y-=this.height/2}this.fixAndSetPosition()}addCommands(e){this._uiManager.addCommands(e)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=this.#T}setParent(e){e===null?(this.#W(),this.#d?.remove(),this.#d=null):(this.pageIndex=e.pageIndex,this.pageDimensions=e.pageDimensions),this.parent=e}focusin(e){this._focusEventsAllowed&&(this.#m?this.#m=!1:this.parent.setSelected(this))}focusout(e){this._focusEventsAllowed&&this.isAttachedToDOM&&(e.relatedTarget?.closest(`#${this.id}`)||(e.preventDefault(),this.parent?.isMultipleSelection||this.commitOrRemove()))}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.isInEditMode()&&this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(e,t,n,r){let[i,a]=this.parentDimensions;[n,r]=this.screenToPageTranslation(n,r),this.x=(e+n)/i,this.y=(t+r)/a,this.fixAndSetPosition()}_moveAfterPaste(e,t){if(this.isClone){delete this.isClone;return}let[n,r]=this.parentDimensions;this.setAt(e*n,t*r,this.width*n,this.height*r),this._onTranslated()}#E([e,t],n,r){[n,r]=this.screenToPageTranslation(n,r),this.x+=n/e,this.y+=r/t,this._onTranslating(this.x,this.y),this.fixAndSetPosition()}translate(e,t){this.#E(this.parentDimensions,e,t)}translateInPage(e,t){this.#h||=[this.x,this.y,this.width,this.height],this.#E(this.pageDimensions,e,t),this.div.scrollIntoView({block:`nearest`})}translationDone(){this._onTranslated(this.x,this.y)}drag(e,t){this.#h||=[this.x,this.y,this.width,this.height];let{div:n,parentDimensions:[r,i]}=this;if(this.x+=e/r,this.y+=t/i,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){let{x:e,y:t}=this.div.getBoundingClientRect();this.parent.findNewParent(this,e,t)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:a,y:o}=this,[s,c]=this.getBaseTranslation();a+=s,o+=c;let{style:l}=n;l.left=`${(100*a).toFixed(2)}%`,l.top=`${(100*o).toFixed(2)}%`,this._onTranslating(a,o),n.scrollIntoView({block:`nearest`})}_onTranslating(e,t){}_onTranslated(e,t){}get _hasBeenMoved(){return!!this.#h&&(this.#h[0]!==this.x||this.#h[1]!==this.y)}get _hasBeenResized(){return!!this.#h&&(this.#h[2]!==this.width||this.#h[3]!==this.height)}getBaseTranslation(){let[t,n]=this.parentDimensions,{_borderLineWidth:r}=e,i=r/t,a=r/n;switch(this.rotation){case 90:return[-i,a];case 180:return[i,a];case 270:return[i,-a];default:return[-i,-a]}}get _mustFixPosition(){return!0}fixAndSetPosition(e=this.rotation){let{div:{style:t},pageDimensions:[n,r]}=this,{x:i,y:a,width:o,height:s}=this;if(o*=n,s*=r,i*=n,a*=r,this._mustFixPosition)switch(e){case 0:i=L(i,0,n-o),a=L(a,0,r-s);break;case 90:i=L(i,0,n-s),a=L(a,o,r);break;case 180:i=L(i,o,n),a=L(a,s,r);break;case 270:i=L(i,s,n),a=L(a,0,r-o)}this.x=i/=n,this.y=a/=r;let[c,l]=this.getBaseTranslation();i+=c,a+=l,t.left=`${(100*i).toFixed(2)}%`,t.top=`${(100*a).toFixed(2)}%`,this.moveInDOM()}static#D(e,t,n){switch(n){case 90:return[t,-e];case 180:return[-e,-t];case 270:return[-t,e];default:return[e,t]}}screenToPageTranslation(t,n){return e.#D(t,n,this.parentRotation)}pageTranslationToScreen(t,n){return e.#D(t,n,360-this.parentRotation)}#O(e){switch(e){case 90:{let[e,t]=this.pageDimensions;return[0,-e/t,t/e,0]}case 180:return[-1,0,0,-1];case 270:{let[e,t]=this.pageDimensions;return[0,e/t,-t/e,0]}default:return[1,0,0,1]}}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){let{parentScale:e,pageDimensions:[t,n]}=this;return[t*e,n*e]}setDims(){let{div:{style:e},width:t,height:n}=this;e.width=`${(100*t).toFixed(2)}%`,e.height=`${(100*n).toFixed(2)}%`}getInitialTranslation(){return[0,0]}#k(){if(this.#c)return;this.#c=document.createElement(`div`),this.#c.classList.add(`resizers`);let e=this._willKeepAspectRatio?[`topLeft`,`topRight`,`bottomRight`,`bottomLeft`]:[`topLeft`,`topMiddle`,`topRight`,`middleRight`,`bottomRight`,`bottomMiddle`,`bottomLeft`,`middleLeft`],t=this._uiManager._signal;for(let n of e){let e=document.createElement(`div`);this.#c.append(e),e.classList.add(`resizer`,n),e.setAttribute(`data-resizer-name`,n),e.addEventListener(`pointerdown`,this.#A.bind(this,n),{signal:t}),e.addEventListener(`contextmenu`,R,{signal:t}),e.tabIndex=-1}this.div.prepend(this.#c)}#A(e,t){t.preventDefault();let{isMac:n}=F.platform;if(t.button!==0||t.ctrlKey&&n)return;this.#n?.toggle(!1);let r=this._isDraggable;this._isDraggable=!1,this.#l=[t.screenX,t.screenY];let i=new AbortController,a=this._uiManager.combinedSignal(i);this.parent.togglePointerEvents(!1),window.addEventListener(`pointermove`,this.#N.bind(this,e),{passive:!0,capture:!0,signal:a}),window.addEventListener(`touchmove`,z,{passive:!1,signal:a}),window.addEventListener(`contextmenu`,R,{signal:a}),this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};let o=this.parent.div.style.cursor,s=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(t.target).cursor;let c=()=>{i.abort(),this.parent.togglePointerEvents(!0),this.#n?.toggle(!0),this._isDraggable=r,this.parent.div.style.cursor=o,this.div.style.cursor=s,this.#M()};window.addEventListener(`pointerup`,c,{signal:a}),window.addEventListener(`blur`,c,{signal:a})}#j(e,t,n,r){this.width=n,this.height=r,this.x=e,this.y=t,this.setDims(),this.fixAndSetPosition(),this._onResized()}_onResized(){}#M(){if(!this.#u)return;let{savedX:e,savedY:t,savedWidth:n,savedHeight:r}=this.#u;this.#u=null;let i=this.x,a=this.y,o=this.width,s=this.height;(i!==e||a!==t||o!==n||s!==r)&&this.addCommands({cmd:this.#j.bind(this,i,a,o,s),undo:this.#j.bind(this,e,t,n,r),mustExec:!0})}static _round(e){return Math.round(e*1e4)/1e4}#N(t,n){let[r,i]=this.parentDimensions,a=this.x,o=this.y,s=this.width,c=this.height,l=e.MIN_SIZE/r,u=e.MIN_SIZE/i,d=this.#O(this.rotation),f=(e,t)=>[d[0]*e+d[2]*t,d[1]*e+d[3]*t],p=this.#O(360-this.rotation),m=(e,t)=>[p[0]*e+p[2]*t,p[1]*e+p[3]*t],h,g,_=!1,v=!1;switch(t){case`topLeft`:_=!0,h=(e,t)=>[0,0],g=(e,t)=>[e,t];break;case`topMiddle`:h=(e,t)=>[e/2,0],g=(e,t)=>[e/2,t];break;case`topRight`:_=!0,h=(e,t)=>[e,0],g=(e,t)=>[0,t];break;case`middleRight`:v=!0,h=(e,t)=>[e,t/2],g=(e,t)=>[0,t/2];break;case`bottomRight`:_=!0,h=(e,t)=>[e,t],g=(e,t)=>[0,0];break;case`bottomMiddle`:h=(e,t)=>[e/2,t],g=(e,t)=>[e/2,0];break;case`bottomLeft`:_=!0,h=(e,t)=>[0,t],g=(e,t)=>[e,0];break;case`middleLeft`:v=!0,h=(e,t)=>[0,t/2],g=(e,t)=>[e,t/2]}let y=h(s,c),b=g(s,c),x=f(...b),S=e._round(a+x[0]),C=e._round(o+x[1]),w=1,T=1,E,D;if(n.fromKeyboard)({deltaX:E,deltaY:D}=n);else{let{screenX:e,screenY:t}=n,[r,i]=this.#l;[E,D]=this.screenToPageTranslation(e-r,t-i),this.#l[0]=e,this.#l[1]=t}if([E,D]=m(E/r,D/i),_){let e=Math.hypot(s,c);w=T=Math.max(Math.min(Math.hypot(b[0]-y[0]-E,b[1]-y[1]-D)/e,1/s,1/c),l/s,u/c)}else v?w=L(Math.abs(b[0]-y[0]-E),l,1)/s:T=L(Math.abs(b[1]-y[1]-D),u,1)/c;let O=e._round(s*w),k=e._round(c*T);x=f(...g(O,k));let A=S-x[0],j=C-x[1];this.#h||=[this.x,this.y,this.width,this.height],this.width=O,this.height=k,this.x=A,this.y=j,this.setDims(),this.fixAndSetPosition(),this._onResizing()}_onResizing(){}altTextFinish(){this.#n?.finish()}get toolbarButtons(){return null}async addEditToolbar(){if(this._editToolbar||this.#_)return this._editToolbar;this._editToolbar=new Ye(this),this.div.append(this._editToolbar.render());let{toolbarButtons:e}=this;if(e)for(let[t,n]of e)await this._editToolbar.addButton(t,n);return this.hasComment||this._editToolbar.addButton(`comment`,this.addCommentButton()),this._editToolbar.addButton(`delete`),this._editToolbar}addCommentButtonInToolbar(){this._editToolbar?.addButtonBefore(`comment`,this.addCommentButton(),`.deleteButton`)}removeCommentButtonFromToolbar(){this._editToolbar?.removeButton(`comment`)}removeEditToolbar(){this._editToolbar?.remove(),this._editToolbar=null,this.#n?.destroy()}addContainer(e){let t=this._editToolbar?.div;t?t.before(e):this.div.append(e)}getClientDimensions(){return this.div.getBoundingClientRect()}createAltText(){return this.#n||(at.initialize(e._l10n),this.#n=new at(this),this.#e&&=(this.#n.data=this.#e,null)),this.#n}get altTextData(){return this.#n?.data}set altTextData(e){this.#n&&(this.#n.data=e)}get guessedAltText(){return this.#n?.guessedText}async setGuessedAltText(e){await this.#n?.setGuessedText(e)}serializeAltText(e){return this.#n?.serialize(e)}hasAltText(){return!!this.#n&&!this.#n.isEmpty()}hasAltTextData(){return this.#n?.hasData()??!1}focusCommentButton(){this.#r?.focusButton()}addCommentButton(){return this.canAddComment?this.#r||=new ot(this):null}addStandaloneCommentButton(){if(this._uiManager.hasCommentManager()){if(this.#i){this._uiManager.isEditingMode()&&this.#i.classList.remove(`hidden`);return}this.hasComment&&(this.#i=this.#r.renderForStandalone(),this.div.append(this.#i))}}removeStandaloneCommentButton(){this.#r.removeStandaloneCommentButton(),this.#i=null}hideStandaloneCommentButton(){this.#i?.classList.add(`hidden`)}get comment(){if(!this.#r)return null;let{data:{richText:e,text:t,date:n,deleted:r}}=this.#r;return{text:t,richText:e,date:n,deleted:r,color:this.getNonHCMColor(),opacity:this.opacity??1}}set comment(e){this.#r||=new ot(this),typeof e==`object`&&e?this.#r.restoreData(e):this.#r.data=e,this.hasComment?(this.removeCommentButtonFromToolbar(),this.addStandaloneCommentButton(),this._uiManager.updateComment(this)):(this.addCommentButtonInToolbar(),this.removeStandaloneCommentButton(),this._uiManager.removeComment(this))}setCommentData({comment:e,popupRef:t,richText:n}){if(!t||(this.#r||=new ot(this),this.#r.setInitialText(e,n),!this.annotationElementId))return;let r=this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);r&&this.updateFromAnnotationLayer(r)}get hasEditedComment(){return this.#r?.hasBeenEdited()}get hasDeletedComment(){return this.#r?.isDeleted()}get hasComment(){return!!this.#r&&!this.#r.isEmpty()&&!this.#r.isDeleted()}async editComment(e){this.#r||=new ot(this),this.#r.edit(e)}toggleComment(e,t=void 0){this.hasComment&&this._uiManager.toggleComment(this,e,t)}setSelectedCommentButton(e){this.#r.setSelectedButton(e)}addComment(e){if(this.hasEditedComment){let[,,,t]=e.rect,[n]=this.pageDimensions,[r]=this.pageTranslation,i=r+n+1,a=t-100,o=i+180;e.popup={contents:this.comment.text,deleted:this.comment.deleted,rect:[i,a,o,t]}}}updateFromAnnotationLayer({popup:{contents:e,deleted:t}}){this.#r.data=t?null:e}get parentBoundingClientRect(){return this.parent.boundingClientRect}render(){let e=this.div=document.createElement(`div`);e.setAttribute(`data-editor-rotation`,(360-this.rotation)%360),e.className=this.name,e.setAttribute(`id`,this.id),e.tabIndex=this.#a?-1:0,e.setAttribute(`role`,`application`),this.defaultL10nId&&e.setAttribute(`data-l10n-id`,this.defaultL10nId),this._isVisible||e.classList.add(`hidden`),this.setInForeground(),this.#z();let[t,n]=this.parentDimensions;this.parentRotation%180!=0&&(e.style.maxWidth=`${(100*n/t).toFixed(2)}%`,e.style.maxHeight=`${(100*t/n).toFixed(2)}%`);let[r,i]=this.getInitialTranslation();return this.translate(r,i),Qe(this,e,[`keydown`,`pointerdown`,`dblclick`]),this.isResizable&&this._uiManager._supportsPinchToZoom&&(this.#C||=new st({container:e,isPinchingDisabled:()=>!this.isSelected,onPinchStart:this.#P.bind(this),onPinching:this.#F.bind(this),onPinchEnd:this.#I.bind(this),signal:this._uiManager._signal})),this.addStandaloneCommentButton(),this._uiManager._editorUndoBar?.hide(),e}#P(){this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height},this.#n?.toggle(!1),this.parent.togglePointerEvents(!1)}#F(t,n,r){let i=.7,a=r/n*i+1-i;if(a===1)return;let o=this.#O(this.rotation),s=(e,t)=>[o[0]*e+o[2]*t,o[1]*e+o[3]*t],[c,l]=this.parentDimensions,u=this.x,d=this.y,f=this.width,p=this.height,m=e.MIN_SIZE/c,h=e.MIN_SIZE/l;a=Math.max(Math.min(a,1/f,1/p),m/f,h/p);let g=e._round(f*a),_=e._round(p*a);if(g===f&&_===p)return;this.#h||=[u,d,f,p];let v=s(f/2,p/2),y=e._round(u+v[0]),b=e._round(d+v[1]),x=s(g/2,_/2);this.x=y-x[0],this.y=b-x[1],this.width=g,this.height=_,this.setDims(),this.fixAndSetPosition(),this._onResizing()}#I(){this.#n?.toggle(!0),this.parent.togglePointerEvents(!0),this.#M()}pointerdown(e){let{isMac:t}=F.platform;if(e.button!==0||e.ctrlKey&&t){e.preventDefault();return}if(this.#m=!0,this._isDraggable){this.#R(e);return}this.#L(e)}#L(e){let{isMac:t}=F.platform;e.ctrlKey&&!t||e.shiftKey||e.metaKey&&t?this.parent.toggleSelected(this):this.parent.setSelected(this)}#R(e){let{isSelected:t}=this;this._uiManager.setUpDragSession();let n=!1,r=new AbortController,i=this._uiManager.combinedSignal(r),a={capture:!0,passive:!1,signal:i},o=e=>{r.abort(),this.#o=null,this.#m=!1,this._uiManager.endDragSession()||this.#L(e),n&&this._onStopDragging()};t&&(this.#b=e.clientX,this.#x=e.clientY,this.#o=e.pointerId,this.#s=e.pointerType,window.addEventListener(`pointermove`,e=>{n||(n=!0,this._uiManager.toggleComment(this,!0,!1),this._onStartDragging());let{clientX:t,clientY:r,pointerId:i}=e;if(i!==this.#o){z(e);return}let[a,o]=this.screenToPageTranslation(t-this.#b,r-this.#x);this.#b=t,this.#x=r,this._uiManager.dragSelectedEditors(a,o)},a),window.addEventListener(`touchmove`,z,a),window.addEventListener(`pointerdown`,e=>{e.pointerType===this.#s&&(this.#C||e.isPrimary)&&o(e),z(e)},a));let s=e=>{if(!this.#o||this.#o===e.pointerId){o(e);return}z(e)};window.addEventListener(`pointerup`,s,{signal:i}),window.addEventListener(`blur`,s,{signal:i})}_onStartDragging(){}_onStopDragging(){}moveInDOM(){this.#y&&clearTimeout(this.#y),this.#y=setTimeout(()=>{this.#y=null,this.parent?.moveEditorInDOM(this)},0)}_setParentAndPosition(e,t,n){e.changeParent(this),this.x=t,this.y=n,this.fixAndSetPosition(),this._onTranslated()}getRect(e,t,n=this.rotation){let r=this.parentScale,[i,a]=this.pageDimensions,[o,s]=this.pageTranslation,c=e/r,l=t/r,u=this.x*i,d=this.y*a,f=this.width*i,p=this.height*a;switch(n){case 0:return[u+c+o,a-d-l-p+s,u+c+f+o,a-d-l+s];case 90:return[u+l+o,a-d+c+s,u+l+p+o,a-d+c+f+s];case 180:return[u-c-f+o,a-d+l+s,u-c+o,a-d+l+p+s];case 270:return[u-l-p+o,a-d-c-f+s,u-l+o,a-d-c+s];default:throw Error(`Invalid rotation`)}}getRectInCurrentCoords(e,t){let[n,r,i,a]=e,o=i-n,s=a-r;switch(this.rotation){case 0:return[n,t-a,o,s];case 90:return[n,t-r,s,o];case 180:return[i,t-r,o,s];case 270:return[i,t-a,s,o];default:throw Error(`Invalid rotation`)}}getPDFRect(){return this.getRect(0,0)}getNonHCMColor(){return this.color&&e._colorManager.convert(this._uiManager.getNonHCMColor(this.color))}onUpdatedColor(){this.#r?.onUpdatedColor()}getData(){let{comment:{text:e,color:t,date:n,opacity:r,deleted:i,richText:a},uid:o,pageIndex:s,creationDate:c,modificationDate:l}=this;return{id:o,pageIndex:s,rect:this.getPDFRect(),richText:a,contentsObj:{str:e},creationDate:c,modificationDate:n||l,popupRef:!i,color:t,opacity:r}}onceAdded(e){}isEmpty(){return!1}enableEditMode(){return!this.isInEditMode()&&(this.parent.setEditingState(!1),this.#_=!0,!0)}disableEditMode(){return this.isInEditMode()?(this.parent.setEditingState(!0),this.#_=!1,!0):!1}isInEditMode(){return this.#_}shouldGetKeyboardEvents(){return this.#v}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){let{top:e,left:t,bottom:n,right:r}=this.getClientDimensions(),{innerHeight:i,innerWidth:a}=window;return t0&&e0}#z(){if(this.#f||!this.div)return;this.#f=new AbortController;let e=this._uiManager.combinedSignal(this.#f);this.div.addEventListener(`focusin`,this.focusin.bind(this),{signal:e}),this.div.addEventListener(`focusout`,this.focusout.bind(this),{signal:e})}rebuild(){this.#z()}rotate(e){}resize(){}serializeDeleted(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:this._initialData?.popupRef||``}}serialize(e=!1,t=null){return{annotationType:this.mode,pageIndex:this.pageIndex,rect:this.getPDFRect(),rotation:this.rotation,structTreeParentId:this._structTreeParentId,popupRef:this._initialData?.popupRef||``}}static async deserialize(e,t,n){let r=new this.prototype.constructor({parent:t,id:n.getId(),uiManager:n,annotationElementId:e.annotationElementId,creationDate:e.creationDate,modificationDate:e.modificationDate});r.rotation=e.rotation,r.#e=e.accessibilityData,r._isCopy=e.isCopy||!1;let[i,a]=r.pageDimensions,[o,s,c,l]=r.getRectInCurrentCoords(e.rect,a);return r.x=o/i,r.y=s/a,r.width=c/i,r.height=l/a,r}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){if(this.#f?.abort(),this.#f=null,this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),this.hideCommentPopup(),this.#y&&=(clearTimeout(this.#y),null),this.#W(),this.removeEditToolbar(),this.#S){for(let e of this.#S.values())clearTimeout(e);this.#S=null}this.parent=null,this.#C?.destroy(),this.#C=null,this.#d?.remove(),this.#d=null}get isResizable(){return!1}makeResizable(){this.isResizable&&(this.#k(),this.#c.classList.remove(`hidden`))}get toolbarPosition(){return null}get commentButtonPosition(){return this._uiManager.direction===`ltr`?[1,0]:[0,0]}get commentButtonPositionInPage(){let{commentButtonPosition:[t,n]}=this,[r,i,a,o]=this.getPDFRect();return[e._round(r+(a-r)*t),e._round(i+(o-i)*(1-n))]}get commentButtonColor(){return this._uiManager.makeCommentColor(this.getNonHCMColor(),this.opacity)}get commentPopupPosition(){return this.#r.commentPopupPositionInLayer}set commentPopupPosition(e){this.#r.commentPopupPositionInLayer=e}hasDefaultPopupPosition(){return this.#r.hasDefaultPopupPosition()}get commentButtonWidth(){return this.#r.commentButtonWidth}get elementBeforePopup(){return this.div}setCommentButtonStates(e){this.#r?.setCommentButtonStates(e)}keydown(t){if(!this.isResizable||t.target!==this.div||t.key!==`Enter`)return;this._uiManager.setSelected(this),this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};let n=this.#c.children;if(!this.#t){this.#t=Array.from(n);let t=this.#B.bind(this),r=this.#V.bind(this),i=this._uiManager._signal;for(let n of this.#t){let a=n.getAttribute(`data-resizer-name`);n.setAttribute(`role`,`spinbutton`),n.addEventListener(`keydown`,t,{signal:i}),n.addEventListener(`blur`,r,{signal:i}),n.addEventListener(`focus`,this.#H.bind(this,a),{signal:i}),n.setAttribute(`data-l10n-id`,e._l10nResizer[a])}}let r=this.#t[0],i=0;for(let e of n){if(e===r)break;i++}let a=(360-this.rotation+this.parentRotation)%360/90*(this.#t.length/4);if(a!==i){if(ai)for(let e=0;e{this.div?.classList.contains(`selectedEditor`)&&this._editToolbar?.show()});return}this._editToolbar?.show(),this.#n?.toggleAltTextBadge(!1)}focus(){this.div&&!this.div.contains(document.activeElement)&&setTimeout(()=>this.div?.focus({preventScroll:!0}),0)}unselect(){this.isSelected&&(this.isSelected=!1,this.#c?.classList.add(`hidden`),this.div?.classList.remove(`selectedEditor`),this.div?.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),this._editToolbar?.hide(),this.#n?.toggleAltTextBadge(!0),this.hideCommentPopup())}hideCommentPopup(){this.hasComment&&this._uiManager.toggleComment(null)}updateParams(e,t){}disableEditing(){}enableEditing(){}get canChangeContent(){return!1}enterInEditMode(){this.canChangeContent&&(this.enableEditMode(),this.div.focus())}dblclick(e){e.target.nodeName!==`BUTTON`&&(this.enterInEditMode(),this.parent.updateToolbar({mode:this.constructor._editorType,editId:this.uid}))}getElementForAltText(){return this.div}get contentDiv(){return this.div}get isEditing(){return this.#g}set isEditing(e){this.#g=e,this.parent&&(e?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:`added`}}get telemetryFinalData(){return null}_reportTelemetry(t,n=!1){if(n){this.#S||=new Map;let{action:n}=t,r=this.#S.get(n);r&&clearTimeout(r),r=setTimeout(()=>{this._reportTelemetry(t),this.#S.delete(n),this.#S.size===0&&(this.#S=null)},e._telemetryTimeout),this.#S.set(n,r);return}t.type||=this.editorType,this._uiManager._eventBus.dispatch(`reporttelemetry`,{source:this,details:{type:`editing`,data:t}})}show(e=this._isVisible){this.div.classList.toggle(`hidden`,!e),this._isVisible=e}enable(){this.div&&(this.div.tabIndex=0),this.#a=!1}disable(){this.div&&(this.div.tabIndex=-1),this.#a=!0}updateFakeAnnotationElement(e){if(!this.#d&&!this.deleted){this.#d=e.addFakeAnnotation(this);return}if(this.deleted){this.#d.remove(),this.#d=null;return}(this.hasEditedComment||this._hasBeenMoved||this._hasBeenResized)&&this.#d.updateEdited({rect:this.getPDFRect(),popup:this.comment})}renderAnnotationElement(e){if(this.deleted)return e.hide(),null;let t=e.container.querySelector(`.annotationContent`);if(!t)t=document.createElement(`div`),t.classList.add(`annotationContent`,this.editorType),e.container.prepend(t);else if(t.nodeName===`CANVAS`){let e=t;t=document.createElement(`div`),t.classList.add(`annotationContent`,this.editorType),e.before(t)}return t}resetAnnotationElement(e){let{firstElementChild:t}=e.container;t?.nodeName===`DIV`&&t.classList.contains(`annotationContent`)&&t.remove()}},ct=class extends U{constructor(e){super(e),this.annotationElementId=e.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}},lt=3285377520,W=4294901760,ut=65535,dt=class{constructor(e){this.h1=e?e&4294967295:lt,this.h2=e?e&4294967295:lt}update(e){let t,n;if(typeof e==`string`){t=new Uint8Array(e.length*2),n=0;for(let r=0,i=e.length;r>>8,t[n++]=i&255)}}else if(ArrayBuffer.isView(e))t=e.slice(),n=t.byteLength;else throw Error(`Invalid data format, must be a string or TypedArray.`);let r=n>>2,i=n-r*4,a=new Uint32Array(t.buffer,0,r),o=0,s=0,c=this.h1,l=this.h2,u=3432918353,d=461845907,f=11601,p=13715;for(let e=0;e>>17,o=o*d&W|o*p&ut,c^=o,c=c<<13|c>>>19,c=c*5+3864292196):(s=a[e],s=s*u&W|s*f&ut,s=s<<15|s>>>17,s=s*d&W|s*p&ut,l^=s,l=l<<13|l>>>19,l=l*5+3864292196);switch(o=0,i){case 3:o^=t[r*4+2]<<16;case 2:o^=t[r*4+1]<<8;case 1:o^=t[r*4],o=o*u&W|o*f&ut,o=o<<15|o>>>17,o=o*d&W|o*p&ut,r&1?c^=o:l^=o}this.h1=c,this.h2=l}hexdigest(){let e=this.h1,t=this.h2;return e^=t>>>1,e=e*3981806797&W|e*36045&ut,t=t*4283543511&W|((t<<16|e>>>16)*2950163797&W)>>>16,e^=t>>>1,e=e*444984403&W|e*60499&ut,t=t*3301882366&W|((t<<16|e>>>16)*3120437893&W)>>>16,e^=t>>>1,(e>>>0).toString(16).padStart(8,`0`)+(t>>>0).toString(16).padStart(8,`0`)}},ft=Object.freeze({map:null,hash:``,transfer:void 0}),pt=class{#e=!1;#t=null;#n=null;#r=new Map;onSetModified=null;onResetModified=null;onAnnotationEditor=null;getValue(e,t){let n=this.#r.get(e);return n===void 0?t:Object.assign(t,n)}getRawValue(e){return this.#r.get(e)}remove(e){let t=this.#r.get(e);t!==void 0&&(t instanceof U&&this.#n.delete(t.annotationElementId),this.#r.delete(e),this.#r.size===0&&this.resetModified(),!this.#r.values().some(e=>e instanceof U)&&this.onAnnotationEditor?.(null))}setValue(e,t){let n=this.#r.get(e),r=!1;if(n!==void 0)for(let[e,i]of Object.entries(t))n[e]!==i&&(r=!0,n[e]=i);else r=!0,this.#r.set(e,t);r&&this.#i(),t instanceof U&&((this.#n||=new Map).set(t.annotationElementId,t),this.onAnnotationEditor?.(t.constructor._type))}has(e){return this.#r.has(e)}get size(){return this.#r.size}#i(){this.#e||(this.#e=!0,this.onSetModified?.())}resetModified(){this.#e&&(this.#e=!1,this.onResetModified?.())}get print(){return new mt(this)}get serializable(){if(this.#r.size===0)return ft;let e=new Map,t=new dt,n=[],r=Object.create(null),i=!1;for(let[n,a]of this.#r){let o=a instanceof U?a.serialize(!1,r):a;a.page&&(a.pageIndex=a.page._pageIndex,delete a.page),o&&(e.set(n,o),t.update(`${n}:${JSON.stringify(o)}`),i||=!!o.bitmap)}if(i)for(let t of e.values())t.bitmap&&n.push(t.bitmap);return e.size>0?{map:e,hash:t.hexdigest(),transfer:n}:ft}get editorStats(){let e=null,t=new Map,n=0,r=0;for(let i of this.#r.values()){if(!(i instanceof U)){i.popup&&(i.popup.deleted?r+=1:n+=1);continue}i.isCommentDeleted?r+=1:i.hasEditedComment&&(n+=1);let a=i.telemetryFinalData;if(!a)continue;let{type:o}=a;t.getOrInsertComputed(o,()=>Object.getPrototypeOf(i).constructor),e||=Object.create(null);let s=e[o]||=new Map;for(let[e,t]of Object.entries(a)){if(e===`type`)continue;let n=s.getOrInsertComputed(e,me);n.set(t,(n.get(t)??0)+1)}}if((r>0||n>0)&&(e||=Object.create(null),e.comments={deleted:r,edited:n}),!e)return null;for(let[n,r]of t)e[n]=r.computeTelemetryFinalData(e[n]);return e}resetModifiedIds(){this.#t=null}updateEditor(e,t){let n=this.#n?.get(e);return n?(n.updateFromAnnotationLayer(t),!0):!1}getEditor(e){return this.#n?.get(e)||null}get modifiedIds(){if(this.#t)return this.#t;let e=[];if(this.#n)for(let t of this.#n.values())t.serialize()&&e.push(t.annotationElementId);let t=``;if(e.length){let n=new dt;n.update(e.join(`,`)),t=n.hexdigest()}return this.#t={ids:new Set(e),hash:t}}[Symbol.iterator](){return this.#r.entries()}},mt=class extends pt{#e=ft;constructor(e){super();let{serializable:t}=e;if(t===ft)return;let{map:n,hash:r,transfer:i}=t,a=structuredClone(n,i?{transfer:i}:null);this.#e={map:a,hash:r,transfer:[]}}get print(){E(`Should not call PrintAnnotationStorage.print`)}get serializable(){return this.#e}get modifiedIds(){return M(this,`modifiedIds`,{ids:new Set,hash:``})}},ht=`__forcedDependency`,{floor:gt,ceil:_t}=Math;function vt(e,t,n,r,i,a){e[t*4+0]=Math.min(e[t*4+0],n),e[t*4+1]=Math.min(e[t*4+1],r),e[t*4+2]=Math.max(e[t*4+2],i),e[t*4+3]=Math.max(e[t*4+3],a)}function yt(e,t,n,r,i){let a;e?(e<0&&(a=i[0],i[0]=i[2],i[2]=a),i[0]*=e,i[2]*=e,t<0&&(a=i[1],i[1]=i[3],i[3]=a),i[1]*=t,i[3]*=t):i.fill(0),i[0]+=n,i[1]+=r,i[2]+=n,i[3]+=r}var bt=new Uint32Array(new Uint8Array([255,255,0,0]).buffer)[0],xt=class{#e;#t;constructor(e,t){this.#e=e,this.#t=t}get length(){return this.#e.length}isEmpty(e){return this.#e[e]===bt}minX(e){return this.#t[e*4+0]/256}minY(e){return this.#t[e*4+1]/256}maxX(e){return(this.#t[e*4+2]+1)/256}maxY(e){return(this.#t[e*4+3]+1)/256}},St=(e,t)=>e?.getOrInsertComputed(t,()=>({dependencies:new Set,isRenderingOperation:!1})),Ct=class{#e=[[1,0,0,1,0,0]];#t=[-1/0,-1/0,1/0,1/0];#n=new Float64Array(n);_pendingBBoxIdx=-1;#r;#i;#a;#o;_savesStack=[];_markedContentStack=[];constructor(e,t){this.#r=e.width,this.#i=e.height,this.#s(t)}growOperationsCount(e){e>=this.#o.length&&this.#s(e,this.#o)}#s(e,t){let n=new ArrayBuffer(e*4);this.#a=new Uint8ClampedArray(n),this.#o=new Uint32Array(n),t&&t.length>0?(this.#o.set(t),this.#o.fill(bt,t.length)):this.#o.fill(bt)}get clipBox(){return this.#t}save(e){return this.#t={__proto__:this.#t},this._savesStack.push(e),this}restore(e,t){let n=Object.getPrototypeOf(this.#t);if(n===null)return this;this.#t=n;let r=this._savesStack.pop();return r!==void 0&&(t?.(r,e),this.#o[e]=this.#o[r]),this}recordOpenMarker(e){return this._savesStack.push(e),this}getOpenMarker(){return this._savesStack.length===0?null:this._savesStack.at(-1)}recordCloseMarker(e,t){let n=this._savesStack.pop();return n!==void 0&&(t?.(n,e),this.#o[e]=this.#o[n]),this}beginMarkedContent(e){return this._markedContentStack.push(e),this}endMarkedContent(e,t){let n=this._markedContentStack.pop();return n!==void 0&&(t?.(n,e),this.#o[e]=this.#o[n]),this}pushBaseTransform(e){return this.#e.push(I.multiplyByDOMMatrix(this.#e.at(-1),e.getTransform())),this}popBaseTransform(){return this.#e.length>1&&this.#e.pop(),this}resetBBox(e){return this._pendingBBoxIdx!==e&&(this._pendingBBoxIdx=e,this.#n.set(n,0)),this}recordClipBox(e,t,r,i,a,o){let s=I.multiplyByDOMMatrix(this.#e.at(-1),t.getTransform()),c=n.slice();I.axialAlignedBoundingBox([r,a,i,o],s,c);let l=I.intersect(this.#t,c);return l?(this.#t[0]=l[0],this.#t[1]=l[1],this.#t[2]=l[2],this.#t[3]=l[3]):(this.#t[0]=this.#t[1]=1/0,this.#t[2]=this.#t[3]=-1/0),this}recordBBox(e,t,r,i,a,o){let s=this.#t;if(s[0]===1/0)return this;let c=I.multiplyByDOMMatrix(this.#e.at(-1),t.getTransform());if(s[0]===-1/0)return I.axialAlignedBoundingBox([r,a,i,o],c,this.#n),this;let l=n.slice();return I.axialAlignedBoundingBox([r,a,i,o],c,l),this.#n[0]=L(l[0],s[0],this.#n[0]),this.#n[1]=L(l[1],s[1],this.#n[1]),this.#n[2]=L(l[2],this.#n[2],s[2]),this.#n[3]=L(l[3],this.#n[3],s[3]),this}recordFullPageBBox(e){return this.#n[0]=Math.max(0,this.#t[0]),this.#n[1]=Math.max(0,this.#t[1]),this.#n[2]=Math.min(this.#r,this.#t[2]),this.#n[3]=Math.min(this.#i,this.#t[3]),this}recordOperation(e,t=!1,n){if(this._pendingBBoxIdx!==e)return this;let r=gt(this.#n[0]*256/this.#r),i=gt(this.#n[1]*256/this.#i),a=_t(this.#n[2]*256/this.#r),o=_t(this.#n[3]*256/this.#i);if(vt(this.#a,e,r,i,a,o),n)for(let t of n)for(let n of t)n!==e&&vt(this.#a,n,r,i,a,o);return t||(this._pendingBBoxIdx=-1),this}bboxToClipBoxDropOperation(e){return this._pendingBBoxIdx===e&&(this._pendingBBoxIdx=-1,this.#t[0]=Math.max(this.#t[0],this.#n[0]),this.#t[1]=Math.max(this.#t[1],this.#n[1]),this.#t[2]=Math.min(this.#t[2],this.#n[2]),this.#t[3]=Math.min(this.#t[3],this.#n[3])),this}take(){return new xt(this.#o,this.#a)}takeDebugMetadata(){throw Error(`Unreachable`)}recordSimpleData(e,t){return this}recordIncrementalData(e,t){return this}resetIncrementalData(e,t){return this}recordNamedData(e,t){return this}recordSimpleDataFromNamed(e,t,n){return this}recordFutureForcedDependency(e,t){return this}inheritSimpleDataAsFutureForcedDependencies(e){return this}inheritPendingDependenciesAsFutureForcedDependencies(){return this}recordCharacterBBox(e,t,n,r=1,i=0,a=0,o){return this}getSimpleIndex(e){}recordDependencies(e,t){return this}recordNamedDependency(e,t){return this}recordShowTextOperation(e,t=!1){return this}},wt=class{#e={__proto__:null};#t={__proto__:null,transform:[],moveText:[],sameLineText:[],[ht]:[]};#n=new Map;#r=new Set;#i=new Map;#a;#o;#s;constructor(e,t=!1){this.#s=e,t&&(this.#a=new Map,this.#o=(e,t)=>{St(this.#a,t).dependencies.add(e)})}get clipBox(){return this.#s.clipBox}growOperationsCount(e){this.#s.growOperationsCount(e)}save(e){return this.#e={__proto__:this.#e},this.#t={__proto__:this.#t,transform:{__proto__:this.#t.transform},moveText:{__proto__:this.#t.moveText},sameLineText:{__proto__:this.#t.sameLineText},[ht]:{__proto__:this.#t[ht]}},this.#s.save(e),this}restore(e){this.#s.restore(e,this.#o);let t=Object.getPrototypeOf(this.#e);return t===null?this:(this.#e=t,this.#t=Object.getPrototypeOf(this.#t),this)}recordOpenMarker(e){return this.#s.recordOpenMarker(e,this.#o),this}getOpenMarker(){return this.#s.getOpenMarker()}recordCloseMarker(e){return this.#s.recordCloseMarker(e,this.#o),this}beginMarkedContent(e){return this.#s.beginMarkedContent(e),this}endMarkedContent(e){return this.#s.endMarkedContent(e,this.#o),this}pushBaseTransform(e){return this.#s.pushBaseTransform(e),this}popBaseTransform(){return this.#s.popBaseTransform(),this}recordSimpleData(e,t){return this.#e[e]=t,this}recordIncrementalData(e,t){return this.#t[e].push(t),this}resetIncrementalData(e,t){return this.#t[e].length=0,this}recordNamedData(e,t){return this.#n.set(e,t),this}recordSimpleDataFromNamed(e,t,n){this.#e[e]=this.#n.get(t)??n}recordFutureForcedDependency(e,t){return this.recordIncrementalData(ht,t),this}inheritSimpleDataAsFutureForcedDependencies(e){for(let t of e)t in this.#e&&this.recordFutureForcedDependency(t,this.#e[t]);return this}inheritPendingDependenciesAsFutureForcedDependencies(){for(let e of this.#r)this.recordFutureForcedDependency(ht,e);return this}resetBBox(e){return this.#s.resetBBox(e),this}recordClipBox(e,t,n,r,i,a){return this.#s.recordClipBox(e,t,n,r,i,a),this}recordBBox(e,t,n,r,i,a){return this.#s.recordBBox(e,t,n,r,i,a),this}recordCharacterBBox(e,t,n,r=1,i=0,a=0,o){let s=n.bbox,c,l;if(s&&(c=s[2]!==s[0]&&s[3]!==s[1]&&this.#i.get(n),c!==!1&&(l=[0,0,0,0],I.axialAlignedBoundingBox(s,n.fontMatrix,l),(r!==1||i!==0||a!==0)&&yt(r,-r,i,a,l),c)))return this.recordBBox(e,t,l[0],l[2],l[1],l[3]);if(!o)return this.recordFullPageBBox(e);let u=o();return s&&l&&c===void 0&&(c=l[0]<=i-u.actualBoundingBoxLeft&&l[2]>=i+u.actualBoundingBoxRight&&l[1]<=a-u.actualBoundingBoxAscent&&l[3]>=a+u.actualBoundingBoxDescent,this.#i.set(n,c),c)?this.recordBBox(e,t,l[0],l[2],l[1],l[3]):this.recordBBox(e,t,i-u.actualBoundingBoxLeft,i+u.actualBoundingBoxRight,a-u.actualBoundingBoxAscent,a+u.actualBoundingBoxDescent)}recordFullPageBBox(e){return this.#s.recordFullPageBBox(e),this}getSimpleIndex(e){return this.#e[e]}recordDependencies(e,t){let n=this.#r,r=this.#e,i=this.#t;for(let e of t)e in this.#e?n.add(r[e]):e in i&&i[e].forEach(n.add,n);return this}recordNamedDependency(e,t){return this.#n.has(t)&&this.#r.add(this.#n.get(t)),this}recordOperation(e,t=!1){if(this.recordDependencies(e,[ht]),this.#a){let t=St(this.#a,e),{dependencies:n}=t;this.#r.forEach(n.add,n),this.#s._savesStack.forEach(n.add,n),this.#s._markedContentStack.forEach(n.add,n),n.delete(e),t.isRenderingOperation=!0}let n=!t&&e===this.#s._pendingBBoxIdx;return this.#s.recordOperation(e,t,[this.#r,this.#s._savesStack,this.#s._markedContentStack]),n&&this.#r.clear(),this}recordShowTextOperation(e,t=!1){let n=Array.from(this.#r);this.recordOperation(e,t),this.recordIncrementalData(`sameLineText`,e);for(let e of n)this.recordIncrementalData(`sameLineText`,e);return this}bboxToClipBoxDropOperation(e,t=!1){let n=!t&&e===this.#s._pendingBBoxIdx;return this.#s.bboxToClipBoxDropOperation(e),n&&this.#r.clear(),this}take(){return this.#i.clear(),this.#s.take()}takeDebugMetadata(){return this.#a}},Tt=class e{#e;#t;#n;#r=0;#i=0;constructor(t,n,r){if(t instanceof e&&t.#n===!!r)return t;this.#e=t,this.#t=n,this.#n=!!r}get clipBox(){return this.#e.clipBox}growOperationsCount(){throw Error(`Unreachable`)}save(e){return this.#i++,this.#e.save(this.#t),this}restore(e){return this.#i>0&&(this.#e.restore(this.#t),this.#i--),this}recordOpenMarker(e){return this.#r++,this}getOpenMarker(){return this.#r>0?this.#t:this.#e.getOpenMarker()}recordCloseMarker(e){return this.#r--,this}beginMarkedContent(e){return this}endMarkedContent(e){return this}pushBaseTransform(e){return this.#e.pushBaseTransform(e),this}popBaseTransform(){return this.#e.popBaseTransform(),this}recordSimpleData(e,t){return this.#e.recordSimpleData(e,this.#t),this}recordIncrementalData(e,t){return this.#e.recordIncrementalData(e,this.#t),this}resetIncrementalData(e,t){return this.#e.resetIncrementalData(e,this.#t),this}recordNamedData(e,t){return this}recordSimpleDataFromNamed(e,t,n){return this.#e.recordSimpleDataFromNamed(e,t,this.#t),this}recordFutureForcedDependency(e,t){return this.#e.recordFutureForcedDependency(e,this.#t),this}inheritSimpleDataAsFutureForcedDependencies(e){return this.#e.inheritSimpleDataAsFutureForcedDependencies(e),this}inheritPendingDependenciesAsFutureForcedDependencies(){return this.#e.inheritPendingDependenciesAsFutureForcedDependencies(),this}resetBBox(e){return this.#n||this.#e.resetBBox(this.#t),this}recordClipBox(e,t,n,r,i,a){return this.#n||this.#e.recordClipBox(this.#t,t,n,r,i,a),this}recordBBox(e,t,n,r,i,a){return this.#n||this.#e.recordBBox(this.#t,t,n,r,i,a),this}recordCharacterBBox(e,t,n,r,i,a,o){return this.#n||this.#e.recordCharacterBBox(this.#t,t,n,r,i,a,o),this}recordFullPageBBox(e){return this.#n||this.#e.recordFullPageBBox(this.#t),this}getSimpleIndex(e){return this.#e.getSimpleIndex(e)}recordDependencies(e,t){return this.#e.recordDependencies(this.#t,t),this}recordNamedDependency(e,t){return this.#e.recordNamedDependency(this.#t,t),this}recordOperation(e){return this.#e.recordOperation(this.#t,!0),this}recordShowTextOperation(e){return this.#e.recordShowTextOperation(this.#t,!0),this}bboxToClipBoxDropOperation(e){return this.#n||this.#e.bboxToClipBoxDropOperation(this.#t,!0),this}take(){throw Error(`Unreachable`)}takeDebugMetadata(){throw Error(`Unreachable`)}},G={stroke:[`path`,`transform`,`filter`,`strokeColor`,`strokeAlpha`,`lineWidth`,`lineCap`,`lineJoin`,`miterLimit`,`dash`],fill:[`path`,`transform`,`filter`,`fillColor`,`fillAlpha`,`globalCompositeOperation`,`SMask`],imageXObject:[`transform`,`SMask`,`filter`,`fillAlpha`,`strokeAlpha`,`globalCompositeOperation`],rawFillPath:[`filter`,`fillColor`,`fillAlpha`],showText:[`transform`,`leading`,`charSpacing`,`wordSpacing`,`hScale`,`textRise`,`moveText`,`textMatrix`,`font`,`fontObj`,`filter`,`fillColor`,`textRenderingMode`,`SMask`,`fillAlpha`,`strokeAlpha`,`globalCompositeOperation`,`sameLineText`],transform:[`transform`],transformAndFill:[`transform`,`fillColor`]},Et=class e{#e;#t;#n=4;#r=0;#i=new e.#a(this.#n*6);static#a=F.isFloat16ArraySupported?Float16Array:Float32Array;constructor(e){this.#e=e.width,this.#t=e.height}record(t,r,i,a){if(this.#r===this.#n){this.#n*=2;let t=new e.#a(this.#n*6);t.set(this.#i),this.#i=t}let o=B(t),s;if(a[0]!==1/0){let e=n.slice();I.axialAlignedBoundingBox([0,-i,r,0],o,e);let t=I.intersect(a,e);if(!t)return;let[c,l,u,d]=t;if(c!==e[0]||l!==e[1]||u!==e[2]||d!==e[3]){let e=Math.atan2(o[1],o[0]),t=Math.abs(Math.sin(e)),n=Math.abs(Math.cos(e));if(t<1e-6||n<1e-6||Math.abs(t-n)<1e-6)s=[c,l,c,d,u,l];else{let e=u-c,r=d-l,i=t*t,a=n*n,o=n*t,f=a-i,p=(r*a-e*o)/f;s=[c+(r*o-e*i)/f,l,c,l+p,u,d-p]}}}s||(s=[0,-i,0,0,r,-i],I.applyTransform(s,o,0),I.applyTransform(s,o,2),I.applyTransform(s,o,4)),s[0]/=this.#e,s[1]/=this.#t,s[2]/=this.#e,s[3]/=this.#t,s[4]/=this.#e,s[5]/=this.#t,this.#i.set(s,this.#r*6),this.#r++}take(){return this.#i.subarray(0,this.#r*6)}},Dt=class{#e=new Set;#t=null;constructor({ownerDocument:e=globalThis.document,styleElement:t=null}){this._document=e,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(e){this.nativeFontFaces.add(e),this._document.fonts.add(e)}removeNativeFontFace(e){this.nativeFontFaces.delete(e),this._document.fonts.delete(e)}insertRule(e){let t=this.#n();t.insertRule(e,t.cssRules.length)}#n(){if(this.#t)return this.#t;let e=this._document.defaultView?.CSSStyleSheet||globalThis.CSSStyleSheet;if(!this.styleElement&&e){let{adoptedStyleSheets:t}=this._document;if(t){let n=new e;return t.push(n),this.#t=n}}return this.styleElement||(this.styleElement=this._document.createElement(`style`),this._document.documentElement.getElementsByTagName(`head`)[0].append(this.styleElement)),this.#t=this.styleElement.sheet}clear(){for(let e of this.nativeFontFaces)this._document.fonts.delete(e);if(this.nativeFontFaces.clear(),this.#e.clear(),this.#t){let{adoptedStyleSheets:e}=this._document;e?.includes(this.#t)&&(this._document.adoptedStyleSheets=e.filter(e=>e!==this.#t)),this.#t=null}this.styleElement&&=(this.styleElement.remove(),null)}async loadSystemFont({systemFontInfo:e,disableFontFace:t,_inspectFont:n}){if(!(!e||this.#e.has(e.loadedName))){if(D(!t,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){let{loadedName:t,src:r,style:i}=e,a=new FontFace(t,r,i);this.addNativeFontFace(a);try{await a.load(),this.#e.add(t),n?.(e)}catch{T(`Cannot load system font: ${e.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(a)}return}E(`Not implemented: loadSystemFont without the Font Loading API.`)}}async bind(e){if(e.attached||e.missingFile&&!e.systemFontInfo)return;if(e.attached=!0,e.systemFontInfo){await this.loadSystemFont(e);return}if(this.isFontLoadingAPISupported){let t=e.createNativeFontFace();if(t){this.addNativeFontFace(t);try{await t.loaded}catch(n){throw T(`Failed to load font '${t.family}': '${n}'.`),e.disableFontFace=!0,n}}return}let t=e.createFontFaceRule();if(t){if(this.insertRule(t),this.isSyncFontLoadingSupported)return;await new Promise(t=>{let n=this._queueLoadingCallback(t);this._prepareFontLoadEvent(e,n)})}}get isFontLoadingAPISupported(){let e=!!this._document?.fonts;return M(this,`isFontLoadingAPISupported`,e)}get isSyncFontLoadingSupported(){return M(this,`isSyncFontLoadingSupported`,t||F.platform.isFirefox)}_queueLoadingCallback(e){function t(){for(D(!r.done,`completeRequest() cannot be called twice.`),r.done=!0;n.length>0&&n[0].done;){let e=n.shift();setTimeout(e.callback,0)}}let{loadingRequests:n}=this,r={done:!1,complete:t,callback:e};return n.push(r),r}get _loadTestFont(){let e=atob(`T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==`);return M(this,`_loadTestFont`,e)}_prepareFontLoadEvent(e,t){function n(e,t){return e.charCodeAt(t)<<24|e.charCodeAt(t+1)<<16|e.charCodeAt(t+2)<<8|e.charCodeAt(t+3)&255}function r(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,e&255)}function i(e,t,n,r){let i=e.substring(0,t),a=e.substring(t+n);return i+r+a}let a,o,s=this._document.createElement(`canvas`);s.width=1,s.height=1;let c=s.getContext(`2d`),l=0;function u(e,t){if(++l>30){T(`Load test font never loaded.`),t();return}if(c.font=`30px `+e,c.fillText(`.`,0,20),c.getImageData(0,0,1,1).data[3]>0){t();return}setTimeout(u.bind(null,e,t))}let d=`lt${Date.now()}${this.loadTestFontId++}`,f=this._loadTestFont;f=i(f,976,d.length,d);let p=1482184792,m=n(f,16);for(a=0,o=d.length-3;a{g.remove(),t.complete()})}},Ot=class{compiledGlyphs=Object.create(null);#e;constructor(e,t=null,n,r){this.#e=e,this._inspectFont=t,n&&(this.charProcOperatorList=n),r&&Object.assign(this,r)}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let e;if(!this.cssFontInfo)e=new FontFace(this.loadedName,this.data,{});else{let t={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(t.style=`oblique ${this.cssFontInfo.italicAngle}deg`),e=new FontFace(this.cssFontInfo.fontFamily,this.data,t)}return this._inspectFont?.(this),e}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;let e=`url(data:${this.mimetype};base64,${this.data.toBase64()});`,t;if(!this.cssFontInfo)t=`@font-face {font-family:"${this.loadedName}";src:${e}}`;else{let n=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(n+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),t=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${n}src:${e}}`}return this._inspectFont?.(this,e),t}getPathGenerator(e,t){if(this.compiledGlyphs[t]!==void 0)return this.compiledGlyphs[t];let n=this.loadedName+`_path_`+t,r;try{r=e.get(n)}catch(e){T(`getPathGenerator - ignoring character: "${e}".`)}let i=Je(r?.path);return this.fontExtraProperties||e.delete(n),this.compiledGlyphs[t]=i}get black(){return this.#e.black}get bold(){return this.#e.bold}get disableFontFace(){return this.#e.disableFontFace}set disableFontFace(e){M(this,`disableFontFace`,!!e)}get fontExtraProperties(){return this.#e.fontExtraProperties}get isInvalidPDFjsFont(){return this.#e.isInvalidPDFjsFont}get isType3Font(){return this.#e.isType3Font}get italic(){return this.#e.italic}get missingFile(){return this.#e.missingFile}get remeasure(){return this.#e.remeasure}get vertical(){return this.#e.vertical}get ascent(){return this.#e.ascent}get defaultWidth(){return this.#e.defaultWidth}get descent(){return this.#e.descent}get bbox(){return this.#e.bbox}get fontMatrix(){return this.#e.fontMatrix}get fallbackName(){return this.#e.fallbackName}get loadedName(){return this.#e.loadedName}get mimetype(){return this.#e.mimetype}get name(){return this.#e.name}get data(){return this.#e.data}clearData(){this.#e.clearData()}get cssFontInfo(){return this.#e.cssFontInfo}get systemFontInfo(){return this.#e.systemFontInfo}get defaultVMetrics(){return this.#e.defaultVMetrics}},kt=class{static strings=[`fontFamily`,`fontWeight`,`italicAngle`]},At=class{static strings=[`css`,`loadedName`,`baseFontName`,`src`]},K=class{static bools=[`black`,`bold`,`disableFontFace`,`fontExtraProperties`,`isInvalidPDFjsFont`,`isType3Font`,`italic`,`missingFile`,`remeasure`,`vertical`];static numbers=[`ascent`,`defaultWidth`,`descent`];static strings=[`fallbackName`,`loadedName`,`mimetype`,`name`];static OFFSET_NUMBERS=Math.ceil(this.bools.length*2/8);static OFFSET_BBOX=this.OFFSET_NUMBERS+this.numbers.length*8;static OFFSET_FONT_MATRIX=this.OFFSET_BBOX+1+8;static OFFSET_DEFAULT_VMETRICS=this.OFFSET_FONT_MATRIX+1+48;static OFFSET_STRINGS=this.OFFSET_DEFAULT_VMETRICS+1+6},jt=class{static KIND=0;static HAS_BBOX=1;static HAS_BACKGROUND=2;static SHADING_TYPE=3;static N_COORD=4;static N_COLOR=8;static N_STOP=12;static N_FIGURES=16},Mt=class{#e;#t=new TextDecoder;#n;constructor(e){this.#e=e,this.#n=new DataView(e)}#r(e){D(e>n&3;return r===0?void 0:r===2}get black(){return this.#r(0)}get bold(){return this.#r(1)}get disableFontFace(){return this.#r(2)}get fontExtraProperties(){return this.#r(3)}get isInvalidPDFjsFont(){return this.#r(4)}get isType3Font(){return this.#r(5)}get italic(){return this.#r(6)}get missingFile(){return this.#r(7)}get remeasure(){return this.#r(8)}get vertical(){return this.#r(9)}#i(e){return D(e0){t=n.slice();for(let e=0,n=l.length;etypeof e==`object`&&Number.isInteger(e?.num)&&e.num>=0&&Number.isInteger(e?.gen)&&e.gen>=0,Vt=fe.bind(null,Bt,e=>typeof e==`object`&&typeof e?.name==`string`),Ht=class{#e=new Map;#t=Promise.resolve();postMessage(e,t){let n={data:structuredClone(e,t?{transfer:t}:null)};this.#t.then(()=>{for(let[e]of this.#e)e.call(this,n)})}addEventListener(e,t,n=null){let r=null;if(n?.signal instanceof AbortSignal){let{signal:i}=n;if(i.aborted){T("LoopbackPort - cannot use an `aborted` signal.");return}let a=()=>this.removeEventListener(e,t);r=()=>i.removeEventListener(`abort`,a),i.addEventListener(`abort`,a)}this.#e.set(t,r)}removeEventListener(e,t){this.#e.get(t)?.(),this.#e.delete(t)}terminate(){for(let[,e]of this.#e)e?.();this.#e.clear()}},Ut={DATA:1,ERROR:2},q={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function Wt(){}function J(e){if(e instanceof P||e instanceof ne||e instanceof ee||e instanceof re||e instanceof te)return e;switch(e instanceof Error||typeof e==`object`&&e||E(`wrapReason: Expected "reason" to be a (possibly cloned) Error.`),e.name){case`AbortException`:return new P(e.message);case`InvalidPDFException`:return new ne(e.message);case`PasswordException`:return new ee(e.message,e.code);case`ResponseException`:return new re(e.message,e.status,e.missing);case`UnknownErrorException`:return new te(e.message,e.details)}return new te(e.message,e.toString())}var Gt=class{#e=new AbortController;constructor(e,t,n){this.sourceName=e,this.targetName=t,this.comObj=n,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),n.addEventListener(`message`,this.#t.bind(this),{signal:this.#e.signal})}#t({data:e}){if(e.targetName!==this.sourceName)return;if(e.stream){this.#r(e);return}if(e.callback){let t=e.callbackId,n=this.callbackCapabilities[t];if(!n)throw Error(`Cannot resolve callback ${t}`);if(delete this.callbackCapabilities[t],e.callback===Ut.DATA)n.resolve(e.data);else if(e.callback===Ut.ERROR)n.reject(J(e.reason));else throw Error(`Unexpected callback case`);return}let t=this.actionHandler[e.action];if(!t)throw Error(`Unknown action from worker: ${e.action}`);if(e.callbackId){let n=this.sourceName,r=e.sourceName,i=this.comObj;Promise.try(t,e.data).then(function(t){i.postMessage({sourceName:n,targetName:r,callback:Ut.DATA,callbackId:e.callbackId,data:t})},function(t){i.postMessage({sourceName:n,targetName:r,callback:Ut.ERROR,callbackId:e.callbackId,reason:J(t)})});return}if(e.streamId){this.#n(e);return}t(e.data)}on(e,t){let n=this.actionHandler;if(n[e])throw Error(`There is already an actionName called "${e}"`);n[e]=t}send(e,t,n){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},n)}sendWithPromise(e,t,n){let r=this.callbackId++,i=Promise.withResolvers();this.callbackCapabilities[r]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:r,data:t},n)}catch(e){i.reject(e)}return i.promise}sendWithStream(e,t,n,r){let i=this.streamId++,a=this.sourceName,o=this.targetName,s=this.comObj;return new ReadableStream({start:n=>{let c=Promise.withResolvers();return this.streamControllers[i]={controller:n,startCall:c,pullCall:null,cancelCall:null,isClosed:!1},s.postMessage({sourceName:a,targetName:o,action:e,streamId:i,data:t,desiredSize:n.desiredSize},r),c.promise},pull:e=>{let t=Promise.withResolvers();return this.streamControllers[i].pullCall=t,s.postMessage({sourceName:a,targetName:o,stream:q.PULL,streamId:i,desiredSize:e.desiredSize}),t.promise},cancel:e=>{D(e instanceof Error,`cancel must have a valid reason`);let t=Promise.withResolvers();return this.streamControllers[i].cancelCall=t,this.streamControllers[i].isClosed=!0,s.postMessage({sourceName:a,targetName:o,stream:q.CANCEL,streamId:i,reason:J(e)}),t.promise}},n)}#n(e){let t=e.streamId,n=this.sourceName,r=e.sourceName,i=this.comObj,a=this,o=this.actionHandler[e.action],s={enqueue(e,a=1,o){if(this.isCancelled)return;let s=this.desiredSize;this.desiredSize-=a,s>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),i.postMessage({sourceName:n,targetName:r,stream:q.ENQUEUE,streamId:t,chunk:e},o)},close(){this.isCancelled||(this.isCancelled=!0,i.postMessage({sourceName:n,targetName:r,stream:q.CLOSE,streamId:t}),delete a.streamSinks[t])},error(e){D(e instanceof Error,`error must have a valid reason`),!this.isCancelled&&(this.isCancelled=!0,i.postMessage({sourceName:n,targetName:r,stream:q.ERROR,streamId:t,reason:J(e)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};s.sinkCapability.resolve(),s.ready=s.sinkCapability.promise,this.streamSinks[t]=s,Promise.try(o,e.data,s).then(function(){i.postMessage({sourceName:n,targetName:r,stream:q.START_COMPLETE,streamId:t,success:!0})},function(e){i.postMessage({sourceName:n,targetName:r,stream:q.START_COMPLETE,streamId:t,reason:J(e)})})}#r(e){let t=e.streamId,n=this.sourceName,r=e.sourceName,i=this.comObj,a=this.streamControllers[t],o=this.streamSinks[t];switch(e.stream){case q.START_COMPLETE:e.success?a.startCall.resolve():a.startCall.reject(J(e.reason));break;case q.PULL_COMPLETE:e.success?a.pullCall.resolve():a.pullCall.reject(J(e.reason));break;case q.PULL:if(!o){i.postMessage({sourceName:n,targetName:r,stream:q.PULL_COMPLETE,streamId:t,success:!0});break}o.desiredSize<=0&&e.desiredSize>0&&o.sinkCapability.resolve(),o.desiredSize=e.desiredSize,Promise.try(o.onPull||Wt).then(function(){i.postMessage({sourceName:n,targetName:r,stream:q.PULL_COMPLETE,streamId:t,success:!0})},function(e){i.postMessage({sourceName:n,targetName:r,stream:q.PULL_COMPLETE,streamId:t,reason:J(e)})});break;case q.ENQUEUE:if(D(a,`enqueue should have stream controller`),a.isClosed)break;a.controller.enqueue(e.chunk);break;case q.CLOSE:if(D(a,`close should have stream controller`),a.isClosed)break;a.isClosed=!0,a.controller.close(),this.#i(a,t);break;case q.ERROR:D(a,`error should have stream controller`),a.controller.error(J(e.reason)),this.#i(a,t);break;case q.CANCEL_COMPLETE:e.success?a.cancelCall.resolve():a.cancelCall.reject(J(e.reason)),this.#i(a,t);break;case q.CANCEL:if(!o)break;let s=J(e.reason);Promise.try(o.onCancel||Wt,s).then(function(){i.postMessage({sourceName:n,targetName:r,stream:q.CANCEL_COMPLETE,streamId:t,success:!0})},function(e){i.postMessage({sourceName:n,targetName:r,stream:q.CANCEL_COMPLETE,streamId:t,reason:J(e)})}),o.sinkCapability.reject(s),o.isCancelled=!0,delete this.streamSinks[t];break;default:throw Error(`Unexpected stream case`)}}async#i(e,t){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]),delete this.streamControllers[t]}destroy(){this.#e?.abort(),this.#e=null}},Kt=class{#e=Object.freeze({cMapUrl:`CMap`,standardFontDataUrl:`font`,wasmUrl:`wasm`});constructor({cMapUrl:e=null,standardFontDataUrl:t=null,wasmUrl:n=null}){this.cMapUrl=e,this.standardFontDataUrl=t,this.wasmUrl=n}async fetch({kind:e,filename:t}){switch(e){case`cMapUrl`:case`standardFontDataUrl`:case`wasmUrl`:break;default:E(`Not implemented: ${e}`)}let n=this[e];if(!n)throw Error(`Ensure that the \`${e}\` API parameter is provided.`);let r=`${n}${t}`;return this._fetch(r,e).catch(t=>{throw Error(`Unable to load ${this.#e[e]} data at: ${r}`)})}async _fetch(e,t){E("Abstract method `_fetch` called.")}},qt=class extends Kt{async _fetch(e,t){let n=await Ce(e,t===`cMapUrl`&&!e.endsWith(`.bcmap`)?`text`:`bytes`);return n instanceof Uint8Array?n:oe(n)}},Jt=class{#e=!1;constructor({enableHWA:e=!1}){this.#e=e}create(e,t){if(e<=0||t<=0)throw Error(`Invalid canvas size`);let n=this._createCanvas(e,t);return{canvas:n,context:n.getContext(`2d`,{willReadFrequently:!this.#e})}}reset({canvas:e},t,n){if(!e)throw Error(`Canvas is not specified`);if(t<=0||n<=0)throw Error(`Invalid canvas size`);e.width=t,e.height=n}destroy(e){let{canvas:t}=e;if(!t)throw Error(`Canvas is not specified`);t.width=t.height=0,e.canvas=null,e.context=null}_createCanvas(e,t){E("Abstract method `_createCanvas` called.")}},Yt=class extends Jt{constructor({ownerDocument:e=globalThis.document,enableHWA:t=!1}){super({enableHWA:t}),this._document=e}_createCanvas(e,t){let n=this._document.createElement(`canvas`);return n.width=e,n.height=t,n}},Xt=class{addFilter(e){return`none`}addHCMFilter(e,t){return`none`}addAlphaFilter(e){return`none`}addLuminosityFilter(e){return`none`}addKnockoutFilter(e=0){return`none`}addHighlightHCMFilter(e,t,n,r,i){return`none`}addSelectionHCMFilter(e,t){return`none`}addSelectionFilter(){return`none`}createSelectionStyle(e=null){return null}destroy(e=!1){}},Zt=class extends Xt{#e;#t;#n;#r;#i;#a;#o=0;constructor({docId:e,ownerDocument:t=globalThis.document}){super(),this.#r=e,this.#i=t}get#s(){return this.#t||=new Map}get#c(){return this.#a||=new Map}get#l(){if(!this.#n){let e=this.#i.createElement(`div`),{style:t}=e;t.colorScheme=`only light`,t.visibility=`hidden`,t.contain=`strict`,t.width=t.height=0,t.position=`absolute`,t.top=t.left=0,t.zIndex=-1;let n=this.#i.createElementNS(a,`svg`);n.setAttribute(`width`,0),n.setAttribute(`height`,0),this.#n=this.#i.createElementNS(a,`defs`),e.append(n),n.append(this.#n),this.#i.body.append(e)}return this.#n}#u(e){if(e.length===1){let t=e[0],n=Array(256);for(let e=0;e<256;e++)n[e]=t[e]/255;let r=n.join(`,`);return[r,r,r]}let[t,n,r]=e,i=Array(256),a=Array(256),o=Array(256);for(let e=0;e<256;e++)i[e]=t[e]/255,a[e]=n[e]/255,o[e]=r[e]/255;return[i.join(`,`),a.join(`,`),o.join(`,`)]}#d(e){if(this.#e===void 0){this.#e=``;let e=this.#i.URL;e!==this.#i.baseURI&&(Te(e)?T(`#createUrl: ignore "data:"-URL for performance reasons.`):this.#e=A(e,``))}return`url(${this.#e}#${e})`}addFilter(e){if(!e)return`none`;let t=this.#s.get(e);if(t)return t;let[n,r,i]=this.#u(e),a=e.length===1?n:`${n}${r}${i}`;if(t=this.#s.get(a),t)return this.#s.set(e,t),t;let o=`g_${this.#r}_transfer_map_${this.#o++}`,s=this.#d(o);this.#s.set(e,s),this.#s.set(a,s);let c=this.#m(o);return this.#g(n,r,i,c),s}addHCMFilter(e,t){let n=`${e}-${t}`,r=`base`,i=this.#c.get(r);if(i?.key===n||(i?(i.filter?.remove(),i.key=n,i.url=`none`,i.filter=null):(i={key:n,url:`none`,filter:null},this.#c.set(r,i)),!e||!t))return i.url;let a=this.#v(e);e=I.makeHexColor(...a);let o=this.#v(t);if(t=I.makeHexColor(...o),this.#b(),e===`#000000`&&t===`#ffffff`||e===t)return i.url;let s=Array(256);for(let e=0;e<=255;e++){let t=e/255;s[e]=t<=.03928?t/12.92:((t+.055)/1.055)**2.4}let c=s.join(`,`),l=`g_${this.#r}_hcm_filter`,u=i.filter=this.#m(l);this.#g(c,c,c,u),this.#p(u);let d=(e,t)=>{let n=a[e]/255,r=o[e]/255,i=Array(t+1);for(let e=0;e<=t;e++)i[e]=n+e/t*(r-n);return i.join(`,`)};return this.#g(d(0,5),d(1,5),d(2,5),u),i.url=this.#d(l),i.url}addSelectionHCMFilter(e,t){return this.addHighlightHCMFilter(`selection`,e,t,`HighlightText`,`Highlight`)}addSelectionFilter(){return this.addHighlightHCMFilter(`selection_default`,`black`,`white`,`HighlightText`,`Highlight`)}createSelectionStyle(e=null){let t=e?this.addSelectionHCMFilter(e.foreground,e.background):this.addSelectionFilter();return t===`none`||!F.platform.isFirefox?null:{"backdrop-filter":t,"background-color":`transparent`}}addAlphaFilter(e){let t=this.#s.get(e);if(t)return t;let[n]=this.#u([e]),r=`alpha_${n}`;if(t=this.#s.get(r),t)return this.#s.set(e,t),t;let i=`g_${this.#r}_alpha_map_${this.#o++}`,a=this.#d(i);this.#s.set(e,a),this.#s.set(r,a);let o=this.#m(i);return this.#_(n,o),a}addLuminosityFilter(e){let t=this.#s.get(e||`luminosity`);if(t)return t;let n,r;if(e?([n]=this.#u([e]),r=`luminosity_${n}`):r=`luminosity`,t=this.#s.get(r),t)return this.#s.set(e,t),t;let i=`g_${this.#r}_luminosity_map_${this.#o++}`,a=this.#d(i);this.#s.set(e,a),this.#s.set(r,a);let o=this.#m(i);return this.#f(o),e&&this.#_(n,o),a}addKnockoutFilter(e=0){let t=e>0?Math.min(1/e,1e6):1e6,n=`knockout_${t}`,r=this.#s.get(n);if(r)return r;let i=`g_${this.#r}_knockout_filter_${this.#o++}`,o=this.#d(i);this.#s.set(n,o);let s=this.#m(i),c=this.#i.createElementNS(a,`feComponentTransfer`);s.append(c);let l=this.#i.createElementNS(a,`feFuncA`);return l.setAttribute(`type`,`linear`),l.setAttribute(`slope`,`${t}`),l.setAttribute(`intercept`,`0`),c.append(l),o}addHighlightHCMFilter(e,t,n,r,i){let a=`${t}-${n}-${r}-${i}`,o=this.#c.get(e);if(o?.key===a||(o?(o.filter?.remove(),o.key=a,o.url=`none`,o.filter=null):(o={key:a,url:`none`,filter:null},this.#c.set(e,o)),!t||!n))return o.url;let[s,c]=[t,n].map(this.#v.bind(this)),l=Math.round(.2126*s[0]+.7152*s[1]+.0722*s[2]),u=Math.round(.2126*c[0]+.7152*c[1]+.0722*c[2]),[d,f]=[r,i].map(this.#x.bind(this));u{let r=Array(256),i=(u-l)/n,a=e/255,o=(t-e)/(255*n),s=0;for(let e=0;e<=n;e++){let t=Math.round(l+e*i),n=a+e*o;for(let e=s;e<=t;e++)r[e]=n;s=t+1}for(let e=s;e<256;e++)r[e]=r[s-1];return r.join(`,`)},m=`g_${this.#r}_hcm_${e}_filter`,h=o.filter=this.#m(m);return this.#p(h),this.#g(p(d[0],f[0],5),p(d[1],f[1],5),p(d[2],f[2],5),h),o.url=this.#d(m),o.url}destroy(e=!1){e&&this.#a?.size||(this.#n?.parentNode.parentNode.remove(),this.#n=null,this.#t?.clear(),this.#t=null,this.#a?.clear(),this.#a=null,this.#o=0)}#f(e){let t=this.#i.createElementNS(a,`feColorMatrix`);t.setAttribute(`type`,`matrix`),t.setAttribute(`values`,`0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0`),e.append(t)}#p(e){let t=this.#i.createElementNS(a,`feColorMatrix`);t.setAttribute(`type`,`matrix`),t.setAttribute(`values`,`0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0`),e.append(t)}#m(e){let t=this.#i.createElementNS(a,`filter`);return t.setAttribute(`color-interpolation-filters`,`sRGB`),t.setAttribute(`id`,e),this.#l.append(t),t}#h(e,t,n){let r=this.#i.createElementNS(a,t);r.setAttribute(`type`,`discrete`),r.setAttribute(`tableValues`,n),e.append(r)}#g(e,t,n,r){let i=this.#i.createElementNS(a,`feComponentTransfer`);r.append(i),this.#h(i,`feFuncR`,e),this.#h(i,`feFuncG`,t),this.#h(i,`feFuncB`,n)}#_(e,t){let n=this.#i.createElementNS(a,`feComponentTransfer`);t.append(n),this.#h(n,`feFuncA`,e)}#v(e){return this.#l.style.color=`CanvasText`,this.#l.style.backgroundColor=e,Ne(getComputedStyle(this.#l).getPropertyValue(`background-color`))}#y(e){return this.#l.style.color=`CanvasText`,this.#l.style.backgroundColor=e,Me(getComputedStyle(this.#l).getPropertyValue(`background-color`))}#b(){this.#l.style.color=``,this.#l.style.backgroundColor=``}#x(e){let[t,n,r,i]=this.#y(e);if(i===1)return[t,n,r];let[a,o,s]=this.#v(`Canvas`);return[Qt(t,a,i),Qt(n,o,i),Qt(r,s,i)]}};function Qt(e,t,n){return Math.round(n*e+(1-n)*t)}t&&T("Please use the `legacy` build in Node.js environments.");async function $t(e){let t=await process.getBuiltinModule(`fs/promises`).readFile(e);return new Uint8Array(t)}var en=class extends Xt{},tn=class extends Jt{_createCanvas(e,t){return process.getBuiltinModule(`module`).createRequire(import.meta.url)(`@napi-rs/canvas`).createCanvas(e,t)}},nn=class extends Kt{async _fetch(e,t){return $t(e)}};function rn({src:e,srcPos:t=0,dest:n,width:r,height:i,nonBlackColor:a=4294967295,inverseDecode:o=!1}){let s=F.isLittleEndian?4278190080:255,[c,l]=o?[a,s]:[s,a],u=r>>3,d=r&7,f=c^l,p=e.length;n=new Uint32Array(n.buffer);let m=0;for(let r=0;r>7&1)&f,n[m+1]=c^-(r>>6&1)&f,n[m+2]=c^-(r>>5&1)&f,n[m+3]=c^-(r>>4&1)&f,n[m+4]=c^-(r>>3&1)&f,n[m+5]=c^-(r>>2&1)&f,n[m+6]=c^-(r>>1&1)&f,n[m+7]=c^-(r&1)&f}if(d===0)continue;let r=t>7-e&1)&f}return{srcPos:t,destPos:m}}function an({src:e,srcPos:t=0,dest:n,destPos:r=0,width:i,height:a}){let o=0,s=i*a*3,c=s>>2,l=new Uint32Array(e.buffer,t,c),u=F.isLittleEndian?4278190080:255;if(F.isLittleEndian){for(;o>>24|t<<8|u,n[r+2]=t>>>16|i<<16|u,n[r+3]=i>>>8|u}for(let i=o*4,a=t+s;i>>8|u,n[r+2]=t<<16|i>>>16|u,n[r+3]=i<<8|u}for(let i=o*4,a=t+s;i u : Uniforms; + +struct VertexInput { + @location(0) position : vec2, + @location(1) color : vec4, +}; + +struct VertexOutput { + @builtin(position) position : vec4, + @location(0) color : vec3, +}; + +@vertex +fn vs_main(in : VertexInput) -> VertexOutput { + var out : VertexOutput; + let cx = (in.position.x + u.offsetX) * u.scaleX; + let cy = (in.position.y + u.offsetY) * u.scaleY; + out.position = vec4( + ((cx + u.borderSize) / u.paddedWidth) * 2.0 - 1.0, + 1.0 - ((cy + u.borderSize) / u.paddedHeight) * 2.0, + 0.0, + 1.0 + ); + out.color = in.color.rgb; + return out; +} + +@fragment +fn fs_main(in : VertexOutput) -> @location(0) vec4 { + return vec4(in.color, 1.0); +} +`,sn=new class{#e=null;#t=null;#n=null;#r=null;async#i(){if(!globalThis.navigator?.gpu)return!1;try{let e=await navigator.gpu.requestAdapter();return e?(this.#r=navigator.gpu.getPreferredCanvasFormat(),this.#t=await e.requestDevice(),!0):!1}catch{return!1}}init(){return this.#e||=this.#i()}get isReady(){return this.#t!==null}loadMeshShader(){if(!this.#t||this.#n)return;let e=this.#t.createShaderModule({code:on});this.#n=this.#t.createRenderPipeline({layout:`auto`,vertex:{module:e,entryPoint:`vs_main`,buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:`float32x2`}]},{arrayStride:4,attributes:[{shaderLocation:1,offset:0,format:`unorm8x4`}]}]},fragment:{module:e,entryPoint:`fs_main`,targets:[{format:this.#r}]},primitive:{topology:`triangle-list`}})}draw(e,t,n,r,i,a,o,s){this.loadMeshShader();let c=this.#t,{offsetX:l,offsetY:u,scaleX:d,scaleY:f}=r,p=c.createBuffer({size:Math.max(e.byteLength,4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.byteLength>0&&c.queue.writeBuffer(p,0,e);let m=c.createBuffer({size:Math.max(t.byteLength,4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});t.byteLength>0&&c.queue.writeBuffer(m,0,t);let h=c.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});c.queue.writeBuffer(h,0,new Float32Array([l,u,d,f,a,o,s,0]));let g=c.createBindGroup({layout:this.#n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:h}}]}),_=new OffscreenCanvas(a,o),v=_.getContext(`webgpu`);v.configure({device:c,format:this.#r,alphaMode:i?`opaque`:`premultiplied`});let y=i?{r:i[0]/255,g:i[1]/255,b:i[2]/255,a:1}:{r:0,g:0,b:0,a:0},b=c.createCommandEncoder(),x=b.beginRenderPass({colorAttachments:[{view:v.getCurrentTexture().createView(),clearValue:y,loadOp:`clear`,storeOp:`store`}]});return n>0&&(x.setPipeline(this.#n),x.setBindGroup(0,g),x.setVertexBuffer(0,p),x.setVertexBuffer(1,m),x.draw(n)),x.end(),c.queue.submit([b.finish()]),p.destroy(),m.destroy(),h.destroy(),_.transferToImageBitmap()}};function cn(){return sn.init()}function ln(){return sn.isReady}function un(){sn.loadMeshShader()}function dn(e,t,n,r,i,a,o,s){return sn.draw(e,t,n,r,i,a,o,s)}var Y={FILL:`Fill`,STROKE:`Stroke`,SHADING:`Shading`};function fn(e,t){if(!t)return;let n=t[2]-t[0],r=t[3]-t[1],i=new Path2D;i.rect(t[0],t[1],n,r),e.clip(i)}var pn=class{matrix=null;isModifyingCurrentTransform(){return!1}getPattern(){E("Abstract method `getPattern` called.")}},mn=class extends pn{constructor(e){super(),this._type=e[1],this._bbox=e[2],this._colorStops=e[3],this._p0=e[4],this._p1=e[5],this._r0=e[6],this._r1=e[7]}isOriginBased(){return this._p0[0]===0&&this._p0[1]===0&&(!this.isRadial()||this._p1[0]===0&&this._p1[1]===0)}isRadial(){return this._type===`radial`}areConic(){if(!this.isRadial())return!1;let e=Math.hypot(this._p0[0]-this._p1[0],this._p0[1]-this._p1[1]);return e+this._r1>this._r0&&e+this._r0>this._r1}_createGradient(e,t=null){let n,r=this._p0,i=this._p1;if(t&&(r=r.slice(),i=i.slice(),I.applyTransform(r,t),I.applyTransform(i,t)),this._type===`axial`)n=e.createLinearGradient(r[0],r[1],i[0],i[1]);else if(this._type===`radial`){let a=this._r0,o=this._r1;if(t){let e=new Float32Array(2);I.singularValueDecompose2dScale(t,e),a*=e[0],o*=e[0]}n=e.createRadialGradient(r[0],r[1],a,i[0],i[1],o)}for(let e of this._colorStops)n.addColorStop(e[0],e[1]);return n}_createReversedGradient(e,t=null){let n=this._p1,r=this._p0;t&&(n=n.slice(),r=r.slice(),I.applyTransform(n,t),I.applyTransform(r,t));let i=this._r1,a=this._r0;if(t){let e=new Float32Array(2);I.singularValueDecompose2dScale(t,e),i*=e[0],a*=e[0]}let o=e.createRadialGradient(n[0],n[1],i,r[0],r[1],a),s=this._colorStops.map(([e,t])=>[1-e,t]).reverse();for(let[e,t]of s)o.addColorStop(e,t);return o}getPattern(e,t,n,r){let i;if(r===Y.STROKE||r===Y.FILL){if(this.isOriginBased()){let r=I.transform(n,t.baseTransform);this.matrix&&(r=I.transform(r,this.matrix));let i=.001,a=Math.hypot(r[0],r[1]),o=Math.hypot(r[2],r[3]),s=(r[0]*r[2]+r[1]*r[3])/(a*o);if(Math.abs(s)c[r*2+1]&&(f=n,n=r,r=f,f=a,a=o,o=f),c[r*2+1]>c[i*2+1]&&(f=r,r=i,i=f,f=o,o=s,s=f),c[n*2+1]>c[r*2+1]&&(f=n,n=r,r=f,f=a,a=o,o=f);let p=(c[n*2]+t.offsetX)*t.scaleX,m=(c[n*2+1]+t.offsetY)*t.scaleY,h=(c[r*2]+t.offsetX)*t.scaleX,g=(c[r*2+1]+t.offsetY)*t.scaleY,_=(c[i*2]+t.offsetX)*t.scaleX,v=(c[i*2+1]+t.offsetY)*t.scaleY;if(m>=v)return;let y=l[a*4],b=l[a*4+1],x=l[a*4+2],S=l[o*4],C=l[o*4+1],w=l[o*4+2],T=l[s*4],E=l[s*4+1],D=l[s*4+2],O=Math.round(m),k=Math.round(v),A,j,M,N,ee,te,ne,re;for(let e=O;e<=k;e++){if(ev?1:g===v?0:(g-e)/(g-v),A=h-(h-_)*t,j=S-(S-T)*t,M=C-(C-E)*t,N=w-(w-D)*t}let t;t=ev?1:(m-e)/(m-v),ee=p-(p-_)*t,te=y-(y-T)*t,ne=b-(b-E)*t,re=x-(x-D)*t;let n=Math.round(Math.min(A,ee)),r=Math.round(Math.max(A,ee)),i=d*e+n*4;for(let e=n;e<=r;e++)t=(A-e)/(A-ee),t<0?t=0:t>1&&(t=1),u[i++]=j-(j-te)*t|0,u[i++]=M-(M-ne)*t|0,u[i++]=N-(N-re)*t|0,u[i++]=255}}var gn=class extends pn{constructor(e){super(),this._posData=e[2],this._colData=e[3],this._vertexCount=e[4],this._bounds=e[5],this._bbox=e[6],this._background=e[7],un()}_createMeshCanvas(e,t,n){let r=1.1,i=3e3,a=Math.floor(this._bounds[0]),o=Math.floor(this._bounds[1]),s=Math.ceil(this._bounds[2])-a,c=Math.ceil(this._bounds[3])-o,l=Math.min(Math.ceil(Math.abs(s*e[0]*r)),i)||1,u=Math.min(Math.ceil(Math.abs(c*e[1]*r)),i)||1,d=s?s/l:1,f=c?c/u:1,p={coords:this._posData,colors:this._colData,offsetX:-a,offsetY:-o,scaleX:1/d,scaleY:1/f},m=l+4,h=u+4,g=n.create(m,h);if(ln()&&this._vertexCount>48)g.context.drawImage(dn(this._posData,this._colData,this._vertexCount,p,t,m,h,2),0,0);else{let e=g.context.createImageData(l,u);if(t){let n=e.data;for(let e=0,r=n.length;ec+1e-6||t>l+1e-6)return null;let u=Math.floor((n-o)/c)+1,d=Math.ceil((n+e-i)/c)-1,f=Math.floor((r-s)/l)+1,p=Math.ceil((r+t-a)/l)-1;return d<=u&&p<=f?[u,f]:null}updatePatternDims(e,t){let n=I.inverseTransform(this.patternBaseMatrix),r=[e[0],e[1]],i=[e[2],e[3]];I.applyTransform(r,n),I.applyTransform(i,n),t[0]=Math.abs(i[0]-r[0]),t[1]=Math.abs(i[1]-r[1]),t[2]=Math.min(r[0],i[0]),t[3]=Math.min(r[1],i[1])}_renderTileCanvas(e,t,n,r){let[i,a,o,s]=this.bbox,c=e.canvasFactory.create(n.size,r.size),l=c.context,u=this.canvasGraphicsFactory.createCanvasGraphics(l,t);return u.groupLevel=e.groupLevel,this.setFillAndStrokeStyleToContext(u,this.paintType,this.color),l.translate(-n.scale*i,-r.scale*a),u.transform(0,n.scale,0,0,r.scale,0,0),l.save(),u.dependencyTracker?.save(),this.clipBbox(u,i,a,o,s),u.baseTransform=B(u.ctx),u.executeOperatorList(this.operatorList),u.endDrawing(),u.dependencyTracker?.restore(),l.restore(),c}_getCombinedScales(){let e=new Float32Array(2);I.singularValueDecompose2dScale(this.matrix,e);let[t,n]=e;return I.singularValueDecompose2dScale(this.baseTransform,e),[t*e[0],n*e[1]]}drawPattern(e,t,n=!1,[r,i],a){let[o,s,c,l]=this.bbox,u=e.dependencyTracker;if(u&&(e.dependencyTracker=new Tt(u,a)),e.save(),n?e.ctx.clip(t,`evenodd`):e.ctx.clip(t),e.ctx.setTransform(...this.patternBaseMatrix),e.ctx.translate(r*this.xstep,i*this.ystep),this.needsIsolation||e.ctx.globalAlpha!==1||e.ctx.globalCompositeOperation!==`source-over`||e.inSMaskMode){let t=c-o,n=l-s,[r,i]=this._getCombinedScales(),u=this.getSizeAndScale(t,this.ctx.canvas.width,r),d=this.getSizeAndScale(n,this.ctx.canvas.height,i),f=this._renderTileCanvas(e,a,u,d);e.ctx.drawImage(f.canvas,o,s,t,n),e.canvasFactory.destroy(f)}else this.setFillAndStrokeStyleToContext(e,this.paintType,this.color),this.clipBbox(e,o,s,c,l),e.baseTransformStack.push(e.baseTransform),e.baseTransform=B(e.ctx),e.executeOperatorList(this.operatorList),e.baseTransform=e.baseTransformStack.pop();e.restore(),u&&(e.dependencyTracker=u)}createPatternCanvas(e,t){let[n,r,i,a]=this.bbox,o=i-n,s=a-r,{xstep:c,ystep:l}=this;c=Math.abs(c),l=Math.abs(l),w(`TilingType: `+this.tilingType);let[u,d]=this._getCombinedScales(),f=o,p=s,m=!1,h=!1;Math.ceil(c*u)>=Math.ceil(o*u)?f=c:m=!0,Math.ceil(l*d)>=Math.ceil(s*d)?p=l:h=!0;let g=this.getSizeAndScale(f,this.ctx.canvas.width,u),_=this.getSizeAndScale(p,this.ctx.canvas.height,d),v=this._renderTileCanvas(e,t,g,_);if(m||h){let t=v.canvas;m&&(f=c),h&&(p=l);let i=this.getSizeAndScale(f,this.ctx.canvas.width,u),a=this.getSizeAndScale(p,this.ctx.canvas.height,d),g=i.size,_=a.size,y=e.canvasFactory.create(g,_),b=y.context,x=m?Math.floor(o/c):0,S=h?Math.floor(s/l):0;for(let e=0;e<=x;e++)for(let n=0;n<=S;n++)b.drawImage(t,g*e,_*n,g,_,0,0,g,_);return e.canvasFactory.destroy(v),{canvas:y.canvas,canvasEntry:y,scaleX:i.scale,scaleY:a.scale,offsetX:n,offsetY:r}}return{canvas:v.canvas,canvasEntry:v,scaleX:g.scale,scaleY:_.scale,offsetX:n,offsetY:r}}getSizeAndScale(t,n,r){let i=Math.max(e.MAX_PATTERN_SIZE,n),a=Math.ceil(t*r);return a>=i?a=i:r=a/t,{scale:r,size:a}}clipBbox(e,t,n,r,i){let a=r-t,o=i-n,s=new Path2D;s.rect(t,n,a,o),I.axialAlignedBoundingBox([t,n,r,i],B(e.ctx),e.current.minMax),e.ctx.clip(s),e.current.updateClipFromPath()}setFillAndStrokeStyleToContext(e,t,n){let r=e.ctx,i=e.current;switch(i.patternFill=i.patternStroke=!1,t){case yn.COLORED:let{fillStyle:e,strokeStyle:a}=this.ctx;r.fillStyle=i.fillColor=e,r.strokeStyle=i.strokeColor=a;break;case yn.UNCOLORED:r.fillStyle=r.strokeStyle=n,i.fillColor=i.strokeColor=n;break;default:throw new ie(`Unsupported paint type: ${t}`)}}isModifyingCurrentTransform(){return!1}getPattern(e,t,n,r,i){let a=r===Y.SHADING?n:I.transform(n,this.patternBaseMatrix),o=this.createPatternCanvas(t,i),s=new DOMMatrix(a);s=s.translate(o.offsetX,o.offsetY),s=s.scale(1/o.scaleX,1/o.scaleY);let c=e.createPattern(o.canvas,`repeat`);return t.canvasFactory.destroy(o.canvasEntry),c.setTransform(s),c}},xn=16,Sn=100,Cn=15,wn=10,X=16,Tn=new DOMMatrix,Z=new Float32Array(2);function En(e,t){if(e._removeMirroring)throw Error(`Context is already forwarding operations.`);let n=new Map;for(let r of[`save`,`restore`,`rotate`,`scale`,`translate`,`transform`,`setTransform`,`resetTransform`,`clip`,`moveTo`,`lineTo`,`bezierCurveTo`,`quadraticCurveTo`,`arc`,`arcTo`,`ellipse`,`rect`,`roundRect`,`closePath`,`beginPath`]){let i=e[r];typeof i==`function`&&typeof t[r]==`function`&&(n.set(r,i),e[r]=function(...e){return t[r](...e),i.apply(this,e)})}e._removeMirroring=()=>{for(let[t,r]of n)e[t]=r;delete e._removeMirroring}}function Dn(e,t,n,r,i,a,o,s,c,l){let[u,d,f,p,m,h]=B(e);if(d===0&&f===0){let g=o*u+m,_=Math.round(g),v=s*p+h,y=Math.round(v),b=(o+c)*u+m,x=Math.abs(Math.round(b)-_)||1,S=(s+l)*p+h,C=Math.abs(Math.round(S)-y)||1;return e.setTransform(Math.sign(u),0,0,Math.sign(p),_,y),e.drawImage(t,n,r,i,a,0,0,x,C),e.setTransform(u,d,f,p,m,h),[x,C]}if(u===0&&p===0){let g=s*f+m,_=Math.round(g),v=o*d+h,y=Math.round(v),b=(s+l)*f+m,x=Math.abs(Math.round(b)-_)||1,S=(o+c)*d+h,C=Math.abs(Math.round(S)-y)||1;return e.setTransform(0,Math.sign(d),Math.sign(f),0,_,y),e.drawImage(t,n,r,i,a,0,0,C,x),e.setTransform(u,d,f,p,m,h),[C,x]}e.drawImage(t,n,r,i,a,o,s,c,l);let g=Math.hypot(u,d),_=Math.hypot(f,p);return[g*c,_*l]}var On=class{alphaIsShape=!1;fontSize=0;fontSizeScale=1;textMatrix=null;textMatrixScale=1;fontMatrix=i;leading=0;x=0;y=0;lineX=0;lineY=0;charSpacing=0;wordSpacing=0;textHScale=1;textRenderingMode=p.FILL;textRise=0;fillColor=`#000000`;strokeColor=`#000000`;tilingPatternDims=null;patternFill=!1;patternStroke=!1;fillAlpha=1;strokeAlpha=1;lineWidth=1;activeSMask=null;transferMaps=`none`;minMax=r.slice();constructor(e,t){this.clipBox=new Float32Array([0,0,e,t])}clone(){let e=Object.create(this);return e.clipBox=this.clipBox.slice(),e.minMax=this.minMax.slice(),e.tilingPatternDims=this.tilingPatternDims?.slice(),e}getPathBoundingBox(e=Y.FILL,t=null){let n=this.minMax.slice();if(e===Y.STROKE){t||E(`Stroke bounding box must include transform.`),I.singularValueDecompose2dScale(t,Z);let e=Z[0]*this.lineWidth/2,r=Z[1]*this.lineWidth/2;n[0]-=e,n[1]-=r,n[2]+=e,n[3]+=r}return n}updateClipFromPath(){let e=I.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(e||[0,0,0,0])}isEmptyClip(){return this.minMax[0]===1/0}startNewPathAndClipBox(e){this.clipBox.set(e,0),this.minMax.set(r,0)}getClippedPathBoundingBox(e=Y.FILL,t=null){return I.intersect(this.clipBox,this.getPathBoundingBox(e,t))}};function kn(e,t){let{width:n,height:r,kind:i}=t,a=r%X,o=(r-a)/X,s=a===0?o:o+1,c=e.createImageData(n,X),l=0,u=t.data,d=c.data,f;if(i===m.GRAYSCALE_1BPP)for(f=0;fwn&&typeof n==`function`,u=l?Date.now()+Cn:0,d=0,f=this.commonObjs,p=this.objs,m,h;for(;;){if(r!==void 0){if(s===r.nextBreakPoint)return r.breakIt(s,n),s;if(r.shouldSkip(s)){if(++s===c)return s;continue}}if(!i||i(s))if(m=o[s],h=a[s]??null,m!==v.dependency)h===null?this[m](s):this[m](s,...h);else for(let e of h){this.dependencyTracker?.recordNamedData(e,s);let t=e.startsWith(`g_`)?f:p;if(!t.has(e))return t.get(e,n),s}if(s++,s===c)return s;if(l&&++d>wn){if(Date.now()>u)return n(),s;d=0}}}#u(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null,this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.canvasFactory.destroy(this.transparentCanvasEntry),this.transparentCanvas=null,this.transparentCanvasEntry=null)}endDrawing(){this.#u();for(let e of this.smaskGroupCanvases)this.canvasFactory.destroy(e);this.smaskGroupCanvases.length=0,this._clearPreparedSMask(),this.tempSMask=null,this.smaskStack.length=0;for(let e of this.#l)this.#y(e);this.#l.length=0,this.#n=null,this.#r=null,this.#i=null,this.#a=null,this.#o=1,this.#c=null,this.#t=0,this.#e=0,this.cachedPatterns.clear();for(let e of this._cachedBitmapsMap.values()){for(let t of e.values())typeof HTMLCanvasElement<`u`&&t instanceof HTMLCanvasElement&&(t.width=t.height=0);e.clear()}this._cachedBitmapsMap.clear(),this.#d()}#d(){if(this.pageColors){let e=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(e!==`none`){let t=this.ctx.filter;this.ctx.filter=e,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=t}}}_scaleImage(e,t){let n=e.width??e.displayWidth,r=e.height??e.displayHeight,i=Math.max(Math.hypot(t[0],t[1]),1),a=Math.max(Math.hypot(t[2],t[3]),1),o=[],s=i,c=a,l=n,u=r;for(;s>2&&l>1||c>2&&u>1;){let e=l,t=u;s>2&&l>1&&(e=Math.ceil(l/2),s/=l/e),c>2&&u>1&&(t=Math.ceil(u/2),c/=u/t),o.push({newWidth:e,newHeight:t}),l=e,u=t}if(o.length===0)return{img:e,paintWidth:n,paintHeight:r,tmpCanvas:null};if(o.length===1){let{newWidth:t,newHeight:i}=o[0],a=this.canvasFactory.create(t,i);return a.context.drawImage(e,0,0,n,r,0,0,t,i),{img:a.canvas,paintWidth:t,paintHeight:i,tmpCanvas:a}}let d=this.canvasFactory.create(1,1),f=this.canvasFactory.create(1,1),p=n,m=r,h=e;for(let{newWidth:e,newHeight:t}of o)this.canvasFactory.reset(f,e,t),f.context.drawImage(h,0,0,p,m,0,0,e,t),[d,f]=[f,d],h=d.canvas,p=e,m=t;return this.canvasFactory.destroy(f),{img:d.canvas,paintWidth:p,paintHeight:m,tmpCanvas:d}}_createMaskCanvas(e,t){let n=this.ctx,{width:i,height:a}=t,o=this.current.fillColor,s=this.current.patternFill,c=B(n),l,u,d,f;if((t.bitmap||t.data)&&t.count>1){let n=t.bitmap||t.data.buffer;u=JSON.stringify(s?c:[c.slice(0,4),o]),l=this._cachedBitmapsMap.getOrInsertComputed(n,me);let r=l.get(u);if(r&&!s){let t=Math.round(Math.min(c[0],c[2])+c[4]),n=Math.round(Math.min(c[1],c[3])+c[5]);return this.dependencyTracker?.recordDependencies(e,G.transformAndFill),{canvas:r,offsetX:t,offsetY:n}}d=r}d||(f=this.canvasFactory.create(i,a),An(f.context,t));let p=I.transform(c,[1/i,0,0,-1/a,0,0]);p=I.transform(p,[1,0,0,1,0,-a]);let m=r.slice();I.axialAlignedBoundingBox([0,0,i,a],p,m);let[h,g,_,v]=m,y=Math.round(_-h)||1,b=Math.round(v-g)||1,x=this.canvasFactory.create(y,b),S=x.context,C=h,w=g;S.translate(-C,-w),S.transform(...p);let T=null;if(!d){let e=this._scaleImage(f.canvas,V(S));d=e.img,T=e.tmpCanvas,d!==f.canvas&&(this.canvasFactory.destroy(f),f=null),l&&s&&(l.set(u,d),T=null,f=null)}S.imageSmoothingEnabled=Nn(B(S),t.interpolate),Dn(S,d,0,0,d.width,d.height,0,0,i,a),T&&this.canvasFactory.destroy(T),f&&this.canvasFactory.destroy(f),S.globalCompositeOperation=`source-in`;let E=I.transform(V(S),[1,0,0,1,-C,-w]);return S.fillStyle=s?o.getPattern(n,this,E,Y.FILL,e):o,S.fillRect(0,0,i,a),l&&!s&&l.set(u,x.canvas),this.dependencyTracker?.recordDependencies(e,G.transformAndFill),{canvas:x.canvas,canvasEntry:l&&!s?null:x,offsetX:Math.round(C),offsetY:Math.round(w)}}setLineWidth(e,t){this.dependencyTracker?.recordSimpleData(`lineWidth`,e),t!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=t,this.ctx.lineWidth=t}setLineCap(e,t){this.dependencyTracker?.recordSimpleData(`lineCap`,e),this.ctx.lineCap=Pn[t]}setLineJoin(e,t){this.dependencyTracker?.recordSimpleData(`lineJoin`,e),this.ctx.lineJoin=Fn[t]}setMiterLimit(e,t){this.dependencyTracker?.recordSimpleData(`miterLimit`,e),this.ctx.miterLimit=t}setDash(e,t,n){this.dependencyTracker?.recordSimpleData(`dash`,e);let r=this.ctx;r.setLineDash!==void 0&&(r.setLineDash(t),r.lineDashOffset=n)}setRenderingIntent(e,t){}setFlatness(e,t){}setGState(e,t){for(let[n,r]of t)switch(n){case`LW`:this.setLineWidth(e,r);break;case`LC`:this.setLineCap(e,r);break;case`LJ`:this.setLineJoin(e,r);break;case`ML`:this.setMiterLimit(e,r);break;case`D`:this.setDash(e,r[0],r[1]);break;case`RI`:this.setRenderingIntent(e,r);break;case`FL`:this.setFlatness(e,r);break;case`Font`:this.setFont(e,r[0],r[1]);break;case`CA`:this.dependencyTracker?.recordSimpleData(`strokeAlpha`,e),this.current.strokeAlpha=r;break;case`ca`:this.dependencyTracker?.recordSimpleData(`fillAlpha`,e),this.ctx.globalAlpha=this.current.fillAlpha=r;break;case`BM`:this.dependencyTracker?.recordSimpleData(`globalCompositeOperation`,e),this.ctx.globalCompositeOperation=r;break;case`SMask`:this.dependencyTracker?.recordSimpleData(`SMask`,e),this.current.activeSMask=r?this.tempSMask:null,this.current.activeSMask&&(this.current.activeSMask.blendMode=this.ctx.globalCompositeOperation),this.tempSMask=null,this.checkSMaskState(e);break;case`TR`:this.dependencyTracker?.recordSimpleData(`filter`,e),this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(r)}}get inSMaskMode(){return!!this.suspendedCtx}_clearPreparedSMask(){this.smaskPreparedEntry&&=(this.canvasFactory.destroy(this.smaskPreparedEntry),null),this.smaskPreparedFor=null,this.smaskPreparedOffsetX=0,this.smaskPreparedOffsetY=0,this.smaskPreparedOOBAlpha=null}_ensurePreparedSMask(e){e!==this.smaskPreparedFor&&(this._clearPreparedSMask(),this._prepareSMaskCanvas(e))}checkSMaskState(e){let t=this.inSMaskMode;this.current.activeSMask&&!t?this.beginSMaskMode(e):!this.current.activeSMask&&t?this.endSMaskMode():this.current.activeSMask&&t&&this._ensurePreparedSMask(this.current.activeSMask)}_prepareSMaskCanvas(e){let{canvas:t,subtype:n,backdrop:r,transferMap:i}=e,a=n===`Luminosity`||n===`Alpha`&&i;if(!a&&!(n===`Luminosity`&&r)){this.smaskPreparedFor=e;return}let o;if(n===`Luminosity`&&r){let[e,t,n]=Me(r),a=Math.round(.3*e+.59*t+.11*n);o=i?.[a]??a}else o=i?.[0]??0;let{width:s,height:c}=this.ctx.canvas,l=t.width*t.height,u=s*c<4*l,d=a?{url:n===`Alpha`?this.filterFactory.addAlphaFilter(i):this.filterFactory.addLuminosityFilter(i),subtype:n,transferMap:i}:null,f=n===`Luminosity`?r:null,p,m,h;u?(p=this._bakeSMaskCanvas(t,e.offsetX,e.offsetY,s,c,f,d),m=0,h=0):(p=this._bakeSMaskCanvas(t,0,0,t.width,t.height,f,d),m=e.offsetX,h=e.offsetY),this.smaskPreparedEntry=p,this.smaskPreparedFor=e,this.smaskPreparedOffsetX=m,this.smaskPreparedOffsetY=h,this.smaskPreparedOOBAlpha=!u&&o!==0?o:null}_bakeSMaskCanvas(e,t,n,r,i,a,o){!a&&!o&&E(`_bakeSMaskCanvas with neither backdrop nor filter`);let s=this.canvasFactory.create(r,i),c=s.context;if(c.drawImage(e,t,n),a&&(c.globalCompositeOperation=`destination-atop`,c.fillStyle=a,c.fillRect(0,0,r,i)),!o)return s;let l=this.canvasFactory.create(r,i),u=l.context;u.filter=o.url;let d=F.isCanvasFilterSupported&&u.filter!==`none`&&u.filter!==``;if(u.drawImage(s.canvas,0,0),F.isCanvasFilterSupported&&(u.filter=`none`),!d){let e=u.getImageData(0,0,r,i),{data:t}=e,{transferMap:n}=o;if(o.subtype===`Luminosity`)for(let e=0,r=t.length;ethis.filterFactory.addKnockoutFilter(n))),!s||c!==`none`)return t&&(o.save(),o.setTransform(1,0,0,1,0,0),o.clearRect(0,0,r,i),o.restore()),o.filter=c,o.drawImage(e,0,0),o.filter=`none`,a;let l=e.getContext(`2d`,{willReadFrequently:!0}).getImageData(0,0,r,i),u=o.createImageData(r,i),d=l.data,f=u.data,p=n>0?1/n:1e6;for(let e=3,t=d.length;e0||!this.contentVisible)return!1;this.#t++,this.#o=e;let t=this.#l.at(-1),{canvas:n}=this.ctx,r=this.#p(t,`knockoutTempEntry`,n.width,n.height);this.#n=r;let i=r.context;return i.save(),i.setTransform(this.ctx.getTransform()),jn(this.ctx,i),this.#a=i.globalCompositeOperation,i.globalCompositeOperation=`source-over`,En(i,this.ctx),this.#c=t,this.#r=this.ctx,this.#i=this.suspendedCtx,this.ctx=i,this.inSMaskMode&&(this.suspendedCtx=i),!0}#g(e){if(!e)return;let t=this.#n,n=this.#r,r=this.#i,i=t.context;this.#n=null,this.#r=null,this.#i=null,this.inSMaskMode&&this.suspendedCtx===i&&this.ctx!==i&&this.endSMaskMode(),this.inSMaskMode&&(this.suspendedCtx=r),this.ctx._removeMirroring(),this.ctx.globalCompositeOperation=this.#a,this.#a=null,jn(this.ctx,n),this.ctx=n;let a=this.#c;this.#c=null;let o=this.#o;this.#o=1;try{this.#m(r??n,t.canvas,{backdropCanvas:a?.backdropCtx?.canvas??null,backdropOffset:a?.backdropCtx?[a.offsetX,a.offsetY]:[0,0],reuseMaskEntry:a?.knockoutMaskEntry??null,poolMeta:a,knockoutAlpha:o})}finally{i.restore(),this.#t--,a||this.canvasFactory.destroy(t)}}compose(e){if(!this.current.activeSMask)return;e=e?[Math.floor(e[0]),Math.floor(e[1]),Math.ceil(e[2]),Math.ceil(e[3])]:[0,0,this.ctx.canvas.width,this.ctx.canvas.height];let t=this.current.activeSMask,n=this.suspendedCtx,r=this.#t>0&&n===this.ctx;this.composeSMask(r?null:n,t,this.ctx,e),!r&&(this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore())}composeSMask(e,t,n,r){let i=r[0],a=r[1],o=r[2]-i,s=r[3]-a;if(o===0||s===0)return;let c=this.smaskPreparedEntry;if(c){let e=i,r=a,l=o,u=s,d=this.smaskPreparedOOBAlpha,f=d!==null;if(f){e=Math.max(i,t.offsetX),r=Math.max(a,t.offsetY);let n=Math.min(i+o,t.offsetX+t.canvas.width),c=Math.min(a+s,t.offsetY+t.canvas.height);l=n-e,u=c-r}if(l>0&&u>0){let t=e-this.smaskPreparedOffsetX,i=r-this.smaskPreparedOffsetY;n.save(),n.globalAlpha=1,n.setTransform(1,0,0,1,0,0);let a=new Path2D;a.rect(e,r,l,u),n.clip(a),n.globalCompositeOperation=`destination-in`,n.drawImage(c.canvas,t,i,l,u,e,r,l,u),n.restore()}f&&d<255&&this._applySMaskOOBAlpha(n,i,a,o,s,e,r,e+l,r+u,d)}else this.genericComposeSMask(t,n,o,s,i,a);e&&(e.save(),e.globalAlpha=1,e.globalCompositeOperation=t.blendMode||`source-over`,e.setTransform(1,0,0,1,0,0),e.drawImage(n.canvas,i,a,o,s,i,a,o,s),e.restore())}_applySMaskOOBAlpha(e,t,n,r,i,a,o,s,c,l){let u=ao.measureText(t))),(d===p.STROKE||d===p.FILL_STROKE)&&(this.dependencyTracker&&this.dependencyTracker?.recordCharacterBBox(e,o,c,u,n,r,()=>o.measureText(t)).recordDependencies(e,G.stroke),o.strokeText(t,n,r));f&&((this.pendingTextPaths||=[]).push({transform:B(o),x:n,y:r,fontSize:u,path:g}),this.dependencyTracker?.recordCharacterBBox(e,o,c,u,n,r))}get isFontSubpixelAAEnabled(){let e=this.canvasFactory.create(10,10),t=e.context;t.scale(1.5,1),t.fillText(`I`,0,10);let n=t.getImageData(0,0,10,10).data;this.canvasFactory.destroy(e);let r=!1;for(let e=3;e0&&n[e]<255){r=!0;break}return M(this,`isFontSubpixelAAEnabled`,r)}showText(e,t){this.dependencyTracker&&(this.dependencyTracker.recordDependencies(e,G.showText).resetBBox(e),this.current.textRenderingMode&p.ADD_TO_PATH_FLAG&&this.dependencyTracker.recordFutureForcedDependency(`textClip`,e).inheritPendingDependenciesAsFutureForcedDependencies());let n=this.current,r=n.font;if(r.isType3Font){let r=this.#h(n.fillAlpha);this.showType3Text(e,t),this.dependencyTracker?.recordShowTextOperation(e),this.#g(r);return}let i=n.fontSize;if(i===0){this.dependencyTracker?.recordOperation(e);return}let a=this.#h(n.fillAlpha),o=this.ctx,s=n.fontSizeScale,c=n.charSpacing,l=n.wordSpacing,u=n.fontDirection,d=n.textHScale*u,f=t.length,m=r.vertical,h=m?1:-1,g=r.defaultVMetrics,_=i*n.fontMatrix[0],v=n.textRenderingMode===p.FILL&&!r.disableFontFace&&!n.patternFill;o.save(),n.textMatrix&&o.transform(...n.textMatrix),o.translate(n.x,n.y+n.textRise),u>0?o.scale(d,-1):o.scale(d,1);let y,b,x=n.textRenderingMode&p.FILL_STROKE_MASK,S=x===p.FILL||x===p.FILL_STROKE,C=x===p.STROKE||x===p.FILL_STROKE,w=n.lineWidth,T=n.textMatrixScale;if(T===0||w===0?C&&(w=this.getSinglePixelWidth()):w/=T,s!==1&&(o.scale(s,s),w/=s),o.lineWidth=w,S&&n.patternFill){o.save();let t=n.fillColor.getPattern(o,this,V(o),Y.FILL,e);y=B(o),o.restore(),o.fillStyle=t}if(C&&n.patternStroke){o.save();let t=n.strokeColor.getPattern(o,this,V(o),Y.STROKE,e);b=B(o),o.restore(),o.strokeStyle=t}if(r.isInvalidPDFjsFont){let r=[],i=0;for(let e of t)r.push(e.unicode),i+=e.width;let s=r.join(``);if(o.fillText(s,0,0),this.dependencyTracker!==null){let t=o.measureText(s);this.dependencyTracker.recordBBox(e,this.ctx,-t.actualBoundingBoxLeft,t.actualBoundingBoxRight,-t.actualBoundingBoxAscent,t.actualBoundingBoxDescent).recordShowTextOperation(e)}n.x+=i*_*d,o.restore(),this.compose(),this.#g(a);return}let E=0,D;for(D=0;D0){w=o.measureText(f);let e=w.width*1e3/i*s;if(Cw??o.measureText(f));else if(this.paintChar(e,f,x,S,y,b),p){let t=x+i*p.offset.x/s,n=S-i*p.offset.y/s;this.paintChar(e,p.fontChar,t,n,y,b)}}let T=m?C*_-d*u:C*_+d*u;E+=T,a&&o.restore()}m?n.y-=E:n.x+=E*d,o.restore(),this.compose(),this.dependencyTracker?.recordShowTextOperation(e),this.#g(a)}showType3Text(e,t){let n=this.ctx,r=this.current,a=r.font,o=r.fontSize,s=r.fontDirection,c=a.vertical?1:-1,l=r.charSpacing,u=r.wordSpacing,d=r.textHScale*s,f=r.fontMatrix||i,m=t.length,h=r.textRenderingMode===p.INVISIBLE,g,_,y,b;if(h||o===0)return;this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,n.save(),r.textMatrix&&n.transform(...r.textMatrix),n.translate(r.x,r.y+r.textRise),n.scale(d,s);let x=this.dependencyTracker;for(this.dependencyTracker=x?new Tt(x,e):null,g=0;gnew e(t,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack},void 0,void 0,this.dependencyTracker?new Tt(this.dependencyTracker,n,!0):null)},t)}else r=this._getPattern(t,n[1],n[2]);return r}setStrokeColorN(e,...t){this.dependencyTracker?.recordSimpleData(`strokeColor`,e),this.current.strokeColor=this.getColorN_Pattern(e,t),this.current.patternStroke=!0}setFillColorN(e,...t){this.dependencyTracker?.recordSimpleData(`fillColor`,e);let n=this.current.fillColor=this.getColorN_Pattern(e,t);this.current.patternFill=!0,this.current.tilingPatternDims=n instanceof bn?[0,0,0,0]:null}setStrokeRGBColor(e,t){this.dependencyTracker?.recordSimpleData(`strokeColor`,e),this.ctx.strokeStyle=this.current.strokeColor=t,this.current.patternStroke=!1}setStrokeTransparent(e){this.dependencyTracker?.recordSimpleData(`strokeColor`,e),this.ctx.strokeStyle=this.current.strokeColor=`transparent`,this.current.patternStroke=!1}setFillRGBColor(e,t){this.dependencyTracker?.recordSimpleData(`fillColor`,e),this.ctx.fillStyle=this.current.fillColor=t,this.current.patternFill=!1,this.current.tilingPatternDims=null}setFillTransparent(e){this.dependencyTracker?.recordSimpleData(`fillColor`,e),this.ctx.fillStyle=this.current.fillColor=`transparent`,this.current.patternFill=!1,this.current.tilingPatternDims=null}_getPattern(e,t,n=null){let r=this.cachedPatterns.getOrInsertComputed(t,()=>vn(this.getObject(e,t)));return n&&(r.matrix=n),r}shadingFill(e,t){if(!this.contentVisible)return;let n=this.#h(this.current.fillAlpha),i=this.ctx;this.save(e),i.fillStyle=this._getPattern(e,t).getPattern(i,this,V(i),Y.SHADING,e);let a=V(i);if(a){let{width:e,height:t}=i.canvas,n=r.slice();I.axialAlignedBoundingBox([0,0,e,t],a,n);let[o,s,c,l]=n;this.ctx.fillRect(o,s,c-o,l-s)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.dependencyTracker?.resetBBox(e).recordFullPageBBox(e).recordDependencies(e,G.transform).recordDependencies(e,G.fill).recordOperation(e),this.compose(this.current.getClippedPathBoundingBox()),this.restore(e),this.#g(n)}beginInlineImage(){E(`Should not call beginInlineImage`)}beginImageData(){E(`Should not call beginImageData`)}paintFormXObjectBegin(e,t,n){if(this.contentVisible&&(this.save(e),this.baseTransformStack.push(this.baseTransform),t&&this.transform(e,...t),this.baseTransform=B(this.ctx),n)){I.axialAlignedBoundingBox(n,this.baseTransform,this.current.minMax);let[t,r,i,a]=n,o=new Path2D;o.rect(t,r,i-t,a-r),this.ctx.clip(o),this.dependencyTracker?.recordClipBox(e,this.ctx,t,i,r,a),this.endPath(e)}}paintFormXObjectEnd(e){this.contentVisible&&(this.restore(e),this.baseTransform=this.baseTransformStack.pop())}beginGroup(e,t){if(!this.contentVisible)return;this.save(e);let{inSMaskMode:n}=this;n&&(this.endSMaskMode(),this.current.activeSMask=null);let i=this.ctx;if((!t.needsIsolation||!t.isolated&&!t.hasSoftMask)&&!t.knockout&&!t.isGray&&this.#e===0&&i.globalAlpha===1&&i.globalCompositeOperation===`source-over`&&!n){if(t.bbox){let e=new Path2D,[n,r,a,o]=t.bbox;if(e.rect(n,r,a-n,o-r),t.matrix){let n=new Path2D;n.addPath(e,new DOMMatrix(t.matrix)),e=n}i.clip(e)}this.groupStack.push(null),this.#l.push(null),this.groupLevel++;return}!t.isolated&&!t.knockout&&this.#e===0&&w(`TODO: Fully support non-isolated non-knockout groups.`);let a=B(i);t.matrix&&i.transform(...t.matrix);let o=[0,0,i.canvas.width,i.canvas.height],s;t.bbox?(s=r.slice(),I.axialAlignedBoundingBox(t.bbox,B(i),s),s=I.intersect(s,o)||[0,0,0,0]):s=o;let c=Math.floor(s[0]),l=Math.floor(s[1]),u=Math.max(Math.ceil(s[2])-c,1),d=Math.max(Math.ceil(s[3])-l,1);this.current.startNewPathAndClipBox([0,0,u,d]);let f=this.canvasFactory.create(u,d);t.smask&&this.smaskGroupCanvases.push(f);let p=f.context,m=t.knockout&&!t.isolated?i:null,h=!t.isolated&&!t.knockout&&!t.smask&&t.needsIsolation&&this.#e>0,g=t.knockout?this.canvasFactory.create(u,d):null,_=this.#e;t.knockout?this.#e++:this.#e=0,p.translate(-c,-l),p.transform(...a);let v=!t.isolated&&!t.smask&&t.needsIsolation,y=v&&!n&&_===0&&!t.knockout&&!t.isGray&&t.hasSoftMask&&i.globalAlpha===1&&i.globalCompositeOperation===`source-over`&&this.current.transferMaps===`none`;if(v&&(n||y)&&(p.save(),p.setTransform(1,0,0,1,0,0),p.drawImage(i.canvas,-c,-l),p.restore()),t.bbox){let e=new Path2D,[n,r,i,a]=t.bbox;if(e.rect(n,r,i-n,a-r),t.matrix){let n=new Path2D;n.addPath(e,new DOMMatrix(t.matrix)),e=n}p.clip(e)}t.smask&&this.smaskStack.push({canvas:f.canvas,context:p,offsetX:c,offsetY:l,subtype:t.smask.subtype,backdrop:t.smask.backdrop,transferMap:t.smask.transferMap||null}),(!t.smask||this.dependencyTracker)&&(i.setTransform(1,0,0,1,0,0),i.translate(c,l),i.save()),jn(i,p),this.ctx=p,this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies([`fillAlpha`,`strokeAlpha`,`globalCompositeOperation`]).pushBaseTransform(i),this.setGState(e,[[`BM`,`source-over`],[`ca`,1],[`CA`,1],[`TR`,null]]),this.groupStack.push(i),this.#l.push({backdropCtx:m,savedKnockoutLevel:_,offsetX:c,offsetY:l,hasInnerBackdrop:h,replaceBackdrop:y,knockoutMaskEntry:g,knockoutTempEntry:null,knockoutBackdropEntry:null}),this.groupLevel++}endGroup(e,t){if(!this.contentVisible)return;this.groupLevel--;let n=this.ctx,i=this.groupStack.pop(),a=this.#l.pop();if(a&&(this.#e=a.savedKnockoutLevel),i===null){this.restore(e);return}if(t.isGray&&this.#v(n),this.ctx=i,this.ctx.imageSmoothingEnabled=!1,this.dependencyTracker?.popBaseTransform(),t.smask)this.tempSMask=this.smaskStack.pop(),this.restore(e),this.dependencyTracker&&(this.ctx.restore(),this.inSMaskMode&&this.ctx.setTransform(this.suspendedCtx.getTransform())),this.#y(a);else{this.ctx.restore();let t=B(this.ctx);this.restore(e),this.ctx.save(),this.ctx.setTransform(...t);let o=r.slice();I.axialAlignedBoundingBox([0,0,n.canvas.width,n.canvas.height],t,o);let s=this.#l.at(-1);if(this.#e>0)if(a.hasInnerBackdrop){let{width:e,height:r}=n.canvas,o=this.canvasFactory.create(e,r),s=o.context;s.drawImage(i.canvas,a.offsetX,a.offsetY,e,r,0,0,e,r),s.globalCompositeOperation=`source-over`,s.drawImage(n.canvas,0,0);let c=this.#f(n.canvas);s.globalCompositeOperation=`destination-in`,s.drawImage(c.canvas,0,0);let l=this.ctx.globalCompositeOperation,u=this.ctx.globalAlpha,d=this.ctx.filter;this.ctx.save(),this.ctx.setTransform(...t),this.ctx.globalAlpha=1,F.isCanvasFilterSupported&&(this.ctx.filter=`none`),this.ctx.globalCompositeOperation=`destination-out`,this.ctx.drawImage(c.canvas,0,0),this.ctx.globalCompositeOperation=l,this.ctx.globalAlpha=u,F.isCanvasFilterSupported&&(this.ctx.filter=d??`none`),this.ctx.drawImage(o.canvas,0,0),this.ctx.restore(),this.canvasFactory.destroy(c),this.canvasFactory.destroy(o)}else{let e=s?.backdropCtx??null;this.#m(this.ctx,n.canvas,{backdropCanvas:e?.canvas??null,destTransform:t,backdropOffset:e?[s.offsetX+a.offsetX,s.offsetY+a.offsetY]:[0,0],sourceAlpha:this.ctx.globalAlpha,sourceFilter:this.ctx.filter})}else{if(a.replaceBackdrop){let e=new Path2D;e.rect(0,0,n.canvas.width,n.canvas.height),this.ctx.clip(e),this.ctx.globalCompositeOperation=`copy`}this.ctx.drawImage(n.canvas,0,0)}this.ctx.restore(),this.canvasFactory.destroy({canvas:n.canvas,context:n}),this.#y(a),this.compose(o)}}#v(e){let{canvas:t}=e,{width:n,height:r}=t;if(F.isCanvasFilterSupported){e.save(),e.setTransform(1,0,0,1,0,0),e.filter=`grayscale(1)`,e.globalAlpha=1,e.globalCompositeOperation=`copy`,e.drawImage(t,0,0),e.restore();return}let i=e.getImageData(0,0,n,r),{data:a}=i;for(let e=0,t=a.length;ee.getAttribute(`data-canvas-name`)===o);n===-1?e.push(l):e[n]=l}else this.annotationCanvasMap.set(t,l);this.annotationCanvas.savedCtx=this.ctx,this.ctx=u,this.ctx.save(),this.ctx.setTransform(Z[0],0,0,-Z[1],0,s*Z[1]),Mn(this.ctx)}else{Mn(this.ctx),this.endPath(e);let t=new Path2D;t.rect(n[0],n[1],i,s),this.ctx.clip(t)}}this.current=new On(this.ctx.canvas.width,this.ctx.canvas.height),this.baseTransformStack.push(this.baseTransform),this.transform(e,...r),this.transform(e,...i),this.baseTransform=B(this.ctx)}endAnnotation(e){this.annotationCanvas&&(this.ctx.restore(),this.#d(),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas),this.baseTransform=this.baseTransformStack.pop()}paintImageMaskXObject(e,t){if(!this.contentVisible)return;let n=t.count;t=this.getObject(e,t.data,t),t.count=n;let r=this.#h(this.current.fillAlpha),i=this.ctx,a=this._createMaskCanvas(e,t),o=a.canvas;i.save(),i.setTransform(1,0,0,1,0,0),i.drawImage(o,a.offsetX,a.offsetY),this.dependencyTracker?.resetBBox(e).recordBBox(e,this.ctx,a.offsetX,a.offsetX+o.width,a.offsetY,a.offsetY+o.height).recordOperation(e),i.restore(),a.canvasEntry&&this.canvasFactory.destroy(a.canvasEntry),this.compose(),this.#g(r)}paintImageMaskXObjectRepeat(e,t,n,r=0,i=0,a,o){if(!this.contentVisible)return;t=this.getObject(e,t.data,t);let s=this.#h(this.current.fillAlpha),c=this.ctx;c.save();let l=B(c);c.transform(n,r,i,a,0,0);let u=this._createMaskCanvas(e,t);c.setTransform(1,0,0,1,u.offsetX-l[4],u.offsetY-l[5]),this.dependencyTracker?.resetBBox(e);for(let t=0,s=o.length;tt?l/t:1,o=c>t?c/t:1}}this._cachedScaleForStroking[0]=a,this._cachedScaleForStroking[1]=o}return this._cachedScaleForStroking}rescaleAndStroke(e,t){let{ctx:n,current:{lineWidth:r}}=this,[i,a]=this.getScaleForStroking();if(i===a){n.lineWidth=(r||1)*i,n.stroke(e);return}let o=n.getLineDash();t&&n.save(),n.scale(i,a),Tn.a=1/i,Tn.d=1/a;let s=new Path2D;if(s.addPath(e,Tn),o.length>0){let e=Math.max(i,a);n.setLineDash(o.map(t=>t/e)),n.lineDashOffset/=e}n.lineWidth=r||1,n.stroke(s),t&&n.restore()}isContentVisible(){for(let e=this.markedContentStack.length-1;e>=0;e--)if(!this.markedContentStack[e].visible)return!1;return!0}};for(let e in v)Rn.prototype[e]!==void 0&&(Rn.prototype[v[e]]=Rn.prototype[e]);var zn=class{#e=null;#t=null;_fullReader=null;_rangeReaders=new Set;_source=null;constructor(e,t,n){this._source=e,this.#e=t,this.#t=n}get _progressiveDataLength(){return this._fullReader?._loaded??0}getFullReader(){return D(!this._fullReader,`BasePDFStream.getFullReader can only be called once.`),this._fullReader=new this.#e(this)}getRangeReader(e,t){if(t<=this._progressiveDataLength)return null;let n=new this.#t(this,e,t);return this._rangeReaders.add(n),n}cancelAllRequests(e){this._fullReader?.cancel(e);for(let t of new Set(this._rangeReaders))t.cancel(e)}},Bn=class{onProgress=null;_contentLength=0;_filename=null;_headersCapability=Promise.withResolvers();_isRangeSupported=!1;_isStreamingSupported=!1;_loaded=0;_stream=null;constructor(e){this._stream=e}_callOnProgress(){this.onProgress?.({loaded:this._loaded,total:this._contentLength})}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){E("Abstract method `read` called")}cancel(e){E("Abstract method `cancel` called")}},Vn=class{_stream=null;constructor(e,t,n){this._stream=e}async read(){E("Abstract method `read` called")}cancel(e){E("Abstract method `cancel` called")}};function Hn(e){let t=!0,n=r(`filename\\*`,`i`).exec(e);if(n){n=n[1];let e=s(n);return e=unescape(e),e=c(e),e=l(e),a(e)}if(n=o(e),n)return a(l(n));if(n=r(`filename`,`i`).exec(e),n){n=n[1];let e=s(n);return e=l(e),a(e)}function r(e,t){return RegExp(`(?:^|;)\\s*`+e+`\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)`,t)}function i(e,n){if(e){if(!/^[\x00-\xFF]+$/.test(n))return n;try{let r=new TextDecoder(e,{fatal:!0}),i=oe(n);n=r.decode(i),t=!1}catch{}}return n}function a(e){return t&&/[\x80-\xff]/.test(e)&&(e=i(`utf-8`,e),t&&(e=i(`iso-8859-1`,e))),e}function o(e){let t=[],n,i=r(`filename\\*((?!0\\d)\\d+)(\\*?)`,`ig`);for(;(n=i.exec(e))!==null;){let[,e,r,i]=n;if(e=parseInt(e,10),e in t){if(e===0)break;continue}t[e]=[r,i]}let a=[];for(let e=0;e{e._responseOrigin=Wn(n.url),Xn(n.status,i),this._reader=n.body.getReader();let a=n.headers,{contentLength:o,isRangeSupported:s}=Gn({responseHeaders:a,isHttp:!0,rangeChunkSize:r,disableRange:t});this._contentLength=o,this._isRangeSupported=s,this._filename=Kn(a),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new P(`Streaming is disabled.`)),this._headersCapability.resolve()}).catch(this._headersCapability.reject)}async read(){await this._headersCapability.promise;let{value:e,done:t}=await this._reader.read();return t?{value:e,done:t}:(this._loaded+=e.byteLength,this._callOnProgress(),{value:Zn(e),done:!1})}cancel(e){this._reader?.cancel(e),this._abortController.abort()}},er=class extends Vn{_abortController=new AbortController;_readCapability=Promise.withResolvers();_reader=null;constructor(e,t,n){super(e,t,n);let{url:r,withCredentials:i}=e._source,a=new Headers(e.headers);a.append(`Range`,`bytes=${t}-${n-1}`),Yn(r,a,i,this._abortController).then(t=>{Jn(Wn(t.url),e._responseOrigin),Xn(t.status,r),this._reader=t.body.getReader(),this._readCapability.resolve()}).catch(this._readCapability.reject)}async read(){await this._readCapability.promise;let{value:e,done:t}=await this._reader.read();return t?{value:e,done:t}:{value:Zn(e),done:!1}}cancel(e){this._reader?.cancel(e),this._abortController.abort()}};function tr(e){return e instanceof Uint8Array&&e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer}function nr(){for(let e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}var rr=class extends zn{_progressiveDone=!1;_queuedChunks=[];constructor(e){super(e,ir,ar);let{pdfDataRangeTransport:t}=e,{initialData:n,progressiveDone:r}=t;if(n?.length>0){let e=tr(n);this._queuedChunks.push(e)}this._progressiveDone=r,t.transportReady(e=>{switch(e.type){case`range`:case`progressiveRead`:this.#e(e.begin,e.chunk);break;case`progressiveDone`:this._fullReader?.progressiveDone(),this._progressiveDone=!0}})}#e(e,t){let n=tr(t);if(e===void 0)this._fullReader?this._fullReader._enqueue(n):this._queuedChunks.push(n);else{let t=this._rangeReaders.keys().find(t=>t._begin===e);D(t,"#onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."),t._enqueue(n)}}getFullReader(){let e=super.getFullReader();return this._queuedChunks=null,e}getRangeReader(e,t){let n=super.getRangeReader(e,t);return n&&(n.onDone=()=>this._rangeReaders.delete(n),this._source.pdfDataRangeTransport.requestDataRange(e,t)),n}cancelAllRequests(e){super.cancelAllRequests(e),this._source.pdfDataRangeTransport.abort()}},ir=class extends Bn{#e=nr.bind(this);_done=!1;_queuedChunks=null;_requests=[];constructor(e){super(e);let{pdfDataRangeTransport:t,disableRange:n,disableStream:r}=e._source,{length:i,contentDispositionFilename:a}=t;this._queuedChunks=e._queuedChunks||[];for(let e of this._queuedChunks)this._loaded+=e.byteLength;this._done=e._progressiveDone,this._contentLength=i,this._isStreamingSupported=!r,this._isRangeSupported=!n,Ee(a)&&(this._filename=a),this._headersCapability.resolve();let o=this._loaded;Promise.resolve().then(()=>{o>0&&this._loaded===o&&this._callOnProgress()})}_enqueue(e){this._done||(this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunks.push(e),this._loaded+=e.byteLength,this._callOnProgress())}async read(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};let e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0,this.#e()}progressiveDone(){this._done||=!0,this._queuedChunks.length===0&&this.#e()}},ar=class extends Vn{#e=nr.bind(this);onDone=null;_begin=-1;_done=!1;_queuedChunk=null;_requests=[];constructor(e,t,n){super(e,t,n),this._begin=t}_enqueue(e){this._done||(this._requests.length===0?this._queuedChunk=e:(this._requests.shift().resolve({value:e,done:!1}),this.#e()),this._done=!0,this.onDone?.())}async read(){if(this._queuedChunk){let e=this._queuedChunk;return this._queuedChunk=null,{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};let e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0,this.#e(),this.onDone?.()}},or=200,sr=206;function cr(e){return typeof e==`string`?oe(e).buffer:e}var lr=class extends zn{#e=new WeakMap;_responseOrigin=null;constructor(e){super(e,ur,dr);let{httpHeaders:t,url:n}=e;this.url=n,this.isHttp=/https?:/.test(n.protocol),this.headers=Un(this.isHttp,t)}_request(e){let t=new XMLHttpRequest,n={validateStatus:null,onHeadersReceived:e.onHeadersReceived,onDone:e.onDone,onError:e.onError,onProgress:e.onProgress};this.#e.set(t,n),t.open(`GET`,this.url),t.withCredentials=this._source.withCredentials;for(let[e,n]of this.headers)t.setRequestHeader(e,n);return this.isHttp&&`begin`in e&&`end`in e?(t.setRequestHeader(`Range`,`bytes=${e.begin}-${e.end-1}`),n.validateStatus=e=>e===sr||e===or):n.validateStatus=e=>e===or,t.responseType=`arraybuffer`,D(e.onError,"Expected `onError` callback to be provided."),t.onerror=()=>e.onError(t.status),t.onreadystatechange=this.#n.bind(this,t),t.onprogress=this.#t.bind(this,t),t.send(null),t}#t(e,t){this.#e.get(e)?.onProgress?.(t)}#n(e,t){let n=this.#e.get(e);if(!n||(e.readyState>=2&&n.onHeadersReceived&&(n.onHeadersReceived(),delete n.onHeadersReceived),e.readyState!==4)||!this.#e.has(e))return;if(this.#e.delete(e),e.status===0&&this.isHttp){n.onError(e.status);return}let r=e.status||or;if(!n.validateStatus(r)){n.onError(e.status);return}let i=cr(e.response);if(r===sr){let t=e.getResponseHeader(`Content-Range`);/bytes \d+-\d+\/\d+/.test(t)?n.onDone(i):(T(`Missing or invalid "Content-Range" header.`),n.onError(0))}else i?n.onDone(i):n.onError(e.status)}_abortRequest(e){this.#e.has(e)&&(this.#e.delete(e),e.abort())}getRangeReader(e,t){let n=super.getRangeReader(e,t);return n&&(n.onClosed=()=>this._rangeReaders.delete(n)),n}},ur=class extends Bn{#e=nr.bind(this);_cachedChunks=[];_done=!1;_requests=[];_storedError=null;constructor(e){super(e),this._fullRequestXhr=e._request({onHeadersReceived:this.#t.bind(this),onDone:this.#n.bind(this),onError:this.#r.bind(this),onProgress:this.#i.bind(this)})}#t(){let e=this._stream,{disableRange:t,rangeChunkSize:n}=e._source,r=this._fullRequestXhr;e._responseOrigin=Wn(r.responseURL);let i=r.getAllResponseHeaders(),a=new Headers(i?i.trimStart().replace(/[^\S ]+$/,``).split(/[\r\n]+/).map(e=>{let[t,...n]=e.split(`: `);return[t,n.join(`: `)]}):[]),{contentLength:o,isRangeSupported:s}=Gn({responseHeaders:a,isHttp:e.isHttp,rangeChunkSize:n,disableRange:t});this._contentLength=o,this._isRangeSupported=s,this._filename=Kn(a),this._isRangeSupported&&e._abortRequest(r),this._headersCapability.resolve()}#n(e){this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._cachedChunks.push(e),this._done=!0,this._cachedChunks.length===0&&this.#e()}#r(e){this._storedError=qn(e,this._stream.url),this._headersCapability.reject(this._storedError);for(let e of this._requests)e.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}#i(e){this.onProgress?.({loaded:e.loaded,total:e.lengthComputable?e.total:this._contentLength})}async read(){if(await this._headersCapability.promise,this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};let e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0,this._headersCapability.reject(e),this.#e(),this._stream._abortRequest(this._fullRequestXhr),this._fullRequestXhr=null}},dr=class extends Vn{#e=nr.bind(this);onClosed=null;_done=!1;_queuedChunk=null;_requests=[];_storedError=null;constructor(e,t,n){super(e,t,n),this._requestXhr=e._request({begin:t,end:n,onHeadersReceived:this.#t.bind(this),onDone:this.#n.bind(this),onError:this.#r.bind(this),onProgress:null})}#t(){let e=Wn(this._requestXhr?.responseURL);try{Jn(e,this._stream._responseOrigin)}catch(e){this._storedError=e,this.#r(0)}}#n(e){this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunk=e,this._done=!0,this.#e(),this.onClosed?.()}#r(e){this._storedError??=qn(e,this._stream.url);for(let e of this._requests)e.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}async read(){if(this._storedError)throw this._storedError;if(this._queuedChunk!==null){let e=this._queuedChunk;return this._queuedChunk=null,{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};let e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0,this.#e(),this._stream._abortRequest(this._requestXhr),this.onClosed?.()}};function fr(e,t=null){let n=process.getBuiltinModule(`fs`),{Readable:r}=process.getBuiltinModule(`stream`),i=n.createReadStream(e,t);return r.toWeb(i)}var pr=class extends zn{constructor(e){super(e,mr,hr);let{url:t}=e;D(t.protocol===`file:`,`PDFNodeStream only supports file:// URLs.`)}},mr=class extends Bn{_reader=null;constructor(e){super(e);let{disableRange:t,disableStream:n,rangeChunkSize:r,url:i}=e._source;this._isStreamingSupported=!n,process.getBuiltinModule(`fs/promises`).lstat(i).then(e=>{let n=fr(i);this._reader=n.getReader();let{size:a}=e;this._contentLength=a,this._isRangeSupported=!t&&a>2*r,!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new P(`Streaming is disabled.`)),this._headersCapability.resolve()}).catch(e=>{e.code===`ENOENT`&&(e=qn(0,i)),this._headersCapability.reject(e)})}async read(){await this._headersCapability.promise;let{value:e,done:t}=await this._reader.read();return t?{value:e,done:t}:(this._loaded+=e.byteLength,this._callOnProgress(),{value:Zn(e),done:!1})}cancel(e){this._reader?.cancel(e)}},hr=class extends Vn{_readCapability=Promise.withResolvers();_reader=null;constructor(e,t,n){super(e,t,n);let{url:r}=e._source;try{let e=fr(r,{start:t,end:n-1});this._reader=e.getReader(),this._readCapability.resolve()}catch(e){this._readCapability.reject(e)}}async read(){await this._readCapability.promise;let{value:e,done:t}=await this._reader.read();return t?{value:e,done:t}:{value:Zn(e),done:!1}}cancel(e){this._reader?.cancel(e)}};function gr(e){return Ae(e)?Qn:t?pr:lr}var _r=class{static#e=null;static#t=``;static get workerPort(){return this.#e}static set workerPort(e){if(!(typeof Worker<`u`&&e instanceof Worker)&&e!==null)throw Error("Invalid `workerPort` type.");this.#e=e}static get workerSrc(){return this.#t}static set workerSrc(e){if(typeof e!=`string`)throw Error("Invalid `workerSrc` type.");this.#t=e}},vr=class{#e;#t;constructor({parsedData:e,rawData:t}){this.#e=e,this.#t=t}getRaw(){return this.#t}get(e){return this.#e.get(e)??null}[Symbol.iterator](){return this.#e.entries()}},yr=Symbol(`INTERNAL`),br=class{#e=!1;#t=!1;#n=!1;#r=!0;constructor(e,{name:t,intent:n,usage:r,rbGroups:i}){this.#e=!!(e&o.DISPLAY),this.#t=!!(e&o.PRINT),this.name=t,this.intent=n,this.usage=r,this.rbGroups=i}get visible(){if(this.#n)return this.#r;if(!this.#r)return!1;let{print:e,view:t}=this.usage;return this.#e?t?.viewState!==`OFF`:!this.#t||e?.printState!==`OFF`}_setVisible(e,t,n=!1){e!==yr&&E("Internal method `_setVisible` called."),this.#n=n,this.#r=t}get serializable(){return{userSet:this.#n,visible:this.#r}}},xr=class e{#e=null;#t=new Map;#n=null;#r=null;#i;creator=null;name=null;constructor(e,t=o.DISPLAY,n=null){if(this.#i=e,this.renderingIntent=t,e!==null){this.name=e.name,this.creator=e.creator,this.#r=e.order;for(let n of e.groups)this.#t.set(n.id,new br(t,n));if(n){n.size!==this.#t.size&&E(`Incorrect serialized groupState.`);for(let[e,t]of n)this.#t.get(e)._setVisible(yr,t.visible,t.userSet)}else{if(e.baseState===`OFF`)for(let e of this.#t.values())e._setVisible(yr,!1);for(let t of e.on)this.#t.get(t)._setVisible(yr,!0);for(let t of e.off)this.#t.get(t)._setVisible(yr,!1)}this.#n=this.getHash()}}#a(e){let t=e.length;if(t<2)return!0;let n=e[0];for(let r=1;re===t+1)&&(this.#e=null)}deletePages(e){this.#a();let t=this.#e,n=this.#o();this.#i={pageNumberToId:t.slice(),pagesNumber:this.#n,prevPageNumbers:this.#t.slice()};let r=this.#n-e.length;this.#n=r;let i=this.#e=new Uint32Array(r);this.#t=new Int32Array(r);let a=0,o=0;for(let n of e){let e=n-1;e!==a&&(i.set(t.subarray(a,e),o),o+=e-a),a=e+1}athis.#e[e-1])}}cancelCopy(){this.#r=null}pastePages(e){this.#a();let t=this.#e,n=this.#o(),{pageNumbers:r,pageIds:i}=this.#r,a=this.#n+r.length;this.#n=a;let o=this.#e=new Uint32Array(a);this.#t=new Int32Array(a),o.set(t.subarray(0,e),0),o.set(i,e),o.set(t.subarray(e),e+r.length),this.#s(n,null,e,r),this.#r=null}#s(e,t=null,n=-1,r=null){let i=this.#t,a=this.#e,o=n+(r?.length??0),s=new Map;for(let c=0,l=this.#n;c=n&&ce[0]-t[0]);for(let n=0,r=e.length;ne-t);let t=new Map;for(let n=0,r=e.length;n({...Promise.withResolvers(),data:Cr}),Tr=class{#e=new Map;get(e,t=null){if(t){let n=this.#e.getOrInsertComputed(e,wr);return n.promise.then(()=>t(n.data)),null}let n=this.#e.get(e);if(!n||n.data===Cr)throw Error(`Requesting object that isn't resolved yet ${e}.`);return n.data}has(e){let t=this.#e.get(e);return!!t&&t.data!==Cr}delete(e){let t=this.#e.get(e);return!t||t.data===Cr?!1:(this.#e.delete(e),!0)}resolve(e,t=null){let n=this.#e.getOrInsertComputed(e,wr);if(n.data!==Cr)throw Error(`Object already resolved ${e}.`);n.data=t,n.resolve()}clear(){for(let{data:e}of this.#e.values())e?.bitmap?.close();this.#e.clear()}*[Symbol.iterator](){for(let[e,{data:t}]of this.#e)t!==Cr&&(yield[e,t])}},Er=1e5,Dr=30,Or=class e{#e=Promise.withResolvers();#t=null;#n=!1;#r=!!globalThis.FontInspector?.enabled;#i=null;#a=null;#o=null;#s=0;#c=0;#l=null;#u=null;#d=0;#f=0;#p=Object.create(null);#m=[];#h=null;#g=[];#_=new WeakMap;#v=null;static#y=new Map;static#b=new Map;static#x=new WeakMap;static#S=null;static#C=new Set;constructor({textContentSource:t,images:n,container:r,viewport:i}){if(t instanceof ReadableStream)this.#h=t;else if(typeof t==`object`)this.#h=new ReadableStream({start(e){e.enqueue(t),e.close()}});else throw Error(`No "textContentSource" parameter specified.`);this.#t=this.#u=r,this.#i=n,this.#f=i.scale*Ie.pixelRatio,this.#d=i.rotation,this.#o={div:null,properties:null,ctx:null};let{pageWidth:a,pageHeight:o,pageX:s,pageY:c}=i.rawDims;this.#v=[1,0,0,-1,-s,c+o],this.#c=a,this.#s=o,e.#k(),r.style.setProperty(`--min-font-size`,e.#S),Fe(r,i),this.#e.promise.finally(()=>{e.#C.delete(this),this.#o=null,this.#p=null}).catch(()=>{})}static get fontFamilyMap(){let{isWindows:e,isFirefox:t}=F.platform;return M(this,`fontFamilyMap`,new Map([[`sans-serif`,`${e&&t?`Calibri, `:``}sans-serif`],[`monospace`,`${e&&t?`Lucida Console, `:``}monospace`]]))}render(){this.#i&&this.#t.append(this.#i.render());let t=()=>{this.#l.read().then(({value:e,done:n})=>{if(n){this.#e.resolve();return}this.#a??=e.lang,Object.assign(this.#p,e.styles),this.#w(e.items),t()},this.#e.reject)};return this.#l=this.#h.getReader(),e.#C.add(this),t(),this.#e.promise}update({viewport:t,onBefore:n=null}){let r=t.scale*Ie.pixelRatio,i=t.rotation;if(i!==this.#d&&(n?.(),this.#d=i,Fe(this.#u,{rotation:i})),r!==this.#f){n?.(),this.#f=r;let t={div:null,properties:null,ctx:e.#D(this.#a)};for(let e of this.#g)t.properties=this.#_.get(e),t.div=e,this.#E(t)}}cancel(){let e=new P(`TextLayer task cancelled.`);this.#l?.cancel(e).catch(()=>{}),this.#l=null,this.#e.reject(e)}get textDivs(){return this.#g}get textContentItemsStr(){return this.#m}#w(t){if(this.#n)return;this.#o.ctx??=e.#D(this.#a);let n=this.#g,r=this.#m;for(let e of t){if(n.length>Er){T(`Ignoring additional textDivs for performance reasons.`),this.#n=!0;return}if(e.str===void 0){if(e.type===`beginMarkedContentProps`||e.type===`beginMarkedContent`){let t=this.#t;this.#t=document.createElement(`span`),this.#t.classList.add(`markedContent`),e.id&&this.#t.setAttribute(`id`,e.id),e.tag===`Artifact`&&(this.#t.ariaHidden=!0),t.append(this.#t)}else e.type===`endMarkedContent`&&(this.#t=this.#t.parentNode);continue}r.push(e.str),this.#T(e)}}#T(t){let n=document.createElement(`span`),r={angle:0,canvasWidth:0,hasText:t.str!==``,hasEOL:t.hasEOL,fontSize:0};this.#g.push(n);let i=I.transform(this.#v,t.transform),a=Math.atan2(i[1],i[0]),o=this.#p[t.fontName];o.vertical&&(a+=Math.PI/2);let s=this.#r&&o.fontSubstitution||o.fontFamily;s=e.fontFamilyMap.get(s)||s;let c=Math.hypot(i[2],i[3]),l=c*e.#A(s,o,this.#a),u,d;a===0?(u=i[4],d=i[5]-l):(u=i[4]+l*Math.sin(a),d=i[5]-l*Math.cos(a));let f=n.style;f.left=`${(100*u/this.#c).toFixed(2)}%`,f.top=`${(100*d/this.#s).toFixed(2)}%`,f.setProperty(`--font-height`,`${c.toFixed(2)}px`),f.fontFamily=s,r.fontSize=c,n.setAttribute(`role`,`presentation`),n.textContent=t.str,n.dir=t.dir,this.#r&&(n.dataset.fontName=o.fontSubstitutionLoadedName||t.fontName),a!==0&&(r.angle=180/Math.PI*a);let p=!1;if(t.str.length>1)p=!0;else if(t.str!==` `&&t.transform[0]!==t.transform[3]){let e=Math.abs(t.transform[0]),n=Math.abs(t.transform[3]);e!==n&&Math.max(e,n)/Math.min(e,n)>1.5&&(p=!0)}if(p&&(r.canvasWidth=o.vertical?t.height:t.width),this.#_.set(n,r),this.#o.div=n,this.#o.properties=r,this.#E(this.#o),r.hasText&&this.#t.append(n),r.hasEOL){let e=document.createElement(`br`);e.setAttribute(`role`,`presentation`),this.#t.append(e)}}#E(t){let{div:n,properties:r,ctx:i}=t,{style:a}=n;if(r.canvasWidth!==0&&r.hasText){let{fontFamily:t}=a,{canvasWidth:o,fontSize:s}=r;e.#O(i,s*this.#f,t);let{width:c}=i.measureText(n.textContent);c>0&&a.setProperty(`--scale-x`,o*this.#f/c)}r.angle!==0&&a.setProperty(`--rotate`,`${r.angle}deg`)}static cleanup(){if(!(this.#C.size>0)){this.#y.clear();for(let{canvas:e}of this.#b.values())e.remove();this.#b.clear()}}static#D(e=null){let t=this.#b.get(e||=``);if(!t){let n=document.createElement(`canvas`);n.style.cssText=`position:absolute;top:0;left:0;width:0;height:0;display:none;letter-spacing:normal;word-spacing:normal`,n.lang=e,document.body.append(n),t=n.getContext(`2d`,{alpha:!1,willReadFrequently:!0}),this.#b.set(e,t),this.#x.set(t,{size:0,family:``})}return t}static#O(e,t,n){let r=this.#x.get(e);(t!==r.size||n!==r.family)&&(e.font=`${t}px ${n}`,r.size=t,r.family=n)}static#k(){if(this.#S!==null)return;let e=document.createElement(`div`);e.style.opacity=0,e.style.lineHeight=1,e.style.fontSize=`1px`,e.style.position=`absolute`,e.textContent=`X`,document.body.append(e),this.#S=e.getBoundingClientRect().height,e.remove()}static#A(e,t,n){let r=this.#y.get(e);if(r)return r;let i=this.#D(n);i.canvas.width=i.canvas.height=Dr,this.#O(i,Dr,e);let a=i.measureText(``),o=a.fontBoundingBoxAscent,s=Math.abs(a.fontBoundingBoxDescent);i.canvas.width=i.canvas.height=0;let c=.8;return o?c=o/(o+s):(F.platform.isFirefox&&T("Enable the `dom.textMetrics.fontBoundingBox.enabled` preference in `about:config` to improve TextLayer rendering."),t.ascent?c=t.ascent:t.descent&&(c=1+t.descent)),this.#y.set(e,c),c}},kr=100;function Ar(e={}){let n=new jr,{docId:r}=n,i=e.url?Lt(e.url):null,a=e.data?Rt(e.data):null,o=e.httpHeaders||null,s=e.withCredentials===!0,c=e.password??null,l=e.range instanceof Mr?e.range:null,u=Number.isInteger(e.rangeChunkSize)&&e.rangeChunkSize>0?e.rangeChunkSize:2**16,d=e.worker instanceof Fr?e.worker:null,f=e.verbosity,p=typeof e.docBaseUrl==`string`&&!Te(e.docBaseUrl)?e.docBaseUrl:null,m=zt(e.cMapUrl),h=e.cMapPacked!==!1,g=zt(e.iccUrl),_=zt(e.standardFontDataUrl),v=zt(e.wasmUrl),y=e.stopAtErrors!==!0,b=Number.isInteger(e.maxImageSize)&&e.maxImageSize>-1?e.maxImageSize:-1,x=typeof e.isOffscreenCanvasSupported==`boolean`?e.isOffscreenCanvasSupported:!t,C=typeof e.isImageDecoderSupported==`boolean`?e.isImageDecoderSupported:!t,w=Number.isInteger(e.canvasMaxAreaInBytes)?e.canvasMaxAreaInBytes:-1,T=typeof e.disableFontFace==`boolean`?e.disableFontFace:t,E=e.fontExtraProperties===!0,D=e.enableXfa===!0,O=e.ownerDocument||globalThis.document,k=e.disableRange===!0,A=e.disableStream===!0,j=e.disableAutoFetch===!0,M=e.pdfBug===!0,N=e.CanvasFactory||(t?tn:Yt),ee=e.FilterFactory||(t?en:Zt),te=e.BinaryDataFactory||(t?nn:qt),ne=e.enableHWA===!0,re=e.enableWebGPU===!0?cn():Promise.resolve(!1),ie=e.useWasm!==!1,P=e.pagesMapper||new Sr,ae=typeof e.useSystemFonts==`boolean`?e.useSystemFonts:!t&&!T,oe=typeof e.useWorkerFetch==`boolean`?e.useWorkerFetch:!!(te===qt&&m&&h&&_&&v&&Ae(m,document.baseURI)&&Ae(_,document.baseURI)&&Ae(v,document.baseURI));S(f);let F={canvasFactory:new N({ownerDocument:O,enableHWA:ne}),filterFactory:new ee({docId:r,ownerDocument:O}),binaryDataFactory:oe?null:new te({cMapUrl:m,standardFontDataUrl:_,wasmUrl:v})};d||(d=Fr.create({verbosity:f,port:_r.workerPort}),n._worker=d);let I={docId:r,apiVersion:`6.2.108`,data:a,password:c,disableAutoFetch:j,rangeChunkSize:u,docBaseUrl:p,enableXfa:D,evaluatorOptions:{maxImageSize:b,disableFontFace:T,ignoreErrors:y,isOffscreenCanvasSupported:x,isImageDecoderSupported:C,canvasMaxAreaInBytes:w,fontExtraProperties:E,useSystemFonts:ae,useWasm:ie,useWorkerFetch:oe,cMapUrl:m,cMapPacked:h,iccUrl:g,standardFontDataUrl:_,wasmUrl:v,hasGPU:!1}},se={ownerDocument:O,pdfBug:M,styleElement:null,enableHWA:ne,loadingParams:{disableAutoFetch:j,enableXfa:D}};return Promise.all([d.promise,re]).then(function([,e]){if(d.destroyed)throw Error(`Worker was destroyed`);I.evaluatorOptions.hasGPU=e;let t=d.messageHandler.sendWithPromise(`GetDocRequest`,I,a?[a.buffer]:null),c;if(!a)if(l)c=new rr({pdfDataRangeTransport:l,disableRange:k,disableStream:A});else if(i)c=new(gr(i))({url:i,httpHeaders:o,withCredentials:s,rangeChunkSize:u,disableRange:k,disableStream:A});else throw Error("getDocument - expected either `data`, `range`, or `url` parameter.");return t.then(e=>{if(d.destroyed)throw Error(`Worker was destroyed`);let t=new Gt(r,e,d.port),i=new Ir(t,n,c,se,F,P);if(n._transport=i,n.destroyed)throw Error(`Loading aborted`);t.send(`Ready`,null)})}).catch(n._capability.reject).finally(n._setupCapability.resolve),n}var jr=class e{static#e=0;_capability=Promise.withResolvers();_setupCapability=Promise.withResolvers();_transport=null;_worker=null;docId=`d${e.#e++}`;destroyed=!1;onPassword=null;onProgress=null;get promise(){return this._capability.promise}async destroy(){this.destroyed=!0,this._capability.promise.catch(()=>{});try{this._worker?.port&&(this._worker._pendingDestroy=!0),await this._setupCapability.promise,await this._transport?.destroy()}catch(e){throw this._worker?.port&&delete this._worker._pendingDestroy,e}this._transport=null,this._worker?.destroy(),this._worker=null}async getData(){return this._transport.getData()}},Mr=class{#e=Promise.withResolvers();#t=null;constructor(e,t,n=!1,r=null){this.length=e,this.initialData=t,this.progressiveDone=n,this.contentDispositionFilename=r}onDataRange(e,t){this.#t({type:`range`,begin:e,chunk:t})}onDataProgressiveRead(e){this.#e.promise.then(()=>{this.#t({type:`progressiveRead`,chunk:e})})}onDataProgressiveDone(){this.#e.promise.then(()=>{this.#t({type:`progressiveDone`})})}transportReady(e){this.#t=e,this.#e.resolve()}requestDataRange(e,t){E(`Abstract method PDFDataRangeTransport.requestDataRange`)}abort(){}},Nr=class{constructor(e,t){this._pdfInfo=e,this._transport=t}get pagesMapper(){return this._transport.pagesMapper}get annotationStorage(){return this._transport.annotationStorage}get canvasFactory(){return this._transport.canvasFactory}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return M(this,`isPureXfa`,!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(e){return this._transport.getPage(e)}getPageIndex(e){return this._transport.getPageIndex(e)}getDestinations(){return this._transport.getDestinations()}getDestination(e){return this._transport.getDestination(e)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getAttachmentContent(e){return this._transport.getAttachmentContent(e)}getAnnotationsByType(e,t){return this._transport.getAnnotationsByType(e,t)}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:e=`display`}={}){let{renderingIntent:t}=this._transport.getRenderingIntent(e);return this._transport.getOptionalContentConfig(t)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}extractPages(e){return this._transport.extractPages(e)}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}getRawData(e){return this._transport.getRawData(e)}cleanup(e=!1){return this._transport.startCleanup(e||this.isPureXfa)}cachedPageNumber(e){return this._transport.cachedPageNumber(e)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}getSignatures(){return this._transport.getSignatures()}getSignatureData(e){return this._transport.getSignatureData(e)}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}},Pr=class e{#e=!1;#t=null;constructor(e,t,n,r,i=!1){this._pageIndex=e,this._pageInfo=t,this._transport=n,this._stats=i?new ke:null,this._pdfBug=i,this.commonObjs=n.commonObjs,this.objs=new Tr,this._intentStates=new Map,this.destroyed=!1,this.recordedBBoxes=null,this.#t=r,this.imageCoordinates=null}clone(t){let n=new e(t,this._pageInfo,this._transport,this.#t,this._pdfBug);return n.clonedFromIndex=this.clonedFromIndex??this._pageIndex,this._transport.updatePage(n),n}get pageNumber(){return this._pageIndex+1}set pageNumber(e){this._pageIndex=e-1,this._transport.updatePage(this)}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:e,rotation:t=this.rotate,offsetX:n=0,offsetY:r=0,dontFlip:i=!1}={}){return new _e({viewBox:this.view,userUnit:this.userUnit,scale:e,rotation:t,offsetX:n,offsetY:r,dontFlip:i})}getAnnotations({intent:e=`display`}={}){let{renderingIntent:t}=this._transport.getRenderingIntent(e);return this._transport.getAnnotations(this._pageIndex,t)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return M(this,`isPureXfa`,!!this._transport._htmlForXfa)}async getXfa(){return this._transport._htmlForXfa?.children[this._pageIndex]||null}render({canvasContext:e,canvas:t=e.canvas,viewport:n,intent:r=`display`,annotationMode:i=s.ENABLE,transform:a=null,background:c=null,optionalContentConfigPromise:l=null,annotationCanvasMap:u=null,pageColors:d=null,printAnnotationStorage:f=null,isEditing:p=!1,recordImages:m=!1,recordOperations:h=!1,operationsFilter:g=null}){this._stats?.time(`Overall`);let _=this._transport.getRenderingIntent(r,i,f,p),{renderingIntent:v,cacheKey:y}=_;this.#e=!1,l||=this._transport.getOptionalContentConfig(v);let b=this._intentStates.getOrInsertComputed(y,he);b.streamReaderCancelTimeout&&=(clearTimeout(b.streamReaderCancelTimeout),null);let x=!!(v&o.PRINT);b.displayReadyCapability||(b.displayReadyCapability=Promise.withResolvers(),b.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time(`Page Request`),this._pumpOperatorList(_));let S=!!(this._pdfBug&&globalThis.StepperManager?.enabled),C=!!t&&!this.recordedBBoxes&&(h||S),w=!!t&&!this.imageCoordinates&&m,T=e=>{if(b.renderTasks.delete(O),C){let e=O.gfx?.dependencyTracker.take();e&&(O.stepper?.setOperatorBBoxes(e,O.gfx.dependencyTracker.takeDebugMetadata()),h&&(this.recordedBBoxes=e))}w&&!e&&(this.imageCoordinates=O.gfx?.imagesTracker.take()),x&&(this.#e=!0),this.#n(),e?(O.capability.reject(e),this._abortOperatorList({intentState:b,reason:e instanceof Error?e:Error(e)})):O.capability.resolve(),this._stats&&(this._stats.timeEnd(`Rendering`),this._stats.timeEnd(`Overall`),globalThis.Stats?.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))},E=null,D=null;(C||w)&&(D=new Ct(t,b.operatorList.length)),C&&(E=new wt(D,S));let O=new Rr({callback:T,params:{canvas:t,canvasContext:e,dependencyTracker:E??D,imagesTracker:w?new Et(t):null,viewport:n,transform:a,background:c},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:u,operatorList:b.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!x,pdfBug:this._pdfBug,pageColors:d,enableHWA:this._transport.enableHWA,operationsFilter:g});(b.renderTasks||=new Set).add(O);let k=O.task;return Promise.all([b.displayReadyCapability.promise,l]).then(([e,t])=>{if(this.destroyed){T();return}if(this._stats?.time(`Rendering`),!(t.renderingIntent&v))throw Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");O.initializeGraphics({transparency:e,optionalContentConfig:t}),O.operatorListChanged()}).catch(T),k}getOperatorList({intent:e=`display`,annotationMode:t=s.ENABLE,printAnnotationStorage:n=null,isEditing:r=!1}={}){function i(){o.operatorList.lastChunk&&(o.opListReadCapability.resolve(o.operatorList),o.renderTasks.delete(c))}let a=this._transport.getRenderingIntent(e,t,n,r,!0),o=this._intentStates.getOrInsertComputed(a.cacheKey,he),c;return o.opListReadCapability||(c=Object.create(null),c.operatorListChanged=i,o.opListReadCapability=Promise.withResolvers(),(o.renderTasks||=new Set).add(c),o.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time(`Page Request`),this._pumpOperatorList(a)),o.opListReadCapability.promise}streamTextContent({includeMarkedContent:e=!1,disableNormalization:t=!1}={}){return this._transport.messageHandler.sendWithStream(`GetTextContent`,{pageId:this.#t.getPageId(this._pageIndex+1)-1,pageIndex:this._pageIndex,includeMarkedContent:e===!0,disableNormalization:t===!0},{highWaterMark:100,size(e){return e.items.length}})}async getTextContent(e={}){if(this._transport._htmlForXfa)return this.getXfa().then(e=>ve.textContent(e));let t=this.streamTextContent(e),n={items:[],styles:Object.create(null),lang:null};for await(let e of t)n.lang??=e.lang,Object.assign(n.styles,e.styles),n.items.push(...e.items);return n}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;let e=[];for(let t of this._intentStates.values())if(this._abortOperatorList({intentState:t,reason:Error(`Page was destroyed.`),force:!0}),!t.opListReadCapability)for(let n of t.renderTasks)e.push(n.completed),n.cancel();return this.objs.clear(),this.#e=!1,Promise.all(e)}cleanup(e=!1){this.#e=!0;let t=this.#n();return e&&t&&(this._stats&&=new ke),t}#n(){if(!this.#e||this.destroyed)return!1;for(let{renderTasks:e,operatorList:t}of this._intentStates.values())if(e.size>0||!t.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),this.#e=!1,!0}_startRenderPage(e,t){let n=this._intentStates.get(t);n&&(this._stats?.timeEnd(`Page Request`),n.displayReadyCapability?.resolve(e))}_renderPageChunk(e,t){for(let n=0,r=e.length;n{o.read().then(({value:e,done:t})=>{if(t){s.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(e,s),c())},e=>{if(s.streamReader=null,!this._transport.destroyed){if(s.operatorList){s.operatorList.lastChunk=!0;for(let e of s.renderTasks)e.operatorListChanged();this.#n()}if(s.displayReadyCapability)s.displayReadyCapability.reject(e);else if(s.opListReadCapability)s.opListReadCapability.reject(e);else throw e}})};c()}_abortOperatorList({intentState:e,reason:t,force:n=!1}){if(e.streamReader){if(e.streamReaderCancelTimeout&&=(clearTimeout(e.streamReaderCancelTimeout),null),!n){if(e.renderTasks.size>0)return;if(t instanceof we){let n=kr;t.extraDelay>0&&t.extraDelay<1e3&&(n+=t.extraDelay),e.streamReaderCancelTimeout=setTimeout(()=>{e.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:e,reason:t,force:!0})},n);return}}if(e.streamReader.cancel(new P(t.message)).catch(()=>{}),e.streamReader=null,!this._transport.destroyed){for(let[t,n]of this._intentStates)if(n===e){this._intentStates.delete(t);break}this.cleanup()}}}get stats(){return this._stats}},Fr=class n{#e=Promise.withResolvers();#t=null;#n=null;#r=null;static#i=0;static#a=!1;static#o=new WeakMap;static{t&&(this.#a=!0,_r.workerSrc||=`./pdf.worker.mjs`),this._isSameOrigin=(e,t)=>{let n=URL.parse(e);if(!n?.origin||n.origin===`null`)return!1;let r=new URL(t,n);return n.origin===r.origin},this._createCDNWrapper=e=>{let t=`await import("${e}");`;return URL.createObjectURL(new Blob([t],{type:`text/javascript`}))}}constructor({name:e=null,port:t=null,verbosity:r=C()}={}){if(this.name=e,this.destroyed=!1,this.verbosity=r,t){if(n.#o.has(t))throw Error(`Cannot use more than one PDFWorker per port.`);n.#o.set(t,this),this.#c(t)}else this.#l()}get promise(){return this.#e.promise}#s(){this.#e.resolve(),this.#t.send(`configure`,{verbosity:this.verbosity})}get port(){return this.#n}get messageHandler(){return this.#t}#c(e){this.#n=e,this.#t=new Gt(`main`,`worker`,e),this.#t.on(`ready`,()=>{}),this.#s()}#l(){if(n.#a||n.#d){this.#u();return}let{workerSrc:e}=n;try{n._isSameOrigin(window.location,e)||(e=n._createCDNWrapper(new URL(e,window.location).href));let t=new Worker(e,{type:`module`}),r=new Gt(`main`,`worker`,t),i=()=>{a.abort(),r.destroy(),t.terminate(),this.destroyed?this.#e.reject(Error(`Worker was destroyed`)):this.#u()},a=new AbortController;t.addEventListener(`error`,()=>{this.#r||i()},{signal:a.signal}),r.on(`test`,e=>{if(a.abort(),this.destroyed||!e){i();return}this.#t=r,this.#n=t,this.#r=t,this.#s()}),r.on(`ready`,e=>{if(a.abort(),this.destroyed){i();return}try{o()}catch{this.#u()}});let o=()=>{let e=new Uint8Array;r.send(`test`,e,[e.buffer])};o();return}catch{w(`The worker has been disabled.`)}this.#u()}#u(){n.#a||=(T(`Setting up fake worker.`),!0),n._setupFakeWorkerGlobal.then(e=>{if(this.destroyed){this.#e.reject(Error(`Worker was destroyed`));return}let t=new Ht;this.#n=t;let r=`fake${n.#i++}`,i=new Gt(r+`_worker`,r,t);e.setup(i,t),this.#t=new Gt(r,r+`_worker`,t),this.#s()}).catch(e=>{this.#e.reject(Error(`Setting up fake worker failed: "${e.message}".`))})}destroy(){this.destroyed=!0,this.#r?.terminate(),this.#r=null,n.#o.delete(this.#n),this.#n=null,this.#t?.destroy(),this.#t=null}static create(e){let t=this.#o.get(e?.port);if(t){if(t._pendingDestroy)throw Error("PDFWorker.create - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return t}return new n(e)}static get workerSrc(){if(_r.workerSrc)return _r.workerSrc;throw Error(`No "GlobalWorkerOptions.workerSrc" specified.`)}static get#d(){try{return globalThis.pdfjsWorker?.WorkerMessageHandler||null}catch{return null}}static get _setupFakeWorkerGlobal(){return M(this,`_setupFakeWorkerGlobal`,(async()=>this.#d?this.#d:(await e(()=>import(this.workerSrc),[],import.meta.url)).WorkerMessageHandler)())}},Ir=class{downloadInfoCapability=Promise.withResolvers();#e=null;#t=new Map;#n=null;#r=new Map;#i=new Map;#a=new Map;#o=null;constructor(e,t,n,r,i,a){this.messageHandler=e,this.loadingTask=t,this.#n=n,this.commonObjs=new Tr,this.fontLoader=new Dt({ownerDocument:r.ownerDocument,styleElement:r.styleElement}),this.enableHWA=r.enableHWA,this.loadingParams=r.loadingParams,this._params=r,this.canvasFactory=i.canvasFactory,this.filterFactory=i.filterFactory,this.binaryDataFactory=i.binaryDataFactory,this.pagesMapper=a,this.destroyed=!1,this.destroyCapability=null,this.setupMessageHandler()}updatePage(e){let{_pageIndex:t}=e;this.#r.set(t,e),this.#i.set(t,Promise.resolve(e))}#s(e,t=null){return this.#t.getOrInsertComputed(e,()=>this.messageHandler.sendWithPromise(e,t))}#c({loaded:e,total:t}){this.loadingTask.onProgress?.({loaded:e,total:t,percent:t?L(Math.round(e/t*100),0,100):NaN})}get annotationStorage(){return M(this,`annotationStorage`,new pt)}getRenderingIntent(e,t=s.ENABLE,n=null,r=!1,i=!1){let a=o.DISPLAY,c=ft;switch(e){case`any`:a=o.ANY;break;case`display`:break;case`print`:a=o.PRINT;break;default:T(`getRenderingIntent - invalid intent: ${e}`)}let l=a&o.PRINT&&n instanceof mt?n:this.annotationStorage;switch(t){case s.DISABLE:a+=o.ANNOTATIONS_DISABLE;break;case s.ENABLE:break;case s.ENABLE_FORMS:a+=o.ANNOTATIONS_FORMS;break;case s.ENABLE_STORAGE:a+=o.ANNOTATIONS_STORAGE,c=l.serializable;break;default:T(`getRenderingIntent - invalid annotationMode: ${t}`)}r&&(a+=o.IS_EDITING),i&&(a+=o.OPLIST);let{ids:u,hash:d}=l.modifiedIds,f=[a,c.hash,d];return{renderingIntent:a,cacheKey:f.join(`_`),annotationStorageSerializable:c,modifiedIds:u}}destroy(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),this.#o?.reject(Error(`Worker was destroyed during onPassword callback`));let e=[];for(let t of this.#r.values())e.push(t._destroy());this.#r.clear(),this.#i.clear(),this.#a.clear(),Object.hasOwn(this,`annotationStorage`)&&this.annotationStorage.resetModified();let t=this.messageHandler.sendWithPromise(`Terminate`,null);return e.push(t),Promise.all(e).then(()=>{this.commonObjs.clear(),this.fontLoader.clear(),this.#t.clear(),this.filterFactory.destroy(),Or.cleanup(),this.#n?.cancelAllRequests(new P(`Worker was terminated.`)),this.messageHandler?.destroy(),this.messageHandler=null,this.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){let{messageHandler:e,loadingTask:t}=this;e.on(`GetReader`,(e,t)=>{D(this.#n,"GetReader - no `BasePDFStream` instance available."),this.#e=this.#n.getFullReader(),this.#e.onProgress=e=>this.#c(e),t.onPull=()=>{this.#e.read().then(function({value:e,done:n}){if(n){t.close();return}D(e instanceof ArrayBuffer,`GetReader - expected an ArrayBuffer.`),t.enqueue(new Uint8Array(e),1,[e])}).catch(e=>{t.error(e)})},t.onCancel=e=>{this.#e.cancel(e),t.ready.catch(e=>{if(!this.destroyed)throw e})}}),e.on(`ReaderHeadersReady`,async e=>{await this.#e.headersReady;let{isStreamingSupported:t,isRangeSupported:n,contentLength:r}=this.#e;return t&&n&&(this.#e.onProgress=null),{isStreamingSupported:t,isRangeSupported:n,contentLength:r}}),e.on(`GetRangeReader`,(e,t)=>{D(this.#n,"GetRangeReader - no `BasePDFStream` instance available.");let n=this.#n.getRangeReader(e.begin,e.end);if(!n){t.close();return}t.onPull=()=>{n.read().then(function({value:e,done:n}){if(n){t.close();return}D(e instanceof ArrayBuffer,`GetRangeReader - expected an ArrayBuffer.`),t.enqueue(new Uint8Array(e),1,[e])}).catch(e=>{t.error(e)})},t.onCancel=e=>{n.cancel(e),t.ready.catch(e=>{if(!this.destroyed)throw e})}}),e.on(`GetDoc`,({pdfInfo:e})=>{this.pagesMapper.pagesNumber=e.numPages,this._numPages=e.numPages,this._htmlForXfa=e.htmlForXfa,delete e.htmlForXfa,t._capability.resolve(new Nr(e,this))}),e.on(`DocException`,e=>{t._capability.reject(J(e))}),e.on(`PasswordRequest`,e=>{this.#o=Promise.withResolvers();try{if(!t.onPassword)throw J(e);t.onPassword(e=>{e instanceof Error?this.#o.reject(e):this.#o.resolve({password:e})},e.code)}catch(e){this.#o.reject(e)}return this.#o.promise}),e.on(`DataLoaded`,e=>{this.#c({loaded:e.length,total:e.length}),this.downloadInfoCapability.resolve(e)}),e.on(`StartRenderPage`,e=>{this.destroyed||this.#r.get(e.pageIndex)._startRenderPage(e.transparency,e.cacheKey)}),e.on(`commonobj`,([t,n,r])=>{if(this.destroyed||this.commonObjs.has(t))return null;switch(n){case`Font`:if(`error`in r){let e=r.error;T(`Error during font loading: ${e}`),this.commonObjs.resolve(t,e);break}let i=new Ot(new Pt(r),this._params.pdfBug&&globalThis.FontInspector?.enabled?(e,t)=>globalThis.FontInspector.fontAdded(e,t):null,r.charProcOperatorList,r.extra);this.fontLoader.bind(i).catch(()=>e.sendWithPromise(`FontFallback`,{id:t})).finally(()=>{i.fontExtraProperties||i.clearData(),this.commonObjs.resolve(t,i)});break;case`CopyLocalImage`:let{imageRef:a}=r;D(a,`The imageRef must be defined.`);for(let e of this.#r.values())for(let[,n]of e.objs){if(n?.ref!==a)continue;if(!n.dataLen)return null;let e=structuredClone(n);return this.commonObjs.resolve(t,e),n.dataLen}break;case`FontPath`:this.commonObjs.resolve(t,new It(r));break;case`Image`:this.commonObjs.resolve(t,r);break;case`Pattern`:let o=new Ft(r);this.commonObjs.resolve(t,o.getIR());break;default:throw Error(`Got unknown common object type ${n}`)}return null}),e.on(`obj`,([e,t,n,r])=>{if(this.destroyed)return;let i=this.#r.get(t);if(!i.objs.has(e)){if(i._intentStates.size===0){r?.bitmap?.close();return}switch(n){case`Image`:case`Pattern`:i.objs.resolve(e,r);break;default:throw Error(`Got unknown object type ${n}`)}}}),e.on(`DocProgress`,e=>{this.destroyed||this.#c(e)}),e.on(`FetchBinaryData`,async e=>{if(this.destroyed)throw Error(`Worker was destroyed.`);if(!this.binaryDataFactory)throw Error("`BinaryDataFactory` not initialized, see the `useWorkerFetch` parameter.");return this.binaryDataFactory.fetch(e)})}getData(){return this.messageHandler.sendWithPromise(`GetData`,null)}saveDocument(){this.annotationStorage.size<=0&&T("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");let{map:e,transfer:t}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise(`SaveDocument`,{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:e,filename:this.#e?.filename??null},t).finally(()=>{this.annotationStorage.resetModified()})}extractPages(e){let t={pageInfos:e},n,r=globalThis.ImageBitmap;if(typeof r==`function`){let t=Array.isArray(e)?e:[e];for(let e of t)e?.image instanceof r&&(n||=[]).push(e.image)}if(this.annotationStorage.size>0){let e=this.annotationStorage.serializable,{map:r}=e;e.transfer?.length&&(n?n.push(...e.transfer):n=e.transfer);let i=this.pagesMapper.getMapping();if(i){let e=new Map;for(let[t,n]of r){if(n?.pageIndex!==void 0&&n.pageIndex>=0&&n.pageIndex{this.annotationStorage.resetModified()})}getPage(e){if(!Number.isInteger(e)||e<=0||e>this.pagesMapper.pagesNumber)return Promise.reject(Error(`Invalid page request.`));let t=e-1,n=this.pagesMapper.getPageId(e)-1,r=this.#i.get(t);if(r)return r;let i=this.messageHandler.sendWithPromise(`GetPage`,{pageIndex:n}).then(e=>{if(this.destroyed)throw Error(`Transport destroyed`);e.refStr&&this.#a.set(e.refStr,n);let r=new Pr(t,e,this,this.pagesMapper,this._params.pdfBug);return this.#r.set(t,r),r});return this.#i.set(t,i),i}async getPageIndex(e){if(!Bt(e))throw Error(`Invalid pageIndex request.`);let t=await this.messageHandler.sendWithPromise(`GetPageIndex`,{num:e.num,gen:e.gen}),n=this.pagesMapper.getPageNumber(t+1);if(n===0)throw Error(`GetPageIndex: page has been removed.`);return n-1}getAnnotations(e,t){return this.messageHandler.sendWithPromise(`GetAnnotations`,{pageIndex:this.pagesMapper.getPageId(e+1)-1,intent:t})}getFieldObjects(){return this.#s(`GetFieldObjects`)}getSignatures(){return this.#s(`GetSignatures`)}getSignatureData(e){return this.messageHandler.sendWithPromise(`GetSignatureData`,e)}hasJSActions(){return this.#s(`HasJSActions`)}getCalculationOrderIds(){return this.messageHandler.sendWithPromise(`GetCalculationOrderIds`,null)}getDestinations(){return this.messageHandler.sendWithPromise(`GetDestinations`,null)}getDestination(e){return typeof e==`string`?this.messageHandler.sendWithPromise(`GetDestination`,{id:e}):Promise.reject(Error(`Invalid destination request.`))}getPageLabels(){return this.messageHandler.sendWithPromise(`GetPageLabels`,null)}getPageLayout(){return this.messageHandler.sendWithPromise(`GetPageLayout`,null)}getPageMode(){return this.messageHandler.sendWithPromise(`GetPageMode`,null)}getViewerPreferences(){return this.messageHandler.sendWithPromise(`GetViewerPreferences`,null)}getOpenAction(){return this.messageHandler.sendWithPromise(`GetOpenAction`,null)}getAttachments(){return this.messageHandler.sendWithPromise(`GetAttachments`,null)}getAttachmentContent(e){return this.messageHandler.sendWithPromise(`GetAttachmentContent`,e)}getAnnotationsByType(e,t){return this.messageHandler.sendWithPromise(`GetAnnotationsByType`,{types:e,pageIndexesToSkip:t})}getDocJSActions(){return this.#s(`GetDocJSActions`)}getPageJSActions(e){return this.messageHandler.sendWithPromise(`GetPageJSActions`,{pageIndex:this.pagesMapper.getPageId(e+1)-1})}getStructTree(e){return this.messageHandler.sendWithPromise(`GetStructTree`,{pageIndex:this.pagesMapper.getPageId(e+1)-1})}getOutline(){return this.messageHandler.sendWithPromise(`GetOutline`,null)}getOptionalContentConfig(e){return this.#s(`GetOptionalContentConfig`).then(t=>new xr(t,e))}getPermissions(){return this.messageHandler.sendWithPromise(`GetPermissions`,null)}getMetadata(){let e=`GetMetadata`;return this.#t.getOrInsertComputed(e,()=>this.messageHandler.sendWithPromise(e,null).then(e=>({info:e[0],metadata:e[1]?new vr(e[1]):null,contentDispositionFilename:this.#e?.filename??null,contentLength:this.#e?.contentLength??null,hasStructTree:e[2]})))}getMarkInfo(){return this.messageHandler.sendWithPromise(`GetMarkInfo`,null)}getRawData(e){return this.messageHandler.sendWithPromise(`GetRawData`,e)}async startCleanup(e=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise(`Cleanup`,null);for(let e of this.#r.values())if(!e.cleanup())throw Error(`startCleanup: Page ${e.pageNumber} is currently rendering.`);this.commonObjs.clear(),e||this.fontLoader.clear(),this.#t.clear(),this.filterFactory.destroy(!0),Or.cleanup()}}cachedPageNumber(e){if(!Bt(e))return null;let t=e.gen===0?`${e.num}R`:`${e.num}R${e.gen}`,n=this.#a.get(t);if(n>=0){let e=this.pagesMapper.getPageNumber(n+1);if(e!==0)return e}return null}},Lr=class{_internalRenderTask=null;onContinue=null;onError=null;constructor(e){this._internalRenderTask=e}get promise(){return this._internalRenderTask.capability.promise}cancel(e=0){this._internalRenderTask.cancel(null,e)}get separateAnnots(){let{separateAnnots:e}=this._internalRenderTask.operatorList;if(!e)return!1;let{annotationCanvasMap:t}=this._internalRenderTask;return e.form||e.canvas&&t?.size>0}get imageCoordinates(){return this._internalRenderTask.imageCoordinates||null}},Rr=class e{#e=null;static#t=new WeakSet;constructor({callback:e,params:t,objs:n,commonObjs:r,annotationCanvasMap:i,operatorList:a,pageIndex:o,canvasFactory:s,filterFactory:c,useRequestAnimationFrame:l=!1,pdfBug:u=!1,pageColors:d=null,enableHWA:f=!1,operationsFilter:p=null}){this.callback=e,this.params=t,this.objs=n,this.commonObjs=r,this.annotationCanvasMap=i,this.operatorListIdx=null,this.operatorList=a,this._pageIndex=o,this.canvasFactory=s,this.filterFactory=c,this._pdfBug=u,this.pageColors=d,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=l===!0&&typeof window<`u`,this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new Lr(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=t.canvas,this._canvasContext=t.canvas?null:t.canvasContext,this._enableHWA=f,this._dependencyTracker=t.dependencyTracker,this._imagesTracker=t.imagesTracker,this._operationsFilter=p}get completed(){return this.capability.promise.catch(function(){})}initializeGraphics({transparency:t=!1,optionalContentConfig:n}){if(this.cancelled)return;if(this._canvas){if(e.#t.has(this._canvas))throw Error(`Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.`);e.#t.add(this._canvas)}this._pdfBug&&globalThis.StepperManager?.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());let{viewport:r,transform:i,background:a,dependencyTracker:o,imagesTracker:s}=this.params,c=this._canvasContext||this._canvas.getContext(`2d`,{alpha:!1,willReadFrequently:!this._enableHWA});this.gfx=new Rn(c,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:n},this.annotationCanvasMap,this.pageColors,o,s),this.gfx.beginDrawing({transform:i,viewport:r,transparency:t,background:a}),this.operatorListIdx=0,this.graphicsReady=!0,this.graphicsReadyCallback?.()}cancel(t=null,n=0){this.running=!1,this.cancelled=!0,this.gfx?.endDrawing(),this.#e&&=(window.cancelAnimationFrame(this.#e),null),e.#t.delete(this._canvas),t||=new we(`Rendering cancelled, page ${this._pageIndex+1}`,n),this.callback(t),this.task.onError?.(t)}operatorListChanged(){if(!this.graphicsReady){this.graphicsReadyCallback||=this._continueBound;return}this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length),this.stepper?.updateOperatorList(this.operatorList),!this.running&&this._continue()}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?this.#e=window.requestAnimationFrame(()=>{this.#e=null,this._nextBound().catch(this._cancelBound)}):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper,this._operationsFilter),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),e.#t.delete(this._canvas),this.callback())))}},zr=`6.2.108`,Br=`0365cbde0`,Vr=class e{#e=null;#t=null;#n;#r=null;#i=!1;#a=!1;#o=null;#s;#c=null;#l=null;static#u=null;static get _keyboardManager(){return M(this,`_keyboardManager`,new nt([[[`Escape`],e.prototype._hideDropdownFromKeyboard],[[`Space`],e.prototype._colorSelectFromKeyboard],[[`ArrowDown`,`ArrowRight`],e.prototype._moveToNext],[[`ArrowUp`,`ArrowLeft`],e.prototype._moveToPrevious],[[`Home`],e.prototype._moveToBeginning],[[`End`],e.prototype._moveToEnd]]))}constructor({editor:t=null,uiManager:n=null}){t?(this.#a=!1,this.#o=t):this.#a=!0,this.#l=t?._uiManager||n,this.#s=this.#l._eventBus,this.#n=t?.color?.toUpperCase()||this.#l?.highlightColors.values().next().value||`#FFFF98`,e.#u||=Object.freeze({blue:`pdfjs-editor-colorpicker-blue`,green:`pdfjs-editor-colorpicker-green`,pink:`pdfjs-editor-colorpicker-pink`,red:`pdfjs-editor-colorpicker-red`,yellow:`pdfjs-editor-colorpicker-yellow`})}renderButton(){let e=this.#e=document.createElement(`button`);e.className=`colorPicker`,e.tabIndex=`0`,e.setAttribute(`data-l10n-id`,`pdfjs-editor-colorpicker-button`),e.ariaHasPopup=`true`,this.#o&&(e.ariaControls=`${this.#o.id}_colorpicker_dropdown`);let t=this.#l._signal;e.addEventListener(`click`,this.#m.bind(this),{signal:t}),e.addEventListener(`keydown`,this.#p.bind(this),{signal:t});let n=this.#t=document.createElement(`span`);return n.className=`swatch`,n.ariaHidden=`true`,n.style.backgroundColor=this.#n,e.append(n),e}renderMainDropdown(){let e=this.#r=this.#d();return e.ariaOrientation=`horizontal`,e.ariaLabelledBy=`highlightColorPickerLabel`,e}#d(){let t=document.createElement(`div`),n=this.#l._signal;t.addEventListener(`contextmenu`,R,{signal:n}),t.className=`dropdown`,t.role=`listbox`,t.ariaMultiSelectable=`false`,t.ariaOrientation=`vertical`,t.setAttribute(`data-l10n-id`,`pdfjs-editor-colorpicker-dropdown`),this.#o&&(t.id=`${this.#o.id}_colorpicker_dropdown`);for(let[r,i]of this.#l.highlightColors){let a=document.createElement(`button`);a.tabIndex=`0`,a.role=`option`,a.setAttribute(`data-color`,i),a.title=r,a.setAttribute(`data-l10n-id`,e.#u[r]);let o=document.createElement(`span`);a.append(o),o.className=`swatch`,o.style.backgroundColor=i,a.ariaSelected=i===this.#n,a.addEventListener(`click`,this.#f.bind(this,i),{signal:n}),t.append(a)}return t.addEventListener(`keydown`,this.#p.bind(this),{signal:n}),t}#f(e,t){t.stopPropagation(),this.#s.dispatch(`switchannotationeditorparams`,{source:this,type:d.HIGHLIGHT_COLOR,value:e}),this.updateColor(e)}_colorSelectFromKeyboard(e){if(e.target===this.#e){this.#m(e);return}let t=e.target.getAttribute(`data-color`);t&&this.#f(t,e)}_moveToNext(e){if(!this.#g){this.#m(e);return}if(e.target===this.#e){this.#r.firstElementChild?.focus();return}e.target.nextSibling?.focus()}_moveToPrevious(e){if(e.target===this.#r?.firstElementChild||e.target===this.#e){this.#g&&this._hideDropdownFromKeyboard();return}this.#g||this.#m(e),e.target.previousSibling?.focus()}_moveToBeginning(e){if(!this.#g){this.#m(e);return}this.#r.firstElementChild?.focus()}_moveToEnd(e){if(!this.#g){this.#m(e);return}this.#r.lastElementChild?.focus()}#p(t){e._keyboardManager.exec(this,t)}#m(e){if(this.#g){this.hideDropdown();return}if(this.#i=e.detail===0,this.#c||(this.#c=new AbortController,window.addEventListener(`pointerdown`,this.#h.bind(this),{signal:this.#l.combinedSignal(this.#c)})),this.#e.ariaExpanded=`true`,this.#r){this.#r.classList.remove(`hidden`);return}let t=this.#r=this.#d();this.#e.append(t)}#h(e){this.#r?.contains(e.target)||this.hideDropdown()}hideDropdown(){this.#r?.classList.add(`hidden`),this.#e.ariaExpanded=`false`,this.#c?.abort(),this.#c=null}get#g(){return this.#r&&!this.#r.classList.contains(`hidden`)}_hideDropdownFromKeyboard(){if(!this.#a){if(!this.#g){this.#o?.unselect();return}this.hideDropdown(),this.#e.focus({preventScroll:!0,focusVisible:this.#i})}}updateColor(e){if(this.#t&&(this.#t.style.backgroundColor=e),!this.#r)return;let t=this.#l.highlightColors.values();for(let n of this.#r.children)n.ariaSelected=t.next().value===e.toUpperCase()}destroy(){this.#e?.remove(),this.#e=null,this.#t=null,this.#r?.remove(),this.#r=null}},Hr=class e{#e=null;#t=!1;#n=null;#r=null;static#i=null;constructor(t){this.#n=t,this.#r=t._uiManager,e.#i||=Object.freeze({freetext:`pdfjs-editor-color-picker-free-text-input`,ink:`pdfjs-editor-color-picker-ink-input`})}renderButton(){if(this.#e)return this.#e;let{editorType:t,colorType:n,colorAndOpacityType:r,opacityType:i,color:a,opacity:o}=this.#n,s=this.#t=F.isAlphaColorInputSupported&&i!==void 0,c=this.#e=document.createElement(`input`);if(c.type=`color`,s){c.setAttribute(`alpha`,``);let e=I.hexNums[Math.round((o??1)*255)];c.value=(a||`#000000`)+e}else c.value=a||`#000000`;return c.className=`basicColorPicker`,c.tabIndex=0,c.setAttribute(`data-l10n-id`,e.#i[t]),c.addEventListener(`input`,()=>{if(s){let e=Me(c.value);if(!e)return;let[t,a,o,s]=e,l=I.makeHexColor(t,a,o);r===void 0?(this.#r.updateParams(n,l),this.#r.updateParams(i,s)):this.#r.updateParams(r,{color:l,opacity:s})}else this.#r.updateParams(n,c.value)},{signal:this.#r._signal}),c}update(e){if(this.#e)if(this.#t){let t=I.hexNums[Math.round(this.#n.opacity*255)];this.#e.value=e+t}else this.#e.value=e}updateOpacity(e){if(!this.#e||!this.#t)return;let t=I.hexNums[Math.round(e*255)];this.#e.value=this.#n.color+t}destroy(){this.#e?.remove(),this.#e=null}hideDropdown(){}};function Ur(e){return Math.floor(L(e,0,1)*255).toString(16).padStart(2,`0`)}function Wr(e){return L(e,0,1)*255}var Gr=class{static CMYK_G([e,t,n,r]){return[`G`,1-Math.min(1,.3*e+.59*n+.11*t+r)]}static G_CMYK([e]){return[`CMYK`,0,0,0,1-e]}static G_RGB([e]){return[`RGB`,e,e,e]}static G_rgb([e]){return e=Wr(e),[e,e,e]}static G_HTML([e]){let t=Ur(e);return`#${t}${t}${t}`}static RGB_G([e,t,n]){return[`G`,.3*e+.59*t+.11*n]}static RGB_rgb(e){return e.map(Wr)}static RGB_HTML(e){return`#${e.map(Ur).join(``)}`}static T_HTML(){return`#00000000`}static T_rgb(){return[null]}static CMYK_RGB([e,t,n,r]){return[`RGB`,1-Math.min(1,e+r),1-Math.min(1,n+r),1-Math.min(1,t+r)]}static CMYK_rgb([e,t,n,r]){return[Wr(1-Math.min(1,e+r)),Wr(1-Math.min(1,n+r)),Wr(1-Math.min(1,t+r))]}static CMYK_HTML(e){let t=this.CMYK_RGB(e).slice(1);return this.RGB_HTML(t)}static RGB_CMYK([e,t,n]){let r=1-e,i=1-t,a=1-n;return[`CMYK`,r,i,a,Math.min(r,i,a)]}},Kr=class{create(e,t,n=!1){if(e<=0||t<=0)throw Error(`Invalid SVG dimensions`);let r=this._createSVG(`svg:svg`);return r.setAttribute(`version`,`1.1`),n||(r.setAttribute(`width`,`${e}px`),r.setAttribute(`height`,`${t}px`)),r.setAttribute(`preserveAspectRatio`,`none`),r.setAttribute(`viewBox`,`0 0 ${e} ${t}`),r}createElement(e){if(typeof e!=`string`)throw Error(`Invalid SVG element type`);return this._createSVG(e)}_createSVG(e){E("Abstract method `_createSVG` called.")}},qr=class extends Kr{_createSVG(e){return document.createElementNS(a,e)}},Jr=9,Yr=new WeakSet,Xr=new Date().getTimezoneOffset()*60*1e3,Zr=class{static create(e){switch(e.data.annotationType){case h.LINK:return new $r(e);case h.TEXT:return new ei(e);case h.WIDGET:switch(e.data.fieldType){case`Tx`:return new ni(e);case`Btn`:return e.data.radioButton?new ai(e):e.data.checkBox?new ii(e):new oi(e);case`Ch`:return new si(e);case`Sig`:return new ri(e)}return new ti(e);case h.POPUP:return new ci(e);case h.FREETEXT:return new ui(e);case h.LINE:return new di(e);case h.SQUARE:return new fi(e);case h.CIRCLE:return new pi(e);case h.POLYLINE:return new mi(e);case h.CARET:return new gi(e);case h.INK:return new _i(e);case h.POLYGON:return new hi(e);case h.HIGHLIGHT:return new vi(e);case h.UNDERLINE:return new yi(e);case h.SQUIGGLY:return new bi(e);case h.STRIKEOUT:return new xi(e);case h.STAMP:return new Si(e);case h.FILEATTACHMENT:return new Ci(e);case h.RICHMEDIA:case h.SCREEN:case h.SOUND:return new wi(e);default:return new Q(e)}}},Q=class e{#e=null;#t=!1;#n=null;constructor(e,{isRenderable:t=!1,ignoreBorder:n=!1,createQuadrilaterals:r=!1}={}){this.isRenderable=t,this.data=e.data,this.layer=e.layer,this.linkService=e.linkService,this.downloadManager=e.downloadManager,this.imageResourcesPath=e.imageResourcesPath,this.renderForms=e.renderForms,this.svgFactory=e.svgFactory,this.annotationStorage=e.annotationStorage,this.enableComment=e.enableComment,this.enableScripting=e.enableScripting,this.hasJSActions=e.hasJSActions,this._fieldObjects=e.fieldObjects,this.parent=e.parent,this.hasOwnCommentButton=!1,t&&(this.contentElement=this.container=this._createContainer(n)),r&&this._createQuadrilaterals()}static _hasPopupData({contentsObj:e,richText:t}){return!!(e?.str||t?.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return e._hasPopupData(this.data)||this.enableComment&&!!this.commentText}get commentData(){let{data:e}=this,t=this.annotationStorage?.getEditor(e.id);return t?t.getData():e}get hasCommentButton(){return this.enableComment&&this.hasPopupElement}get commentButtonPosition(){let e=this.annotationStorage?.getEditor(this.data.id);if(e)return e.commentButtonPositionInPage;let{quadPoints:t,inkLists:n,rect:r}=this.data,i=-1/0,a=-1/0;if(t?.length>=8){for(let e=0;ea?(a=t[e+1],i=t[e+2]):t[e+1]===a&&(i=Math.max(i,t[e+2]));return[i,a]}if(n?.length>=1){for(let e of n)for(let t=0,n=e.length;ta?(a=e[t+1],i=e[t]):e[t+1]===a&&(i=Math.max(i,e[t]));if(i!==1/0)return[i,a]}return r?[r[2],r[3]]:null}_normalizePoint(e){let{page:{view:t},viewport:{rawDims:{pageWidth:n,pageHeight:r,pageX:i,pageY:a}}}=this.parent;return e[1]=t[3]-e[1]+t[1],e[0]=100*(e[0]-i)/n,e[1]=100*(e[1]-a)/r,e}get commentText(){let{data:e}=this;return this.annotationStorage.getRawValue(`${l}${e.id}`)?.popup?.contents||e.contentsObj?.str||``}set commentText(e){let{data:t}=this,n={deleted:!e,contents:e||``};this.annotationStorage.updateEditor(t.id,{popup:n})||this.annotationStorage.setValue(`${l}${t.id}`,{id:t.id,annotationType:t.annotationType,page:this.parent.page,popup:n,popupRef:t.popupRef,modificationDate:new Date}),e||this.removePopup()}removePopup(){(this.#n?.popup||this.popup)?.remove(),this.#n=this.popup=null}updateEdited(e){if(!this.container)return;e.rect&&(this.#e||={rect:this.data.rect.slice(0)});let{rect:t,popup:n}=e;t&&this.#r(t);let r=this.#n?.popup||this.popup;!r&&n?.text&&(this._createPopup(n),r=this.#n.popup),r&&(r.updateEdited(e),n?.deleted&&(r.remove(),this.#n=null,this.popup=null))}resetEdited(){this.#e&&=(this.#r(this.#e.rect),this.#n?.popup.resetEdited(),null)}#r(e){let{container:{style:t},data:{rect:n,rotation:r},parent:{viewport:{rawDims:{pageWidth:i,pageHeight:a,pageX:o,pageY:s}}}}=this;n?.splice(0,4,...e),t.left=`${100*(e[0]-o)/i}%`,t.top=`${100*(a-e[3]+s)/a}%`,r===0?(t.width=`${100*(e[2]-e[0])/i}%`,t.height=`${100*(e[3]-e[1])/a}%`):this.setRotation(r)}_createContainer(e){let{data:t,parent:{page:n,viewport:r}}=this,i=document.createElement(`section`);i.setAttribute(`data-annotation-id`,t.id),!(this instanceof ti)&&!(this instanceof $r)&&!(this instanceof wi)&&(i.tabIndex=0);let{style:a}=i;if(a.zIndex=this.parent.zIndex,this.parent.zIndex+=2,t.alternativeText&&(i.title=t.alternativeText),t.noRotate&&i.classList.add(`norotate`),!t.rect||this instanceof ci){let{rotation:e}=t;return!t.hasOwnCanvas&&e!==0&&this.setRotation(e,i),i}let{width:o,height:s}=this;if(!e&&t.borderStyle.width>0){a.borderWidth=`${t.borderStyle.width}px`;let e=t.borderStyle.horizontalCornerRadius,n=t.borderStyle.verticalCornerRadius;switch((e>0||n>0)&&(a.borderRadius=`calc(${e}px * var(--total-scale-factor)) / calc(${n}px * var(--total-scale-factor))`),t.borderStyle.style){case g.SOLID:a.borderStyle=`solid`;break;case g.DASHED:a.borderStyle=`dashed`;break;case g.BEVELED:T(`Unimplemented border style: beveled`);break;case g.INSET:T(`Unimplemented border style: inset`);break;case g.UNDERLINE:a.borderBottomStyle=`solid`}let r=t.borderColor||null;r?(this.#t=!0,a.borderColor=I.makeHexColor(...r)):a.borderWidth=0}let c=I.normalizeRect([t.rect[0],n.view[3]-t.rect[1]+n.view[1],t.rect[2],n.view[3]-t.rect[3]+n.view[1]]),{pageWidth:l,pageHeight:u,pageX:d,pageY:f}=r.rawDims;a.left=`${100*(c[0]-d)/l}%`,a.top=`${100*(c[1]-f)/u}%`;let{rotation:p}=t;return t.hasOwnCanvas||p===0?(a.width=`${100*o/l}%`,a.height=`${100*s/u}%`):this.setRotation(p,i),i}setRotation(e,t=this.container){if(!this.data.rect)return;let{pageWidth:n,pageHeight:r}=this.parent.viewport.rawDims,{width:i,height:a}=this;e%180!=0&&([i,a]=[a,i]),t.style.width=`${100*i/n}%`,t.style.height=`${100*a/r}%`,t.setAttribute(`data-main-rotation`,(360-e)%360)}get _commonActions(){let e=(e,t,n)=>{let r=n.detail[e],i=r[0],a=r.slice(1);n.target.style[t]=Gr[`${i}_HTML`](a),this.annotationStorage.setValue(this.data.id,{[t]:Gr[`${i}_rgb`](a)})};return M(this,`_commonActions`,{display:e=>{let{display:t}=e.detail,n=t%2==1;this.container.style.visibility=n?`hidden`:`visible`,this.annotationStorage.setValue(this.data.id,{noView:n,noPrint:t===1||t===2})},print:e=>{this.annotationStorage.setValue(this.data.id,{noPrint:!e.detail.print})},hidden:e=>{let{hidden:t}=e.detail;this.container.style.visibility=t?`hidden`:`visible`,this.annotationStorage.setValue(this.data.id,{noPrint:t,noView:t})},focus:e=>{setTimeout(()=>e.target.focus({preventScroll:!1}),0)},userName:e=>{e.target.title=e.detail.userName},readonly:e=>{e.target.disabled=e.detail.readonly},required:e=>{this._setRequired(e.target,e.detail.required)},bgColor:t=>{e(`bgColor`,`backgroundColor`,t)},fillColor:t=>{e(`fillColor`,`backgroundColor`,t)},fgColor:t=>{e(`fgColor`,`color`,t)},textColor:t=>{e(`textColor`,`color`,t)},borderColor:t=>{e(`borderColor`,`borderColor`,t)},strokeColor:t=>{e(`strokeColor`,`borderColor`,t)},rotation:e=>{let t=e.detail.rotation;this.setRotation(t),this.annotationStorage.setValue(this.data.id,{rotation:t})}})}_dispatchEventFromSandbox(e,t){let n=this._commonActions;for(let r of Object.keys(t.detail))(e[r]||n[r])?.(t)}_setDefaultPropertiesFromJS(e){if(!this.enableScripting)return;let t=this.annotationStorage.getRawValue(this.data.id);if(!t)return;let n=this._commonActions;for(let[r,i]of Object.entries(t)){let a=n[r];a&&(a({detail:{[r]:i},target:e}),delete t[r])}}_createQuadrilaterals(){if(!this.container)return;let{quadPoints:e}=this.data;if(!e)return;let[t,n,r,i]=this.data.rect.map(e=>Math.fround(e));if(e.length===8){let[a,o,s,c]=e.subarray(2,6);if(r===a&&i===o&&t===s&&n===c)return}let{style:o}=this.container,s;if(this.#t){let{borderColor:e,borderWidth:t}=o;o.borderWidth=0,s=[`url('data:image/svg+xml;utf8,`,``,``],this.container.classList.add(`hasBorder`)}let c=r-t,l=i-n,{svgFactory:u}=this,d=u.createElement(`svg`);d.classList.add(`quadrilateralsContainer`),d.setAttribute(`width`,0),d.setAttribute(`height`,0),d.role=`none`;let f=u.createElement(`defs`);d.append(f);let p=u.createElement(`clipPath`),m=`clippath_${this.data.id}`;p.setAttribute(`id`,m),p.setAttribute(`clipPathUnits`,`objectBoundingBox`),f.append(p);for(let n=2,r=e.length;n`)}this.#t&&(s.push(`')`),o.backgroundImage=s.join(``)),this.container.append(d),this.container.style.clipPath=`url(#${m})`}_createPopup(e=null){let{data:t}=this,n,r;e?(n={str:e.text},r=e.date):(n=t.contentsObj,r=t.modificationDate),this.#n=new ci({data:{color:t.color,titleObj:t.titleObj,modificationDate:r,contentsObj:n,richText:t.richText,parentRect:t.rect,borderStyle:0,id:`popup_${t.id}`,rotation:t.rotation,noRotate:!0},linkService:this.linkService,parent:this.parent,elements:[this]})}get hasPopupElement(){return!!(this.#n||this.popup||this.data.popupRef)}get extraPopupElement(){return this.#n}render(){E("Abstract method `AnnotationElement.render` called")}_getElementsByName(e,t=null){let n=[];if(this._fieldObjects){let r=this._fieldObjects[e]||[];for(let{page:e,id:i,exportValues:a}of r){if(e===-1||i===t)continue;let r=typeof a==`string`?a:null,o=document.querySelector(`[data-element-id="${i}"]`);if(o&&!Yr.has(o)){T(`_getElementsByName - element not allowed: ${i}`);continue}n.push({id:i,exportValue:r,domElement:o})}return n}for(let r of document.getElementsByName(e)){let{exportValue:e}=r,i=r.getAttribute(`data-element-id`);i!==t&&Yr.has(r)&&n.push({id:i,exportValue:e,domElement:r})}return n}show(){this.container&&(this.container.hidden=!1),this.popup?.maybeShow()}hide(){this.container&&(this.container.hidden=!0),this.popup?.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){let e=this.getElementsToTriggerPopup();if(Array.isArray(e))for(let t of e)t.classList.add(`highlightArea`);else e.classList.add(`highlightArea`)}_editOnDoubleClick(){if(!this._isEditable)return;let{annotationEditorType:e,data:{id:t}}=this;this.container.addEventListener(`dblclick`,()=>{this.linkService.eventBus?.dispatch(`switchannotationeditormode`,{source:this,mode:e,editId:t,mustEnterInEditMode:!0})})}updateOC(e){!this.data.oc||!e||(e.isVisible(this.data.oc)?this.show():this.hide())}get width(){return this.data.rect[2]-this.data.rect[0]}get height(){return this.data.rect[3]-this.data.rect[1]}_setBackgroundColor(e){let t=this.data.backgroundColor||null;e.style.backgroundColor=t===null?`transparent`:I.makeHexColor(...t)}},Qr=class extends Q{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.editor=e.editor}render(){return this.container.className=`editorAnnotation`,this.container}createOrUpdatePopup(){let{editor:e}=this;e.hasComment&&this._createPopup(e.comment)}get hasCommentButton(){return this.enableComment&&this.editor.hasComment}get commentButtonPosition(){return this.editor.commentButtonPositionInPage}get commentText(){return this.editor.comment.text}set commentText(e){this.editor.comment=e,e||this.removePopup()}get commentData(){return this.editor.getData()}remove(){this.parent.removeAnnotation(this.data.id),this.container.remove(),this.container=null,this.removePopup()}},$r=class extends Q{constructor(e,t=null){super(e,{isRenderable:!0,ignoreBorder:!!t?.ignoreBorder,createQuadrilaterals:!0}),this.isTooltipOnly=e.data.isTooltipOnly}render(){let{data:e,linkService:t}=this,n=document.createElement(`a`);n.setAttribute(`data-element-id`,e.id);let r=!1;return e.url?(t.addLinkAttributes(n,e.url,e.newWindow),r=!0):e.action?(this._bindNamedAction(n,e.action,e.overlaidText),r=!0):e.attachment?(this.#t(n,e.attachmentId,e.attachment,e.overlaidText,e.attachmentDest),r=!0):e.setOCGState?(this.#n(n,e.setOCGState,e.overlaidText),r=!0):e.dest?(this._bindLink(n,e.dest,e.overlaidText),r=!0):(e.actions&&(e.actions.Action||e.actions[`Mouse Up`]||e.actions[`Mouse Down`])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(n,e),r=!0),e.resetForm?(this._bindResetFormAction(n,e.resetForm),r=!0):this.isTooltipOnly&&!r&&(this._bindLink(n,``),r=!0)),this.container.classList.add(`linkAnnotation`),r&&(this.contentElement=n,this.container.append(n)),this.container}#e(){this.container.setAttribute(`data-internal-link`,``)}_bindLink(e,t,n=``){e.href=this.linkService.getDestinationHash(t),e.onclick=()=>(t&&this.linkService.goToDestination(t),!1),(t||t===``)&&this.#e(),n&&(e.title=n)}_bindNamedAction(e,t,n=``){e.href=this.linkService.getAnchorUrl(``),e.onclick=()=>(this.linkService.executeNamedAction(t),!1),n&&(e.title=n),this.#e()}#t(e,t,n,r=``,i=null){e.href=this.linkService.getAnchorUrl(``),n.description?e.title=n.description:r&&(e.title=r);let a=async()=>{let e=await this.linkService.getAttachmentContent(t);e&&this.downloadManager?.openOrDownloadData(e,n.filename,i)};e.onclick=()=>(a(),!1),this.#e()}#n(e,t,n=``){e.href=this.linkService.getAnchorUrl(``),e.onclick=()=>(this.linkService.executeSetOCGState(t),!1),n&&(e.title=n),this.#e()}_bindJSAction(e,t){e.href=this.linkService.getAnchorUrl(``);let n=new Map([[`Action`,`onclick`],[`Mouse Up`,`onmouseup`],[`Mouse Down`,`onmousedown`]]);for(let r of Object.keys(t.actions)){let i=n.get(r);i&&(e[i]=()=>(this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t.id,name:r}}),!1))}t.overlaidText&&(e.title=t.overlaidText),e.onclick||=()=>!1,this.#e()}_bindResetFormAction(e,t){let n=e.onclick;if(n||(e.href=this.linkService.getAnchorUrl(``)),this.#e(),!this._fieldObjects){T('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),n||(e.onclick=()=>!1);return}e.onclick=()=>{n?.();let{fields:e,refs:r,include:i}=t,a=[];if(e.length!==0||r.length!==0){let t=new Set(r);for(let n of e){let e=this._fieldObjects[n]||[];for(let{id:n}of e)t.add(n)}for(let e of Object.values(this._fieldObjects))for(let n of e)t.has(n.id)===i&&a.push(n)}else for(let e of Object.values(this._fieldObjects))a.push(...e);let o=this.annotationStorage,s=[];for(let e of a){let{id:t}=e;switch(s.push(t),e.type){case`text`:{let n=e.defaultValue||``;o.setValue(t,{value:n});break}case`checkbox`:case`radiobutton`:{let n=e.defaultValue===e.exportValues;o.setValue(t,{value:n});break}case`combobox`:case`listbox`:{let n=e.defaultValue||``;o.setValue(t,{value:n});break}default:continue}let n=document.querySelector(`[data-element-id="${t}"]`);if(n){if(!Yr.has(n)){T(`_bindResetFormAction - element not allowed: ${t}`);continue}n.dispatchEvent(new Event(`resetform`))}}return this.enableScripting&&this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:`app`,ids:s,name:`ResetForm`}}),!1}}},ei=class extends Q{constructor(e){super(e,{isRenderable:!0})}render(){this.container.classList.add(`textAnnotation`);let e=document.createElement(`img`);return e.src=this.imageResourcesPath+`annotation-`+this.data.name.toLowerCase()+`.svg`,e.setAttribute(`data-l10n-id`,`pdfjs-text-annotation-type`),e.setAttribute(`data-l10n-args`,JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container.append(e),this.container}},ti=class extends Q{render(){return this.container}_getKeyModifier(e){return F.platform.isMac?e.metaKey:e.ctrlKey}_setEventListener(e,t,n,r,i){n.includes(`mouse`)?e.addEventListener(n,e=>{this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:this.data.id,name:r,value:i(e),shift:e.shiftKey,modifier:this._getKeyModifier(e)}})}):e.addEventListener(n,e=>{if(n===`blur`){if(!t.focused||!e.relatedTarget)return;t.focused=!1}else if(n===`focus`){if(t.focused)return;t.focused=!0}i&&this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:this.data.id,name:r,value:i(e)}})})}_setEventListeners(e,t,n,r){for(let[i,a]of n)(a===`Action`||this.data.actions?.[a])&&((a===`Focus`||a===`Blur`)&&(t||={focused:!1}),this._setEventListener(e,t,i,a,r),a===`Focus`&&!this.data.actions?.Blur?this._setEventListener(e,t,`blur`,`Blur`,null):a===`Blur`&&!this.data.actions?.Focus&&this._setEventListener(e,t,`focus`,`Focus`,null))}_setTextStyle(e){let t=[`left`,`center`,`right`],{fontColor:n}=this.data.defaultAppearanceData,r=this.data.defaultAppearanceData.fontSize||Jr,i=e.style,a,o=e=>Math.round(10*e)/10;if(this.data.multiLine){let e=Math.abs(this.data.rect[3]-this.data.rect[1]-2),t=e/(Math.round(e/(1.35*r))||1);a=Math.min(r,o(t/1.35))}else{let e=Math.abs(this.data.rect[3]-this.data.rect[1]-2);a=Math.min(r,o(e/1.35))}i.fontSize=`calc(${a}px * var(--total-scale-factor))`,i.color=I.makeHexColor(...n),this.data.textAlignment!==null&&!this.data.comb&&(i.textAlign=t[this.data.textAlignment])}_setRequired(e,t){t?e.setAttribute(`required`,!0):e.removeAttribute(`required`),e.setAttribute(`aria-required`,t)}},ni=class extends ti{constructor(e){let t=e.renderForms||e.data.hasOwnCanvas||!e.data.hasAppearance&&!!e.data.fieldValue;super(e,{isRenderable:t})}setPropertyOnSiblings(e,t,n,r){let i=this.annotationStorage;for(let a of this._getElementsByName(e.name,e.id))a.domElement&&(a.domElement[t]=n),i.setValue(a.id,{[r]:n})}render(){let e=this.annotationStorage,t=this.data.id;this.container.classList.add(`textWidgetAnnotation`);let n=null;if(this.renderForms){let r=e.getValue(t,{value:this.data.fieldValue}),i=r.value||``,a=e.getValue(t,{charLimit:this.data.maxLen}).charLimit;a&&i.length>a&&(i=i.slice(0,a));let o=r.formattedValue||this.data.textContent?.join(` +`)||null;o&&this.data.comb&&(o=o.replaceAll(/\s+/g,``));let s={userValue:i,formattedValue:o,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(n=document.createElement(`textarea`),n.textContent=o??i,this.data.doNotScroll&&(n.style.overflowY=`hidden`)):(n=document.createElement(`input`),n.type=this.data.password?`password`:`text`,n.setAttribute(`value`,o??i),this.data.doNotScroll&&(n.style.overflowX=`hidden`)),this.data.hasOwnCanvas&&(this.container.classList.add(`hasOwnCanvas`),e.has(t)&&this.container.classList.add(`sandboxModified`)),Yr.add(n),this.contentElement=n,n.setAttribute(`data-element-id`,t),n.disabled=this.data.readOnly,n.name=this.data.fieldName,n.tabIndex=0;let{datetimeFormat:c,datetimeType:l,timeStep:u}=this.data,d=!!l&&this.enableScripting;c&&(n.title=c),this._setRequired(n,this.data.required),a&&(n.maxLength=a),n.addEventListener(`input`,r=>{e.setValue(t,{value:r.target.value}),this.setPropertyOnSiblings(n,`value`,r.target.value,`value`),s.formattedValue=null}),n.addEventListener(`resetform`,e=>{let t=this.data.defaultFieldValue??``;n.value=s.userValue=t,s.formattedValue=null});let f=e=>{let{formattedValue:t}=s;t!=null&&(e.target.value=t),e.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){n.addEventListener(`focus`,e=>{if(s.focused)return;let{target:t}=e;if(d&&(t.type=l,u&&(t.step=u)),s.userValue){let e=s.userValue;if(d)if(l===`time`){let n=new Date(e);t.value=[n.getHours(),n.getMinutes(),n.getSeconds()].map(e=>e.toString().padStart(2,`0`)).join(`:`)}else t.value=new Date(e-Xr).toISOString().split(l===`date`?`T`:`.`,1)[0];else t.value=e}s.lastCommittedValue=t.value,s.commitKey=1,this.data.actions?.Focus||(s.focused=!0)}),n.addEventListener(`updatefromsandbox`,n=>{this.container.classList.add(`sandboxModified`),this._dispatchEventFromSandbox({value(n){s.userValue=n.detail.value??``,d||e.setValue(t,{value:s.userValue.toString()}),n.target.value=s.userValue},formattedValue(n){let{formattedValue:r}=n.detail;s.formattedValue=r,r!=null&&n.target!==document.activeElement&&(n.target.value=r);let i={formattedValue:r};d&&(i.value=r),e.setValue(t,i)},selRange(e){e.target.setSelectionRange(...e.detail.selRange)},charLimit:n=>{let{charLimit:r}=n.detail,{target:i}=n;if(r===0){i.removeAttribute(`maxLength`);return}i.setAttribute(`maxLength`,r);let a=s.userValue;!a||a.length<=r||(a=a.slice(0,r),i.value=s.userValue=a,e.setValue(t,{value:a}),this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t,name:`Keystroke`,value:a,willCommit:!0,commitKey:1,selStart:i.selectionStart,selEnd:i.selectionEnd}}))}},n)}),n.addEventListener(`keydown`,e=>{s.commitKey=1;let n=-1;if(e.key===`Escape`?n=0:e.key===`Enter`&&!this.data.multiLine?n=2:e.key===`Tab`&&(s.commitKey=3),n===-1)return;let{value:r}=e.target;s.lastCommittedValue!==r&&(s.lastCommittedValue=r,s.userValue=r,this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t,name:`Keystroke`,value:r,willCommit:!0,commitKey:n,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}}))});let r=f;f=null,n.addEventListener(`blur`,e=>{if(!s.focused||!e.relatedTarget)return;this.data.actions?.Blur||(s.focused=!1);let{target:n}=e,{value:i}=n;if(d){if(i&&l===`time`){let e=i.split(`:`).map(e=>parseInt(e,10));i=new Date(2e3,0,1,e[0],e[1],e[2]||0).valueOf(),n.step=``}else i.includes(`T`)||(i=`${i}T00:00`),i=new Date(i).valueOf();n.type=`text`}s.userValue=i,s.lastCommittedValue!==i&&this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t,name:`Keystroke`,value:i,willCommit:!0,commitKey:s.commitKey,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}}),r(e)}),this.data.actions?.Keystroke&&n.addEventListener(`beforeinput`,e=>{s.lastCommittedValue=null;let{data:n,target:r}=e,{value:i,selectionStart:a,selectionEnd:o}=r,c=a,l=o;switch(e.inputType){case`deleteWordBackward`:{let e=i.substring(0,a).match(/\w*\W*$/);e&&(c-=e[0].length);break}case`deleteWordForward`:{let e=i.substring(a).match(/^\W*\w*/);e&&(l+=e[0].length);break}case`deleteContentBackward`:a===o&&--c;break;case`deleteContentForward`:a===o&&(l+=1)}e.preventDefault(),this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t,name:`Keystroke`,value:i,change:n||``,willCommit:!1,selStart:c,selEnd:l}})}),this._setEventListeners(n,s,[[`focus`,`Focus`],[`blur`,`Blur`],[`mousedown`,`Mouse Down`],[`mouseenter`,`Mouse Enter`],[`mouseleave`,`Mouse Exit`],[`mouseup`,`Mouse Up`]],e=>e.target.value)}if(f&&n.addEventListener(`blur`,f),this.data.comb){let e=(this.data.rect[2]-this.data.rect[0])/a;n.classList.add(`comb`),n.style.setProperty(`--comb-width`,`calc(${e}px * var(--total-scale-factor))`);let t=this.data.textAlignment;if(t===1||t===2){let e=()=>{let e=a-n.value.length;n.style.setProperty(`--comb-offset`,`${t===1?e>>1:e}`)};e();for(let t of[`input`,`blur`,`resetform`,`updatefromsandbox`])n.addEventListener(t,e)}}}else n=document.createElement(`div`),n.textContent=this.data.fieldValue,n.style.verticalAlign=`middle`,n.style.display=`table-cell`,this.data.hasOwnCanvas&&(n.hidden=!0);return this._setTextStyle(n),this._setBackgroundColor(n),this._setDefaultPropertiesFromJS(n),this.container.append(n),this.container}},ri=class extends ti{constructor(e){super(e,{isRenderable:!!e.data.hasOwnCanvas})}},ii=class extends ti{constructor(e){super(e,{isRenderable:e.renderForms})}render(){let e=this.annotationStorage,t=this.data,n=t.id,r=e.getValue(n,{value:t.exportValue===t.fieldValue}).value;typeof r==`string`&&(r=r!==`Off`,e.setValue(n,{value:r})),this.container.classList.add(`buttonWidgetAnnotation`,`checkBox`);let i=document.createElement(`input`);return Yr.add(i),i.setAttribute(`data-element-id`,n),i.disabled=t.readOnly,this._setRequired(i,this.data.required),i.type=`checkbox`,i.name=t.fieldName,r&&i.setAttribute(`checked`,!0),i.setAttribute(`exportValue`,t.exportValue),i.tabIndex=0,i.addEventListener(`change`,r=>{let{name:i,checked:a}=r.target;for(let r of this._getElementsByName(i,n)){let n=a&&r.exportValue===t.exportValue;r.domElement&&(r.domElement.checked=n),e.setValue(r.id,{value:n})}e.setValue(n,{value:a})}),i.addEventListener(`resetform`,e=>{let n=t.defaultFieldValue||`Off`;e.target.checked=n===t.exportValue}),this.enableScripting&&this.hasJSActions&&(i.addEventListener(`updatefromsandbox`,t=>{this._dispatchEventFromSandbox({value(t){t.target.checked=t.detail.value!==`Off`,e.setValue(n,{value:t.target.checked})}},t)}),this._setEventListeners(i,null,[[`change`,`Validate`],[`change`,`Action`],[`focus`,`Focus`],[`blur`,`Blur`],[`mousedown`,`Mouse Down`],[`mouseenter`,`Mouse Enter`],[`mouseleave`,`Mouse Exit`],[`mouseup`,`Mouse Up`]],e=>e.target.checked)),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}},ai=class extends ti{constructor(e){super(e,{isRenderable:e.renderForms})}render(){this.container.classList.add(`buttonWidgetAnnotation`,`radioButton`);let e=this.annotationStorage,t=this.data,n=t.id,r=e.getValue(n,{value:t.buttonValue!==null&&t.fieldValue===t.buttonValue}).value;if(typeof r==`string`&&(r=r!==t.buttonValue,e.setValue(n,{value:r})),r)for(let r of this._getElementsByName(t.fieldName,n))e.setValue(r.id,{value:!1});let i=document.createElement(`input`);if(Yr.add(i),i.setAttribute(`data-element-id`,n),i.disabled=t.readOnly,this._setRequired(i,this.data.required),i.type=`radio`,i.name=t.fieldName,r&&i.setAttribute(`checked`,!0),i.tabIndex=0,i.addEventListener(`change`,t=>{let{name:r,checked:i}=t.target;for(let t of this._getElementsByName(r,n))e.setValue(t.id,{value:!1});e.setValue(n,{value:i})}),i.addEventListener(`resetform`,e=>{let n=t.defaultFieldValue;e.target.checked=n!=null&&n===t.buttonValue}),this.enableScripting&&this.hasJSActions){let r=t.buttonValue;i.addEventListener(`updatefromsandbox`,t=>{this._dispatchEventFromSandbox({value:t=>{let i=r===t.detail.value;for(let r of this._getElementsByName(t.target.name)){let t=i&&r.id===n;r.domElement&&(r.domElement.checked=t),e.setValue(r.id,{value:t})}}},t)}),this._setEventListeners(i,null,[[`change`,`Validate`],[`change`,`Action`],[`focus`,`Focus`],[`blur`,`Blur`],[`mousedown`,`Mouse Down`],[`mouseenter`,`Mouse Enter`],[`mouseleave`,`Mouse Exit`],[`mouseup`,`Mouse Up`]],e=>e.target.checked)}return this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}},oi=class extends $r{constructor(e){super(e,{ignoreBorder:e.data.hasAppearance})}render(){let e=super.render();e.classList.add(`buttonWidgetAnnotation`,`pushButton`);let t=e.lastChild;return this.enableScripting&&this.hasJSActions&&t&&(this._setDefaultPropertiesFromJS(t),t.addEventListener(`updatefromsandbox`,e=>{this._dispatchEventFromSandbox({},e)})),e}},si=class extends ti{constructor(e){super(e,{isRenderable:e.renderForms})}render(){this.container.classList.add(`choiceWidgetAnnotation`);let e=this.annotationStorage,t=this.data.id,n=e.getValue(t,{value:this.data.fieldValue}),r=document.createElement(`select`);Yr.add(r),r.setAttribute(`data-element-id`,t),r.disabled=this.data.readOnly,this._setRequired(r,this.data.required),r.name=this.data.fieldName,r.tabIndex=0;let i=this.data.combo&&this.data.options.length>0;this.data.combo||(r.size=this.data.options.length,this.data.multiSelect&&(r.multiple=!0)),r.addEventListener(`resetform`,e=>{let t=this.data.defaultFieldValue;for(let e of r.options)e.selected=e.value===t});let a=(e,t)=>{let n=t.replaceAll(` `,`\xA0`);e.textContent=n,n!==t&&e.setAttribute(`display-value`,t)};for(let e of this.data.options){let t=document.createElement(`option`);a(t,e.displayValue),t.value=e.exportValue,n.value.includes(e.exportValue)&&(t.setAttribute(`selected`,!0),i=!1),r.append(t)}let o=null;if(i){let e=document.createElement(`option`);e.value=` `,e.setAttribute(`hidden`,!0),e.setAttribute(`selected`,!0),r.prepend(e),o=()=>{e.remove(),r.removeEventListener(`input`,o),o=null},r.addEventListener(`input`,o)}let s=e=>{let t=e?`value`:`textContent`,{options:n,multiple:i}=r;return i?Array.prototype.filter.call(n,e=>e.selected).map(e=>e[t]):n.selectedIndex===-1?null:n[n.selectedIndex][t]},c=s(!1),l=e=>{let t=e.target.options;return Array.prototype.map.call(t,e=>({displayValue:e.getAttribute(`display-value`)||e.textContent,exportValue:e.value}))};return this.enableScripting&&this.hasJSActions?(r.addEventListener(`updatefromsandbox`,n=>{this._dispatchEventFromSandbox({value(n){o?.();let i=n.detail.value,a=new Set(Array.isArray(i)?i:[i]);for(let e of r.options)e.selected=a.has(e.value);e.setValue(t,{value:s(!0)}),c=s(!1)},multipleSelection(e){r.multiple=!0},remove(n){let i=r.options,a=n.detail.remove;i[a].selected=!1,r.remove(a),i.length>0&&Array.prototype.findIndex.call(i,e=>e.selected)===-1&&(i[0].selected=!0),e.setValue(t,{value:s(!0),items:l(n)}),c=s(!1)},clear(n){for(;r.length!==0;)r.remove(0);e.setValue(t,{value:null,items:[]}),c=s(!1)},insert(n){let{index:i,displayValue:o,exportValue:u}=n.detail.insert,d=r.children[i],f=document.createElement(`option`);a(f,o),f.value=u,d?d.before(f):r.append(f),e.setValue(t,{value:s(!0),items:l(n)}),c=s(!1)},items(n){let{items:i}=n.detail;for(;r.length!==0;)r.remove(0);for(let e of i){let{displayValue:t,exportValue:n}=e,i=document.createElement(`option`);a(i,t),i.value=n,r.append(i)}r.options.length>0&&(r.options[0].selected=!0),e.setValue(t,{value:s(!0),items:l(n)}),c=s(!1)},indices(n){let r=new Set(n.detail.indices);for(let e of n.target.options)e.selected=r.has(e.index);e.setValue(t,{value:s(!0)}),c=s(!1)},editable(e){e.target.disabled=!e.detail.editable}},n)}),r.addEventListener(`input`,n=>{let r=s(!0),i=s(!1);e.setValue(t,{value:r}),n.preventDefault(),this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t,name:`Keystroke`,value:c,change:i,changeEx:r,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(r,null,[[`focus`,`Focus`],[`blur`,`Blur`],[`mousedown`,`Mouse Down`],[`mouseenter`,`Mouse Enter`],[`mouseleave`,`Mouse Exit`],[`mouseup`,`Mouse Up`],[`input`,`Action`],[`input`,`Validate`]],e=>e.target.value)):r.addEventListener(`input`,function(n){e.setValue(t,{value:s(!0)})}),this.data.combo&&this._setTextStyle(r),this._setBackgroundColor(r),this._setDefaultPropertiesFromJS(r),this.container.append(r),this.container}},ci=class extends Q{constructor(e){let{data:t,elements:n,parent:r}=e,i=!!r._commentManager;if(super(e,{isRenderable:!i&&Q._hasPopupData(t)}),this.elements=n,i&&Q._hasPopupData(t)){let e=this.popup=this.#e();for(let t of n)t.popup=e}else this.popup=null}#e(){return new li({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate||this.data.creationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open,commentManager:this.parent._commentManager})}render(){let{container:e}=this;e.classList.add(`popupAnnotation`),e.role=`comment`;let t=this.popup=this.#e(),n=[];for(let e of this.elements)e.popup=t,e.container.ariaHasPopup=`dialog`,n.push(e.data.id),e.addHighlightArea();return this.container.setAttribute(`aria-controls`,n.map(e=>`${c}${e}`).join(`,`)),this.container}},li=class{#e=null;#t=this.#P.bind(this);#n=this.#R.bind(this);#r=this.#L.bind(this);#i=this.#I.bind(this);#a=null;#o=null;#s=null;#c=null;#l=null;#u=null;#d=null;#f=!1;#p=null;#m=null;#h=null;#g=null;#_=null;#v=null;#y=null;#b=null;#x=null;#S=null;#C=!1;#w=null;#T=null;constructor({container:e,color:t,elements:n,titleObj:r,modificationDate:i,contentsObj:a,richText:o,parent:s,rect:c,parentRect:l,open:u,commentManager:d=null}){this.#o=e,this.#x=r,this.#s=a,this.#b=o,this.#u=s,this.#a=t,this.#y=c,this.#d=l,this.#l=n,this.#e=d,this.#w=n[0],this.#c=je.toDateObject(i),this.trigger=n.flatMap(e=>e.getElementsToTriggerPopup()),d||(this.#E(),this.#o.hidden=!0,u&&this.#I())}#E(){if(this.#m)return;this.#m=new AbortController;let{signal:e}=this.#m;for(let t of this.trigger)t.addEventListener(`click`,this.#i,{signal:e}),t.addEventListener(`pointerenter`,this.#r,{signal:e}),t.addEventListener(`pointerleave`,this.#n,{signal:e}),t.classList.add(`popupTriggerArea`);for(let t of this.#l)t.container?.addEventListener(`keydown`,this.#t,{signal:e})}#D(){let e=this.#l.find(e=>e.hasCommentButton);e&&(this.#_=e._normalizePoint(e.commentButtonPosition))}renderCommentButton(){if(this.#g){this.#g.parentNode||this.#w.container.after(this.#g);return}if(this.#_||this.#D(),!this.#_)return;let{signal:e}=this.#m=new AbortController,t=this.#w.hasOwnCommentButton,n=()=>{this.#e.toggleCommentPopup(this,!0,void 0,!t)},r=()=>{this.#e.toggleCommentPopup(this,!1,!0,!t)},i=()=>{this.#e.toggleCommentPopup(this,!1,!1)};if(t){this.#g=this.#w.container;for(let t of this.trigger)t.ariaHasPopup=`dialog`,t.ariaControls=`commentPopup`,t.addEventListener(`keydown`,this.#t,{signal:e}),t.addEventListener(`click`,n,{signal:e}),t.addEventListener(`pointerenter`,r,{signal:e}),t.addEventListener(`pointerleave`,i,{signal:e}),t.classList.add(`popupTriggerArea`)}else{let t=this.#g=document.createElement(`button`);t.className=`annotationCommentButton`;let a=this.#w.container;t.style.zIndex=parseInt(a.style.zIndex,10)+1,t.tabIndex=0,t.ariaHasPopup=`dialog`,t.ariaControls=`commentPopup`,t.setAttribute(`data-l10n-id`,`pdfjs-show-comment-button`),this.#k(),this.#O(),t.addEventListener(`keydown`,this.#t,{signal:e}),t.addEventListener(`click`,n,{signal:e}),t.addEventListener(`pointerenter`,r,{signal:e}),t.addEventListener(`pointerleave`,i,{signal:e}),a.after(t)}}#O(){if(this.#w.extraPopupElement&&!this.#w.editor)return;this.#g||this.renderCommentButton();let[e,t]=this.#_,{style:n}=this.#g;n.left=`calc(${e}%)`,n.top=`calc(${t}% - var(--comment-button-dim))`}#k(){this.#w.extraPopupElement||(this.#g||this.renderCommentButton(),this.#g.style.backgroundColor=this.commentButtonColor||``)}get commentButtonColor(){let{color:e,opacity:t}=this.#w.commentData;return e?this.#u._commentManager.makeCommentColor(e,t):null}focusCommentButton(){setTimeout(()=>{this.#g?.focus()},0)}getData(){let{richText:e,color:t,opacity:n,creationDate:r,modificationDate:i}=this.#w.commentData;return{contentsObj:{str:this.comment},richText:e,color:t,opacity:n,creationDate:r,modificationDate:i}}get elementBeforePopup(){return this.#g}get comment(){return this.#T||=this.#w.commentText,this.#T}set comment(e){e!==this.comment&&(this.#w.commentText=this.#T=e)}focus(){this.#w.container?.focus()}get parentBoundingClientRect(){return this.#w.layer.getBoundingClientRect()}setCommentButtonStates({selected:e,hasPopup:t}){this.#g&&(this.#g.classList.toggle(`selected`,e),this.#g.ariaExpanded=t)}setSelectedCommentButton(e){this.#g.classList.toggle(`selected`,e)}get commentPopupPosition(){if(this.#v)return this.#v;let{x:e,y:t,height:n}=this.#g.getBoundingClientRect(),{x:r,y:i,width:a,height:o}=this.#w.layer.getBoundingClientRect();return[(e-r)/a,(t+n-i)/o]}set commentPopupPosition(e){this.#v=e}hasDefaultPopupPosition(){return this.#v===null}get commentButtonPosition(){return this.#_}get commentButtonWidth(){return this.#g.getBoundingClientRect().width/this.parentBoundingClientRect.width}editComment(e){let[t,n]=this.#v||this.commentButtonPosition.map(e=>e/100),r=this.parentBoundingClientRect,{x:i,y:a,width:o,height:s}=r;this.#e.showDialog(null,this,i+t*o,a+n*s,{...e,parentDimensions:r})}render(){if(this.#p)return;let e=this.#p=document.createElement(`div`);if(e.className=`popup`,this.#a){let t=e.style.outlineColor=I.makeHexColor(...this.#a);e.style.backgroundColor=`color-mix(in srgb, ${t} 30%, white)`}let t=document.createElement(`span`);if(t.className=`header`,this.#x?.str){let e=document.createElement(`span`);e.className=`title`,t.append(e),{dir:e.dir,str:e.textContent}=this.#x}if(e.append(t),this.#c){let e=document.createElement(`time`);e.className=`popupDate`,e.setAttribute(`data-l10n-id`,`pdfjs-annotation-date-time-string`),e.setAttribute(`data-l10n-args`,JSON.stringify({dateObj:this.#c.valueOf()})),e.dateTime=this.#c.toISOString(),t.append(e)}qe({html:this.#A||this.#s.str,dir:this.#s?.dir,className:`popupContent`},e),this.#o.append(e)}get#A(){let e=this.#b,t=this.#s;return e?.str&&(!t?.str||t.str===e.str)&&this.#b.html||null}get#j(){return this.#A?.attributes?.style?.fontSize||0}get#M(){return this.#A?.attributes?.style?.color||null}#N(e){let t=[],n={str:e,html:{name:`div`,attributes:{dir:`auto`},children:[{name:`p`,children:t}]}},r={style:{color:this.#M,fontSize:this.#j?`calc(${this.#j}px * var(--total-scale-factor))`:``}};for(let n of e.split(` +`))t.push({name:`span`,value:n,attributes:r});return n}#P(e){e.altKey||e.shiftKey||e.ctrlKey||e.metaKey||(e.key===`Enter`||e.key===`Escape`&&this.#f)&&this.#I()}updateEdited({rect:e,popup:t,deleted:n}){if(this.#e){n?(this.remove(),this.#T=null):t&&(t.deleted?this.remove():(this.#k(),this.#T=t.text)),e&&(this.#_=null,this.#D(),this.#O());return}if(n||t?.deleted){this.remove();return}this.#E(),this.#S||={contentsObj:this.#s,richText:this.#b},e&&(this.#h=null),t&&t.text&&(this.#b=this.#N(t.text),this.#c=je.toDateObject(t.date),this.#s=null),this.#p?.remove(),this.#p=null}resetEdited(){this.#S&&({contentsObj:this.#s,richText:this.#b}=this.#S,this.#S=null,this.#p?.remove(),this.#p=null,this.#h=null)}remove(){if(this.#m?.abort(),this.#m=null,this.#p?.remove(),this.#p=null,this.#C=!1,this.#f=!1,this.#g?.remove(),this.#g=null,this.trigger)for(let e of this.trigger)e.classList.remove(`popupTriggerArea`)}#F(){if(this.#h!==null)return;let{page:{view:e},viewport:{rawDims:{pageWidth:t,pageHeight:n,pageX:r,pageY:i}}}=this.#u,a=!!this.#d,o=a?this.#d:this.#y;for(let e of this.#l)if(!o||I.intersect(e.data.rect,o)!==null){o=e.data.rect,a=!0;break}let s=I.normalizeRect([o[0],e[3]-o[1]+e[1],o[2],e[3]-o[3]+e[1]]),c=a?o[2]-o[0]+5:0,l=s[0]+c,u=s[1];this.#h=[100*(l-r)/t,100*(u-i)/n];let{style:d}=this.#o;d.left=`${this.#h[0]}%`,d.top=`${this.#h[1]}%`}#I(){if(this.#e){this.#e.toggleCommentPopup(this,!1);return}this.#f=!this.#f,this.#f?(this.#L(),this.#o.addEventListener(`click`,this.#i),this.#o.addEventListener(`keydown`,this.#t)):(this.#R(),this.#o.removeEventListener(`click`,this.#i),this.#o.removeEventListener(`keydown`,this.#t))}#L(){this.#p||this.render(),this.isVisible?this.#f&&this.#o.classList.add(`focused`):(this.#F(),this.#o.hidden=!1,this.#o.style.zIndex=parseInt(this.#o.style.zIndex,10)+1e3)}#R(){this.#o.classList.remove(`focused`),!(this.#f||!this.isVisible)&&(this.#o.hidden=!0,this.#o.style.zIndex=parseInt(this.#o.style.zIndex,10)-1e3)}forceHide(){this.#C=this.isVisible,this.#C&&(this.#o.hidden=!0)}maybeShow(){this.#e||(this.#E(),this.#C&&(this.#p||this.#L(),this.#C=!1,this.#o.hidden=!1))}get isVisible(){return!this.#e&&this.#o.hidden===!1}},ui=class extends Q{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.textContent=e.data.textContent,this.textPosition=e.data.textPosition,this.annotationEditorType=u.FREETEXT}render(){if(this.container.classList.add(`freeTextAnnotation`),this.textContent){let e=this.contentElement=document.createElement(`div`);e.classList.add(`annotationTextContent`),e.setAttribute(`role`,`comment`);for(let t of this.textContent){let n=document.createElement(`span`);n.textContent=t,e.append(n)}this.container.append(e)}return!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this._editOnDoubleClick(),this.container}},di=class extends Q{#e=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add(`lineAnnotation`);let{data:e,width:t,height:n}=this,r=this.svgFactory.create(t,n,!0),i=this.#e=this.svgFactory.createElement(`svg:line`);return i.setAttribute(`x1`,e.rect[2]-e.lineCoordinates[0]),i.setAttribute(`y1`,e.rect[3]-e.lineCoordinates[1]),i.setAttribute(`x2`,e.rect[2]-e.lineCoordinates[2]),i.setAttribute(`y2`,e.rect[3]-e.lineCoordinates[3]),i.setAttribute(`stroke-width`,e.borderStyle.width||1),i.setAttribute(`stroke`,`transparent`),i.setAttribute(`fill`,`transparent`),r.append(i),this.container.append(r),!e.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#e}addHighlightArea(){this.container.classList.add(`highlightArea`)}},fi=class extends Q{#e=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add(`squareAnnotation`);let{data:e,width:t,height:n}=this,r=this.svgFactory.create(t,n,!0),i=e.borderStyle.width,a=this.#e=this.svgFactory.createElement(`svg:rect`);return a.setAttribute(`x`,i/2),a.setAttribute(`y`,i/2),a.setAttribute(`width`,t-i),a.setAttribute(`height`,n-i),a.setAttribute(`stroke-width`,i||1),a.setAttribute(`stroke`,`transparent`),a.setAttribute(`fill`,`transparent`),r.append(a),this.container.append(r),!e.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#e}addHighlightArea(){this.container.classList.add(`highlightArea`)}},pi=class extends Q{#e=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add(`circleAnnotation`);let{data:e,width:t,height:n}=this,r=this.svgFactory.create(t,n,!0),i=e.borderStyle.width,a=this.#e=this.svgFactory.createElement(`svg:ellipse`);return a.setAttribute(`cx`,t/2),a.setAttribute(`cy`,n/2),a.setAttribute(`rx`,t/2-i/2),a.setAttribute(`ry`,n/2-i/2),a.setAttribute(`stroke-width`,i||1),a.setAttribute(`stroke`,`transparent`),a.setAttribute(`fill`,`transparent`),r.append(a),this.container.append(r),!e.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#e}addHighlightArea(){this.container.classList.add(`highlightArea`)}},mi=class extends Q{#e=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.containerClassName=`polylineAnnotation`,this.svgElementName=`svg:polyline`}render(){this.container.classList.add(this.containerClassName);let{data:{rect:e,vertices:t,borderStyle:n,popupRef:r},width:i,height:a}=this;if(!t)return this.container;let o=this.svgFactory.create(i,a,!0),s=[];for(let n=0,r=t.length;n=0&&i.setAttribute(`stroke-width`,t||1),n)for(let e=0,t=this.#t.length;e{e.key===`Enter`&&(r?e.metaKey:e.ctrlKey)&&this.#t()}),!t.popupRef&&this.hasPopupData?(this.hasOwnCommentButton=!0,this._createPopup()):n.classList.add(`popupTriggerArea`),e.append(n),e}getElementsToTriggerPopup(){return this.#e}addHighlightArea(){this.container.classList.add(`highlightArea`)}async#t(){let{fileId:e,filename:t,content:n}=this,r=await this.linkService.getAttachmentContent(e)||n;r&&this.downloadManager?.openOrDownloadData(r,t)}},wi=class extends Q{#e=new AbortController;#t=null;#n=null;constructor(e){super(e,{isRenderable:!!e.data.richMedia})}render(){this.container.classList.add(`mediaAnnotation`);let{filename:e}=this.data.richMedia,t=document.createElement(`button`);return t.className=`mediaPlayButton`,t.type=`button`,t.title=t.ariaLabel=e,t.addEventListener(`click`,()=>this.#r(t),{signal:this.#e.signal}),this.container.append(t),this.container}async#r(e){let{fileId:t,filename:n,contentType:r}=this.data.richMedia;e.disabled=!0;let i;try{i=await this.linkService.getAttachmentContent(t)}catch{return}finally{e.disabled=!1}if(!i||!e.isConnected)return;let{signal:a}=this.#e,o=URL.createObjectURL(new Blob([i],{type:r}));this.#t=o;let s=r.startsWith(`audio/`),c=document.createElement(s?`audio`:`video`);if(this.#n=c,c.className=`mediaContent`,this._setBackgroundColor(c),c.src=o,c.title=n,c.controls=!0,c.autoplay=!0,c.tabIndex=0,s){let e=!1,t=!1,n=()=>{c.controls=e||t};this.container.addEventListener(`pointerenter`,()=>{e=!0,n()},{signal:a}),this.container.addEventListener(`pointerleave`,()=>{e=!1,n()},{signal:a}),this.container.addEventListener(`focusin`,()=>{t=!0,n()},{signal:a}),this.container.addEventListener(`focusout`,()=>{t=!1,n()},{signal:a})}c.addEventListener(`emptied`,()=>this.#i(o),{once:!0,signal:a}),e.replaceWith(c),c.play().catch(()=>{})}#i(e=this.#t){e&&e===this.#t&&(URL.revokeObjectURL(e),this.#t=null)}destroy(){this.#e.abort(),this.#n&&=(this.#n.pause(),this.#n.removeAttribute(`src`),this.#n.load(),null),this.#i()}},Ti=class e{#e=null;#t=null;#n=null;#r=new Map;#i=null;#a=null;#o=[];#s=!1;zIndex=0;constructor({div:e,accessibilityManager:t,annotationCanvasMap:n,annotationEditorUIManager:r,page:i,viewport:a,structTreeLayer:o,commentManager:s,linkService:c,annotationStorage:l}){this.div=e,this.#e=t,this.#t=n,this.#i=o||null,this.#a=c||null,this.#n=l||new pt,this.page=i,this.viewport=a,this._annotationEditorUIManager=r,this._commentManager=s||null}hasEditableAnnotations(){return this.#r.size>0}async render(e){let{annotations:t,optionalContentConfig:n}=e,r=this.div;Fe(r,this.viewport);let i=new Map,a=[],o={data:null,layer:r,linkService:this.#a,downloadManager:e.downloadManager,imageResourcesPath:e.imageResourcesPath||``,renderForms:e.renderForms!==!1,svgFactory:new qr,annotationStorage:this.#n,enableComment:e.enableComment===!0,enableScripting:e.enableScripting===!0,hasJSActions:e.hasJSActions,fieldObjects:e.fieldObjects,parent:this,elements:null};for(let e of t){if(e.noHTML)continue;let t=e.annotationType===h.POPUP;if(t){let t=i.get(e.id);if(!t)continue;if(!this._commentManager){a.push(e);continue}o.elements=t}else if(e.rect[2]===e.rect[0]||e.rect[3]===e.rect[1])continue;o.data=e;let r=Zr.create(o);if(!r.isRenderable)continue;t||(this.#o.push(r),e.popupRef&&i.getOrInsertComputed(e.popupRef,pe).push(r));let s=r.render();e.hidden&&(s.style.visibility=`hidden`),r.updateOC(n),r._isEditable&&(this.#r.set(r.data.id,r),this._annotationEditorUIManager?.renderAnnotationElement(r))}await this.#c();for(let e of a){let t=o.elements=i.get(e.id);o.data=e;let n=Zr.create(o);if(!n.isRenderable)continue;let r=n.render();n.contentElement.id=`${c}${e.id}`,e.hidden&&(r.style.visibility=`hidden`),t.at(-1).container.after(r)}this.#l()}async#c(){if(this.#o.length===0)return;this.div.replaceChildren();let e=[];if(!this.#s){this.#s=!0;for(let{contentElement:t,data:{id:n}}of this.#o){let r=t.id=`${c}${n}`;e.push(this.#i?.getAriaAttributes(r).then(e=>{if(e)for(let[n,r]of e)t.setAttribute(n,r)}))}}this.#o.sort(({data:{rect:[e,t,n,r]}},{data:{rect:[i,a,o,s]}})=>{if(e===n&&t===r)return 1;if(i===o&&a===s)return-1;let c=r,l=t,u=(t+r)/2,d=s,f=a,p=(a+s)/2;return u>=d&&p<=l?-1:p>=c&&u<=f?1:(e+n)/2-(i+o)/2});let t=document.createDocumentFragment();for(let e of this.#o)t.append(e.container),this._commentManager?(e.extraPopupElement?.popup||e.popup)?.renderCommentButton():e.extraPopupElement&&t.append(e.extraPopupElement.render());if(this.div.append(t),await Promise.all(e),this.#e)for(let e of this.#o)this.#e.addPointerInTextLayer(e.contentElement,!1)}async addLinkAnnotations(t){let n={data:null,layer:this.div,linkService:this.#a,svgFactory:new qr,parent:this};for(let r of t){r.borderStyle||=e._defaultBorderStyle,n.data=r;let t=Zr.create(n);t.isRenderable&&(t.render(),t.contentElement.id=`${c}${r.id}`,this.#o.push(t))}await this.#c()}update({viewport:e,optionalContentConfig:t}){let n=this.div;this.viewport=e,Fe(n,{rotation:e.rotation});for(let e of this.#o)e.updateOC(t);this.#l(),n.hidden=!1}destroy(){for(let e of this.#o)e.destroy?.(),this.#e?.removePointerInTextLayer(e.contentElement);this.#o.length=0,this.#r.clear(),this.div.replaceChildren()}#l(){if(!this.#t)return;let e=this.div;for(let[t,n]of this.#t){let r=e.querySelector(`[data-annotation-id="${t}"]`);if(!r)continue;if(Array.isArray(n))for(let e of n)e.className=`annotationContent`,e.ariaHidden=!0;else n.className=`annotationContent`,n.ariaHidden=!0;let i=[];for(let e of r.children)e.nodeName===`CANVAS`&&i.push(e);for(let e of i)e.remove();let a=Array.isArray(n)?n[0]:n,{firstChild:o}=r;if(o?o.classList.contains(`annotationContent`)?o.after(a):o.before(a):r.append(a),Array.isArray(n)){let e=a;for(let t=1,r=n.length;tt.data.id===e);if(t<0)return;let[n]=this.#o.splice(t,1);this.#e?.removePointerInTextLayer(n.contentElement)}updateFakeAnnotations(e){if(e.length!==0){for(let t of e)t.updateFakeAnnotationElement(this);this.#c()}}togglePointerEvents(e=!1){this.div.classList.toggle(`disabled`,!e)}static get _defaultBorderStyle(){return M(this,`_defaultBorderStyle`,Object.freeze({width:1,rawWidth:1,style:g.SOLID,dashArray:[3],horizontalCornerRadius:0,verticalCornerRadius:0}))}},Ei=/\r\n?|\n/g,Di=class e extends U{#e=``;#t=`${this.id}-editor`;#n=null;#r;_colorPicker=null;static _freeTextDefaultContent=``;static _internalPadding=0;static _defaultColor=null;static _defaultFontSize=10;static get _keyboardManager(){let t=e.prototype,n=e=>e.isEmpty(),r=it.TRANSLATE_SMALL,i=it.TRANSLATE_BIG;return M(this,`_keyboardManager`,new nt([[[`ctrl+s`,`mac+meta+s`,`ctrl+p`,`mac+meta+p`],t.commitOrRemove,{bubbles:!0}],[[`ctrl+Enter`,`mac+meta+Enter`],t.commitOrRemove],[[`Escape`],t.commitOrRemove],[[`ArrowLeft`],t._translateEmpty,{args:[-r,0],checker:n}],[[`ctrl+ArrowLeft`,`mac+shift+ArrowLeft`],t._translateEmpty,{args:[-i,0],checker:n}],[[`ArrowRight`],t._translateEmpty,{args:[r,0],checker:n}],[[`ctrl+ArrowRight`,`mac+shift+ArrowRight`],t._translateEmpty,{args:[i,0],checker:n}],[[`ArrowUp`],t._translateEmpty,{args:[0,-r],checker:n}],[[`ctrl+ArrowUp`,`mac+shift+ArrowUp`],t._translateEmpty,{args:[0,-i],checker:n}],[[`ArrowDown`],t._translateEmpty,{args:[0,r],checker:n}],[[`ctrl+ArrowDown`,`mac+shift+ArrowDown`],t._translateEmpty,{args:[0,i],checker:n}]]))}static _type=`freetext`;static _editorType=u.FREETEXT;constructor(t){super({...t,name:`freeTextEditor`}),this.color=t.color||e._defaultColor||U._defaultLineColor,this.#r=t.fontSize||e._defaultFontSize,this.annotationElementId||this._uiManager.a11yAlert(U._l10nAlert.freetext),this.canAddComment=!1}static initialize(e,t){U.initialize(e,t);let n=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(n.getPropertyValue(`--freetext-padding`))}static updateDefaultParams(t,n){switch(t){case d.FREETEXT_SIZE:e._defaultFontSize=n;break;case d.FREETEXT_COLOR:e._defaultColor=n}}updateParams(e,t){switch(e){case d.FREETEXT_SIZE:this.#i(t);break;case d.FREETEXT_COLOR:this.#a(t)}}static get defaultPropertiesToUpdate(){return[[d.FREETEXT_SIZE,e._defaultFontSize],[d.FREETEXT_COLOR,e._defaultColor||U._defaultLineColor]]}get propertiesToUpdate(){return[[d.FREETEXT_SIZE,this.#r],[d.FREETEXT_COLOR,this.color]]}get toolbarButtons(){return this._colorPicker||=new Hr(this),[[`colorPicker`,this._colorPicker]]}get colorType(){return d.FREETEXT_COLOR}#i(e){let t=e=>{this.editorDiv.style.fontSize=`calc(${e}px * var(--total-scale-factor))`,this.translate(0,-(e-this.#r)*this.parentScale),this.#r=e,this.#s()},n=this.#r;this.addCommands({cmd:t.bind(this,e),undo:t.bind(this,n),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:d.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})}onUpdatedColor(){this.editorDiv.style.color=this.color,this._colorPicker?.update(this.color),super.onUpdatedColor()}#a(e){let t=e=>{this.color=e,this.onUpdatedColor()},n=this.color;this.addCommands({cmd:t.bind(this,e),undo:t.bind(this,n),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:d.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})}_translateEmpty(e,t){this._uiManager.translateSelectedEditors(e,t,!0)}getInitialTranslation(){let t=this.parentScale;return[-e._internalPadding*t,-(e._internalPadding+this.#r)*t]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(!super.enableEditMode())return!1;this.overlayDiv.classList.remove(`enabled`),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute(`aria-activedescendant`),this.#n=new AbortController;let e=this._uiManager.combinedSignal(this.#n);return this.editorDiv.addEventListener(`keydown`,this.editorDivKeydown.bind(this),{signal:e}),this.editorDiv.addEventListener(`focus`,this.editorDivFocus.bind(this),{signal:e}),this.editorDiv.addEventListener(`blur`,this.editorDivBlur.bind(this),{signal:e}),this.editorDiv.addEventListener(`input`,this.editorDivInput.bind(this),{signal:e}),this.editorDiv.addEventListener(`paste`,this.editorDivPaste.bind(this),{signal:e}),!0}disableEditMode(){return super.disableEditMode()?(this.overlayDiv.classList.add(`enabled`),this.editorDiv.contentEditable=!1,this.div.setAttribute(`aria-activedescendant`,this.#t),this._isDraggable=!0,this.#n?.abort(),this.#n=null,this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add(`freetextEditing`),!0):!1}focusin(e){this._focusEventsAllowed&&(super.focusin(e),e.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(e){this.width||(this.enableEditMode(),e&&this.editorDiv.focus(),this._initialOptions?.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||this.editorDiv.innerText.trim()===``}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add(`freetextEditing`)),super.remove()}#o(){let t=[];this.editorDiv.normalize();let n=null;for(let r of this.editorDiv.childNodes)(n?.nodeType!==Node.TEXT_NODE||r.nodeName!==`BR`)&&(t.push(e.#c(r)),n=r);return t.join(` +`)}#s(){let[e,t]=this.parentDimensions,n;if(this.isAttachedToDOM)n=this.div.getBoundingClientRect();else{let{currentLayer:e,div:t}=this,r=t.style.display,i=t.classList.contains(`hidden`);t.classList.remove(`hidden`),t.style.display=`hidden`,e.div.append(this.div),n=t.getBoundingClientRect(),t.remove(),t.style.display=r,t.classList.toggle(`hidden`,i)}this.rotation%180==this.parentRotation%180?(this.width=n.width/e,this.height=n.height/t):(this.width=n.height/e,this.height=n.width/t),this.fixAndSetPosition()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();let e=this.#e,t=this.#e=this.#o().trimEnd();if(e===t)return;let n=e=>{if(this.#e=e,!e){this.remove();return}this.#l(),this._uiManager.rebuild(this),this.#s()};this.addCommands({cmd:()=>{n(t)},undo:()=>{n(e)},mustExec:!1}),this.#s()}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}keydown(e){e.target===this.div&&e.key===`Enter`&&(this.enterInEditMode(),e.preventDefault())}editorDivKeydown(t){e._keyboardManager.exec(this,t)}editorDivFocus(e){this.isEditing=!0}editorDivBlur(e){this.isEditing=!1}editorDivInput(e){this.parent.div.classList.toggle(`freetextEditing`,this.isEmpty())}disableEditing(){this.editorDiv.setAttribute(`role`,`comment`),this.editorDiv.removeAttribute(`aria-multiline`)}enableEditing(){this.editorDiv.setAttribute(`role`,`textbox`),this.editorDiv.setAttribute(`aria-multiline`,!0)}get canChangeContent(){return!0}render(){if(this.div)return this.div;let e,t;(this._isCopy||this.annotationElementId)&&(e=this.x,t=this.y),super.render(),this.editorDiv=document.createElement(`div`),this.editorDiv.className=`internal`,this.editorDiv.setAttribute(`id`,this.#t),this.editorDiv.setAttribute(`data-l10n-id`,`pdfjs-free-text2`),this.editorDiv.setAttribute(`data-l10n-attrs`,`default-content`),this.enableEditing(),this.editorDiv.contentEditable=!0;let{style:n}=this.editorDiv;if(n.fontSize=`calc(${this.#r}px * var(--total-scale-factor))`,n.color=this.color,this.div.append(this.editorDiv),this.overlayDiv=document.createElement(`div`),this.overlayDiv.classList.add(`overlay`,`enabled`),this.div.append(this.overlayDiv),this._isCopy||this.annotationElementId){let[n,r]=this.parentDimensions;if(this.annotationElementId){let{position:i}=this._initialData,[a,o]=this.getInitialTranslation();[a,o]=this.pageTranslationToScreen(a,o);let[s,c]=this.pageDimensions,[l,u]=this.pageTranslation,d,f;switch(this.rotation){case 0:d=e+(i[0]-l)/s,f=t+this.height-(i[1]-u)/c;break;case 90:d=e+(i[0]-l)/s,f=t-(i[1]-u)/c,[a,o]=[o,-a];break;case 180:d=e-this.width+(i[0]-l)/s,f=t-(i[1]-u)/c,[a,o]=[-a,-o];break;case 270:d=e+(i[0]-l-this.height*c)/s,f=t+(i[1]-u-this.width*s)/c,[a,o]=[-o,a]}this.setAt(d*n,f*r,a,o)}else this._moveAfterPaste(e,t);this.#l(),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}static#c(e){return(e.nodeType===Node.TEXT_NODE?e.nodeValue:e.innerText).replaceAll(Ei,``)}editorDivPaste(t){let n=t.clipboardData||window.clipboardData,{types:r}=n;if(r.length===1&&r[0]===`text/plain`)return;t.preventDefault();let i=e.#d(n.getData(`text`)||``).replaceAll(Ei,` +`);if(!i)return;let a=window.getSelection();if(!a.rangeCount)return;this.editorDiv.normalize(),a.deleteFromDocument();let o=a.getRangeAt(0);if(!i.includes(` +`)){o.insertNode(document.createTextNode(i)),this.editorDiv.normalize(),a.collapseToStart();return}let{startContainer:s,startOffset:c}=o,l=[],u=[];if(s.nodeType===Node.TEXT_NODE){let t=s.parentElement;if(u.push(s.nodeValue.slice(c).replaceAll(Ei,``)),t!==this.editorDiv){let n=l;for(let r of this.editorDiv.childNodes){if(r===t){n=u;continue}n.push(e.#c(r))}}l.push(s.nodeValue.slice(0,c).replaceAll(Ei,``))}else if(s===this.editorDiv){let t=l,n=0;for(let r of this.editorDiv.childNodes)n++===c&&(t=u),t.push(e.#c(r))}this.#e=`${l.join(` +`)}${i}${u.join(` +`)}`,this.#l();let d=new Range,f=Math.sumPrecise(l.map(e=>e.length));for(let{firstChild:e}of this.editorDiv.childNodes)if(e.nodeType===Node.TEXT_NODE){let t=e.nodeValue.length;if(f<=t){d.setStart(e,f),d.setEnd(e,f);break}f-=t}a.removeAllRanges(),a.addRange(d)}#l(){if(this.editorDiv.replaceChildren(),this.#e)for(let e of this.#e.split(` +`)){let t=document.createElement(`div`);t.append(e?document.createTextNode(e):document.createElement(`br`)),this.editorDiv.append(t)}}#u(){return this.#e.replaceAll(`\xA0`,` `)}static#d(e){return e.replaceAll(` `,`\xA0`)}get contentDiv(){return this.editorDiv}getPDFRect(){let t=e._internalPadding*this.parentScale;return this.getRect(t,t)}static async deserialize(t,n,r){let i=null;if(t instanceof ui){let{data:{defaultAppearanceData:{fontSize:e,fontColor:n},rect:r,rotation:a,id:o,popupRef:s,richText:c,contentsObj:l,creationDate:d,modificationDate:f},textContent:p,textPosition:m,parent:{page:{pageNumber:h}}}=t;if(!p?.length)return null;i=t={annotationType:u.FREETEXT,color:Array.from(n),fontSize:e,value:p.join(` +`),position:m,pageIndex:h-1,rect:r.slice(0),rotation:a,annotationElementId:o,id:o,deleted:!1,popupRef:s,comment:l?.str||null,richText:c,creationDate:d,modificationDate:f}}let a=await super.deserialize(t,n,r);return a.#r=t.fontSize,a.color=I.makeHexColor(...t.color),a.#e=e.#d(t.value),a._initialData=i,t.comment&&a.setCommentData(t),a}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();let t=U._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.color),n=Object.assign(super.serialize(e),{color:t,fontSize:this.#r,value:this.#u()});return this.addComment(n),e?(n.isCopy=!0,n):this.annotationElementId&&!this.#f(n)?null:(n.id=this.annotationElementId,n)}#f(e){let{value:t,fontSize:n,color:r,pageIndex:i}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||e.value!==t||e.fontSize!==n||e.color.some((e,t)=>e!==r[t])||e.pageIndex!==i}renderAnnotationElement(e){let t=super.renderAnnotationElement(e);if(!t)return null;let{style:n}=t;n.fontSize=`calc(${this.#r}px * var(--total-scale-factor))`,n.color=this.color,t.replaceChildren();for(let e of this.#e.split(` +`)){let n=document.createElement(`div`);n.append(e?document.createTextNode(e):document.createElement(`br`)),t.append(n)}return e.updateEdited({rect:this.getPDFRect(),popup:this._uiManager.hasCommentManager()||this.hasEditedComment?this.comment:{text:this.#e}}),t}resetAnnotationElement(e){super.resetAnnotationElement(e),e.resetEdited()}},$=class{static PRECISION=1e-4;toSVGPath(){E("Abstract method `toSVGPath` must be implemented.")}get box(){E("Abstract getter `box` must be implemented.")}serialize(e,t){E("Abstract method `serialize` must be implemented.")}static _rescale(e,t,n,r,i,a){a||=new Float32Array(e.length);for(let o=0,s=e.length;o=6;e-=6)isNaN(t[e])?n.push(`L${t[e+4]} ${t[e+5]}`):n.push(`C${t[e]} ${t[e+1]} ${t[e+2]} ${t[e+3]} ${t[e+4]} ${t[e+5]}`);return this.#v(n),n.join(` `)}#_(){let[e,t,n,r]=this.#e,[i,a,o,s]=this.#g();return`M${(this.#a[2]-e)/n} ${(this.#a[3]-t)/r} L${(this.#a[4]-e)/n} ${(this.#a[5]-t)/r} L${i} ${a} L${o} ${s} L${(this.#a[16]-e)/n} ${(this.#a[17]-t)/r} L${(this.#a[14]-e)/n} ${(this.#a[15]-t)/r} Z`}#v(e){let t=this.#t;e.push(`L${t[4]} ${t[5]} Z`)}#y(e){let[t,n,r,i]=this.#e,a=this.#a.subarray(4,6),o=this.#a.subarray(16,18),[s,c,l,u]=this.#g();e.push(`L${(a[0]-t)/r} ${(a[1]-n)/i} L${s} ${c} L${l} ${u} L${(o[0]-t)/r} ${(o[1]-n)/i}`)}newFreeDrawOutline(e,t,n,r,i,a){return new ki(e,t,n,r,i,a)}getOutlines(){let e=this.#i,t=this.#t,n=this.#a,[r,i,a,o]=this.#e,s=new Float32Array((this.#f?.length??0)+2);for(let e=0,t=s.length-2;e=6;e-=6)for(let n=0;n<6;n+=2){if(isNaN(t[e+n])){c[l]=c[l+1]=NaN,l+=2;continue}c[l]=t[e+n],c[l+1]=t[e+n+1],l+=2}return this.#x(c,l),this.newFreeDrawOutline(c,s,this.#e,this.#u,this.#n,this.#r)}#b(e){let t=this.#a,[n,r,i,a]=this.#e,[o,s,c,l]=this.#g(),u=new Float32Array(36);return u.set([NaN,NaN,NaN,NaN,(t[2]-n)/i,(t[3]-r)/a,NaN,NaN,NaN,NaN,(t[4]-n)/i,(t[5]-r)/a,NaN,NaN,NaN,NaN,o,s,NaN,NaN,NaN,NaN,c,l,NaN,NaN,NaN,NaN,(t[16]-n)/i,(t[17]-r)/a,NaN,NaN,NaN,NaN,(t[14]-n)/i,(t[15]-r)/a],0),this.newFreeDrawOutline(u,e,this.#e,this.#u,this.#n,this.#r)}#x(e,t){let n=this.#t;return e.set([NaN,NaN,NaN,NaN,n[4],n[5]],t),t+=6}#S(e,t){let n=this.#a.subarray(4,6),r=this.#a.subarray(16,18),[i,a,o,s]=this.#e,[c,l,u,d]=this.#g();return e.set([NaN,NaN,NaN,NaN,(n[0]-i)/o,(n[1]-a)/s,NaN,NaN,NaN,NaN,c,l,NaN,NaN,NaN,NaN,u,d,NaN,NaN,NaN,NaN,(r[0]-i)/o,(r[1]-a)/s],t),t+=24}},ki=class extends ${#e;#t=new Float32Array(4);#n;#r;#i;#a;#o;constructor(e,t,n,r,i,a){super(),this.#o=e,this.#i=t,this.#e=n,this.#a=r,this.#n=i,this.#r=a,this.firstPoint=[NaN,NaN],this.lastPoint=[NaN,NaN],this.#s(a);let[o,s,c,l]=this.#t;for(let t=0,n=e.length;tp?(o=f,s=p):s===p&&(o=u(o,f)),ld[1]?(o=d[0],s=d[1]):s===d[1]&&(o=u(o,d[0])),le[0]-t[0]||e[1]-t[1]||e[2]-t[2]);let e=[];for(let t of this.#r)t[3]?(e.push(...this.#l(t)),this.#s(t)):(this.#c(t),e.push(...this.#l(t)));return this.#a(e)}#a(e){let t=[],n=new Set;for(let n of e){let[e,r,i]=n;t.push([e,r,n],[e,i,n])}t.sort((e,t)=>e[1]-t[1]||e[0]-t[0]);for(let e=0,r=t.length;e0;){let e=n.values().next().value,[t,a,o,s,c]=e;n.delete(e);let l=t,u=a;for(i=[t,o],r.push(i);;){let e;if(n.has(s))e=s;else if(n.has(c))e=c;else break;n.delete(e),[t,a,o,s,c]=e,l!==t&&(i.push(l,u,t,u===a?a:o),l=t),u=u===a?o:a}i.push(l,u)}return new ji(r,this.#e,this.#t,this.#n)}#o(e){let t=this.#i,n=0,r=t.length-1;for(;n<=r;){let i=n+r>>1,a=t[i][0];if(a===e)return i;a=0;r--){let[n,i]=this.#i[r];if(n!==e)break;if(n===e&&i===t){this.#i.splice(r,1);return}}}#l(e){let[t,n,r]=e,i=[[t,n,r]],a=this.#o(r);for(let e=0;e=n){if(s>r)i[e][1]=r;else{if(a===1)return[];i.splice(e,1),e--,a--}continue}i[e][2]=n,s>r&&i.push([t,r,s])}}}return i}},ji=class extends ${#e;#t;constructor(e,t,n,r){super(),this.#t=e,this.#e=t,this.firstPoint=n,this.lastPoint=r}toSVGPath(){let e=[];for(let t of this.#t){let[n,r]=t;e.push(`M${n} ${r}`);for(let i=2;i-1?(this.#d=!0,this.#y(t),this.#w()):this.#n&&(this.#e=t.anchorNode,this.#t=t.anchorOffset,this.#o=t.focusNode,this.#s=t.focusOffset,this.#v(),this.#w(),this.rotate(this.rotation)),this.annotationElementId||this._uiManager.a11yAlert(U._l10nAlert.highlight)}get telemetryInitialData(){return{action:`added`,type:this.#d?`free_highlight`:`highlight`,color:this._uiManager.getNonHCMColorName(this.color),thickness:this.#g,methodOfCreation:this.#_}}get telemetryFinalData(){return{type:`highlight`,color:this._uiManager.getNonHCMColorName(this.color)}}static computeTelemetryFinalData(e){return{numberOfColors:e.get(`color`).size}}#v(){let e=new Ai(this.#n,.001);this.#l=e.getOutlines(),[this.x,this.y,this.width,this.height]=this.#l.box;let t=new Ai(this.#n,.0025,.001,this._uiManager.direction===`ltr`);this.#a=t.getOutlines();let{firstPoint:n}=this.#l;this.#f=[(n[0]-this.x)/this.width,(n[1]-this.y)/this.height];let{lastPoint:r}=this.#a;this.#p=[(r[0]-this.x)/this.width,(r[1]-this.y)/this.height]}#y({highlightOutlines:t,highlightId:n,clipPathId:r}){if(this.#l=t,this.#a=t.getNewOutline(this.#g/2+1.5,.0025),n>=0)this.#u=n,this.#r=r,this.parent.drawLayer.finalizeDraw(n,{bbox:t.box,path:{d:t.toSVGPath()}}),this.#m=this.parent.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:!0},bbox:this.#a.box,path:{d:this.#a.toSVGPath()}},!0);else if(this.parent){let n=this.parent.viewport.rotation;this.parent.drawLayer.updateProperties(this.#u,{bbox:e.#T(this.#l.box,(n-this.rotation+360)%360),path:{d:t.toSVGPath()}}),this.parent.drawLayer.updateProperties(this.#m,{bbox:e.#T(this.#a.box,n),path:{d:this.#a.toSVGPath()}})}let[i,a,o,s]=t.box;switch(this.rotation){case 0:this.x=i,this.y=a,this.width=o,this.height=s;break;case 90:{let[e,t]=this.parentDimensions;this.x=a,this.y=1-i,this.width=o*t/e,this.height=s*e/t;break}case 180:this.x=1-i,this.y=1-a,this.width=o,this.height=s;break;case 270:{let[e,t]=this.parentDimensions;this.x=1-a,this.y=i,this.width=o*t/e,this.height=s*e/t;break}}let{firstPoint:c}=t;this.#f=[(c[0]-i)/o,(c[1]-a)/s];let{lastPoint:l}=this.#a;this.#p=[(l[0]-i)/o,(l[1]-a)/s]}static initialize(t,n){U.initialize(t,n),e._defaultColor||=n.highlightColors?.values().next().value||`#fff066`}static updateDefaultParams(t,n){switch(t){case d.HIGHLIGHT_COLOR:e._defaultColor=n;break;case d.HIGHLIGHT_THICKNESS:e._defaultThickness=n}}translateInPage(e,t){}get toolbarPosition(){return this.#p}get commentButtonPosition(){return this.#f}updateParams(e,t){switch(e){case d.HIGHLIGHT_COLOR:this.#b(t);break;case d.HIGHLIGHT_THICKNESS:this.#x(t)}}static get defaultPropertiesToUpdate(){return[[d.HIGHLIGHT_COLOR,e._defaultColor],[d.HIGHLIGHT_THICKNESS,e._defaultThickness]]}get propertiesToUpdate(){return[[d.HIGHLIGHT_COLOR,this.color||e._defaultColor],[d.HIGHLIGHT_THICKNESS,this.#g||e._defaultThickness],[d.HIGHLIGHT_FREE,this.#d]]}onUpdatedColor(){this.parent?.drawLayer.updateProperties(this.#u,{root:{fill:this.color,"fill-opacity":this.opacity}}),this.#i?.updateColor(this.color),super.onUpdatedColor()}#b(t){let n=(e,t)=>{this.color=e,this.opacity=t,this.onUpdatedColor()},r=this.color,i=this.opacity;this.addCommands({cmd:n.bind(this,t,e._defaultOpacity),undo:n.bind(this,r,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:d.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:`color_changed`,color:this._uiManager.getNonHCMColorName(t)},!0)}#x(e){let t=this.#g,n=e=>{this.#g=e,this.#S(e)};this.addCommands({cmd:n.bind(this,e),undo:n.bind(this,t),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:d.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:`thickness_changed`,thickness:e},!0)}get toolbarButtons(){return this._uiManager.highlightColors?[[`colorPicker`,this.#i=new Vr({editor:this})]]:super.toolbarButtons}disableEditing(){super.disableEditing(),this.div.classList.toggle(`disabled`,!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle(`disabled`,!1)}fixAndSetPosition(){return super.fixAndSetPosition(this.#O())}getBaseTranslation(){return[0,0]}getRect(e,t){return super.getRect(e,t,this.#O())}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),e&&this.div.focus()}remove(){this.#C(),this._reportTelemetry({action:`deleted`}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#w(),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){let t=!1;this.parent&&!e?this.#C():e&&(this.#w(e),t=!this.parent&&this.div?.classList.contains(`selectedEditor`)),super.setParent(e),this.show(this._isVisible),t&&this.select()}#S(e){this.#d&&(this.#y({highlightOutlines:this.#l.getNewOutline(e/2)}),this.fixAndSetPosition(),this.setDims())}#C(){this.#u===null||!this.parent||(this.parent.drawLayer.remove(this.#u),this.#u=null,this.parent.drawLayer.remove(this.#m),this.#m=null)}#w(e=this.parent){this.#u===null&&({id:this.#u,clipPathId:this.#r}=e.drawLayer.draw({bbox:this.#l.box,root:{viewBox:`0 0 1 1`,fill:this.color,"fill-opacity":this.opacity},rootClass:{highlight:!0,free:this.#d},path:{d:this.#l.toSVGPath()}},!1,!0),this.#m=e.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:this.#d},bbox:this.#a.box,path:{d:this.#a.toSVGPath()}},this.#d),this.#c&&(this.#c.style.clipPath=this.#r))}static#T([e,t,n,r],i){switch(i){case 90:return[1-t-r,e,r,n];case 180:return[1-e-n,1-t-r,n,r];case 270:return[t,1-e-n,r,n]}return[e,t,n,r]}rotate(t){let{drawLayer:n}=this.parent,r;this.#d?(t=(t-this.rotation+360)%360,r=e.#T(this.#l.box,t)):r=e.#T([this.x,this.y,this.width,this.height],t),n.updateProperties(this.#u,{bbox:r,root:{"data-main-rotation":t}}),n.updateProperties(this.#m,{bbox:e.#T(this.#a.box,t),root:{"data-main-rotation":t}})}render(){if(this.div)return this.div;let e=super.render();this.#h&&(e.setAttribute(`aria-label`,this.#h),e.setAttribute(`role`,`mark`)),this.#d?e.classList.add(`free`):this.div.addEventListener(`keydown`,this.#E.bind(this),{signal:this._uiManager._signal});let t=this.#c=document.createElement(`div`);return e.append(t),t.setAttribute(`aria-hidden`,`true`),t.className=`internal`,t.style.clipPath=this.#r,this.setDims(),Qe(this,this.#c,[`pointerover`,`pointerleave`]),this.enableEditing(),e}pointerover(){this.isSelected||this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!0}})}pointerleave(){this.isSelected||this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!1}})}#E(t){e._keyboardManager.exec(this,t)}_moveCaret(e){switch(this.parent.unselect(this),e){case 0:case 2:this.#D(!0);break;case 1:case 3:this.#D(!1)}}#D(e){if(!this.#e)return;let t=window.getSelection();e?t.setPosition(this.#e,this.#t):t.setPosition(this.#o,this.#s)}select(){super.select(),this.#m&&this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!1,selected:!0}})}unselect(){super.unselect(),this.#m&&(this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{selected:!1}}),this.#d||this.#D(!1))}get _mustFixPosition(){return!this.#d}show(e=this._isVisible){super.show(e),this.parent&&(this.parent.drawLayer.updateProperties(this.#u,{rootClass:{hidden:!e}}),this.parent.drawLayer.updateProperties(this.#m,{rootClass:{hidden:!e}}))}#O(){return this.#d?this.rotation:0}#k(){if(this.#d)return null;let[e,t]=this.pageDimensions,[n,r]=this.pageTranslation,i=this.#n,a=new Float32Array(i.length*8),o=0;for(let{x:s,y:c,width:l,height:u}of i){let i=s*e+n,d=(1-c)*t+r;a[o]=a[o+4]=i,a[o+1]=a[o+3]=d,a[o+2]=a[o+6]=i+l*e,a[o+5]=a[o+7]=d-u*t,o+=8}return a}#A(e){return this.#l.serialize(e,this.#O())}static startHighlighting(e,t,{target:n,x:r,y:i}){let{x:a,y:o,width:s,height:c}=n.getBoundingClientRect(),l=new AbortController,u=e.combinedSignal(l),d=t=>{l.abort(),this.#M(e,t)};window.addEventListener(`blur`,d,{signal:u}),window.addEventListener(`pointerup`,d,{signal:u}),window.addEventListener(`pointerdown`,z,{capture:!0,passive:!1,signal:u}),window.addEventListener(`contextmenu`,R,{signal:u}),n.addEventListener(`pointermove`,this.#j.bind(this,e),{signal:u}),this._freeHighlight=new Mi({x:r,y:i},[a,o,s,c],e.scale,this._defaultThickness/2,t,.001),{id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=e.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:`0 0 1 1`,fill:this._defaultColor,"fill-opacity":this._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:this._freeHighlight.toSVGPath()}},!0,!0)}static#j(e,t){this._freeHighlight.add(t)&&e.drawLayer.updateProperties(this._freeHighlightId,{path:{d:this._freeHighlight.toSVGPath()}})}static#M(e,t){this._freeHighlight.isEmpty()?e.drawLayer.remove(this._freeHighlightId):e.createAndAddNewEditor(t,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:`main_toolbar`}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=``}static async deserialize(e,t,n){let r=null;if(e instanceof vi){let{data:{quadPoints:t,rect:n,rotation:i,id:a,color:o,opacity:s,popupRef:c,richText:l,contentsObj:d,creationDate:f,modificationDate:p},parent:{page:{pageNumber:m}}}=e;r=e={annotationType:u.HIGHLIGHT,color:Array.from(o),opacity:s,quadPoints:t,boxes:null,pageIndex:m-1,rect:n.slice(0),rotation:i,annotationElementId:a,id:a,deleted:!1,popupRef:c,richText:l,comment:d?.str||null,creationDate:f,modificationDate:p}}else if(e instanceof _i){let{data:{inkLists:t,rect:n,rotation:i,id:a,color:o,borderStyle:{rawWidth:s},popupRef:c,richText:l,contentsObj:d,creationDate:f,modificationDate:p},parent:{page:{pageNumber:m}}}=e;r=e={annotationType:u.HIGHLIGHT,color:Array.from(o),thickness:s,inkLists:t,boxes:null,pageIndex:m-1,rect:n.slice(0),rotation:i,annotationElementId:a,id:a,deleted:!1,popupRef:c,richText:l,comment:d?.str||null,creationDate:f,modificationDate:p}}let{color:i,quadPoints:a,inkLists:o,outlines:s,opacity:c}=e,l=await super.deserialize(e,t,n);l.color=I.makeHexColor(...i),l.opacity=c||1,o&&(l.#g=e.thickness),l._initialData=r,e.comment&&l.setCommentData(e);let[d,f]=l.pageDimensions,[p,m]=l.pageTranslation;if(a){let e=l.#n=[];for(let t=0;te!==t[n])}renderAnnotationElement(e){return this.deleted?(e.hide(),null):(e.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}static canCreateNewEmptyEditor(){return!1}},Fi=class{#e=Object.create(null);updateProperty(e,t){this[e]=t,this.updateSVGProperty(e,t)}updateProperties(e){if(e)for(let[t,n]of Object.entries(e))t.startsWith(`_`)||this.updateProperty(t,n)}updateSVGProperty(e,t){this.#e[e]=t}toSVGProperties(){let e=this.#e;return this.#e=Object.create(null),{root:e}}reset(){this.#e=Object.create(null)}updateAll(e=this){this.updateProperties(e)}clone(){E(`Not implemented`)}},Ii=class e extends U{#e=null;#t;_colorPicker=null;_drawId=null;static _currentDrawId=-1;static _currentParent=null;static#n=null;static#r=null;static#i=null;static _INNER_MARGIN=3;constructor(e){super(e),this.#t=e.mustBeCommitted||!1,this._addOutlines(e)}onUpdatedColor(){this._colorPicker?.update(this.color),super.onUpdatedColor()}onUpdatedOpacity(){this._colorPicker?.updateOpacity?.(this.opacity)}_addOutlines(e){e.drawOutlines&&(this.#a(e),this.#c())}#a({drawOutlines:e,drawId:t,drawingOptions:n}){this.#e=e,this._drawingOptions||=n,this.annotationElementId||this._uiManager.a11yAlert(U._l10nAlert[this.editorType]),t>=0?(this._drawId=t,this.parent.drawLayer.finalizeDraw(t,e.defaultProperties)):this._drawId=this.#o(e,this.parent),this.#d(e.box)}#o(t,n){let{id:r}=n.drawLayer.draw(e._mergeSVGProperties(this._drawingOptions.toSVGProperties(),t.defaultSVGProperties),!1,!1);return r}static _mergeSVGProperties(e,t){let n=new Set(Object.keys(e));for(let[r,i]of Object.entries(t))n.has(r)?Object.assign(e[r],i):e[r]=i;return e}static getDefaultDrawingOptions(e){E(`Not implemented`)}static get typesMap(){E(`Not implemented`)}static get isDrawer(){return!0}static get supportMultipleDrawings(){return!1}static updateDefaultParams(t,n){let r=this.typesMap.get(t);r&&this._defaultDrawingOptions.updateProperty(r,n),this._currentParent&&(e.#n.updateProperty(r,n),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(e,t){let n=this.constructor.typesMap.get(e);n&&this._updateProperty(e,n,t)}static get defaultPropertiesToUpdate(){let e=[],t=this._defaultDrawingOptions;for(let[n,r]of this.typesMap)e.push([n,t[r]]);return e}get propertiesToUpdate(){let e=[],{_drawingOptions:t}=this;for(let[n,r]of this.constructor.typesMap)e.push([n,t[r]]);return e}_updateProperty(e,t,n){let r=this._drawingOptions,i=r[t],a=n=>{r.updateProperty(t,n);let i=this.#e.updateProperty(t,n);i&&this.#d(i),this.parent?.drawLayer.updateProperties(this._drawId,r.toSVGProperties()),e===this.colorType?this.onUpdatedColor():e===this.opacityType&&this.onUpdatedOpacity()};this.addCommands({cmd:a.bind(this,n),undo:a.bind(this,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:e,overwriteIfSameType:!0,keepUndo:!0})}_updateColorAndOpacity(e,t){let n=this.constructor.typesMap.get(this.colorType),r=this.constructor.typesMap.get(this.opacityType),i=this._drawingOptions,a=i[n],o=i[r],s=(e,t)=>{i.updateProperty(n,e),i.updateProperty(r,t),this.#e.updateProperty(n,e),this.#e.updateProperty(r,t),this.parent?.drawLayer.updateProperties(this._drawId,i.toSVGProperties()),this.onUpdatedColor(),this.onUpdatedOpacity()};this.addCommands({cmd:s.bind(this,e,t),undo:s.bind(this,a,o),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:d.INK_COLOR_AND_OPACITY,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathResizingSVGProperties(this.#u()),{bbox:this.#f()}))}_onResized(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathResizedSVGProperties(this.#u()),{bbox:this.#f()}))}_onTranslating(e,t){this.parent?.drawLayer.updateProperties(this._drawId,{bbox:this.#f()})}_onTranslated(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathTranslatedSVGProperties(this.#u(),this.parentDimensions),{bbox:this.#f()}))}_onStartDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}commit(){super.commit(),this.disableEditMode(),this.disableEditing()}disableEditing(){super.disableEditing(),this.div.classList.toggle(`disabled`,!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle(`disabled`,!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,this.#t&&(this.#t=!1,this.commit(),this.parent.setSelected(this),e&&this.isOnScreen&&this.div.focus())}remove(){this.#s(),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#c(),this.#d(this.#e.box),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){let t=!1;this.parent&&!e?(this._uiManager.removeShouldRescale(this),this.#s()):e&&(this._uiManager.addShouldRescale(this),this.#c(e),t=!this.parent&&this.div?.classList.contains(`selectedEditor`)),super.setParent(e),t&&this.select()}#s(){this._drawId===null||!this.parent||(this.parent.drawLayer.remove(this._drawId),this._drawId=null,this._drawingOptions.reset())}#c(e=this.parent){if(this._drawId===null||this.parent!==e){if(this._drawId!==null){this.parent.drawLayer.updateParent(this._drawId,e.drawLayer);return}this._drawingOptions.updateAll(),this._drawId=this.#o(this.#e,e)}}#l([e,t,n,r]){let{parentDimensions:[i,a],rotation:o}=this;switch(o){case 90:return[t,1-e,a/i*n,i/a*r];case 180:return[1-e,1-t,n,r];case 270:return[1-t,e,a/i*n,i/a*r];default:return[e,t,n,r]}}#u(){let{x:e,y:t,width:n,height:r,parentDimensions:[i,a],rotation:o}=this;switch(o){case 90:return[1-t,e,i/a*n,a/i*r];case 180:return[1-e,1-t,n,r];case 270:return[t,1-e,i/a*n,a/i*r];default:return[e,t,n,r]}}#d(e){[this.x,this.y,this.width,this.height]=this.#l(e),this.div&&(this.fixAndSetPosition(),this.setDims()),this._onResized()}#f(){let{x:e,y:t,width:n,height:r,rotation:i,parentRotation:a,parentDimensions:[o,s]}=this;switch((i*4+a)/90){case 1:return[1-t-r,e,r,n];case 2:return[1-e-n,1-t-r,n,r];case 3:return[t,1-e-n,r,n];case 4:return[e,t-o/s*n,s/o*r,o/s*n];case 5:return[1-t,e,o/s*n,s/o*r];case 6:return[1-e-s/o*r,1-t,s/o*r,o/s*n];case 7:return[t-o/s*n,1-e-s/o*r,o/s*n,s/o*r];case 8:return[e-n,t-r,n,r];case 9:return[1-t,e-n,r,n];case 10:return[1-e,1-t,n,r];case 11:return[t-r,1-e,r,n];case 12:return[e-s/o*r,t,s/o*r,o/s*n];case 13:return[1-t-o/s*n,e-s/o*r,o/s*n,s/o*r];case 14:return[1-e,1-t-o/s*n,s/o*r,o/s*n];case 15:return[t,1-e,o/s*n,s/o*r];default:return[e,t,n,r]}}rotate(){this.parent&&this.parent.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties({bbox:this.#f()},this.#e.updateRotation((this.parentRotation-this.rotation+360)%360)))}onScaleChanging(){this.parent&&this.#d(this.#e.updateParentDimensions(this.parentDimensions,this.parent.scale))}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;let e,t;this._isCopy&&(e=this.x,t=this.y);let n=super.render();n.classList.add(`draw`);let r=document.createElement(`div`);return n.append(r),r.setAttribute(`aria-hidden`,`true`),r.className=`internal`,this.setDims(),this._uiManager.addShouldRescale(this),this.disableEditing(),this._isCopy&&this._moveAfterPaste(e,t),n}static createDrawerInstance(e,t,n,r,i){E(`Not implemented`)}static startDrawing(t,n,r,i){let{target:a,offsetX:o,offsetY:s,pointerId:c,pointerType:l}=i;if(H.isInitializedAndDifferentPointerType(l))return;let{viewport:{rotation:u}}=t,{width:d,height:f}=a.getBoundingClientRect(),p=e.#r=new AbortController,m=t.combinedSignal(p);if(H.setPointer(l,c),window.addEventListener(`pointerup`,e=>{H.isSamePointerIdOrRemove(e.pointerId)&&this._endDraw(e)},{signal:m}),window.addEventListener(`pointercancel`,e=>{H.isSamePointerIdOrRemove(e.pointerId)&&this._currentParent.endDrawingSession()},{signal:m}),window.addEventListener(`pointerdown`,t=>{H.isSamePointerType(t.pointerType)&&(H.initializeAndAddPointerId(t.pointerId),e.#n.isCancellable()&&(e.#n.removeLastElement(),e.#n.isEmpty()?this._currentParent.endDrawingSession(!0):this._endDraw(null)))},{capture:!0,passive:!1,signal:m}),window.addEventListener(`contextmenu`,R,{signal:m}),a.addEventListener(`pointermove`,this._drawMove.bind(this),{signal:m}),a.addEventListener(`touchmove`,e=>{H.isSameTimeStamp(e.timeStamp)&&z(e)},{signal:m}),t.toggleDrawing(),n._editorUndoBar?.hide(),e.#n){t.drawLayer.updateProperties(this._currentDrawId,e.#n.startNew(o,s,d,f,u));return}n.updateUIForDefaultProperties(this),e.#n=this.createDrawerInstance(o,s,d,f,u),e.#i=this.getDefaultDrawingOptions(),this._currentParent=t,{id:this._currentDrawId}=t.drawLayer.draw(this._mergeSVGProperties(e.#i.toSVGProperties(),e.#n.defaultSVGProperties),!0,!1)}static _drawMove(t){if(H.isSameTimeStamp(t.timeStamp),!e.#n)return;let{offsetX:n,offsetY:r,pointerId:i}=t;if(H.isSamePointerId(i)){if(H.isUsingMultiplePointers()){this._endDraw(t);return}this._currentParent.drawLayer.updateProperties(this._currentDrawId,e.#n.add(n,r)),H.setTimeStamp(t.timeStamp),z(t)}}static _cleanup(t){t&&(this._currentDrawId=-1,this._currentParent=null,e.#n=null,e.#i=null,H.clearTimeStamp()),e.#r&&(e.#r.abort(),e.#r=null,H.clearPointerIds())}static _endDraw(t){let n=this._currentParent;if(n){if(n.toggleDrawing(!0),this._cleanup(!1),t?.target===n.div&&n.drawLayer.updateProperties(this._currentDrawId,e.#n.end(t.offsetX,t.offsetY)),this.supportMultipleDrawings){let t=e.#n,r=this._currentDrawId,i=t.getLastElement();n.addCommands({cmd:()=>{n.drawLayer.updateProperties(r,t.setLastElement(i))},undo:()=>{n.drawLayer.updateProperties(r,t.removeLastElement())},mustExec:!1,type:d.DRAW_STEP});return}this.endDrawing(!1)}}static endDrawing(t){let n=this._currentParent;if(!n)return null;if(n.toggleDrawing(!0),n.cleanUndoStack(d.DRAW_STEP),!e.#n.isEmpty()){let{pageDimensions:[r,i],scale:a}=n,o=n.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,drawOutlines:e.#n.getOutlines(r*a,i*a,a,this._INNER_MARGIN),drawingOptions:e.#i,mustBeCommitted:!t});return this._cleanup(!0),o}return n.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(e){}static deserializeDraw(e,t,n,r,i,a){E(`Not implemented`)}static async deserialize(e,t,n){let{rawDims:{pageWidth:r,pageHeight:i,pageX:a,pageY:o}}=t.viewport,s=this.deserializeDraw(a,o,r,i,this._INNER_MARGIN,e),c=await super.deserialize(e,t,n);return c.createDrawingOptions(e),c.#a({drawOutlines:s}),c.#c(),c.onScaleChanging(),c.rotate(),c}serializeDraw(e){let[t,n]=this.pageTranslation,[r,i]=this.pageDimensions;return this.#e.serialize([t,n,r,i],e)}renderAnnotationElement(e){return e.updateEdited({rect:this.getPDFRect()}),null}static canCreateNewEmptyEditor(){return!1}},Li=class{#e=new Float64Array(6);#t;#n;#r;#i;#a;#o=``;#s=0;#c=new Ri;#l;#u;constructor(e,t,n,r,i,a){this.#l=n,this.#u=r,this.#r=i,this.#i=a,[e,t]=this.#d(e,t);let o=this.#t=[NaN,NaN,NaN,NaN,e,t];this.#a=[e,t],this.#n=[{line:o,points:this.#a}],this.#e.set(o,0)}updateProperty(e,t){e===`stroke-width`&&(this.#i=t)}#d(e,t){return $._normalizePoint(e,t,this.#l,this.#u,this.#r)}isEmpty(){return!this.#n?.length}isCancellable(){return this.#a.length<=10}add(e,t){[e,t]=this.#d(e,t);let[n,r,i,a]=this.#e.subarray(2,6),o=e-i,s=t-a;return Math.hypot(this.#l*o,this.#u*s)<=2?null:(this.#a.push(e,t),isNaN(n)?(this.#e.set([i,a,e,t],2),this.#t.push(NaN,NaN,NaN,NaN,e,t),{path:{d:this.toSVGPath()}}):(isNaN(this.#e[0])&&this.#t.splice(6,6),this.#e.set([n,r,i,a,e,t],0),this.#t.push(...$.createBezierPoints(n,r,i,a,e,t)),{path:{d:this.toSVGPath()}}))}end(e,t){return this.add(e,t)||(this.#a.length===2?{path:{d:this.toSVGPath()}}:null)}startNew(e,t,n,r,i){this.#l=n,this.#u=r,this.#r=i,[e,t]=this.#d(e,t);let a=this.#t=[NaN,NaN,NaN,NaN,e,t];this.#a=[e,t];let o=this.#n.at(-1);return o&&(o.line=new Float32Array(o.line),o.points=new Float32Array(o.points)),this.#n.push({line:a,points:this.#a}),this.#e.set(a,0),this.#s=0,this.toSVGPath(),null}getLastElement(){return this.#n.at(-1)}setLastElement(e){return this.#n?(this.#n.push(e),this.#t=e.line,this.#a=e.points,this.#s=0,{path:{d:this.toSVGPath()}}):this.#c.setLastElement(e)}removeLastElement(){if(!this.#n)return this.#c.removeLastElement();this.#n.pop(),this.#o=``;for(let e=0,t=this.#n.length;ee??NaN),u,d,f,p),points:m(o[e].map(e=>e??NaN),u,d,f,p)});let h=new this.prototype.constructor;return h.build(l,n,r,1,s,c,i),h}#l(e=this.#c){let t=this.#n+e/2*this.#o;return this.#s%180==0?[t/this.#i,t/this.#a]:[t/this.#a,t/this.#i]}#u(){let[e,t,n,r]=this.#e,[i,a]=this.#l(0);return[e+i,t+a,n-2*i,r-2*a]}#d(){let e=this.#e=r.slice();for(let{line:t}of this.#r){if(t.length<=12){for(let n=4,r=t.length;ne!==t[n])||e.thickness!==n||e.opacity!==r||e.pageIndex!==i}renderAnnotationElement(e){if(this.deleted)return e.hide(),null;let{points:t,rect:n}=this.serializeDraw(!1);return e.updateEdited({rect:n,thickness:this._drawingOptions[`stroke-width`],points:t,popup:this.comment}),null}},Vi=class extends Ri{toSVGPath(){let e=super.toSVGPath();return e.endsWith(`Z`)||(e+=`Z`),e}},Hi=8,Ui=3,Wi=class{static#e={maxDim:512,sigmaSFactor:.02,sigmaR:25,kernelSize:16};static#t(e,t,n,r){return n-=e,r-=t,n===0?r>0?0:4:n===1?r+6:2-r}static#n=new Int32Array([0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1]);static#r(e,t,n,r,i,a,o){let s=this.#t(n,r,i,a);for(let i=0;i<8;i++){let a=(-i+s-o+16)%8,c=this.#n[2*a],l=this.#n[2*a+1];if(e[(n+c)*t+(r+l)]!==0)return a}return-1}static#i(e,t,n,r,i,a,o){let s=this.#t(n,r,i,a);for(let i=0;i<8;i++){let a=(i+s+o+16)%8,c=this.#n[2*a],l=this.#n[2*a+1];if(e[(n+c)*t+(r+l)]!==0)return a}return-1}static#a(e,t,n,r){let i=e.length,a=new Int32Array(i);for(let t=0;t=1&&a[r+1]===0)o+=1,u+=1,i>1&&(s=i);else{i!==1&&(s=Math.abs(i));continue}let d=[n,e],f=u===n+1,p={isHole:f,points:d,id:o,parent:0};c.push(p);let m;for(let e of c)if(e.id===s){m=e;break}p.parent=m?m.isHole?f?m.parent:s:f?s:m.parent:f?s:0;let h=this.#r(a,t,e,n,l,u,0);if(h===-1){a[r]=-o,a[r]!==1&&(s=Math.abs(a[r]));continue}let g=this.#n[2*h],_=this.#n[2*h+1],v=e+g,y=n+_;l=v,u=y;let b=e,x=n;for(;;){let i=this.#i(a,t,b,x,l,u,1);g=this.#n[2*i],_=this.#n[2*i+1];let c=b+g,f=x+_;d.push(f,c);let p=b*t+x;if(a[p+1]===0?a[p]=-o:a[p]===1&&(a[p]=o),c===e&&f===n&&b===v&&x===y){a[r]!==1&&(s=Math.abs(a[r]));break}l=b,u=x,b=c,x=f}}}return c}static#o(e,t,n,r){if(n-t<=4){for(let i=t;ib&&(x=r,b=t)}b>(c*y)**2?(this.#o(e,t,x+2,r),this.#o(e,x,n,r)):r.push(i,a)}static#s(e){let t=[],n=e.length;return this.#o(e,0,n,t),t.push(e[n-2],e[n-1]),t.length<=4?null:t}static#c(e,t,n,r,i,a){let o=new Float32Array(a**2),s=-2*r**2,c=a>>1;for(let e=0;e=n))for(let n=0;n=t)continue;let p=e[f*t+r],h=o[s*a+n]*l[Math.abs(p-u)];d+=p*h,m+=h}}let h=f[s]=Math.round(d/m);p[h]++}return[f,p]}static#l(e){let t=new Uint32Array(256);for(let n of e)t[n]++;return t}static#u(e){let t=e.length,n=new Uint8ClampedArray(t>>2),r=-1/0,i=1/0;for(let t=0,a=n.length;te!==0),a=i,o=i;for(t=i;t<256;t++){let i=e[t];i>n&&(t-a>r&&(r=t-a,o=t-1),n=i,a=t)}for(t=o-1;t>=0&&!(e[t]>e[t+1]);t--);return t}static#f(e){let t=e,{width:n,height:r}=e,{maxDim:i}=this.#e,a=n,o=r;if(n>i||r>i){let s=n,c=r,l=Math.log2(Math.max(n,r)/i),u=Math.floor(l);l=l===u?u-1:u;for(let n=0;n=-128&&o<=127?Int8Array:a>=-32768&&o<=32767?Int16Array:Int32Array;let l=e.length,u=Hi+Ui*l,d=new Uint32Array(u),f=0;d[f++]=u*Uint32Array.BYTES_PER_ELEMENT+(s-2*l)*c.BYTES_PER_ELEMENT,d[f++]=0,d[f++]=r,d[f++]=i,d[f++]=+!t,d[f++]=Math.max(0,Math.floor(n??0)),d[f++]=l,d[f++]=c.BYTES_PER_ELEMENT;for(let t of e)d[f++]=t.length-2,d[f++]=t[0],d[f++]=t[1];let p=new CompressionStream(`deflate-raw`),m=p.writable.getWriter();await m.ready,m.write(d);let h=c.prototype.constructor;for(let t of e){let e=new h(t.length-2);for(let n=2,r=t.length;n{await i.ready,await i.close()}).catch(()=>{});let a=null,o=0;for await(let e of n)a||=new Uint8Array(new Uint32Array(e.buffer,0,4)[0]),a.set(e,o),o+=e.length;let s=new Uint32Array(a.buffer,0,a.length>>2),c=s[1];if(c!==0)throw Error(`Invalid version: ${c}`);let l=s[2],u=s[3],d=s[4]===0,f=s[5],p=s[6],m=s[7],h=[],g=(Hi+Ui*p)*Uint32Array.BYTES_PER_ELEMENT,_;switch(m){case Int8Array.BYTES_PER_ELEMENT:_=new Int8Array(a.buffer,g);break;case Int16Array.BYTES_PER_ELEMENT:_=new Int16Array(a.buffer,g);break;case Int32Array.BYTES_PER_ELEMENT:_=new Int32Array(a.buffer,g)}o=0;for(let e=0;e{t?.updateEditSignatureButton(e)}))}getSignaturePreview(){let{newCurves:e,areContours:t,thickness:n,width:r,height:i}=this.#n,a=Math.max(r,i);return{areContours:t,outline:Wi.processDrawnLines({lines:{curves:e.map(e=>({points:e})),thickness:n,width:r,height:i},pageWidth:a,pageHeight:a,rotation:0,innerMargin:0,mustSmooth:!1,areContours:t}).outline}}get toolbarButtons(){return this._uiManager.signatureManager?[[`editSignature`,this._uiManager.signatureManager]]:super.toolbarButtons}addSignature(t,n,r,i){let{x:a,y:o}=this,{outline:s}=this.#n=t;this.#e=s instanceof Vi,this.description=r;let c;this.#e?c=e.getDefaultDrawingOptions():(c=e._defaultDrawnSignatureOptions.clone(),c.updateProperties({"stroke-width":s.thickness})),this._addOutlines({drawOutlines:s,drawingOptions:c});let[,l]=this.pageDimensions,u=n/l;u=u>=1?.5:u,this.width*=u/this.height,this.width>=1&&(u*=.9/this.width,this.width=.9),this.height=u,this.setDims(),this.x=a,this.y=o,this.center(),this._onResized(),this.onScaleChanging(),this.rotate(),this._uiManager.addToAnnotationStorage(this),this.setUuid(i),this._reportTelemetry({action:`pdfjs.signature.inserted`,data:{hasBeenSaved:!!i,hasDescription:!!r}}),this.div.hidden=!1}getFromImage(t){let{rawDims:{pageWidth:n,pageHeight:r},rotation:i}=this.parent.viewport;return Wi.process(t,n,r,i,e._INNER_MARGIN)}getFromText(t,n){let{rawDims:{pageWidth:r,pageHeight:i},rotation:a}=this.parent.viewport;return Wi.extractContoursFromText(t,n,r,i,a,e._INNER_MARGIN)}getDrawnSignature(t){let{rawDims:{pageWidth:n,pageHeight:r},rotation:i}=this.parent.viewport;return Wi.processDrawnLines({lines:t,pageWidth:n,pageHeight:r,rotation:i,innerMargin:e._INNER_MARGIN,mustSmooth:!1,areContours:!1})}createDrawingOptions({areContours:t,thickness:n}){t?this._drawingOptions=e.getDefaultDrawingOptions():(this._drawingOptions=e._defaultDrawnSignatureOptions.clone(),this._drawingOptions.updateProperties({"stroke-width":n}))}serialize(e=!1){if(this.isEmpty())return null;let{lines:t,points:n}=this.serializeDraw(e),{_drawingOptions:{"stroke-width":r}}=this,i=Object.assign(super.serialize(e),{isSignature:!0,areContours:this.#e,color:[0,0,0],thickness:this.#e?0:r});return this.addComment(i),e?(i.paths={lines:t,points:n},i.uuid=this.#r,i.isCopy=!0):i.lines=t,this.#t&&(i.accessibilityData={type:`Figure`,alt:this.#t}),i}static deserializeDraw(e,t,n,r,i,a){return a.areContours?Vi.deserialize(e,t,n,r,i,a):Ri.deserialize(e,t,n,r,i,a)}static async deserialize(e,t,n){let r=await super.deserialize(e,t,n);return r.#e=e.areContours,r.description=e.accessibilityData?.alt||``,r.#r=e.uuid,r}},Ji=class extends U{#e=null;#t=null;#n=null;#r=null;#i=null;#a=``;#o=null;#s=!1;#c=null;#l=!1;#u=!1;static _type=`stamp`;static _editorType=u.STAMP;constructor(e){super({...e,name:`stampEditor`}),this.#r=e.bitmapUrl,this.#i=e.bitmapFile,this.defaultL10nId=`pdfjs-editor-stamp-editor`}static initialize(e,t){U.initialize(e,t)}static isHandlingMimeForPasting(e){return Le.includes(e)}static paste(e,t){t.pasteEditor({mode:u.STAMP},{bitmapFile:e.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){return{type:`stamp`,hasAltText:!!this.altTextData?.altText}}static computeTelemetryFinalData(e){let t=e.get(`hasAltText`);return{hasAltText:t.get(!0)??0,hasNoAltText:t.get(!1)??0}}#d(e,t=!1){if(!e){this.remove();return}this.#e=e.bitmap,t||(this.#t=e.id,this.#l=e.isSvg),e.file&&(this.#a=e.file.name),this.#m()}#f(){if(this.#n=null,this._uiManager.enableWaiting(!1),this.#o){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#e){this.addEditToolbar().then(()=>{this._editToolbar.hide(),this._uiManager.editAltText(this,!0)});return}if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#e){this._reportTelemetry({action:`pdfjs.image.image_added`,data:{alt_text_modal:!1,alt_text_type:`empty`}});try{this.mlGuessAltText()}catch{}}this.div.focus()}}async mlGuessAltText(e=null,t=!0){if(this.hasAltTextData())return null;let{mlManager:n}=this._uiManager;if(!n)throw Error(`No ML.`);if(!await n.isEnabledFor(`altText`))throw Error(`ML isn't enabled for alt text.`);let{data:r,width:i,height:a}=e||this.copyCanvas(null,null,!0).imageData,o=await n.guess({name:`altText`,request:{data:r,width:i,height:a,channels:r.length/(i*a)}});if(!o)throw Error(`No response from the AI service.`);if(o.error)throw Error(`Error from the AI service.`);if(o.cancel)return null;if(!o.output)throw Error(`No valid response from the AI service.`);let s=o.output;return await this.setGuessedAltText(s),t&&!this.hasAltTextData()&&(this.altTextData={alt:s,decorative:!1}),s}#p(){if(this.#t){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(this.#t).then(e=>this.#d(e,!0)).finally(()=>this.#f());return}if(this.#r){let e=this.#r;this.#r=null,this._uiManager.enableWaiting(!0),this.#n=this._uiManager.imageManager.getFromUrl(e).then(e=>this.#d(e)).finally(()=>this.#f());return}if(this.#i){let e=this.#i;this.#i=null,this._uiManager.enableWaiting(!0),this.#n=this._uiManager.imageManager.getFromFile(e).then(e=>this.#d(e)).finally(()=>this.#f());return}let e=document.createElement(`input`);e.type=`file`,e.accept=Le.join(`,`);let t=this._uiManager._signal;this.#n=new Promise(n=>{e.addEventListener(`change`,async()=>{if(!e.files||e.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);let t=await this._uiManager.imageManager.getFromFile(e.files[0]);this._reportTelemetry({action:`pdfjs.image.image_selected`,data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),this.#d(t)}n()},{signal:t}),e.addEventListener(`cancel`,()=>{this.remove(),n()},{signal:t})}).finally(()=>this.#f()),e.click()}remove(){this.#t&&(this.#e=null,this._uiManager.imageManager.deleteId(this.#t),this.#o?.remove(),this.#o=null,this.#c&&=(clearTimeout(this.#c),null)),super.remove()}rebuild(){if(!this.parent){this.#t&&this.#p();return}super.rebuild(),this.div!==null&&(this.#t&&this.#o===null&&this.#p(),this.isAttachedToDOM||this.parent.add(this))}onceAdded(e){this._isDraggable=!0,e&&this.div.focus()}isEmpty(){return!(this.#n||this.#e||this.#r||this.#i||this.#t||this.#s)}get toolbarButtons(){return[[`altText`,this.createAltText()]]}get isResizable(){return!0}render(){if(this.div)return this.div;let e,t;return this._isCopy&&(e=this.x,t=this.y),super.render(),this.div.hidden=!0,this.createAltText(),this.#s||(this.#e?this.#m():this.#p()),this._isCopy&&this._moveAfterPaste(e,t),this._uiManager.addShouldRescale(this),this.div}setCanvas(e,t){let{id:n,bitmap:r}=this._uiManager.imageManager.getFromCanvas(e,t);t.remove(),n&&this._uiManager.imageManager.isValidId(n)&&(this.#t=n,r&&(this.#e=r),this.#s=!1,this.#m())}_onResized(){this.onScaleChanging()}onScaleChanging(){this.parent&&(this.#c!==null&&clearTimeout(this.#c),this.#c=setTimeout(()=>{this.#c=null,this.#g()},200))}#m(){let{div:e}=this,{width:t,height:n}=this.#e,[r,i]=this.pageDimensions,a=.75;if(this.width)t=this.width*r,n=this.height*i;else if(t>a*r||n>a*i){let e=Math.min(a*r/t,a*i/n);t*=e,n*=e}this._uiManager.enableWaiting(!1);let o=this.#o=document.createElement(`canvas`);o.setAttribute(`role`,`img`),this.addContainer(o),this.width=t/r,this.height=n/i,this.setDims(),this._initialOptions?.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(e.hidden=!1),this.#g(),this.#u||=(this.parent.addUndoableEditor(this),!0),this._reportTelemetry({action:`inserted_image`}),this.#a&&this.div.setAttribute(`aria-description`,this.#a),this.annotationElementId||this._uiManager.a11yAlert(U._l10nAlert.stamp)}copyCanvas(e,t,n=!1){e||=224;let{width:r,height:i}=this.#e,a=new Ie,o=this.#e,s=r,c=i,l=null;if(t){if(r>t||i>t){let e=Math.min(t/r,t/i);s=Math.floor(r*e),c=Math.floor(i*e)}l=document.createElement(`canvas`);let e=l.width=Math.ceil(s*a.sx),n=l.height=Math.ceil(c*a.sy);this.#l||(o=this.#h(e,n));let u=l.getContext(`2d`);u.filter=this._uiManager.hcmFilter;let d=`white`,f=`#cfcfd8`;this._uiManager.hcmFilter===`none`?Re.isDarkMode&&(d=`#8f8f9d`,f=`#42414d`):f=`black`;let p=15*a.sx,m=15*a.sy,h=new OffscreenCanvas(p*2,m*2),g=h.getContext(`2d`);g.fillStyle=d,g.fillRect(0,0,p*2,m*2),g.fillStyle=f,g.fillRect(0,0,p,m),g.fillRect(p,m,p,m),u.fillStyle=u.createPattern(h,`repeat`),u.fillRect(0,0,e,n),u.drawImage(o,0,0,o.width,o.height,0,0,e,n)}let u=null;if(n){let t,n;if(a.symmetric&&o.widthe||i>e){let a=Math.min(e/r,e/i);t=Math.floor(r*a),n=Math.floor(i*a),this.#l||(o=this.#h(t,n))}let s=new OffscreenCanvas(t,n).getContext(`2d`,{willReadFrequently:!0});s.drawImage(o,0,0,o.width,o.height,0,0,t,n),u={width:t,height:n,data:s.getImageData(0,0,t,n).data}}return{canvas:l,width:s,height:c,imageData:u}}#h(e,t){let{width:n,height:r}=this.#e,i=n,a=r,o=this.#e;for(;i>2*e||a>2*t;){let n=i,r=a;i>2*e&&(i=Math.ceil(i/2)),a>2*t&&(a=Math.ceil(a/2));let s=new OffscreenCanvas(i,a);s.getContext(`2d`).drawImage(o,0,0,n,r,0,0,i,a),o=s.transferToImageBitmap()}return o}#g(){let[e,t]=this.parentDimensions,{width:n,height:r}=this,i=new Ie,a=Math.ceil(n*e*i.sx),o=Math.ceil(r*t*i.sy),s=this.#o;if(!s||s.width===a&&s.height===o)return;s.width=a,s.height=o;let c=this.#l?this.#e:this.#h(a,o),l=s.getContext(`2d`);l.filter=this._uiManager.hcmFilter,l.drawImage(c,0,0,c.width,c.height,0,0,a,o)}#_(e){if(e){if(this.#l){let e=this._uiManager.imageManager.getSvgUrl(this.#t);if(e)return e}let e=document.createElement(`canvas`);return{width:e.width,height:e.height}=this.#e,e.getContext(`2d`).drawImage(this.#e,0,0),e.toDataURL()}if(this.#l){let[e,t]=this.pageDimensions,n=Math.round(this.width*e*Se.PDF_TO_CSS_UNITS),r=Math.round(this.height*t*Se.PDF_TO_CSS_UNITS),i=new OffscreenCanvas(n,r);return i.getContext(`2d`).drawImage(this.#e,0,0,this.#e.width,this.#e.height,0,0,n,r),i.transferToImageBitmap()}return structuredClone(this.#e)}static async deserialize(e,t,n){let r=null,i=!1;if(e instanceof Si){let{data:{rect:a,rotation:o,id:s,structParent:l,popupRef:d,richText:f,contentsObj:p,creationDate:m,modificationDate:h},container:g,parent:{page:{pageNumber:_}},canvas:v}=e,y,b;v?(delete e.canvas,{id:y,bitmap:b}=n.imageManager.getFromCanvas(g.id,v),v.remove()):(i=!0,e._hasNoCanvas=!0);let x=(await t._structTree.getAriaAttributes(`${c}${s}`))?.get(`aria-label`)||``;r=e={annotationType:u.STAMP,bitmapId:y,bitmap:b,pageIndex:_-1,rect:a.slice(0),rotation:o,annotationElementId:s,id:s,deleted:!1,accessibilityData:{decorative:!1,altText:x},isSvg:!1,structParent:l,popupRef:d,richText:f,comment:p?.str||null,creationDate:m,modificationDate:h}}let a=await super.deserialize(e,t,n),{rect:o,bitmap:s,bitmapUrl:l,bitmapId:d,isSvg:f,accessibilityData:p}=e;i?(n.addMissingCanvas(e.id,a),a.#s=!0):d&&n.imageManager.isValidId(d)?(a.#t=d,s&&(a.#e=s)):a.#r=l,a.#l=f;let[m,h]=a.pageDimensions;return a.width=(o[2]-o[0])/m,a.height=(o[3]-o[1])/h,p&&(a.altTextData=p),a._initialData=r,e.comment&&a.setCommentData(e),a.#u=!!r,a}serialize(e=!1,t=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();let n=Object.assign(super.serialize(e),{bitmapId:this.#t,isSvg:this.#l});if(this.addComment(n),e)return n.bitmapUrl=this.#_(!0),n.accessibilityData=this.serializeAltText(!0),n.isCopy=!0,n;let{decorative:r,altText:i}=this.serializeAltText(!1);if(!r&&i&&(n.accessibilityData={type:`Figure`,alt:i}),this.annotationElementId){let e=this.#v(n);return e.isSame?null:(e.isSameAltText?delete n.accessibilityData:n.accessibilityData.structParent=this._initialData.structParent??-1,n.id=this.annotationElementId,delete n.bitmapId,n)}if(t===null)return n;t.stamps||=new Map;let a=this.#l?(n.rect[2]-n.rect[0])*(n.rect[3]-n.rect[1]):null;if(!t.stamps.has(this.#t))t.stamps.set(this.#t,{area:a,serialized:n}),n.bitmap=this.#_(!1);else if(this.#l){let e=t.stamps.get(this.#t);a>e.area&&(e.area=a,e.serialized.bitmap.close(),e.serialized.bitmap=this.#_(!1))}return n}#v(e){let{pageIndex:t,accessibilityData:{altText:n}}=this._initialData,r=e.pageIndex===t,i=(e.accessibilityData?.alt||``)===n;return{isSame:!this.hasEditedComment&&!this._hasBeenMoved&&!this._hasBeenResized&&r&&i,isSameAltText:i}}renderAnnotationElement(e){return this.deleted?(e.hide(),null):(e.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}},Yi=class e{#e;#t=!1;#n=null;#r=null;#i=null;#a=new Map;#o=!1;#s=!1;#c=!1;#l=null;#u=null;#d=null;#f=null;#p=null;#m=-1;#h;static _initialized=!1;static#g=new Map([Di,Bi,Ji,Pi,qi].map(e=>[e._editorType,e]));constructor({uiManager:t,pageIndex:n,div:r,structTreeLayer:i,accessibilityManager:a,annotationLayer:o,drawLayer:s,textLayer:c,viewport:l,l10n:u}){let d=[...e.#g.values()];if(!e._initialized){e._initialized=!0;for(let e of d)e.initialize(u,t)}t.registerEditorTypes(d),this.#h=t,this.pageIndex=n,this.div=r,this.#e=a,this.#n=o,this.viewport=l,this.#d=c,this.drawLayer=s,this._structTree=i,this.#h.addLayer(this)}get isEmpty(){return this.#a.size===0}get isInvisible(){return this.isEmpty&&this.#h.getMode()===u.NONE}updateToolbar(e){this.#h.updateToolbar(e)}updateMode(t=this.#h.getMode()){switch(this.#S(),t){case u.NONE:this.div.classList.toggle(`nonEditing`,!0),this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case u.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case u.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);let{classList:n}=this.div;if(n.toggle(`nonEditing`,!1),t===u.POPUP)n.toggle(`commentEditing`,!0);else{n.toggle(`commentEditing`,!1);for(let r of e.#g.values())n.toggle(`${r._type}Editing`,t===r._editorType)}this.div.hidden=!1}hasTextLayer(e){return e===this.#d?.div}setEditingState(e){this.#h.setEditingState(e)}addCommands(e){this.#h.addCommands(e)}cleanUndoStack(e){this.#h.cleanUndoStack(e)}toggleDrawing(e=!1){this.div.classList.toggle(`drawing`,!e)}togglePointerEvents(e=!1){this.div.classList.toggle(`disabled`,!e)}toggleAnnotationLayerPointerEvents(e=!1){this.#n?.togglePointerEvents(e)}get#_(){return this.#a.size===0?this.#h.getEditors(this.pageIndex):this.#a.values()}async enable(){this.#c=!0,this.div.tabIndex=0,this.togglePointerEvents(!0),this.div.classList.toggle(`nonEditing`,!1),this.#p?.abort(),this.#p=null;let e=new Set;for(let t of this.#_)t.enableEditing(),t.show(!0),t.annotationElementId&&(this.#h.removeChangedExistingAnnotation(t),e.add(t.annotationElementId));let t=this.#n;if(t)for(let n of t.getEditableAnnotations()){if(n.hide(),this.#h.isDeletedAnnotationElement(n.data.id)||e.has(n.data.id))continue;let t=await this.deserialize(n);t&&(this.addOrRebuild(t),t.enableEditing())}this.#c=!1,this.#h._eventBus.dispatch(`editorsrendered`,{source:this,pageNumber:this.pageIndex+1})}disable(){if(this.#s=!0,this.div.tabIndex=-1,this.togglePointerEvents(!1),this.div.classList.toggle(`nonEditing`,!0),this.#d&&!this.#p){this.#p=new AbortController;let e=this.#h.combinedSignal(this.#p);this.#d.div.addEventListener(`pointerdown`,e=>{let{clientX:t,clientY:n,timeStamp:r}=e;if(r-this.#m>500){this.#m=r;return}this.#m=-1;let{classList:i}=this.div;i.toggle(`getElements`,!0);let a=document.elementsFromPoint(t,n);if(i.toggle(`getElements`,!1),!this.div.contains(a[0]))return;let o,s=RegExp(`^${l}[0-9]+$`);for(let e of a)if(s.test(e.id)){o=e.id;break}if(!o)return;let c=this.#a.get(o);c?.annotationElementId===null&&(z(e),c.dblclick(e))},{signal:e,capture:!0})}let t=this.#n,n=[];if(t){let e=new Map,r=new Map;for(let t of this.#_){if(t.disableEditing(),!t.annotationElementId){n.push(t);continue}if(t.serialize()!==null){e.set(t.annotationElementId,t);continue}r.set(t.annotationElementId,t),this.getEditableAnnotation(t.annotationElementId)?.show(),t.remove()}for(let n of t.getEditableAnnotations()){let{id:t}=n.data;if(this.#h.isDeletedAnnotationElement(t)){n.updateEdited({deleted:!0});continue}let i=r.get(t);if(i){i.resetAnnotationElement(n),i.show(!1),n.show();continue}i=e.get(t),i&&(this.#h.addChangedExistingAnnotation(i),i.renderAnnotationElement(n)&&i.show(!1)),n.show()}}this.#S(),this.isEmpty&&(this.div.hidden=!0);let{classList:r}=this.div;for(let t of e.#g.values())r.remove(`${t._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),t?.updateFakeAnnotations(n),this.#s=!1}getEditableAnnotation(e){return this.#n?.getEditableAnnotation(e)||null}setActiveEditor(e){this.#h.getActive()!==e&&this.#h.setActiveEditor(e)}enableTextSelection(){if(this.div.tabIndex=-1,this.#d?.div&&!this.#f){this.#f=new AbortController;let e=this.#h.combinedSignal(this.#f);this.#d.div.addEventListener(`pointerdown`,this.#v.bind(this),{signal:e}),this.#d.div.classList.add(`highlighting`)}}disableTextSelection(){this.div.tabIndex=0,this.#d?.div&&this.#f&&(this.#f.abort(),this.#f=null,this.#d.div.classList.remove(`highlighting`))}#v(e){this.#h.unselectAll();let{target:t}=e;if(t===this.#d.div||(t.getAttribute(`role`)===`img`||t.classList.contains(`endOfContent`)||t.classList.contains(`textLayerImages`)||t.classList.contains(`textLayerImagePlaceholder`))&&this.#d.div.contains(t)){let{isMac:t}=F.platform;if(e.button!==0||e.ctrlKey&&t)return;this.#h.showAllEditors(`highlight`,!0,!0),this.#d.div.classList.add(`free`),this.toggleDrawing(),Pi.startHighlighting(this,this.#h.direction===`ltr`,{target:this.#d.div,x:e.x,y:e.y}),this.#d.div.addEventListener(`pointerup`,()=>{this.#d.div.classList.remove(`free`),this.toggleDrawing(!0)},{once:!0,signal:this.#h._signal}),e.preventDefault()}}enableClick(){if(this.#r)return;this.#r=new AbortController;let e=this.#h.combinedSignal(this.#r);this.div.addEventListener(`pointerdown`,this.pointerdown.bind(this),{signal:e});let t=this.pointerup.bind(this);this.div.addEventListener(`pointerup`,t,{signal:e}),this.div.addEventListener(`pointercancel`,t,{signal:e})}disableClick(){this.#r?.abort(),this.#r=null}attach(e){this.#a.set(e.id,e);let{annotationElementId:t}=e;t&&this.#h.isDeletedAnnotationElement(t)&&this.#h.removeDeletedAnnotationElement(e)}detach(e){this.#a.delete(e.id),this.#e?.removePointerInTextLayer(e.contentDiv),!this.#s&&e.annotationElementId&&this.#h.addDeletedAnnotationElement(e)}remove(e){this.detach(e),this.#h.removeEditor(e),e.div.remove(),e.isAttachedToDOM=!1}changeParent(e){e.parent!==this&&(e.parent&&e.annotationElementId&&(this.#h.addDeletedAnnotationElement(e),U.deleteAnnotationElement(e),e.annotationElementId=null),this.attach(e),e.parent?.detach(e),e.setParent(this),e.div&&e.isAttachedToDOM&&(e.div.remove(),this.div.append(e.div)))}add(e){if(!(e.parent===this&&e.isAttachedToDOM)){if(this.changeParent(e),this.#h.addEditor(e),this.attach(e),!e.isAttachedToDOM){let t=e.render();this.div.append(t),e.isAttachedToDOM=!0}e.fixAndSetPosition(),e.onceAdded(!this.#c),this.#h.addToAnnotationStorage(e),e._reportTelemetry(e.telemetryInitialData)}}moveEditorInDOM(e){if(!e.isAttachedToDOM)return;let{activeElement:t}=document;e.div.contains(t)&&!this.#i&&(e._focusEventsAllowed=!1,this.#i=setTimeout(()=>{this.#i=null,e.div.contains(document.activeElement)?e._focusEventsAllowed=!0:(e.div.addEventListener(`focusin`,()=>{e._focusEventsAllowed=!0},{once:!0,signal:this.#h._signal}),t.focus())},0)),e._structTreeParentId=this.#e?.moveElementInDOM(this.div,e.div,e.contentDiv,!0)}addOrRebuild(e){e.needsToBeRebuilt()?(e.parent||=this,e.rebuild(),e.show()):this.add(e)}addUndoableEditor(e){this.addCommands({cmd:()=>e._uiManager.rebuild(e),undo:()=>{e.remove()},mustExec:!1})}getEditorByUID(e){for(let t of this.#a.values())if(t.uid===e)return t;return null}get#y(){return e.#g.get(this.#h.getMode())}combinedSignal(e){return this.#h.combinedSignal(e)}#b(e){let t=this.#y;return t?new t.prototype.constructor(e):null}canCreateNewEmptyEditor(){return this.#y?.canCreateNewEmptyEditor()}async pasteEditor(e,t){this.updateToolbar(e),await this.#h.updateMode(e.mode);let{offsetX:n,offsetY:r}=this.#x(),i=this.#h.getId(),a=this.#b({parent:this,id:i,x:n,y:r,uiManager:this.#h,isCentered:!0,...t});a&&this.add(a)}async deserialize(t){return await e.#g.get(t.annotationType??t.annotationEditorType)?.deserialize(t,this,this.#h)||null}createAndAddNewEditor(e,t,n={}){let r=this.#h.getId(),i=this.#b({parent:this,id:r,x:e.offsetX,y:e.offsetY,uiManager:this.#h,isCentered:t,...n});return i&&this.add(i),i}get boundingClientRect(){return this.div.getBoundingClientRect()}#x(){let{x:e,y:t,width:n,height:r}=this.boundingClientRect,i=Math.max(0,e),a=Math.max(0,t),o=Math.min(window.innerWidth,e+n),s=Math.min(window.innerHeight,t+r),c=(i+o)/2-e,l=(a+s)/2-t,[u,d]=this.viewport.rotation%180==0?[c,l]:[l,c];return{offsetX:u,offsetY:d}}addNewEditor(e={}){this.createAndAddNewEditor(this.#x(),!0,e)}setSelected(e){this.#h.setSelected(e)}toggleSelected(e){this.#h.toggleSelected(e)}unselect(e){this.#h.unselect(e)}pointerup(e){let{isMac:t}=F.platform;if(e.button!==0||e.ctrlKey&&t||e.target!==this.div||!this.#o||(this.#o=!1,this.#y?.isDrawer&&this.#y.supportMultipleDrawings))return;if(!this.#t){this.#t=!0;return}let n=this.#h.getMode();if(n===u.STAMP||n===u.POPUP||n===u.SIGNATURE){this.#h.unselectAll();return}this.createAndAddNewEditor(e,!1)}pointerdown(e){if(this.#h.getMode()===u.HIGHLIGHT&&this.enableTextSelection(),this.#o){this.#o=!1;return}let{isMac:t}=F.platform;if(e.button!==0||e.ctrlKey&&t||e.target!==this.div)return;if(this.#o=!0,this.#y?.isDrawer){this.startDrawingSession(e);return}let n=this.#h.getActive();this.#t=!n||n.isEmpty()}startDrawingSession(e){if(this.div.focus({preventScroll:!0}),this.#l){this.#y.startDrawing(this,this.#h,!1,e);return}this.#h.setCurrentDrawingSession(this),this.#l=new AbortController;let t=this.#h.combinedSignal(this.#l);this.div.addEventListener(`blur`,({relatedTarget:e})=>{e&&!this.div.contains(e)&&(this.#u=null,this.commitOrRemove())},{signal:t}),this.#y.startDrawing(this,this.#h,!1,e)}pause(e){if(e){let{activeElement:e}=document;this.div.contains(e)&&(this.#u=e);return}this.#u&&setTimeout(()=>{this.#u?.focus(),this.#u=null},0)}endDrawingSession(e=!1){return this.#l?(this.#h.setCurrentDrawingSession(null),this.#l.abort(),this.#l=null,this.#u=null,this.#y.endDrawing(e)):null}findNewParent(e,t,n){let r=this.#h.findParent(t,n);return r===null||r===this?!1:(r.changeParent(e),!0)}commitOrRemove(){return this.#l?(this.endDrawingSession(),!0):!1}onScaleChanging(){this.#l&&this.#y.onScaleChangingWhenDrawing(this)}destroy(){this.commitOrRemove(),this.#h.getActive()?.parent===this&&(this.#h.commitOrRemove(),this.#h.setActiveEditor(null)),this.#i&&=(clearTimeout(this.#i),null);for(let e of this.#a.values())this.#e?.removePointerInTextLayer(e.contentDiv),e.setParent(null),e.isAttachedToDOM=!1,e.div.remove();this.div=null,this.#a.clear(),this.#h.removeLayer(this)}#S(){for(let e of this.#a.values())e.isEmpty()&&e.remove()}async render({viewport:e}){this.viewport=e,Fe(this.div,e);for(let e of this.#h.getEditors(this.pageIndex))this.add(e),e.rebuild();await this.#h.findClonesForPage(this),this.div.hidden=this.isEmpty,this.updateMode()}update({viewport:e}){this.#h.commitOrRemove(),this.#S();let t=this.viewport.rotation,n=e.rotation;if(this.viewport=e,Fe(this.div,{rotation:n}),t!==n)for(let e of this.#a.values())e.rotate(n)}get pageDimensions(){let{pageWidth:e,pageHeight:t}=this.viewport.rawDims;return[e,t]}get scale(){return this.#h.viewParameters.realScale}};function Xi(e,t){return e===t?0:e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function Zi(e){return e?e.nodeType===Node.ELEMENT_NODE?e.closest(`.textLayer`):e.parentElement?.closest(`.textLayer`)||null:null}function Qi(e,t,n,r){if(e===n)return t<=r;let i=e.compareDocumentPosition(n);return i&Node.DOCUMENT_POSITION_FOLLOWING?!0:i&Node.DOCUMENT_POSITION_PRECEDING?!1:null}function $i(e,t,n){if(e.nodeType!==Node.ELEMENT_NODE||!e.classList.contains(`textLayer`)||t!==e.childNodes.length)return{container:e,offset:t};let r=e.lastChild;return r?.nodeType===Node.ELEMENT_NODE&&r.classList.contains(`endOfContent`)&&(r=r.previousSibling),!r||!n.contains(r)?null:r.nodeType===Node.TEXT_NODE?{container:r,offset:r.textContent.length}:{container:r,offset:r.childNodes.length}}var ea=class e{#e=null;#t=new Map;#n=null;#r=null;#i=null;#a=null;#o=new Map;static#s=0;static#c=0;static#l=null;static#u=new Set;static#d=!1;static#f=new Set;static#p=new WeakMap;constructor({filterFactory:t=null,pageColors:n=null,pageIndex:r,textLayer:i=null}){if(this.pageIndex=r,this.#r=t,this.#i=n,i){let t=e.#p.get(i);if(t?.selectionDiv&&(t.selectionDiv.remove(),e.#u.delete(t.selectionDiv)),e.#p.set(i,{drawLayer:this}),e.#f.add(i),this.#n=i,this.#a=new MutationObserver(t=>{if(!(!this.#e||!this.#n?.isConnected||!e.#h())){for(let{addedNodes:n}of t)for(let t of n)if(t.nodeType===Node.ELEMENT_NODE&&t.classList.contains(`endOfContent`)){e.#_();return}}}),this.#a.observe(i,{childList:!0}),e.#l===null){e.#l=new AbortController;let{signal:t}=e.#l;document.addEventListener(`selectionchange`,e.#_.bind(e),{signal:t}),document.addEventListener(`pointerdown`,()=>{e.#d=!0},{signal:t}),document.addEventListener(`pointerup`,()=>{e.#d=!1},{signal:t}),window.addEventListener(`blur`,()=>{e.#d=!1},{signal:t})}}}setParent(t){if(!this.#e){this.#e=t,this.#n?.isConnected&&e.#h()&&e.#_();return}if(this.#e!==t){if(this.#t.size>0)for(let e of this.#t.values())e.remove(),t.append(e);this.#e=t}}static#m(e){let t=this.#p.get(e);t?.selectionDiv&&(t.selectionDiv.remove(),this.#u.delete(t.selectionDiv),t.selectionDiv=null,t.path=null)}static#h(){let e=document.getSelection();return!!e&&!e.isCollapsed}static#g(){return this.#f.keys().filter(e=>e.isConnected).toArray().sort(Xi)}static#_(){let t=document.getSelection();if(!t||t.isCollapsed){for(let e of this.#u)e.remove();this.#u.clear();return}let n=new WeakMap,r=this.#g(),i=[];for(let e=0,n=t.rangeCount;en.intersectsNode(e));if(p.length===0)continue;let m=!1;if(l||(l=p[0],a=l,o=0,m=!0),u||(u=p.at(-1),s=u,c=u.childNodes.length,m=!0),s.nodeType===Node.ELEMENT_NODE){if(s.classList.contains(`endOfContent`)){let e=s.previousSibling;if(!e)continue;s=e,c=e.nodeType===Node.TEXT_NODE?e.textContent.length:e.childNodes.length}else if(s.classList.contains(`textLayer`)&&s.childNodes.length===c){let e=$i(s,c,u);if(!e)continue;s=e.container,c=e.offset}}if(a.nodeType===Node.ELEMENT_NODE){let e=$i(a,o,l);if(!e)continue;a=e.container,o=e.offset}if(l===u&&!m&&p.includes(l)){i.push([n,l]);continue}for(let e of p){let t=e.firstChild;if(!t)continue;let n=document.createRange();if(e===l?n.setStart(a,o):n.setStartBefore(t),e===u)n.setEnd(s,c);else{let t=e.lastChild;if(!t)continue;if(t.nodeType===Node.ELEMENT_NODE&&t.classList.contains(`endOfContent`)){let e=t.previousSibling;if(!e)continue;n.setEndAfter(e)}else n.setEndAfter(t)}n.collapsed||i.push([n,e])}}let a=new Set(i.map(e=>e[1]));for(let e of this.#f)a.has(e)||this.#m(e);for(let[t,r]of i){let i=e.#p.get(r);if(!i)continue;let a=n.get(r);if(!a){let e=r.getBoundingClientRect();a=(t,n,r,i)=>({x:(t-e.x)/e.width,y:(n-e.y)/e.height,width:r/e.width,height:i/e.height}),n.set(r,a)}let o=[];for(let{x:e,y:n,width:r,height:i}of t.getClientRects())r!==0&&i!==0&&({x:e,y:n,width:r,height:i}=a(e,n,r,i),(r!==1||i!==1)&&o.push(`M${e} ${n} h${r} v${i} h-${r} Z`));if(o.length===0)continue;let s=i.drawLayer,c=i.selectionDiv,l=i.path;if(!c){let t=`clip_selection_${e.#c++}`;c=document.createElement(`div`),c.className=`selection`,c.style.clipPath=`url(#${t})`;let n=s.#r?.createSelectionStyle(s.#i);if(n)for(let[e,t]of Object.entries(n))c.style.setProperty(e,t);let r=e._svgFactory.create(1,1,!0);r.setAttribute(`aria-hidden`,`true`),r.setAttribute(`width`,`100%`),r.setAttribute(`height`,`100%`);let a=e._svgFactory.createElement(`clipPath`);a.setAttribute(`id`,t),a.setAttribute(`clipPathUnits`,`objectBoundingBox`),l=e._svgFactory.createElement(`path`),a.append(l),r.append(a),c.append(r),i.path=l,i.selectionDiv=c}!c.parentNode&&s.#e&&(s.#e.append(c),this.#u.add(c)),l.setAttribute(`d`,o.join(` `))}}static get _svgFactory(){return M(this,`_svgFactory`,new qr)}static#v(e,[t,n,r,i]){let{style:a}=e;a.top=`${100*n}%`,a.left=`${100*t}%`,a.width=`${100*r}%`,a.height=`${100*i}%`}#y(){let t=e._svgFactory.create(1,1,!0);return this.#e.append(t),t.setAttribute(`aria-hidden`,`true`),t}#b(t,n){let r=e._svgFactory.createElement(`clipPath`);t.append(r);let i=`clip_${n}`;r.setAttribute(`id`,i),r.setAttribute(`clipPathUnits`,`objectBoundingBox`);let a=e._svgFactory.createElement(`use`);return r.append(a),a.setAttribute(`href`,`#${n}`),a.classList.add(`clip`),i}#x(e,t){for(let[n,r]of Object.entries(t))r===null?e.removeAttribute(n):e.setAttribute(n,r)}draw(t,n=!1,r=!1){let i=e.#s++,a=this.#y(),o=e._svgFactory.createElement(`defs`);a.append(o);let s=e._svgFactory.createElement(`path`);o.append(s);let c=`path_${i}`;s.setAttribute(`id`,c),s.setAttribute(`vector-effect`,`non-scaling-stroke`),n&&this.#o.set(i,s);let l=r?this.#b(o,c):null,u=e._svgFactory.createElement(`use`);return a.append(u),u.setAttribute(`href`,`#${c}`),this.updateProperties(a,t),this.#t.set(i,a),{id:i,clipPathId:`url(#${l})`}}drawOutline(t,n){let r=e.#s++,i=this.#y(),a=e._svgFactory.createElement(`defs`);i.append(a);let o=e._svgFactory.createElement(`path`);a.append(o);let s=`path_${r}`;o.setAttribute(`id`,s),o.setAttribute(`vector-effect`,`non-scaling-stroke`);let c;if(n){let t=e._svgFactory.createElement(`mask`);a.append(t),c=`mask_${r}`,t.setAttribute(`id`,c),t.setAttribute(`maskUnits`,`objectBoundingBox`);let n=e._svgFactory.createElement(`rect`);t.append(n),n.setAttribute(`width`,`1`),n.setAttribute(`height`,`1`),n.setAttribute(`fill`,`white`);let i=e._svgFactory.createElement(`use`);t.append(i),i.setAttribute(`href`,`#${s}`),i.setAttribute(`stroke`,`none`),i.setAttribute(`fill`,`black`),i.setAttribute(`fill-rule`,`nonzero`),i.classList.add(`mask`)}let l=e._svgFactory.createElement(`use`);i.append(l),l.setAttribute(`href`,`#${s}`),c&&l.setAttribute(`mask`,`url(#${c})`);let u=l.cloneNode();return i.append(u),l.classList.add(`mainOutline`),u.classList.add(`secondaryOutline`),this.updateProperties(i,t),this.#t.set(r,i),r}finalizeDraw(e,t){this.#o.delete(e),this.updateProperties(e,t)}updateProperties(t,n){if(!n)return;let{root:r,bbox:i,rootClass:a,path:o}=n,s=typeof t==`number`?this.#t.get(t):t;if(s){if(r&&this.#x(s,r),i&&e.#v(s,i),a){let{classList:e}=s;for(let[t,n]of Object.entries(a))e.toggle(t,n)}if(o){let e=s.firstElementChild.firstElementChild;this.#x(e,o)}}}updateParent(e,t){if(t===this)return;let n=this.#t.get(e);n&&(t.#e.append(n),this.#t.delete(e),t.#t.set(e,n))}remove(e){this.#o.delete(e),this.#e!==null&&(this.#t.get(e).remove(),this.#t.delete(e))}destroy(){this.#e=null;for(let e of this.#t.values())e.remove();this.#t.clear(),this.#o.clear(),this.#a?.disconnect(),this.#a=null,this.#n&&=(e.#p.get(this.#n)?.drawLayer===this&&(e.#m(this.#n),e.#p.delete(this.#n),e.#f.delete(this.#n),e.#f.size===0&&(e.#l?.abort(),e.#l=null,e.#d=!1)),null)}};function ta(e){return`${(e*100).toFixed(2)}%`}var na=class e{#e=[];#t=new Map;#n=null;#r=0;#i=0;#a=0;static#o=null;constructor(e,t,n,r){this.#r=e,this.#e=t,this.#i=n.rawDims.pageWidth,this.#a=n.rawDims.pageHeight,this.#n=r}render(){let t=document.createElement(`div`);t.className=`textLayerImages`;for(let e=0;e{if(!(t.target instanceof HTMLCanvasElement))return;let n=t.target,r=this.#t.get(n);if(!r)return;let i=e.#o?.deref();if(i===n)return;i&&(i.width=0,i.height=0),e.#o=new WeakRef(n);let{inverseTransform:a,x1:o,y1:s,width:c,height:l}=r,u=this.#n(),d=Math.ceil(o*u.width),f=Math.ceil(s*u.height),p=Math.floor((o+c/this.#i)*u.width),m=Math.floor((s+l/this.#a)*u.height);n.width=p-d,n.height=m-f;let h=n.getContext(`2d`);h.setTransform(...a),h.translate(-d,-f),h.drawImage(u,0,0)}),t}#s([e,t,n,r,i,a]){let o=Math.hypot((i-e)*this.#i,(a-t)*this.#a),s=Math.hypot((n-e)*this.#i,(r-t)*this.#a);if(oYour bot is ready to connect

Run the command below on the machine where OpenClaw lives. The one-time code mints the +import{$ as e,B as t,I as n,N as r,O as i,P as a,Q as o,W as s,_t as c,a as l,at as u,b as d,bt as f,c as p,ct as m,f as h,ft as g,gt as ee,h as te,it as _,j as v,lt as y,ot as ne,r as re,rt as b,xt as x,z as S}from"./-xOSXMZB.js";import"./xihTtKlq.js";import{a as ie,b as ae,c as oe,d as se,i as ce,o as le,r as ue}from"./DFObNPU2.js";var de=n(`

Your bot is ready to connect

Run the command below on the machine where OpenClaw lives. The one-time code mints the bot's token there — no credential to copy by hand.

`,1),fe=n(`

Your new token is ready

Copy it now. ClickClack stores only a hash, so this is the last time the raw token is visible. If you lose it, mint a new one and revoke this one.

`,1),pe=n(``),me=n(`
 

One-time code, single use. The code expires ten minutes after it was generated. A running openclaw gateway picks the new channel up automatically.

`,1),he=n(`

That setup code expired before it was used. Codes last 10 minutes — generate a fresh one when you're ready.

`,1),ge=n(`

Generating a setup code…

`),_e=n(`
`,1),ve=n(`
Add to OpenClaw
`),ye=n(`
OpenClaw account shape
`),be=n(`
Add to OpenClaw with the token
 

A running OpenClaw gateway picks this up automatically. Not running yet? Start it with openclaw gateway.

`,1),xe=n(`
OpenClaw config
 

The commands above write this config for you. Use it for manual installs, or to add - options the commands do not cover (agent activity, default channel, allowlist).

`,1),Se=n(`
OpenClaw setup
`),Ce=n(`
`,1),we=n(` `),C=n(` `),Te=n(`
`),Ee=n(`
Scopes
`),De=n(`I've run the command, or I'll generate a new code from the bot's row later.`),Oe=n(`I've copied this token somewhere safe.`),ke=n(`
`);function w(n,S){c(S,!0);let w=l(S,`connect`,3,`token`),T=l(S,`token`,3,null),E=l(S,`configSnippetBuilder`,3,e=>ie(e)),D=l(S,`shellSnippetBuilder`,3,e=>le(e)),O=l(S,`codeSnippetBuilder`,3,e=>ce({code:e.setupCode??``,botHandle:e.botHandle,mode:e.mode,claimURL:e.setupClaimURL,apiBaseURL:e.apiBaseURL})),k=g(()=>w()===`code`&&!!O()),A=g(()=>T()?.scopes??S.scopes??[]),j=g(()=>ae(s(A))),M=g(()=>se(s(A))),N=y(!1),P=y(`single`),F=y(null),I=y(null),L=y(!1),R=y(``),z=y(0),B=y(ne(Date.now()));async function V(){if(!s(k)||s(L))return;let e=S.workspaceID??T()?.workspace_id;if(!e){m(R,`Missing workspace for this setup code. Mint one from the bot's row instead.`);return}let t=Date.now();m(L,!0),m(R,``),m(I,null),m(F,s(F)===`code`?null:s(F),!0);try{let n=await oe(e,S.botUserID,{name:S.tokenName??T()?.name??`default`,scopes:S.scopes??T()?.scopes,defaults:{defaultTo:S.defaultTo,allowFrom:S.allowFrom,agentActivity:S.agentActivity}});if(!n.code)throw Error(`The server did not return a setup code. Try again.`);m(I,n,!0),m(z,t,!0),m(B,Date.now(),!0)}catch(e){m(R,ue(e),!0)}finally{m(L,!1)}}re(()=>{s(k)&&V()}),e(()=>{let e=s(I),t=s(z);if(!e)return;let n=Date.parse(e.expires_at)-Date.parse(e.created_at);if(!Number.isFinite(n)||n<=0)return;let r=setInterval(()=>{let e=Date.now();m(B,e,!0),e-t>=n&&clearInterval(r)},1e3);return()=>clearInterval(r)});let Ae=g(()=>{if(!s(I))return 0;let e=Date.parse(s(I).expires_at)-Date.parse(s(I).created_at);return!Number.isFinite(e)||e<=0?0:Math.max(0,e-(s(B)-s(z)))}),H=g(()=>!!s(I)&&s(Ae)<=0),je=g(()=>{let e=Math.ceil(s(Ae)/1e3);return`${Math.floor(e/60)}:${String(e%60).padStart(2,`0`)}`}),U=g(()=>({workspace:S.workspace,botHandle:S.botHandle,botUserID:S.botUserID,token:T()?.token??``,mode:s(P),defaultTo:S.defaultTo,allowFrom:S.allowFrom,agentActivity:S.agentActivity})),W=g(()=>E()?.(s(U))??``),G=g(()=>D()?.(s(U))??``),K=g(()=>s(I)?.code&&O()?O()({...s(U),setupCode:s(I).code,setupClaimURL:s(I).claim_url,apiBaseURL:s(I).api_base_url}):``);async function q(e,t){try{await navigator.clipboard.writeText(e),m(F,t,!0),setTimeout(()=>{s(F)===t&&m(F,null)},1800)}catch{}}var J=ke(),Y=b(J),X=b(Y),Me=b(X),Ne=e=>{var t=de();f(2),a(e,t)},Pe=e=>{var t=fe();f(2),a(e,t)};v(Me,e=>{s(k)?e(Ne):e(Pe,-1)}),x(X),x(Y);var Fe=u(Y,2),Ie=e=>{var n=ve(),i=b(n),c=u(b(i),2),l=e=>{var n=pe(),i=b(n,!0);x(n),o(()=>r(i,s(F)===`code`?`Copied`:`Copy command`)),t(`click`,n,()=>q(s(K),`code`)),a(e,n)};v(c,e=>{s(I)&&!s(H)&&e(l)}),x(i);var d=u(i,2),p=e=>{var t=me(),n=_(t),i=b(n),c=b(i,!0);x(i),x(n);var l=u(n,2),d=u(b(l)),p=u(b(d)),m=b(p,!0);x(p),f(),x(d),f(5),x(l),o(()=>{r(c,s(K)),r(m,s(je))}),a(e,t)},m=e=>{var n=he(),i=u(_(n),2),c=b(i),l=b(c,!0);x(c),x(i),o(()=>{c.disabled=s(L),r(l,s(L)?`Generating…`:`Generate new code`)}),t(`click`,c,V),a(e,n)},h=e=>{a(e,ge())},g=e=>{var n=_e(),i=_(n),c=b(i,!0);x(i);var l=u(i,2),d=b(l);x(l),o(()=>r(c,s(R))),t(`click`,d,V),a(e,n)};v(d,e=>{s(I)&&!s(H)?e(p):s(H)?e(m,1):s(L)?e(h,2):s(R)&&e(g,3)}),x(n),a(e,n)};v(Fe,e=>{s(k)&&e(Ie)});var Le=u(Fe,2),Re=e=>{var n=ye(),r=u(b(n),2),i=b(r);let c;var l=u(i,2);let f;x(r),x(n),o(()=>{c=d(i,1,``,null,c,{"is-active":s(P)===`single`}),f=d(l,1,``,null,f,{"is-active":s(P)===`named`})}),t(`click`,i,()=>m(P,`single`)),t(`click`,l,()=>m(P,`named`)),a(e,n)};v(Le,e=>{(s(k)||(E()||D())&&T())&&e(Re)});var ze=u(Le,2),Be=e=>{var n=Ce(),i=_(n),c=u(b(i),2),l=b(c);h(l);var d=u(l,2),p=b(d,!0);x(d),x(c),x(i);var m=u(i,2),g=e=>{var n=Se(),i=u(b(n),2),c=b(i),l=e=>{var n=be(),i=_(n),c=u(b(i),2),l=b(c,!0);x(c),x(i);var d=u(i,2),p=b(d),m=b(p,!0);x(p),x(d),f(2),o(()=>{r(l,s(F)===`shell`?`Copied`:`Copy commands`),r(m,s(G))}),t(`click`,c,()=>q(s(G),`shell`)),a(e,n)};v(c,e=>{D()&&e(l)});var d=u(c,2),p=e=>{var n=xe(),i=_(n),c=u(b(i),2),l=b(c,!0);x(c),x(i);var d=u(i,2),p=b(d),m=b(p,!0);x(p),x(d),f(2),o(()=>{r(l,s(F)===`config`?`Copied`:`Copy config`),r(m,s(W))}),t(`click`,c,()=>q(s(W),`config`)),a(e,n)};v(d,e=>{E()&&e(p)}),x(i),x(n),a(e,n)};v(m,e=>{(D()||E())&&e(g)}),o(()=>{te(l,T().token??``),r(p,s(F)===`token`?`Copied`:`Copy`)}),t(`click`,d,()=>q(T()?.token??``,`token`)),a(e,n)};v(ze,e=>{!s(k)&&T()&&e(Be)});var Ve=u(ze,2),He=e=>{var t=Ee(),n=u(b(t),2),c=b(n),l=e=>{var t=we(),n=b(t,!0);x(t),o(()=>r(n,s(j).bundleLabel)),a(e,t)};v(c,e=>{s(j).bundleLabel&&e(l)}),i(u(c,2),16,()=>s(j).extras,e=>e,(e,t)=>{var n=C(),i=b(n,!0);x(n),o(()=>r(i,t)),a(e,n)}),x(n);var d=u(n,2),f=e=>{var t=Te(),n=b(t),c=b(n);x(n);var l=u(n,2);i(l,20,()=>s(M),e=>e,(e,t)=>{var n=C(),i=b(n,!0);x(n),o(()=>r(i,t)),a(e,n)}),x(l),x(t),o(()=>r(c,`All ${s(M).length??``} scopes`)),a(e,t)};v(d,e=>{s(j).bundle&&s(M).length>1&&e(f)}),x(t),a(e,t)};v(Ve,e=>{s(A).length&&e(He)});var Z=u(Ve,2),Q=b(Z);h(Q);var Ue=u(Q,2),We=e=>{a(e,De())},Ge=e=>{a(e,Oe())};v(Ue,e=>{s(k)?e(We):e(Ge,-1)}),x(Z);var Ke=u(Z,2),$=b(Ke);x(Ke),x(J),o(()=>$.disabled=!s(N)),p(Q,()=>s(N),e=>m(N,e)),t(`click`,$,function(...e){S.onDismiss?.apply(this,e)}),a(n,J),ee()}S([`click`]);export{w as t}; \ No newline at end of file + options the commands do not cover (agent activity, default channel, allowlist).

`,1),Se=n(`
OpenClaw setup
`),Ce=n(`
`,1),we=n(` `),C=n(` `),Te=n(`
`),Ee=n(`
Scopes
`),De=n(`I've run the command, or I'll generate a new code from the bot's row later.`),Oe=n(`I've copied this token somewhere safe.`),ke=n(`
`);function w(n,S){c(S,!0);let w=l(S,`connect`,3,`token`),T=l(S,`token`,3,null),E=l(S,`configSnippetBuilder`,3,e=>ie(e)),D=l(S,`shellSnippetBuilder`,3,e=>le(e)),O=l(S,`codeSnippetBuilder`,3,e=>ce({code:e.setupCode??``,botHandle:e.botHandle,mode:e.mode,claimURL:e.setupClaimURL,apiBaseURL:e.apiBaseURL})),k=g(()=>w()===`code`&&!!O()),A=g(()=>T()?.scopes??S.scopes??[]),j=g(()=>ae(s(A))),M=g(()=>se(s(A))),N=y(!1),P=y(`single`),F=y(null),I=y(null),L=y(!1),R=y(``),z=y(0),B=y(ne(Date.now()));async function V(){if(!s(k)||s(L))return;let e=S.workspaceID??T()?.workspace_id;if(!e){m(R,`Missing workspace for this setup code. Mint one from the bot's row instead.`);return}let t=Date.now();m(L,!0),m(R,``),m(I,null),m(F,s(F)===`code`?null:s(F),!0);try{let n=await oe(e,S.botUserID,{name:S.tokenName??T()?.name??`default`,scopes:S.scopes??T()?.scopes,defaults:{defaultTo:S.defaultTo,allowFrom:S.allowFrom,agentActivity:S.agentActivity}});if(!n.code)throw Error(`The server did not return a setup code. Try again.`);m(I,n,!0),m(z,t,!0),m(B,Date.now(),!0)}catch(e){m(R,ue(e),!0)}finally{m(L,!1)}}re(()=>{s(k)&&V()}),e(()=>{let e=s(I),t=s(z);if(!e)return;let n=Date.parse(e.expires_at)-Date.parse(e.created_at);if(!Number.isFinite(n)||n<=0)return;let r=setInterval(()=>{let e=Date.now();m(B,e,!0),e-t>=n&&clearInterval(r)},1e3);return()=>clearInterval(r)});let Ae=g(()=>{if(!s(I))return 0;let e=Date.parse(s(I).expires_at)-Date.parse(s(I).created_at);return!Number.isFinite(e)||e<=0?0:Math.max(0,e-(s(B)-s(z)))}),H=g(()=>!!s(I)&&s(Ae)<=0),je=g(()=>{let e=Math.ceil(s(Ae)/1e3);return`${Math.floor(e/60)}:${String(e%60).padStart(2,`0`)}`}),U=g(()=>({workspace:S.workspace,botHandle:S.botHandle,botUserID:S.botUserID,token:T()?.token??``,mode:s(P),defaultTo:S.defaultTo,allowFrom:S.allowFrom,agentActivity:S.agentActivity})),W=g(()=>E()?.(s(U))??``),G=g(()=>D()?.(s(U))??``),K=g(()=>s(I)?.code&&O()?O()({...s(U),setupCode:s(I).code,setupClaimURL:s(I).claim_url,apiBaseURL:s(I).api_base_url}):``);async function q(e,t){try{await navigator.clipboard.writeText(e),m(F,t,!0),setTimeout(()=>{s(F)===t&&m(F,null)},1800)}catch{}}var J=ke(),Y=b(J),X=b(Y),Me=b(X),Ne=e=>{var t=de();f(2),a(e,t)},Pe=e=>{var t=fe();f(2),a(e,t)};v(Me,e=>{s(k)?e(Ne):e(Pe,-1)}),x(X),x(Y);var Fe=u(Y,2),Ie=e=>{var n=ve(),i=b(n),c=u(b(i),2),l=e=>{var n=pe(),i=b(n,!0);x(n),o(()=>r(i,s(F)===`code`?`Copied`:`Copy command`)),t(`click`,n,()=>q(s(K),`code`)),a(e,n)};v(c,e=>{s(I)&&!s(H)&&e(l)}),x(i);var d=u(i,2),p=e=>{var t=me(),n=_(t),i=b(n),c=b(i,!0);x(i),x(n);var l=u(n,2),d=u(b(l)),p=u(b(d)),m=b(p,!0);x(p),f(),x(d),f(5),x(l),o(()=>{r(c,s(K)),r(m,s(je))}),a(e,t)},m=e=>{var n=he(),i=u(_(n),2),c=b(i),l=b(c,!0);x(c),x(i),o(()=>{c.disabled=s(L),r(l,s(L)?`Generating…`:`Generate new code`)}),t(`click`,c,V),a(e,n)},h=e=>{var t=ge();a(e,t)},g=e=>{var n=_e(),i=_(n),c=b(i,!0);x(i);var l=u(i,2),d=b(l);x(l),o(()=>r(c,s(R))),t(`click`,d,V),a(e,n)};v(d,e=>{s(I)&&!s(H)?e(p):s(H)?e(m,1):s(L)?e(h,2):s(R)&&e(g,3)}),x(n),a(e,n)};v(Fe,e=>{s(k)&&e(Ie)});var Le=u(Fe,2),Re=e=>{var n=ye(),r=u(b(n),2),i=b(r);let c;var l=u(i,2);let f;x(r),x(n),o(()=>{c=d(i,1,``,null,c,{"is-active":s(P)===`single`}),f=d(l,1,``,null,f,{"is-active":s(P)===`named`})}),t(`click`,i,()=>m(P,`single`)),t(`click`,l,()=>m(P,`named`)),a(e,n)};v(Le,e=>{(s(k)||(E()||D())&&T())&&e(Re)});var ze=u(Le,2),Be=e=>{var n=Ce(),i=_(n),c=u(b(i),2),l=b(c);h(l);var d=u(l,2),p=b(d,!0);x(d),x(c),x(i);var m=u(i,2),g=e=>{var n=Se(),i=u(b(n),2),c=b(i),l=e=>{var n=be(),i=_(n),c=u(b(i),2),l=b(c,!0);x(c),x(i);var d=u(i,2),p=b(d),m=b(p,!0);x(p),x(d),f(2),o(()=>{r(l,s(F)===`shell`?`Copied`:`Copy commands`),r(m,s(G))}),t(`click`,c,()=>q(s(G),`shell`)),a(e,n)};v(c,e=>{D()&&e(l)});var d=u(c,2),p=e=>{var n=xe(),i=_(n),c=u(b(i),2),l=b(c,!0);x(c),x(i);var d=u(i,2),p=b(d),m=b(p,!0);x(p),x(d),f(2),o(()=>{r(l,s(F)===`config`?`Copied`:`Copy config`),r(m,s(W))}),t(`click`,c,()=>q(s(W),`config`)),a(e,n)};v(d,e=>{E()&&e(p)}),x(i),x(n),a(e,n)};v(m,e=>{(D()||E())&&e(g)}),o(()=>{te(l,T().token??``),r(p,s(F)===`token`?`Copied`:`Copy`)}),t(`click`,d,()=>q(T()?.token??``,`token`)),a(e,n)};v(ze,e=>{!s(k)&&T()&&e(Be)});var Ve=u(ze,2),He=e=>{var t=Ee(),n=u(b(t),2),c=b(n),l=e=>{var t=we(),n=b(t,!0);x(t),o(()=>r(n,s(j).bundleLabel)),a(e,t)};v(c,e=>{s(j).bundleLabel&&e(l)});var d=u(c,2);i(d,16,()=>s(j).extras,e=>e,(e,t)=>{var n=C(),i=b(n,!0);x(n),o(()=>r(i,t)),a(e,n)}),x(n);var f=u(n,2),p=e=>{var t=Te(),n=b(t),c=b(n);x(n);var l=u(n,2);i(l,20,()=>s(M),e=>e,(e,t)=>{var n=C(),i=b(n,!0);x(n),o(()=>r(i,t)),a(e,n)}),x(l),x(t),o(()=>r(c,`All ${s(M).length??``} scopes`)),a(e,t)};v(f,e=>{s(j).bundle&&s(M).length>1&&e(p)}),x(t),a(e,t)};v(Ve,e=>{s(A).length&&e(He)});var Z=u(Ve,2),Q=b(Z);h(Q);var Ue=u(Q,2),We=e=>{var t=De();a(e,t)},Ge=e=>{var t=Oe();a(e,t)};v(Ue,e=>{s(k)?e(We):e(Ge,-1)}),x(Z);var Ke=u(Z,2),$=b(Ke);x(Ke),x(J),o(()=>$.disabled=!s(N)),p(Q,()=>s(N),e=>m(N,e)),t(`click`,$,function(...e){S.onDismiss?.apply(this,e)}),a(n,J),ee()}S([`click`]);export{w as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/C1AJ2Jv0.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/BfeYhzix.js similarity index 86% rename from apps/api/internal/webassets/dist/_app/immutable/chunks/C1AJ2Jv0.js rename to apps/api/internal/webassets/dist/_app/immutable/chunks/BfeYhzix.js index fbbf3b8c..e71c8256 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/C1AJ2Jv0.js +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/BfeYhzix.js @@ -1,8 +1,8 @@ -import{C as e,I as t,L as n,N as r,O as i,P as a,Q as o,W as s,Y as c,_t as l,at as u,b as d,bt as f,gt as p,j as m,k as h,o as g,p as _,rt as v,tt as y,x as b,xt as x}from"./CySd1wef.js";import"./xihTtKlq.js";import"./amAOfu1G.js";var S=new Set([`clickclack.chat`,`www.clickclack.chat`]);function C(e){return S.has(e.toLowerCase())?`https://app.clickclack.chat`:`/app`}var w=t(` `,1),ee=n(``,1),te=n(``),T=n(``,1),E=n(``,1),ne=n(``,1),re=n(``,1),ie=t(`

`),ae=t(` `),D=t(`
  • `),oe=t(` `),se=t(`

    Open source · MIT · Single Go binary

    Team chat for humans
    and their agents.

    ClickClack is a self-hostable chat app with Slack-style threads, durable +import{C as e,I as t,L as n,N as r,O as i,P as a,Q as o,W as s,Y as c,_t as l,at as u,b as d,bt as f,gt as p,j as m,k as h,o as g,p as _,rt as v,tt as y,x as b,xt as x}from"./-xOSXMZB.js";import"./xihTtKlq.js";import"./D_KmntYi.js";var S=new Set([`clickclack.chat`,`www.clickclack.chat`]);function C(e){return S.has(e.toLowerCase())?`https://app.clickclack.chat`:`/app`}var w=t(` `,1),ee=n(``,1),T=n(``),E=n(``,1),te=n(``,1),ne=n(``,1),re=n(``,1),ie=t(`

    `),ae=t(` `),D=t(`
  • `),oe=t(` `),se=t(`

    Open source · MIT · Single Go binary

    Team chat for humans
    and their agents.

    ClickClack is a self-hostable chat app with Slack-style threads, durable realtime, and an API surface that bots, CI jobs, and agents can drive from a shell.

    go run ./apps/api/cmd/clickclack serve

    Why ClickClack

    Chat infrastructure that stays boring when the socket drops.

    Every durable message, thread reply, reaction, and channel update can be recovered over HTTP with a cursor — clients and agents reconnect without drama.

    Agent path

    A friendly CLI. No LLM baked in.

    External agents, CI jobs, and humans hit the same public API as the web app. Tokens and workspace defaults are scoped per server, so - switching hosts never leaks credentials or stale IDs.

    • OpenAPI contract for every endpoint
    • Framework-neutral TypeScript SDK
    • Mattermost-shaped webhooks and slash commands
    • Durable event cursor for replay after downtime

    Quickstart

    Running in three commands.

      Destinations

      Everything where you expect it.

      ClickClack — self-hostable chat with claws. MIT licensed.

      `);function O(t,n){l(n,!1);let S=`https://docs.clickclack.chat`,O=C(window.location.hostname),k=`https://github.com/openclaw/clickclack`,ce=[{icon:`box`,title:`One binary, zero services`,body:`A single Go binary with the Svelte app, migrations, and static assets embedded. SQLite and local uploads by default — nothing else to run.`},{icon:`bolt`,title:`Durable realtime`,body:`WebSocket is the pipe, the database is the truth. Every event lands in a durable log, so clients reconnect with a cursor and miss nothing.`},{icon:`thread`,title:`Threads that stay flat`,body:`Slack-style threads, one level deep. Conversations branch without turning into reply-tree archaeology.`},{icon:`robot`,title:`Agents are first-class`,body:`Bots and agents use the same public API as humans: CLI, OpenAPI contract, TypeScript SDK, webhooks, and slash commands.`},{icon:`server`,title:`Self-host first`,body:`SQLite is the default, not the demo — WAL, FTS5 search, online backups. Postgres slots in behind the same store interface.`},{icon:`shield`,title:`Calm moderation`,body:`Magic-link auth, optional GitHub OAuth, and a guest waiting room with approvals, timeouts, and blocks built in.`}],le=[{prompt:!0,text:`clickclack serve --data ./data`},{prompt:!1,text:`listening on :8080 · sqlite ./data/clickclack.db`},{prompt:!0,text:`clickclack send --channel general "deploy started"`},{prompt:!1,text:`msg_01j9x sent to #general`},{prompt:!0,text:`clickclack threads reply msg_01j9x --stdin {var t=w();f(2),c(()=>{y.title=`ClickClack — Team chat for humans and their agents`}),a(e,t)});var N=v(M),P=v(N),F=u(v(P),2),I=u(v(F),4);_(I,`href`,S),_(u(I,2),`href`,k),x(F);var L=u(F,2);x(P),x(N);var R=u(N,2),z=v(R),B=u(v(z),6),V=v(B);_(u(V,2),`href`,S),x(B),f(4),x(z);var H=u(z,4);i(H,5,()=>ce,h,(e,t)=>{var n=ie(),i=v(n),c=v(i),l=v(c),d=e=>{var t=ee();f(2),a(e,t)},p=e=>{a(e,te())},h=e=>{var t=T();f(3),a(e,t)},g=e=>{var t=E();f(4),a(e,t)},_=e=>{var t=ne();f(2),a(e,t)},y=e=>{var t=re();f(),a(e,t)};m(l,e=>{s(t).icon===`box`?e(d):s(t).icon===`bolt`?e(p,1):s(t).icon===`thread`?e(h,2):s(t).icon===`robot`?e(g,3):s(t).icon===`server`?e(_,4):e(y,-1)}),x(c),x(i);var b=u(i,2),S=v(b,!0);x(b);var C=u(b,2),w=v(C,!0);x(C),x(n),o(()=>{r(S,s(t).title),r(w,s(t).body)}),a(e,n)}),x(H);var U=u(H,2),W=u(v(U),2),G=u(v(W),2);i(G,5,()=>le,h,(e,t)=>{var n=ae(),i=v(n);x(n),o(()=>{d(n,1,b(s(t).prompt?`t-prompt`:`t-out`)),r(i,`${s(t).prompt?`$ `:` `}${s(t).text??``} -`)}),a(e,n)}),x(G),x(W),x(U);var K=u(U,2),q=u(v(K),4);i(q,5,()=>A,h,(e,t,n)=>{var i=D(),c=v(i);c.textContent=n+1;var l=u(c,2),d=v(l),f=v(d,!0);x(d);var p=u(d,2),m=v(p,!0);x(p),x(l),x(i),o(()=>{r(f,s(t).step),r(m,s(t).code)}),a(e,i)}),x(q),x(K);var J=u(K,2),Y=u(v(J),2);i(Y,5,()=>ue,h,(e,t)=>{var n=oe(),i=v(n),c=v(i,!0);x(i);var l=u(i,2),d=v(l,!0);x(l),f(2),x(n),o(()=>{_(n,`href`,s(t).href),r(c,s(t).host),r(d,s(t).label)}),a(e,n)}),x(Y),x(J),x(R);var X=u(R,2),Z=u(v(X),2),Q=v(Z);_(Q,`href`,S);var $=u(Q,2);_(u($,2),`href`,k),x(Z),x(X),x(M),o(()=>{_(L,`href`,O),_(V,`href`,O),_($,`href`,O)}),a(t,M),p()}export{O as default}; \ No newline at end of file + switching hosts never leaks credentials or stale IDs.

      • OpenAPI contract for every endpoint
      • Framework-neutral TypeScript SDK
      • Mattermost-shaped webhooks and slash commands
      • Durable event cursor for replay after downtime

      Quickstart

      Running in three commands.

        Destinations

        Everything where you expect it.

        ClickClack — self-hostable chat with claws. MIT licensed.

        `);function O(t,n){l(n,!1);let S=`https://docs.clickclack.chat`,O=C(window.location.hostname),k=`https://github.com/openclaw/clickclack`,ce=[{icon:`box`,title:`One binary, zero services`,body:`A single Go binary with the Svelte app, migrations, and static assets embedded. SQLite and local uploads by default — nothing else to run.`},{icon:`bolt`,title:`Durable realtime`,body:`WebSocket is the pipe, the database is the truth. Every event lands in a durable log, so clients reconnect with a cursor and miss nothing.`},{icon:`thread`,title:`Threads that stay flat`,body:`Slack-style threads, one level deep. Conversations branch without turning into reply-tree archaeology.`},{icon:`robot`,title:`Agents are first-class`,body:`Bots and agents use the same public API as humans: CLI, OpenAPI contract, TypeScript SDK, webhooks, and slash commands.`},{icon:`server`,title:`Self-host first`,body:`SQLite is the default, not the demo — WAL, FTS5 search, online backups. Postgres slots in behind the same store interface.`},{icon:`shield`,title:`Calm moderation`,body:`Magic-link auth, optional GitHub OAuth, and a guest waiting room with approvals, timeouts, and blocks built in.`}],le=[{prompt:!0,text:`clickclack serve --data ./data`},{prompt:!1,text:`listening on :8080 · sqlite ./data/clickclack.db`},{prompt:!0,text:`clickclack send --channel general "deploy started"`},{prompt:!1,text:`msg_01j9x sent to #general`},{prompt:!0,text:`clickclack threads reply msg_01j9x --stdin {var t=w();f(2),c(()=>{y.title=`ClickClack — Team chat for humans and their agents`}),a(e,t)});var N=v(M),P=v(N),F=u(v(P),2),I=u(v(F),4);_(I,`href`,S);var L=u(I,2);_(L,`href`,k),x(F);var de=u(F,2);x(P),x(N);var R=u(N,2),z=v(R),B=u(v(z),6),V=v(B),fe=u(V,2);_(fe,`href`,S),x(B),f(4),x(z);var H=u(z,4);i(H,5,()=>ce,h,(e,t)=>{var n=ie(),i=v(n),c=v(i),l=v(c),d=e=>{var t=ee();f(2),a(e,t)},p=e=>{var t=T();a(e,t)},h=e=>{var t=E();f(3),a(e,t)},g=e=>{var t=te();f(4),a(e,t)},_=e=>{var t=ne();f(2),a(e,t)},y=e=>{var t=re();f(),a(e,t)};m(l,e=>{s(t).icon===`box`?e(d):s(t).icon===`bolt`?e(p,1):s(t).icon===`thread`?e(h,2):s(t).icon===`robot`?e(g,3):s(t).icon===`server`?e(_,4):e(y,-1)}),x(c),x(i);var b=u(i,2),S=v(b,!0);x(b);var C=u(b,2),w=v(C,!0);x(C),x(n),o(()=>{r(S,s(t).title),r(w,s(t).body)}),a(e,n)}),x(H);var U=u(H,2),W=u(v(U),2),G=u(v(W),2);i(G,5,()=>le,h,(e,t)=>{var n=ae(),i=v(n);x(n),o(()=>{d(n,1,b(s(t).prompt?`t-prompt`:`t-out`)),r(i,`${s(t).prompt?`$ `:` `}${s(t).text??``} +`)}),a(e,n)}),x(G),x(W),x(U);var K=u(U,2),q=u(v(K),4);i(q,5,()=>A,h,(e,t,n)=>{var i=D(),c=v(i);c.textContent=n+1;var l=u(c,2),d=v(l),f=v(d,!0);x(d);var p=u(d,2),m=v(p,!0);x(p),x(l),x(i),o(()=>{r(f,s(t).step),r(m,s(t).code)}),a(e,i)}),x(q),x(K);var J=u(K,2),Y=u(v(J),2);i(Y,5,()=>ue,h,(e,t)=>{var n=oe(),i=v(n),c=v(i,!0);x(i);var l=u(i,2),d=v(l,!0);x(l),f(2),x(n),o(()=>{_(n,`href`,s(t).href),r(c,s(t).host),r(d,s(t).label)}),a(e,n)}),x(Y),x(J),x(R);var X=u(R,2),Z=u(v(X),2),Q=v(Z);_(Q,`href`,S);var $=u(Q,2),pe=u($,2);_(pe,`href`,k),x(Z),x(X),x(M),o(()=>{_(de,`href`,O),_(V,`href`,O),_($,`href`,O)}),a(t,M),p()}export{O as default}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/BuFlayix.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/BuFlayix.js deleted file mode 100644 index 36106bbf..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/BuFlayix.js +++ /dev/null @@ -1 +0,0 @@ -var e=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},t=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},n=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new TextEncoder;function r(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e1;if(e.toggleAttribute(`data-overflowing`,t),t){e.tabIndex=0,e.setAttribute(`role`,`group`),e.setAttribute(`aria-label`,`Scrollable table`);return}e.removeAttribute(`tabindex`),e.removeAttribute(`role`),e.removeAttribute(`aria-label`)}var I=typeof ResizeObserver>`u`?null:new ResizeObserver(e=>{let t=new Set;for(let n of e){let e=ce.get(n.target);e&&t.add(e)}for(let e of t)le(e)});function ue(e){return e[se]||e.currentSrc||e.src}function L(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=!1,o=e=>{let t=r.get(e);t&&(I?.unobserve(e),I?.unobserve(t),r.delete(e))},s=()=>{for(let t of r.keys())e.contains(t)||o(t);for(let t of e.querySelectorAll(`table`)){let e=t.parentElement?.classList.contains(`markdown-table-scroll`)===!0?t.parentElement:null;e&&r.has(e)||(e||(e=document.createElement(`div`),e.className=`markdown-table-scroll`,t.before(e),e.append(t)),r.set(e,t),ce.set(e,e),ce.set(t,e),I?.observe(e),I?.observe(t),le(e))}},c=e=>{try{let t=new URL(e,window.location.href);if(t.hostname!==`giphy.com`&&!t.hostname.endsWith(`.giphy.com`))return``;let n=t.pathname.match(/\/media\/(?:v1\.[^/]+\/)?([^/]+)\/giphy\.gif$/);if(n)return`${t.origin}/media/${n[1]}/giphy_s.gif`}catch{return``}return``},l=e=>`${e}${e.includes(`?`)?`&`:`?`}cc_replay=${Date.now()}`,u=(e,r,i,o,s,c=!1)=>{let u=t.get(r);u&&window.clearTimeout(u);let d=(n.get(r)||0)+1;n.set(r,d),e.classList.add(`playing`),e.classList.remove(`paused`),i.disabled=!0,i.tabIndex=-1,i.ariaHidden=`true`;let f=!1,p=()=>{if(f||(f=!0,a||n.get(r)!==d))return;let o=window.setTimeout(()=>{a||n.get(r)!==d||(e.classList.remove(`playing`),e.classList.add(`paused`),i.disabled=!1,i.tabIndex=0,i.ariaHidden=`false`,s&&(r.src=s))},2600);t.set(r,o)},m=()=>{r.decode().catch(()=>{}).then(p)};r.addEventListener(`load`,m,{once:!0}),c&&(r.src=l(o)),r.complete&&r.naturalWidth>0&&m()},d=()=>{s();for(let t of e.querySelectorAll(`img`)){if(t.closest(`.gif-player`)||t.closest(`a`))continue;let e=t.getAttribute(`src`)||t.src;if(!/\.gif(?:$|[?#])/i.test(e))continue;let n=c(e);if(!n)continue;let r=document.createElement(`span`);r.className=`gif-player`;let a=document.createElement(`span`);a.className=`gif-badge`,a.textContent=`GIF`;let o=document.createElement(`button`);o.type=`button`,o.className=`gif-replay`,o.disabled=!0,o.tabIndex=-1,o.ariaHidden=`true`,o.ariaLabel=`Replay GIF ${t.alt||`image`}`,o.title=`Replay GIF`,o.textContent=`↻`;let s=t.parentNode,l=t.nextSibling,d=t.getAttribute(`src`)||t.src;t[se]=e,s?.insertBefore(r,t),r.append(t,a,o);let f=i=>{i.preventDefault(),i.stopPropagation(),u(r,t,o,e,n,!0)};i.set(t,{wrapper:r,replay:o,originalSrc:d,originalParent:s,originalNextSibling:l,onReplay:f}),o.addEventListener(`click`,f),u(r,t,o,e,n)}},f=new MutationObserver(d);return f.observe(e,{childList:!0,subtree:!0}),d(),{destroy(){a=!0,f.disconnect();for(let e of r.keys())o(e);for(let e of t.values())window.clearTimeout(e);for(let[e,t]of i)t.replay.removeEventListener(`click`,t.onReplay),delete e[se],e.src=t.originalSrc,t.wrapper.parentNode?t.wrapper.replaceWith(e):t.originalParent&&e.parentNode!==t.originalParent&&t.originalParent.insertBefore(e,t.originalNextSibling);i.clear(),t.clear(),n.clear()}}}var de=1e3;function R(e,t,n){if(e.length<=900)return e;let r=fe(e,n);if(t===`prepend`)return pe(e,0,700,r,`start`);if(t===`append`)return pe(e,Math.max(0,e.length-700),e.length,r,`end`);if(t===`around`){let t=r?.first??-1,n=t>=0?t:Math.floor(e.length/2),i=Math.max(0,n-350),a=Math.min(e.length,i+700);return i=Math.max(0,a-700),pe(e,i,a,r,`start`)}return pe(e,Math.max(0,e.length-700),e.length,r,`end`)}function fe(e,t){if(t.size===0)return null;let n=-1,r=-1;for(let i=0;i1e3&&(i===`start`?(a=t,o=Math.min(e.length,a+de)):(o=n,a=Math.max(0,o-de))),e.slice(a,o)}function z(e){let t=e.trim();if(!t)return`?`;let n=t.split(/\s+/);return n.length>=2?(n[0][0]+n[1][0]).toUpperCase():t.slice(0,2).toUpperCase()}function me(e){if(!e)return`?`;let t=e.trim();return t?t[0].toUpperCase():`?`}function he(e){return e?`@${e}`:``}function B(e){return e?.handle||e?.former_handle||``}function V(e){return e?.kind===`bot`&&!!e.deleted_at}function ge(e,t=`Local User`){let n=e?.display_name||t;return V(e)?`${n} (deleted bot)`:n}function _e(e){let t=0;for(let n=0;n>>0;return t%360}function ve(e,t){return e.members.find(e=>e.id!==t)||e.members[0]}function ye(e,t){let n=e.members.filter(e=>e.id!==t);return(n.length>0?n:e.members).map(e=>ge(e)).join(`, `)}function be(e,t,n){let r=new Map;for(let e of t)for(let t of e.members)t.id&&t.id!==n&&!t.deleted_at&&r.set(t.id,t);for(let t of[...e].reverse()){let e=t.author;e?.id&&e.id!==n&&!e.deleted_at&&r.set(e.id,e)}return[...r.values()].slice(0,12)}function xe(e,t){return e.find(e=>e.members.some(e=>e.id===t))}var Se=12;function Ce(e){return e.replace(/^\p{White_Space}+/u,``).replace(/\p{White_Space}+$/u,``)}var we=class{reveal;#e=D(O(new Map));get sessions(){return p(this.#e)}set sessions(e){y(this.#e,e,!0)}generation=0;touchSequence=0;constructor(e){this.reveal=e}session(e){return e?this.sessions.get(e):void 0}isEditing(e,t,n){let r=this.session(e);return r?.messageID===t&&r.surface===n}start(e,t,n){if(!e||!t.id||t.deleted_at||t.status===`pending`||t.status===`failed`)return`invalid`;let r=this.sessions.get(e);if(r){if(r.messageID===t.id&&r.surface===n)return this.cancel(e)?`cancelled`:`blocked`;let i=this.touched(r);return this.setSession(e,i),this.reveal?.(e,i),`blocked`}let i={messageID:t.id,surface:n,originalBody:t.body,draft:t.body,error:``,saving:!1,generation:++this.generation,touchedAt:++this.touchSequence};return this.setSession(e,i),this.trimSessions(e),`started`}updateDraft(e,t){let n=this.sessions.get(e);!n||n.saving||this.setSession(e,this.touched({...n,draft:t,error:``}))}cancel(e,t){let n=this.sessions.get(e);return!n||n.saving||t&&n.surface!==t?!1:(this.deleteSession(e),!0)}cancelMessage(e,t){let n=this.sessions.get(e);return!n||n.messageID!==t?!1:this.cancel(e)}clear(){this.generation+=1,this.sessions=new Map}reconcile(e,t){let n=this.sessions.get(e);if(!n||n.saving)return;let r=t.find(e=>e.id===n.messageID);if(r){if(r.deleted_at){this.deleteSession(e);return}if(r.body!==n.originalBody){if(n.draft===n.originalBody){this.setSession(e,this.touched({...n,originalBody:r.body,draft:r.body,error:``}));return}this.setSession(e,this.touched({...n,originalBody:r.body,error:`This message changed elsewhere. Review your draft before saving.`}))}}}async save(e,t,n){let r=this.sessions.get(e);if(!r||r.messageID!==t.id||r.saving)return`invalid`;let i=Ce(r.draft);if(!i)return this.setSession(e,this.touched({...r,error:`Message body is required`})),`invalid`;if(i===t.body)return this.deleteSession(e),`cancelled`;this.setSession(e,this.touched({...r,error:``,saving:!0}));let a=r.generation;try{let i=await F(`/api/messages/${t.id}`,{method:`PATCH`,body:JSON.stringify({body:r.draft})});return this.sessions.get(e)?.generation===a?(n(i.message),this.deleteSession(e),`saved`):`invalid`}catch(t){let n=this.sessions.get(e);return n?.generation===a?(this.setSession(e,this.touched({...n,error:oe(t,`Could not edit message`)})),`failed`):`invalid`}finally{let t=this.sessions.get(e);t?.generation===a&&this.setSession(e,this.touched({...t,saving:!1}))}}touched(e){return{...e,touchedAt:++this.touchSequence}}setSession(e,t){let n=new Map(this.sessions);n.delete(e),n.set(e,t),this.sessions=n}deleteSession(e){if(!this.sessions.has(e))return;let t=new Map(this.sessions);t.delete(e),this.sessions=t}trimSessions(e){if(this.sessions.size<=Se)return;let t=[...this.sessions.entries()].filter(([t,n])=>t!==e&&!n.saving).sort((e,t)=>e[1].touchedAt-t[1].touchedAt),n=this.sessions.size-Se,r=new Map(this.sessions);for(let[e]of t.slice(0,n))r.delete(e);this.sessions=r}},Te=4001;function Ee(e){return e===Te}async function De(e){let t=e.readCursor();if(!e.isActive())return{active:!1};if(t!==null&&t!==``)return{active:!0,cursor:t,persistAfterOpen:!1};let n=await e.fetchTailCursor();return e.isActive()?{active:!0,cursor:n,persistAfterOpen:!0}:{active:!1}}var Oe=8192;function ke(e){let t=e.isActive??(()=>!0),n=e.maxPendingEvents??Oe,r=[],i=[],a=!1,o=!1;function s(){if(a)return!1;try{return t()}catch{return!1}}function c(){if(!(o||r.length>0))for(let e of i.splice(0))e()}function l(t){if(s()){a=!0,r.length=0;try{e.onError?.(t)}catch{}try{e.onFailure?.()}catch{}c()}}async function u(){if(!o){for(o=!0;s()&&r.length>0;){let t=r.shift();try{if(await e.onEvent(t),!s()){r.length=0;break}t.cursor&&e.persistCursor(t.cursor)}catch(e){l(e);break}}o=!1,c()}}return{enqueue(e){if(s()){if(r.length>=n){l(Error(`Realtime event queue overflowed; reconnecting to recover`));return}r.push(e),u()}},stop(){a=!0,r.length=0,c()},whenIdle(){return!o&&r.length===0?Promise.resolve():new Promise(e=>i.push(e))}}}var Ae=e=>`clickclack:${e}:cursor`;function je(e){let{workspaceID:t,onEvent:n,onOpen:r,onError:i,onStatusChange:a}=e,o=e.reconnectDelayMs??1200,s=null,c=null,l,u=0,d=null,f=!1,p=!0,m=!1,h=null,g=!1,_=!1;function v(e){_!==e&&(_=e,a?.(e))}function y(e){try{i?.(e)}catch{}}function b(){if(m)return null;if(d!==null||f)return d;f=!0;try{d=localStorage.getItem(Ae(t))}catch{p=!1}return d}function x(e){if(d=e,p)try{localStorage.setItem(Ae(t),e)}catch{p=!1}}function S(e){return!g&&u===e}function C(e){if(!S(e)||l!==void 0)return;let t=++u;c?.abort(),c=null,v(!1),l=window.setTimeout(()=>{l=void 0,!g&&u===t&&E()},o)}async function w(e){if(m&&h!==null)return h;let n=await F(`/api/realtime/events?${new URLSearchParams({workspace_id:t,limit:`1`,include_tail:`true`}).toString()}`,{signal:e});if(typeof n.tail_cursor!=`string`)throw Error(`Realtime bootstrap response did not include a tail cursor`);return m&&(h=n.tail_cursor),n.tail_cursor}async function T(e,i){let a=await De({readCursor:b,fetchTailCursor:()=>w(i),isActive:()=>S(e)});if(!a.active||!S(e))return;let o=new URL(ie(`/api/realtime/ws`),window.location.href);o.protocol=o.protocol===`https:`?`wss:`:`ws:`,o.searchParams.set(`workspace_id`,t),a.cursor&&o.searchParams.set(`after_cursor`,a.cursor);let c=new WebSocket(o);s=c;let l=()=>S(e)&&s===c,u=Promise.resolve(),d=!1,f=t=>{l()&&(d||y(t),d=!0,C(e),c.close())},p=ke({async onEvent(e){await u,l()&&await n(e,l)},persistCursor(e){x(e)},onError:f,isActive:l});c.addEventListener(`open`,()=>{l()&&(u=Promise.resolve().then(()=>r?.(l,a.persistAfterOpen)).then(()=>{a.persistAfterOpen&&l()&&(x(a.cursor),m=!1,h=null)}),u.then(()=>{l()&&v(!0)},f))}),c.addEventListener(`message`,e=>{if(!l())return;let t;try{t=JSON.parse(String(e.data))}catch{return}Me(t)&&p.enqueue(t)}),c.addEventListener(`close`,t=>{p.stop(),l()&&(Ee(t.code)&&(m=!0,h=null),s=null,v(!1),C(e))})}function E(){if(g)return;let e=++u,t=new AbortController;c=t,T(e,t.signal).catch(t=>{S(e)&&(y(t),C(e))}).finally(()=>{c===t&&(c=null)})}return E(),{get connected(){return _},close(){g=!0,u+=1,c?.abort(),c=null,v(!1),l&&window.clearTimeout(l),l=void 0,s?.close(),s=null}}}function Me(e){return typeof e==`object`&&!!e&&typeof e.type==`string`}var Ne=de+50,Pe=class{currentUserID;#e=D(O(new Map));get entries(){return p(this.#e)}set entries(e){y(this.#e,e,!0)}revision=0;generation=0;constructor(e){this.currentUserID=e}clear(){this.generation+=1,this.revision=0,this.entries=new Map}seedMessages(e){if(e.length===0)return;let t=new Map(this.entries),n=!1;for(let r of e){let e=Fe(r.reactions??[]),i=t.get(r.id);if(!i){t.set(r.id,this.newEntry(e,!0)),n=!0;continue}if(i.complete)continue;let a=Ie(e,i.confirmed,i.partialEmojis);t.set(r.id,{...i,confirmed:a,displayed:Le(a,i.pendingIntent),complete:!0,partialEmojis:new Set,revision:++this.revision}),n=!0}n&&(this.entries=Ve(t))}reactionsFor(e){return this.entries.get(e.id)?.displayed??e.reactions??[]}pending(e){return!!this.entries.get(e)?.pendingIntent}error(e){return this.entries.get(e)?.error??``}applyEvent(e){if(e.type!==`reaction.added`&&e.type!==`reaction.removed`)return;let t=e.payload.message_id,n=e.payload.emoji,r=e.payload.count;if(!t||!n||typeof r!=`number`)return;let i=this.entries.get(t);if(i?.lastEventCursor&&e.cursor&&e.cursor<=i.lastEventCursor)return;let a=e.payload.user_id===this.currentUserID(),o=Re(i?.confirmed??[],n,Math.max(0,r),e.type===`reaction.added`,a),s=i?.pendingIntent,c=a&&s?.emoji===n;this.setEntry(t,{confirmed:o,displayed:c?o:Le(o,s),complete:i?.complete??!1,partialEmojis:i?.complete?new Set:new Set([...i?.partialEmojis??[],n]),revision:++this.revision,lastEventCursor:e.cursor||i?.lastEventCursor||``,pendingIntent:s,error:``})}async toggle(e,t){if(!this.currentUserID()||!t)return;let n=this.ensureEntry(e);if(n.pendingIntent)return;let r=ze(n.displayed,t)?`remove`:`add`,i=this.generation,a=n.revision,o={emoji:t,intent:r};this.setEntry(e.id,{...n,displayed:Le(n.confirmed,o),pendingIntent:o,error:``});try{let n=r===`remove`?await F(`/api/messages/${e.id}/reactions/${encodeURIComponent(t)}`,{method:`DELETE`}):await F(`/api/messages/${e.id}/reactions`,{method:`POST`,body:JSON.stringify({emoji:t})});if(i!==this.generation)return;let o=this.entries.get(e.id);if(!o)return;let s=n.event?.cursor??``;if(o.revision===a||s&&(!o.lastEventCursor||s>=o.lastEventCursor)){let t=Fe(n.reactions);this.setEntry(e.id,{...o,confirmed:t,displayed:Le(t,o.pendingIntent),complete:!0,partialEmojis:new Set,revision:++this.revision})}}catch(t){if(i!==this.generation)return;let n=this.entries.get(e.id)?.revision;try{let t=await F(`/api/messages/${e.id}`);if(i===this.generation&&this.entries.get(e.id)?.revision===n){let n=Fe(t.message.reactions??[]),r=this.entries.get(e.id);r&&this.setEntry(e.id,{...r,confirmed:n,displayed:Le(n,r.pendingIntent),complete:!0,partialEmojis:new Set,revision:++this.revision})}}catch{}let r=this.entries.get(e.id);i===this.generation&&r&&this.setEntry(e.id,{...r,error:H(r.confirmed,o)?``:He(t)})}finally{if(i===this.generation){let t=this.entries.get(e.id);t?.pendingIntent===o&&this.setEntry(e.id,{...t,displayed:t.confirmed,pendingIntent:void 0})}}}ensureEntry(e){let t=this.entries.get(e.id);if(t)return t;let n=this.newEntry(Fe(e.reactions??[]),!0);return this.setEntry(e.id,n),n}newEntry(e,t){return{confirmed:e,displayed:e,complete:t,partialEmojis:new Set,revision:++this.revision,lastEventCursor:``,error:``}}setEntry(e,t){let n=new Map(this.entries);n.delete(e),n.set(e,t),this.entries=Ve(n)}};function Fe(e){let t=new Map;for(let n of e)!n.emoji||n.count<=0||t.set(n.emoji,{emoji:n.emoji,count:n.count,reacted_by_me:n.reacted_by_me});return Be([...t.values()])}function Ie(e,t,n){let r=new Map(e.map(e=>[e.emoji,e])),i=new Map(t.map(e=>[e.emoji,e]));for(let e of n){let t=i.get(e);t?r.set(e,t):r.delete(e)}return Be([...r.values()])}function Le(e,t){if(!t)return e;let n=e.map(e=>({...e})),r=n.findIndex(e=>e.emoji===t.emoji);if(t.intent===`remove`){if(r<0||!n[r].reacted_by_me)return n;n[r].count<=1?n.splice(r,1):n[r]={...n[r],count:n[r].count-1,reacted_by_me:!1}}else r<0?n.push({emoji:t.emoji,count:1,reacted_by_me:!0}):n[r].reacted_by_me||(n[r]={...n[r],count:n[r].count+1,reacted_by_me:!0});return Be(n)}function Re(e,t,n,r,i){let a=e.map(e=>({...e})),o=a.findIndex(e=>e.emoji===t);if(n===0)return o>=0&&a.splice(o,1),Be(a);let s={emoji:t,count:n,reacted_by_me:i?r:o>=0&&a[o].reacted_by_me};return o>=0?a[o]=s:a.push(s),Be(a)}function ze(e,t){return e.some(e=>e.emoji===t&&e.reacted_by_me)}function H(e,t){return ze(e,t.emoji)===(t.intent===`add`)}function Be(e){return e.sort((e,t)=>t.count-e.count||e.emoji.localeCompare(t.emoji))}function Ve(e){let t=e.size;for(;e.size>Ne&&t>0;){--t;let n=e.keys().next().value;if(!n)break;let r=e.get(n);e.delete(n),r?.pendingIntent&&e.set(n,r)}return e}function He(e){if(!(e instanceof Error))return`Could not update reaction`;try{return JSON.parse(e.message).error||`Could not update reaction`}catch{return e.message||`Could not update reaction`}}function Ue(e,t){let n=()=>{let t=e.style.height;e.style.height=`auto`;let n=`${e.scrollHeight}px`;t===n?e.style.height=t:e.style.height=n},r=()=>n(),i=()=>n();return requestAnimationFrame(n),e.addEventListener(`input`,r),window.addEventListener(`resize`,i),{update(){requestAnimationFrame(n)},destroy(){e.removeEventListener(`input`,r),window.removeEventListener(`resize`,i)}}}function We(e){return ie(`/api/uploads/${encodeURIComponent(e.id)}`)}function Ge(e){return e.content_type.startsWith(`image/`)}function Ke(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}var qe=i(`
        `);function Je(e,n){m(n,!0);let r=h(n,`disabled`,3,!1);var i=qe(),a=j(i),o=g(a,2),s=g(o,2),u=j(s);u.textContent=`<>`,M(s);var d=g(s,2),f=j(d);f.textContent=`{}`,M(d);var p=g(d,2),v=g(p,2);let y;M(i),l(()=>{a.disabled=r(),o.disabled=r(),s.disabled=r(),d.disabled=r(),p.disabled=r(),v.disabled=r(),y=_(v,1,``,null,y,{active:n.showGifPicker})}),t(`click`,a,()=>n.onWrap(`**`)),t(`click`,o,()=>n.onWrap(`_`)),t(`click`,s,()=>n.onWrap("`")),t(`click`,d,()=>n.onWrap("```","\n```")),t(`click`,p,()=>n.onAppend(`[label](https://)`)),t(`click`,v,function(...e){n.onToggleGif?.apply(this,e)}),c(e,i),S()}P([`click`]);var Ye=i(``),Xe=i(`
        GIFs
        `);function U(e,n){m(n,!0);var r=Xe(),i=j(r),a=g(j(i),2);b(a),M(i);var u=g(i,2);s(u,21,()=>n.gifs,e=>e.url,(e,r)=>{var i=Ye(),a=j(i),s=g(a,2),u=j(s,!0);M(s),M(i),l(()=>{k(a,`src`,p(r).url),k(a,`alt`,p(r).title),o(u,p(r).title)}),t(`click`,i,()=>n.onPick(p(r).url,p(r).title)),c(e,i)}),M(u),M(r),l(()=>C(a,n.query)),t(`input`,a,e=>n.onQuery(e.currentTarget.value)),c(e,r),S()}P([`input`,`click`]);function Ze(e,t=120){if(!e||t<=0)return``;let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:t<=3?`.`.repeat(t):`${n.slice(0,t-3)}...`}function Qe(e){return ge(e.quoted_author,`Unknown`)}function $e(e,t){if(t===e.id)return`Open`;let n=e.thread_state?.reply_count||0;return n===0?`No replies yet`:`${n} ${n===1?`reply`:`replies`}`}function et(e){let t=e.thread_state?.reply_count||0;return t===0?`Thread`:`${t} ${t===1?`reply`:`replies`}`}function tt(e){let t=e.thread_state?.last_reply_at;return t?nt(t):``}function nt(e){let t=new Date(e).getTime();if(!Number.isFinite(t))return``;let n=Math.max(0,Date.now()-t),r=Math.floor(n/6e4);if(r<1)return`now`;if(r<60)return`${r}m`;let i=Math.floor(r/60);return i<24?`${i}h`:`${Math.floor(i/24)}d`}function rt(e){let t=new Date(e),n=new Date,r=new Date;r.setDate(n.getDate()-1);let i=(e,t)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate();return i(t,n)?`Today`:i(t,r)?`Yesterday`:new Intl.DateTimeFormat(void 0,{weekday:`long`,month:`long`,day:`numeric`}).format(t)}function it(e){let t=[],n=``,r=``,i=0;for(let a of e){let e=new Date(a.created_at),o=e.toDateString(),s=a.author?.id||a.author_id||`local`,c=o!==n,l=s!==r,u=e.getTime()-i>300*1e3;c||l||u||t.length===0?t.push({key:a.id,dayLabel:c?rt(a.created_at):null,messages:[a],authorName:a.author?.display_name||`Local User`,authorHandle:B(a.author),authorAvatarURL:V(a.author)?``:a.author?.avatar_url||``,authorID:s,authorDeleted:V(a.author),timestamp:a.created_at}):t[t.length-1].messages.push(a),n=o,r=s,i=e.getTime()}return t}var at=i(`
        Replying to
        `);function ot(e,n){m(n,!0);var r=at(),i=g(j(r),2),a=j(i),s=g(j(a)),u=j(s,!0);M(s),M(a);var d=g(a,2),f=j(d,!0);M(d),M(i);var p=g(i,2);M(r),l((e,t)=>{o(u,e),o(f,t)},[()=>ge(n.target.author),()=>Ze(n.target.body)]),t(`click`,p,function(...e){n.onClear?.apply(this,e)}),c(e,r),S()}P([`click`]);var st=i(` `),ct=i(``),lt=i(`
        `),ut=i(``),dt=i(`
        `),ft=i(``),pt=i(`
        `);function mt(n,r){m(r,!0);let i=h(r,`formClass`,3,`composer`),b=h(r,`pendingUpload`,3,null),w=h(r,`replyTarget`,3,null),E=h(r,`showUpload`,3,!1),ee=h(r,`showToolbar`,3,!1),O=h(r,`showGifPicker`,3,!1),te=h(r,`gifQuery`,3,``),N=h(r,`filteredGifs`,19,()=>[]),P=h(r,`slashCommands`,19,()=>[]),ie=h(r,`botCommands`,19,()=>[]),ae=h(r,`mentionPeople`,19,()=>[]),F=h(r,`disabled`,3,!1),oe=h(r,`onUploadFile`,3,()=>{}),se=h(r,`onRemoveUpload`,3,()=>{}),ce=h(r,`onClearReply`,3,()=>{}),le=h(r,`onApplyMarkdownWrap`,3,()=>{}),I=h(r,`onAppendToComposer`,3,()=>{}),ue=h(r,`onToggleGif`,3,()=>{}),L=h(r,`onGifQuery`,3,()=>{}),de=h(r,`onPickGif`,3,()=>{}),R=D(null),fe=D(0),pe=D(``),z=D(0),B=x(()=>ge(r.value,p(fe))),V=x(()=>!p(B)||_e(p(B))===p(pe)?[]:p(B).kind===`slash`?be(p(B)):Se(p(B)));e(()=>(r.onInputRef(p(R)),()=>r.onInputRef(null))),e(()=>{if(p(V).length===0){y(z,0);return}p(z)>=p(V).length&&y(z,0)});function ge(e,t){let n=Math.max(0,Math.min(t||e.length,e.length)),r=e.slice(0,n),i=/(^|\s)([/@][^\s]*)$/.exec(r);if(!i)return null;let a=i[2],o=r.length-a.length;return a.startsWith(`/`)&&o!==0?null:{kind:a.startsWith(`/`)?`slash`:`mention`,start:o,end:n,query:a.slice(1).toLowerCase(),raw:a}}function _e(e){return`${e.kind}:${e.start}:${e.raw}`}function ve(e=p(R)){y(fe,e?.selectionStart??r.value.length,!0)}function ye(e){return e.startsWith(`/`)?e:`/${e}`}function be(e){let t=e.query,n=P().filter(e=>!e.revoked_at).map(e=>{let t=ye(e.command);return{id:e.id,kind:`slash`,label:t,detail:e.description||`Slash command`,insertText:`${t} `,sortText:t.slice(1).toLowerCase()}}),r=new Set(n.map(e=>e.label)),i=ie().filter(e=>!r.has(ye(e.command))).map(e=>{let t=ye(e.command);return{id:e.id,kind:`slash`,label:t,detail:e.description,insertText:`${t} `,sortText:t.slice(1).toLowerCase(),hint:e.args_hint||void 0,source:e.bot.handle?`@${e.bot.handle}`:e.bot.display_name}});return[...n,...i].filter(e=>!t||e.sortText.includes(t)).sort((e,n)=>Number(!e.sortText.startsWith(t))-Number(!n.sortText.startsWith(t))||e.sortText.localeCompare(n.sortText)).slice(0,6)}function xe(e){return he(e.handle||e.display_name.replace(/\s+/g,``))}function Se(e){let t=e.query,n=new Set;return ae().filter(e=>!e.id||n.has(e.id)?!1:(n.add(e.id),!0)).map(e=>{let t=xe(e),n=`${e.handle||``} ${e.display_name}`.trim().toLowerCase();return{id:e.id,kind:`mention`,label:t,detail:e.kind===`bot`?`${e.display_name} · bot`:e.display_name,insertText:`${t} `,sortText:n}}).filter(e=>!t||e.sortText.includes(t)).sort((e,n)=>Number(!e.sortText.startsWith(t))-Number(!n.sortText.startsWith(t))||e.sortText.localeCompare(n.sortText)).slice(0,6)}function Ce(e){if(!p(B))return;let t=`${r.value.slice(0,p(B).start)}${e.insertText}${r.value.slice(p(B).end)}`,n=p(B).start+e.insertText.length;r.onValue(t),a().then(()=>{p(R)?.focus(),p(R)?.setSelectionRange(n,n),y(fe,n)})}function we(e){let t=e.currentTarget;r.onValue(t.value),ve(t)}function Te(){ve(),r.onFocus()}function Ee(e){if(p(V).length>0){if(e.key===`ArrowDown`){e.preventDefault(),y(z,(p(z)+1)%p(V).length);return}if(e.key===`ArrowUp`){e.preventDefault(),y(z,(p(z)-1+p(V).length)%p(V).length);return}if(e.key===`Enter`||e.key===`Tab`){e.preventDefault(),Ce(p(V)[p(z)]);return}if(e.key===`Escape`&&p(B)){e.preventDefault(),y(pe,_e(p(B)),!0);return}}r.onKeydown(e)}var De=pt(),Oe=j(De),ke=e=>{U(e,{get gifs(){return N()},get query(){return te()},get onQuery(){return L()},get onPick(){return de()}})};T(Oe,e=>{O()&&e(ke)});var Ae=g(Oe,2),je=e=>{var n=lt();s(n,23,()=>p(V),e=>e.id,(e,n,r)=>{var i=ct();let a;var s=j(i),d=j(s),f=e=>{c(e,u(`/`))},m=e=>{var t=u();l(e=>o(t,e),[()=>me(p(n).detail)]),c(e,t)};T(d,e=>{p(n).kind===`slash`?e(f):e(m,-1)}),M(s);var h=g(s,2),v=j(h),y=j(v,!0),b=g(y),x=e=>{var t=st(),r=j(t,!0);M(t),l(()=>o(r,p(n).hint)),c(e,t)};T(b,e=>{p(n).hint&&e(x)}),M(v);var S=g(v,2),C=j(S,!0);M(S),M(h);var w=g(h,2),E=j(w,!0);M(w),M(i),l(()=>{k(i,`aria-selected`,p(r)===p(z)),a=_(i,1,``,null,a,{active:p(r)===p(z)}),o(y,p(n).label),o(C,p(n).detail),o(E,p(n).source??(p(n).kind===`slash`?`command`:`mention`))}),t(`mousedown`,i,e=>e.preventDefault()),t(`click`,i,()=>Ce(p(n))),c(e,i)}),M(n),l(()=>k(n,`aria-label`,p(B)?.kind===`slash`?`Slash command suggestions`:`Mention suggestions`)),c(e,n)};T(Ae,e=>{p(V).length>0&&e(je)});var Me=g(Ae,2),Ne=j(Me),Pe=e=>{var n=dt(),r=g(j(n),2),i=e=>{var t=ut();l(e=>{k(t,`src`,e),k(t,`alt`,b().filename)},[()=>We(b())]),c(e,t)},a=x(()=>Ge(b()));T(r,e=>{p(a)&&e(i)});var s=g(r,2),u=j(s);M(s);var d=g(s,2);M(n),l(e=>o(u,`${b().filename??``} · ${e??``}`),[()=>Ke(b().byte_size)]),t(`click`,d,function(...e){se()?.apply(this,e)}),c(e,n)};T(Ne,e=>{b()&&e(Pe)});var Fe=g(Ne,2),Ie=e=>{ot(e,{get target(){return w()},get onClear(){return ce()}})};T(Fe,e=>{w()&&e(Ie)});var Le=g(Fe,2),Re=j(Le),ze=e=>{var n=ft(),r=j(n);v(2),M(n),l(()=>r.disabled=F()),t(`change`,r,function(...e){oe()?.apply(this,e)}),c(e,n)};T(Re,e=>{E()&&e(ze)});var H=g(Re,2);A(H),ne(H,e=>y(R,e),()=>p(R)),d(H,(e,t)=>Ue?.(e,t),()=>r.value);var Be=g(H,2);M(Le);var Ve=g(Le,2),He=e=>{Je(e,{get showGifPicker(){return O()},get disabled(){return F()},get onWrap(){return le()},get onAppend(){return I()},get onToggleGif(){return ue()}})};T(Ve,e=>{ee()&&e(He)}),M(Me),M(De),l(e=>{_(De,1,re(i())),C(H,r.value),k(H,`placeholder`,r.placeholder),k(H,`aria-label`,r.ariaLabel),H.disabled=F(),k(Be,`aria-label`,r.submitLabel),Be.disabled=e},[()=>F()||!r.value.trim()]),f(`submit`,De,e=>{e.preventDefault(),!F()&&r.onSubmit()}),t(`input`,H,we),f(`focus`,H,Te),t(`keydown`,H,Ee),t(`keyup`,H,()=>ve()),t(`mouseup`,H,()=>ve()),f(`select`,H,()=>ve()),c(n,De),S()}P([`mousedown`,`click`,`change`,`input`,`keydown`,`keyup`,`mouseup`]);function ht(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n`u`?null:J(BigInt.prototype.toString),Gt=typeof Symbol>`u`?null:J(Symbol.prototype.toString),K=J(Object.prototype.hasOwnProperty),Kt=J(Object.prototype.toString),q=J(RegExp.prototype.test),qt=Jt(TypeError);function J(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return Ot(e,t,n)}}function Jt(e){return function(){return kt(e,[...arguments])}}function Y(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:It;if(St&&St(e,null),!Ft(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(Ct(t)||(t[r]=e),i=e)}e[i]=!0}return e}function Yt(e){for(let t=0;t/g),pn=G(/\${[\w\W]*/g),mn=G(/^data-[\-\w.\u00B7-\uFFFF]+$/),hn=G(/^aria-[\-\w]+$/),gn=G(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),_n=G(/^(?:\w+script|data):/i),vn=G(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),yn=G(/^html$/i),bn=G(/^[a-z][.\w]*(-[.\w]+)+$/i),xn=G(/<[/\w!]/g),Sn=G(/<[/\w]/g),Cn=G(/<\/no(script|embed|frames)/i),wn=G(/\/>/i),Tn={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},En=function(){return typeof window>`u`?null:window},Dn=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},On=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},kn=function(e,t,n,r){return K(e,t)&&Ft(e[t])?Y(r.base?X(r.base):{},e[t],r.transform):n};function An(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:En(),t=e=>An(e);if(t.version=`3.4.12`,t.removed=[],!e||!e.document||e.document.nodeType!==Tn.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,u=e.trustedTypes,d=s.prototype,f=Zt(d,`cloneNode`),p=Zt(d,`remove`),m=Zt(d,`nextSibling`),h=Zt(d,`childNodes`),g=Zt(d,`parentNode`),_=Zt(d,`shadowRoot`),v=Zt(d,`attributes`),y=o&&o.prototype?Zt(o.prototype,`nodeType`):null,b=o&&o.prototype?Zt(o.prototype,`nodeName`):null;if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let x,S=``,C,w=!1,T=0,E=function(){if(T>0)throw qt(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},D=function(e){E(),T++;try{return x.createHTML(e)}finally{T--}},ee=function(e){E(),T++;try{return x.createScriptURL(e)}finally{T--}},O=function(){return w||=(C=Dn(u,i),!0),C},k=n,A=k.implementation,te=k.createNodeIterator,j=k.createDocumentFragment,ne=k.getElementsByTagName,re=r.importNode,M=On();t.isSupported=typeof xt==`function`&&typeof g==`function`&&A&&A.createHTMLDocument!==void 0;let N=dn,P=fn,ie=pn,ae=mn,F=hn,oe=_n,se=vn,ce=bn,le=gn,I=null,ue=Y({},[...$t,...en,...tn,...rn,...on]),L=null,de=Y({},[...sn,...cn,...ln,...un]),R=Object.seal(Et(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),fe=null,pe=null,z=Object.seal(Et(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),me=!0,he=!0,B=!1,V=!0,ge=!1,_e=!0,ve=!1,ye=!1,be=null,xe=null,Se=!1,Ce=!1,we=!1,Te=!1,Ee=!0,De=!1,Oe=`user-content-`,ke=!0,Ae=!1,je={},Me=null,Ne=Y({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),Pe=null,Fe=Y({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Ie=null,Le=Y({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),Re=`http://www.w3.org/1998/Math/MathML`,ze=`http://www.w3.org/2000/svg`,H=`http://www.w3.org/1999/xhtml`,Be=H,Ve=!1,He=null,Ue=Y({},[Re,ze,H],Lt),We=W([`mi`,`mo`,`mn`,`ms`,`mtext`]),Ge=Y({},We),Ke=W([`annotation-xml`]),qe=Y({},Ke),Je=Y({},[`title`,`style`,`font`,`a`,`script`]),Ye=null,Xe=[`application/xhtml+xml`,`text/html`],U=null,Ze=null,Qe=n.createElement(`form`),$e=function(e){return e instanceof RegExp||e instanceof Function},et=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Ze&&Ze===e)return;(!e||typeof e!=`object`)&&(e={}),e=X(e),Ye=Xe.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,U=Ye===`application/xhtml+xml`?Lt:It,I=kn(e,`ALLOWED_TAGS`,ue,{transform:U}),L=kn(e,`ALLOWED_ATTR`,de,{transform:U}),He=kn(e,`ALLOWED_NAMESPACES`,Ue,{transform:Lt}),Ie=kn(e,`ADD_URI_SAFE_ATTR`,Le,{transform:U,base:Le}),Pe=kn(e,`ADD_DATA_URI_TAGS`,Fe,{transform:U,base:Fe}),Me=kn(e,`FORBID_CONTENTS`,Ne,{transform:U}),fe=kn(e,`FORBID_TAGS`,X({}),{transform:U}),pe=kn(e,`FORBID_ATTR`,X({}),{transform:U}),je=K(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?X(e.USE_PROFILES):e.USE_PROFILES:!1,me=e.ALLOW_ARIA_ATTR!==!1,he=e.ALLOW_DATA_ATTR!==!1,B=e.ALLOW_UNKNOWN_PROTOCOLS||!1,V=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ge=e.SAFE_FOR_TEMPLATES||!1,_e=e.SAFE_FOR_XML!==!1,ve=e.WHOLE_DOCUMENT||!1,Ce=e.RETURN_DOM||!1,we=e.RETURN_DOM_FRAGMENT||!1,Te=e.RETURN_TRUSTED_TYPE||!1,Se=e.FORCE_BODY||!1,Ee=e.SANITIZE_DOM!==!1,De=e.SANITIZE_NAMED_PROPS||!1,ke=e.KEEP_CONTENT!==!1,Ae=e.IN_PLACE||!1,le=Qt(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:gn,Be=typeof e.NAMESPACE==`string`?e.NAMESPACE:H,Ge=K(e,`MATHML_TEXT_INTEGRATION_POINTS`)&&e.MATHML_TEXT_INTEGRATION_POINTS&&typeof e.MATHML_TEXT_INTEGRATION_POINTS==`object`?X(e.MATHML_TEXT_INTEGRATION_POINTS):Y({},We),qe=K(e,`HTML_INTEGRATION_POINTS`)&&e.HTML_INTEGRATION_POINTS&&typeof e.HTML_INTEGRATION_POINTS==`object`?X(e.HTML_INTEGRATION_POINTS):Y({},Ke);let t=K(e,`CUSTOM_ELEMENT_HANDLING`)&&e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING==`object`?X(e.CUSTOM_ELEMENT_HANDLING):Et(null);if(R=Et(null),K(t,`tagNameCheck`)&&$e(t.tagNameCheck)&&(R.tagNameCheck=t.tagNameCheck),K(t,`attributeNameCheck`)&&$e(t.attributeNameCheck)&&(R.attributeNameCheck=t.attributeNameCheck),K(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(R.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),G(R),ge&&(he=!1),we&&(Ce=!0),je&&(I=Y({},on),L=Et(null),je.html===!0&&(Y(I,$t),Y(L,sn)),je.svg===!0&&(Y(I,en),Y(L,cn),Y(L,un)),je.svgFilters===!0&&(Y(I,tn),Y(L,cn),Y(L,un)),je.mathMl===!0&&(Y(I,rn),Y(L,ln),Y(L,un))),z.tagCheck=null,z.attributeCheck=null,K(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?z.tagCheck=e.ADD_TAGS:Ft(e.ADD_TAGS)&&(I===ue&&(I=X(I)),Y(I,e.ADD_TAGS,U))),K(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?z.attributeCheck=e.ADD_ATTR:Ft(e.ADD_ATTR)&&(L===de&&(L=X(L)),Y(L,e.ADD_ATTR,U))),K(e,`ADD_URI_SAFE_ATTR`)&&Ft(e.ADD_URI_SAFE_ATTR)&&Y(Ie,e.ADD_URI_SAFE_ATTR,U),K(e,`FORBID_CONTENTS`)&&Ft(e.FORBID_CONTENTS)&&(Me===Ne&&(Me=X(Me)),Y(Me,e.FORBID_CONTENTS,U)),K(e,`ADD_FORBID_CONTENTS`)&&Ft(e.ADD_FORBID_CONTENTS)&&(Me===Ne&&(Me=X(Me)),Y(Me,e.ADD_FORBID_CONTENTS,U)),ke&&(I[`#text`]=!0),ve&&Y(I,[`html`,`head`,`body`]),I.table&&(Y(I,[`tbody`]),delete fe.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw qt(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw qt(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=x;x=e.TRUSTED_TYPES_POLICY;try{S=D(``)}catch(e){throw x=t,e}}else e.TRUSTED_TYPES_POLICY===null?(x=void 0,S=``):(x===void 0&&(x=O()),x&&typeof S==`string`&&(S=D(``)));W&&W(e),Ze=e},tt=Y({},[...en,...tn,...nn]),nt=Y({},[...rn,...an]),rt=function(e,t,n){return t.namespaceURI===H?e===`svg`:t.namespaceURI===Re?e===`svg`&&(n===`annotation-xml`||Ge[n]):!!tt[e]},it=function(e,t,n){return t.namespaceURI===H?e===`math`:t.namespaceURI===ze?e===`math`&&qe[n]:!!nt[e]},at=function(e,t,n){return t.namespaceURI===ze&&!qe[n]||t.namespaceURI===Re&&!Ge[n]?!1:!nt[e]&&(Je[e]||!tt[e])},ot=function(e){let t=g(e);(!t||!t.tagName)&&(t={namespaceURI:Be,tagName:`template`});let n=It(e.tagName),r=It(t.tagName);return He[e.namespaceURI]?e.namespaceURI===ze?rt(n,t,r):e.namespaceURI===Re?it(n,t,r):e.namespaceURI===H?at(n,t,r):!!(Ye===`application/xhtml+xml`&&He[e.namespaceURI]):!1},st=function(e){Nt(t.removed,{element:e});try{g(e).removeChild(e)}catch{if(p(e),!g(e))throw qt(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},ct=function(e){dt(e);let t=h(e);if(t){let e=[];At(t,t=>{Nt(e,t)}),At(e,e=>{try{p(e)}catch{}})}let n=v(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;if(typeof i==`string`)try{e.removeAttribute(i)}catch{}}},lt=function(e,n){try{Nt(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{Nt(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(Ce||we)try{st(n)}catch{}else try{n.setAttribute(e,``)}catch{}},ut=function(e){let t=v(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;if(!(typeof i!=`string`||L[U(i)]))try{e.removeAttribute(i)}catch{}}},dt=function(e){let t=[e];for(;t.length>0;){let e=t.pop();(y?y(e):e.nodeType)===Tn.element&&ut(e);let n=h(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},ft=function(e){if(!_e)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=y?y(e):e.nodeType;if(n===Tn.processingInstruction||n===Tn.comment&&q(Sn,e.data)){try{p(e)}catch{}continue}if(n===Tn.element){let t=e,n=U(b?b(e):e.nodeName);try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&n!==`label`&&n!==`output`&&t.removeAttribute(`for`)}catch{}}let r=h(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},pt=function(e){let t=null,r=null;if(Se)e=``+e;else{let t=Rt(e,/^[\r\n\t ]+/);r=t&&t[0]}Ye===`application/xhtml+xml`&&Be===H&&(e=``+e+``);let i=x?D(e):e;if(Be===H)try{t=new l().parseFromString(i,Ye)}catch{}if(!t||!t.documentElement){t=A.createDocument(Be,`template`,null);try{t.documentElement.innerHTML=Ve?S:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Be===H?ne.call(t,ve?`html`:`body`)[0]:ve?t.documentElement:a},mt=function(e){return te.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},ht=function(e){return e=zt(e,N,` `),e=zt(e,P,` `),e=zt(e,ie,` `),e},gt=function(e){e.normalize();let t=te.call(e.ownerDocument||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),n=t.nextNode();for(;n;)n.data=ht(n.data),n=t.nextNode();let r=e.querySelectorAll?.call(e,`template`);r&&At(r,e=>{vt(e.content)&>(e.content)})},_t=function(e){let t=b?b(e):null;return typeof t!=`string`||U(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==v(e)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==y(e)||e.childNodes!==h(e)},vt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return y(e)===Tn.documentFragment}catch{return!1}},yt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return typeof y(e)==`number`}catch{return!1}};function bt(e,n,r){e.length!==0&&At(e,e=>{e.call(t,n,r,Ze)})}let St=function(e,t){return!!(_e&&e.hasChildNodes()&&!yt(e.firstElementChild)&&q(xn,e.textContent)&&q(xn,e.innerHTML)||_e&&e.namespaceURI===H&&t===`style`&&yt(e.firstElementChild)||e.nodeType===Tn.processingInstruction||_e&&e.nodeType===Tn.comment&&q(Sn,e.data))},Ct=function(e,t){if(!fe[t]&&Ot(t)&&(R.tagNameCheck instanceof RegExp&&q(R.tagNameCheck,t)||R.tagNameCheck instanceof Function&&R.tagNameCheck(t)))return!1;if(ke&&!Me[t]){let t=g(e),n=h(e);if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=Ae?n[i]:f(n[i],!0);t.insertBefore(r,m(e))}}}return st(e),!0},wt=function(e,n){if(bt(M.beforeSanitizeElements,e,null),e!==n&&g(e)===null)return!0;if(_t(e))return st(e),!0;let r=U(b?b(e):e.nodeName);if(bt(M.uponSanitizeElement,e,{tagName:r,allowedTags:I}),e!==n&&g(e)===null)return!0;if(St(e,r))return st(e),!0;if(fe[r]||!(z.tagCheck instanceof Function&&z.tagCheck(r))&&!I[r]){let t=Ct(e,r);return t===!1&&bt(M.afterSanitizeElements,e,null),t}if((y?y(e):e.nodeType)===Tn.element&&!ot(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&q(Cn,e.innerHTML))return st(e),!0;if(ge&&e.nodeType===Tn.text){let n=ht(e.textContent);e.textContent!==n&&(Nt(t.removed,{element:e.cloneNode()}),e.textContent=n)}return bt(M.afterSanitizeElements,e,null),!1},Tt=function(e,t,r){if(pe[t]||_e&&t===`patchsrc`||_e&&t===`for`&&e!==`label`&&e!==`output`||Ee&&(t===`id`||t===`name`)&&(r in n||r in Qe))return!1;let i=L[t]||z.attributeCheck instanceof Function&&z.attributeCheck(t,e);if(!(he&&q(ae,t))&&!(me&&q(F,t))){if(!i){if(!(Ot(e)&&(R.tagNameCheck instanceof RegExp&&q(R.tagNameCheck,e)||R.tagNameCheck instanceof Function&&R.tagNameCheck(e))&&(R.attributeNameCheck instanceof RegExp&&q(R.attributeNameCheck,t)||R.attributeNameCheck instanceof Function&&R.attributeNameCheck(t,e))||t===`is`&&R.allowCustomizedBuiltInElements&&(R.tagNameCheck instanceof RegExp&&q(R.tagNameCheck,r)||R.tagNameCheck instanceof Function&&R.tagNameCheck(r))))return!1}else if(!Ie[t]&&!q(le,zt(r,se,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Bt(r,`data:`)===0&&Pe[e])&&!(B&&!q(oe,zt(r,se,``)))&&r)return!1}return!0},Dt=Y({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),Ot=function(e){return!Dt[It(e)]&&q(ce,e)},kt=function(e,t,n,r){if(x&&typeof u==`object`&&typeof u.getAttributeType==`function`&&!n)switch(u.getAttributeType(e,t)){case`TrustedHTML`:return D(r);case`TrustedScriptURL`:return ee(r)}return r},Ht=function(e,n,r,i){try{r?e.setAttributeNS(r,n,i):e.setAttribute(n,i),_t(e)?st(e):Mt(t.removed)}catch{lt(n,e)}},Ut=function(e){bt(M.beforeSanitizeAttributes,e,null);let t=e.attributes;if(!t||_t(e))return;let n={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:L,forceKeepAttr:void 0},r=t.length,i=U(e.nodeName);for(;r--;){let a=t[r],o=a.name,s=a.namespaceURI,c=a.value,l=U(o),u=c,d=o===`value`?u:Vt(u);if(n.attrName=l,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,bt(M.uponSanitizeAttribute,e,n),d=n.attrValue,De&&(l===`id`||l===`name`)&&Bt(d,Oe)!==0&&(lt(o,e),d=Oe+d),_e&&q(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){lt(o,e);continue}if(l===`attributename`&&Rt(d,`href`)){lt(o,e);continue}if(!n.forceKeepAttr){if(!n.keepAttr){lt(o,e);continue}if(!V&&q(wn,d)){lt(o,e);continue}if(ge&&(d=ht(d)),!Tt(i,l,d)){lt(o,e);continue}d=kt(i,l,s,d),d!==u&&Ht(e,o,s,d)}}bt(M.afterSanitizeAttributes,e,null)},Wt=function(e){let t=null,n=mt(e);for(bt(M.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if(bt(M.uponSanitizeShadowNode,t,null),wt(t,e),Ut(t),vt(t.content)&&Wt(t.content),(y?y(t):t.nodeType)===Tn.element){let e=_(t);vt(e)&&(Gt(e),Wt(e))}bt(M.afterSanitizeShadowDOM,e,null)},Gt=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){Wt(e.shadow);continue}let n=e.node,r=(y?y(n):n.nodeType)===Tn.element,i=h(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=b?b(n):null;if(typeof e==`string`&&U(e)===`template`){let e=n.content;vt(e)&&t.push({node:e,shadow:null})}}if(r){let e=_(n);vt(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(Ve=!e,Ve&&(e=``),typeof e!=`string`&&!yt(e)&&(e=Xt(e),typeof e!=`string`))throw qt(`dirty is not a string, aborting`);if(!t.isSupported)return e;ye?(I=be,L=xe):et(n),(M.uponSanitizeElement.length>0||M.uponSanitizeAttribute.length>0)&&(I=X(I)),M.uponSanitizeAttribute.length>0&&(L=X(L)),t.removed=[];let c=Ae&&typeof e!=`string`&&yt(e);if(c){ft(e);let t=b?b(e):e.nodeName;if(typeof t==`string`){let n=U(t);if(!I[n]||fe[n])throw ct(e),qt(`root node is forbidden and cannot be sanitized in-place`)}if(_t(e))throw ct(e),qt(`root node is clobbered and cannot be sanitized in-place`);try{Gt(e)}catch(t){throw ct(e),t}}else if(yt(e))i=pt(``),a=i.ownerDocument.importNode(e,!0),a.nodeType===Tn.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),Gt(a);else{if(!Ce&&!ge&&!ve&&e.indexOf(`<`)===-1)return x&&Te?D(e):e;if(i=pt(e),!i)return Ce?null:Te?S:``}i&&Se&&st(i.firstChild);let l=c?e:i,u=mt(l);try{for(;o=u.nextNode();)wt(o,l),Ut(o),vt(o.content)&&Wt(o.content)}catch(n){throw c&&(ct(e),At(t.removed,e=>{e.element&&dt(e.element)})),n}if(c)return At(t.removed,e=>{e.element&&dt(e.element)}),ge&>(e),e;if(Ce){if(ge&>(i),we)for(s=j.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(L.shadowroot||L.shadowrootmode)&&(s=re.call(r,s,!0)),s}let d=ve?i.outerHTML:i.innerHTML;return ve&&I[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&q(yn,i.ownerDocument.doctype.name)&&(d=` -`+d),ge&&(d=ht(d)),x&&Te?D(d):d},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};et(e),ye=!0,be=I,xe=L},t.clearConfig=function(){Ze=null,ye=!1,be=null,xe=null,x=C,S=``},t.isValidAttribute=function(e,t,n){Ze||et({});let r=U(e),i=U(t);return Tt(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&K(M,e)&&Nt(M[e],t)},t.removeHook=function(e,t){if(K(M,e)){if(t!==void 0){let n=jt(M[e],t);return n===-1?void 0:Pt(M[e],n,1)[0]}return Mt(M[e])}},t.removeHooks=function(e){K(M,e)&&(M[e]=[])},t.removeAllHooks=function(){M=On()},t}var jn=An(),Mn=2*1024*1024,Nn=64*1024*1024,Pn=24*1024*1024,Fn={bash:`bash`,c:`c`,cc:`cpp`,cpp:`cpp`,css:`css`,go:`go`,h:`c`,hpp:`cpp`,java:`java`,js:`javascript`,json:`json`,jsx:`javascript`,mjs:`javascript`,py:`python`,rb:`ruby`,rs:`rust`,sh:`bash`,sql:`sql`,toml:`ini`,ts:`typescript`,tsx:`typescript`,xml:`xml`,yaml:`yaml`,yml:`yaml`,zsh:`bash`},In=new Set([`application/javascript`,`application/json`,`application/ld+json`,`application/sql`,`application/toml`,`application/typescript`,`application/xml`,`application/x-httpd-php`,`application/x-javascript`,`application/x-sh`,`application/x-yaml`,`text/css`,`text/csv`,`text/javascript`,`text/typescript`,`text/x-python`,`text/x-shellscript`,`text/xml`,`text/yaml`]),Ln=new Set([`application/vnd.ms-excel.sheet.macroenabled.12`,`application/vnd.ms-excel.template.macroenabled.12`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,`application/vnd.openxmlformats-officedocument.spreadsheetml.template`]),Rn=new Set([`application/vnd.ms-powerpoint.presentation.macroenabled.12`,`application/vnd.ms-powerpoint.slideshow.macroenabled.12`,`application/vnd.ms-powerpoint.template.macroenabled.12`,`application/vnd.openxmlformats-officedocument.presentationml.presentation`,`application/vnd.openxmlformats-officedocument.presentationml.slideshow`,`application/vnd.openxmlformats-officedocument.presentationml.template`]);function zn(e){let t=e.toLowerCase().split(/[\\/]/).pop()||``,n=t.lastIndexOf(`.`);return n>0?t.slice(n+1):``}function Bn(e){return(e.content_type||``).split(`;`,1)[0].trim().toLowerCase()}function Vn(e){let t=zn(e.filename),n=Bn(e);return t===`docx`||n===`application/vnd.openxmlformats-officedocument.wordprocessingml.document`?`docx`:[`xlsx`,`xlsm`,`xltx`,`xltm`].includes(t)||Ln.has(n)?`spreadsheet`:[`pptx`,`pptm`,`potx`,`potm`,`ppsx`,`ppsm`].includes(t)||Rn.has(n)?`presentation`:t===`md`||t===`markdown`||n===`text/markdown`?`markdown`:t===`html`||t===`htm`||n===`text/html`?`html`:t===`pdf`||n===`application/pdf`?`pdf`:Fn[t]||In.has(n)?`code`:t===`txt`||t===`log`||n===`text/plain`||n.startsWith(`text/`)?`text`:`unsupported`}function Hn(e){let t=zn(e.filename);if(Fn[t])return Fn[t];let n=Bn(e);if(n.includes(`json`))return`json`;if(n.includes(`javascript`))return`javascript`;if(n.includes(`typescript`))return`typescript`;if(n.includes(`yaml`))return`yaml`;if(n.includes(`xml`))return`xml`;if(n.includes(`sql`))return`sql`}function Un(e){switch(e){case`code`:return`Code`;case`text`:return`Text`;case`markdown`:return`Markdown`;case`pdf`:return`PDF`;case`docx`:return`Word document`;case`spreadsheet`:return`Spreadsheet`;case`presentation`:return`Slide text outline`;case`html`:return`Web page`;default:return`File`}}function Wn(e){if(e===`pdf`)return Nn;if(e===`spreadsheet`||e===`presentation`)return Pn;if(e===`code`||e===`text`||e===`markdown`||e===`html`)return Mn}function Gn(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Kn=Gn();function qn(e){Kn=e}var Jn={exec:()=>null};function Yn(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function Z(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(Q.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var Xn=((e=``)=>{try{return!!RegExp(`(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Yn(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Yn(e=>RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:Yn(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:Yn(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:Yn(e=>RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,`i`)),blockquoteBeginRegex:Yn(e=>RegExp(`^ {0,${e}}>`))},Zn=/^(?:[ \t]*(?:\n|$))+/,Qn=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,$n=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,er=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,tr=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,nr=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,rr=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ir=Z(rr).replace(/bull/g,nr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),ar=Z(rr).replace(/bull/g,nr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),or=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,sr=/^[^\n]+/,cr=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,lr=Z(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,cr).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ur=Z(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,nr).getRegex(),dr=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,fr=/|$))/,pr=Z(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n+|$)|[^\\n]*\\n+|$)|[^\\n]*\\n+|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,fr).replace(`tag`,dr).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),mr=e=>Z(or).replace(`hr`,er).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,e).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,dr).getRegex(),hr=mr(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),gr=mr(/ {0,3}(?:[*+-]|\d{1,9}[.)])[ \t]+[^ \t\n]/),_r={blockquote:Z(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,gr).getRegex(),code:Qn,def:lr,fences:$n,heading:tr,hr:er,html:pr,lheading:ir,list:ur,newline:Zn,paragraph:hr,table:Jn,text:sr},vr=Z(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,er).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,dr).getRegex(),yr={..._r,lheading:ar,table:vr,paragraph:Z(or).replace(`hr`,er).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,vr).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]`).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,dr).getRegex()},br={..._r,html:Z(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,fr).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Jn,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Z(or).replace(`hr`,er).replace(`heading`,` *#{1,6} *[^ -]`).replace(`lheading`,ir).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},xr=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Sr=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Cr=/^( {2,}|\\)\n(?!\s*$)/,wr=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,Xn?"(?`+)[^`]+\k(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Nr=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Pr=Z(Nr,`u`).replace(/punct/g,Tr).getRegex(),Fr=Z(Nr,`u`).replace(/punct/g,kr).getRegex(),Ir=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,Lr=Z(Ir,`gu`).replace(/notPunctSpace/g,Dr).replace(/punctSpace/g,Er).replace(/punct/g,Tr).getRegex(),Rr=Z(Ir,`gu`).replace(/notPunctSpace/g,jr).replace(/punctSpace/g,Ar).replace(/punct/g,kr).getRegex(),zr=Z(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,Dr).replace(/punctSpace/g,Er).replace(/punct/g,Tr).getRegex(),Br=Z(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,Tr).getRegex(),Vr=Z(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Dr).replace(/punctSpace/g,Er).replace(/punct/g,Tr).getRegex(),Hr=Z(/\\(punct)/,`gu`).replace(/punct/g,Tr).getRegex(),Ur=Z(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Wr=Z(fr).replace(`(?:-->|$)`,`-->`).getRegex(),Gr=Z(`^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^`).replace(`comment`,Wr).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Kr=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,qr=Z(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,Kr).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Jr=Z(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Kr).replace(`ref`,cr).getRegex(),Yr=Z(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,cr).getRegex(),Xr=Z(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,Jr).replace(`nolink`,Yr).getRegex(),Zr=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Qr={_backpedal:Jn,anyPunctuation:Hr,autolink:Ur,blockSkip:Mr,br:Cr,code:Sr,del:Jn,delLDelim:Jn,delRDelim:Jn,emStrongLDelim:Pr,emStrongRDelimAst:Lr,emStrongRDelimUnd:zr,escape:xr,link:qr,nolink:Yr,punctuation:Or,reflink:Jr,reflinkSearch:Xr,tag:Gr,text:wr,url:Jn},$r={...Qr,link:Z(/^!?\[(label)\]\((.*?)\)/).replace(`label`,Kr).getRegex(),reflink:Z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,Kr).getRegex()},ei={...Qr,emStrongRDelimAst:Rr,emStrongLDelim:Fr,delLDelim:Br,delRDelim:Vr,url:Z(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,Zr).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Z(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":`>`,'"':`"`,"'":`'`},ai=e=>ii[e];function oi(e,t){if(t){if(Q.escapeTest.test(e))return e.replace(Q.escapeReplace,ai)}else if(Q.escapeTestNoEncode.test(e))return e.replace(Q.escapeReplaceNoEncode,ai);return e}function si(e){try{e=encodeURI(e).replace(Q.percentDecode,`%`)}catch{return null}return e}function ci(e,t){let n=e.replace(Q.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(Q.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length=0&&Q.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(` -`)}function di(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r0?-2:-1}function fi(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function pi(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function mi(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(` -`).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(` -`)}var hi=class{options;rules;lexer;constructor(e){this.options=e||Kn}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:ui(t[0]);return{type:`code`,raw:e,codeBlockStyle:`indented`,text:e.replace(this.rules.other.codeRemoveIndent,``)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=mi(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=li(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:li(t[0],` -`),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:li(t[0],` -`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=li(t[0],` -`).split(` -`),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o;for(o=0;o1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=fi(t[2].split(` -`,1)[0],t[1].length),l=e.split(` -`,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+` -`,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),f=this.rules.other.blockquoteBeginRegex(d);for(;e;){let p=e.split(` -`,1)[0],m;if(l=p,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),m=l):m=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||f.test(l)||t.test(l)||n.test(l))break;if(m.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=` -`+m.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=` -`+l}u=!l.trim(),r+=p+` -`,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items){this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]);let t=e.tokens[0];if(e.task&&(t?.type===`text`||t?.type===`paragraph`)){e.text=e.text.replace(this.rules.other.listReplaceTask,``),t.raw=t.raw.replace(this.rules.other.listReplaceTask,``),t.text=t.text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:`checkbox`,raw:n[0]+` `,checked:n[0]!==`[ ]`};e.checked=t.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:`paragraph`,raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}else e.task&&=!1;if(!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=ui(t[0]);return{type:`html`,block:!0,raw:e,pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:li(t[0],` -`),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=ci(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(` -`):[],a={type:`table`,raw:li(t[0],` -`),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:li(t[0],` -`),depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===` -`?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=li(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=di(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),pi(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return pi(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=0,c=r[0][0]===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+n);(r=c.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(a=[...i].length,r[3]||r[4]){o+=a;continue}else if((r[5]||r[6])&&n%3&&!((n+a)%3)){s+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o+s);let t=[...r[0]][0].length,c=e.slice(0,n+r.index+t+a);if(Math.min(n,a)%2){let e=c.slice(1,-1);return{type:`em`,raw:c,text:e,tokens:this.lexer.inlineTokens(e)}}let l=c.slice(2,-2);return{type:`strong`,raw:c,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},gi=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Kn,this.options.tokenizer=this.options.tokenizer||new hi,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:Q,block:ni.normal,inline:ri.normal};this.options.pedantic?(t.block=ni.pedantic,t.inline=ri.pedantic):this.options.gfm&&(t.block=ni.gfm,this.options.breaks?t.inline=ri.breaks:t.inline=ri.gfm),this.tokenizer.rules=t}static get rules(){return{block:ni,inline:ri}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(Q.carriageReturn,` -`),this.blockTokens(e,this.tokens);for(let e=0;e(i=n.call({lexer:this},e,t))?(e=e.substring(i.raw.length),t.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let n=t.at(-1);i.raw.length===1&&n!==void 0?n.raw+=` -`:t.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(` -`)?``:` -`)+i.raw,n.text+=` -`+i.text,this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(` -`)?``:` -`)+i.raw,n.text+=` -`+i.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},t.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),t.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(a=e.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let r=t.at(-1);n&&r?.type===`paragraph`?(r.raw+=(r.raw.endsWith(` -`)?``:` -`)+i.raw,r.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(` -`)?``:` -`)+i.raw,n.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e,r=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)e.includes(r[0].slice(r[0].lastIndexOf(`[`)+1,-1))&&(n=n.slice(0,r.index)+`[`+`a`.repeat(r[0].length-2)+`]`+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,r.index)+`++`+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+`[`+`a`.repeat(r[0].length-i-2)+`]`+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,o=``,s=1/0;for(;e;){if(e.length(r=n.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.escape(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.link(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);let n=t.at(-1);r.type===`text`&&n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(e)){e=e.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(e))){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(r=this.tokenizer.inlineText(i)){e=e.substring(r.raw.length),r.raw.slice(-1)!==`_`&&(o=r.raw.slice(-1)),a=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=`Infinite loop on byte: `+e;if(this.options.silent)console.error(t);else throw Error(t)}},_i=class{options;parser;constructor(e){this.options=e||Kn}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(Q.notSpaceStart)?.[0],i=e.replace(Q.endingNewline,``)+` -`;return r?`
        `+(n?i:oi(i,!0))+`
        -`:`
        `+(n?i:oi(i,!0))+`
        -`}blockquote({tokens:e}){return`
        -${this.parser.parse(e)}
        -`}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)} -`}hr(e){return`
        -`}list(e){let t=e.ordered,n=e.start,r=``;for(let t=0;t -`+r+` -`}listitem(e){return`
      1. ${this.parser.parse(e.tokens)}
      2. -`}checkbox({checked:e}){return` `}paragraph({tokens:e}){return`

        ${this.parser.parseInline(e)}

        -`}table(e){let t=``,n=``;for(let t=0;t${r}`,` - -`+t+` -`+r+`
        -`}tablerow({text:e}){return` -${e} -`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+` -`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${oi(e,!0)}`}br(e){return`
        `}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=si(e);if(i===null)return r;e=i;let a=`
        `+r+``,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=si(e);if(i===null)return oi(n);e=i;let a=`${oi(n)}`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:oi(e.text)}},vi=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},yi=class e{options;renderer;textRenderer;constructor(e){this.options=e||Kn,this.options.renderer=this.options.renderer||new _i,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new vi}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new _i(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new hi(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new bi;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];bi.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&bi.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return gi.lex(e,t??this.defaults)}parser(e,t){return yi.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?gi.lex:gi.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?yi.parse:yi.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?gi.lex:gi.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?yi.parse:yi.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=` -Please report this to https://github.com/markedjs/marked.`,e){let e=`

        An error occurred:

        `+oi(n.message+``,!0)+`
        `;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function $(e,t){return xi.parse(e,t)}$.options=$.setOptions=function(e){return xi.setOptions(e),$.defaults=xi.defaults,qn($.defaults),$},$.getDefaults=Gn,$.defaults=Kn,$.use=function(...e){return xi.use(...e),$.defaults=xi.defaults,qn($.defaults),$},$.walkTokens=function(e,t){return xi.walkTokens(e,t)},$.parseInline=xi.parseInline,$.Parser=yi,$.parser=yi.parse,$.Renderer=_i,$.TextRenderer=vi,$.Lexer=gi,$.lexer=gi.lex,$.Tokenizer=hi,$.Hooks=bi,$.parse=$,$.options,$.setOptions,$.use,$.walkTokens,$.parseInline,yi.parse,gi.lex;function Si(e){return jn.sanitize($.parse(e,{async:!1,breaks:!0,gfm:!0}))}function Ci(e){return new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(new Date(e))}var wi=i(``);function Ti(e,n){m(n,!0);let r=D(null),i=D(null),a=D(null),s=typeof document<`u`&&document.activeElement instanceof HTMLElement?document.activeElement:null,u=s?.closest(`.thread`),d=s?.closest(`.timeline`),f=u?.querySelector(`[aria-label="Reply body"]:not(:disabled)`)??u?.querySelector(`[aria-label="Close thread"]`)??d?.querySelector(`[aria-label="Message body"]:not(:disabled)`)??d?.querySelector(`[aria-label="Search messages"]`)??(typeof document<`u`?document.querySelector(`[aria-label="Reply body"]:not(:disabled)`)??document.querySelector(`[aria-label="Message body"]:not(:disabled)`)??document.querySelector(`[aria-label="Close thread"]`)??document.querySelector(`[aria-label="Search messages"]`):null),h=new Set;te(()=>{let e=p(r)?.parentElement;if(e)for(let t of e.children)!(t instanceof HTMLElement)||t===p(r)||t.inert||(t.inert=!0,h.add(t));p(a)?.focus({preventScroll:!0})}),ee(()=>{for(let e of h)e.inert=!1;h.clear(),!(s?.isConnected&&s!==document.body&&(s.focus({preventScroll:!0}),document.activeElement===s))&&f?.isConnected&&f.focus({preventScroll:!0})});function _(e){if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),n.onClose();return}if(e.key!==`Tab`||!p(i))return;let t=Array.from(p(i).querySelectorAll(`a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.inert&&e.getClientRects().length>0);if(t.length===0){e.preventDefault(),p(i).focus();return}let r=t[0],a=t[t.length-1];e.shiftKey&&(document.activeElement===r||!p(i).contains(document.activeElement))?(e.preventDefault(),a.focus()):!e.shiftKey&&(document.activeElement===a||!p(i).contains(document.activeElement))&&(e.preventDefault(),r.focus())}var v=wi(),b=j(v),x=g(b,2),C=j(x),w=j(C),T=j(w,!0);M(w);var E=g(w,2),O=j(E),A=g(O,2);ne(A,e=>y(a,e),()=>p(a)),M(E),M(C);var re=g(C,2),N=j(re);M(re),M(x),ne(x,e=>y(i,e),()=>p(i)),M(v),ne(v,e=>y(r,e),()=>p(r)),l(()=>{k(x,`aria-label`,`Image viewer: ${n.title}`),o(T,n.title),k(O,`href`,n.url),k(N,`src`,n.url),k(N,`alt`,n.title)}),t(`click`,b,function(...e){n.onClose?.apply(this,e)}),t(`keydown`,x,_),t(`click`,A,function(...e){n.onClose?.apply(this,e)}),c(e,v),S()}P([`click`,`keydown`]);var Ei=512,Di=new Map;function Oi(e){let t=ae(e?.trim()||``);if(!t)return``;let n=Di.get(t);if(n)return n;if(Di.size>=Ei){let e=Di.keys().next().value;e&&Di.delete(e)}return Di.set(t,t),t}var ki=i(``),Ai=i(``),ji=i(``);function Mi(e,i){m(i,!0);let a=h(i,`class`,3,`avatar`),s=h(i,`size`,3,40),d=h(i,`loading`,3,`lazy`),g=h(i,`fetchPriority`,3,`low`),v=D(``),b=x(()=>Oi(i.src)),C=x(()=>p(b)!==``&&p(v)!==p(b)),E=x(()=>_e(i.id||i.name||p(b)||`avatar`)),ee=x(()=>me(i.name));function O(){y(v,p(b),!0)}var A=n(),te=w(A),ne=e=>{var n=Ai(),m=j(n),h=e=>{var t=ki();l(()=>{k(t,`src`,p(b)),k(t,`width`,s()),k(t,`height`,s()),k(t,`loading`,d()),k(t,`fetchpriority`,g())}),f(`error`,t,O),r(t),c(e,t)},v=e=>{var t=u();l(()=>o(t,p(ee))),c(e,t)};T(m,e=>{p(C)?e(h):e(v,-1)}),M(n),l(()=>{_(n,1,re(a())),N(n,`--hue: ${p(E)??``}deg`),k(n,`aria-label`,i.buttonLabel)}),t(`click`,n,function(...e){i.onclick?.apply(this,e)}),c(e,n)},P=e=>{var t=ji(),n=j(t),i=e=>{var t=ki();l(()=>{k(t,`src`,p(b)),k(t,`width`,s()),k(t,`height`,s()),k(t,`loading`,d()),k(t,`fetchpriority`,g())}),f(`error`,t,O),r(t),c(e,t)},m=e=>{var t=u();l(()=>o(t,p(ee))),c(e,t)};T(n,e=>{p(C)?e(i):e(m,-1)}),M(t),l(()=>{_(t,1,re(a())),N(t,`--hue: ${p(E)??``}deg`)}),c(e,t)};T(te,e=>{i.buttonLabel?e(ne):e(P,-1)}),c(e,A),S()}P([`click`]);var Ni=[`👍`,`❤️`,`😂`,`😮`,`😢`,`🙏`,`🎉`,`🔥`,`💯`,`👀`,`🚀`,`✅`],Pi=[`👍`,`✅`,`👀`],Fi=[...Pi,...Ni.filter(e=>!Pi.includes(e))].slice(0,6),Ii=i(``),Li=i(`
        `);function Ri(n,r){m(r,!0);let i=h(r,`placement`,3,`above`),u=h(r,`disabled`,3,!1),d=D(void 0);function f(e){e.key===`Escape`&&(e.preventDefault(),r.onEscape())}e(()=>{(async()=>{await a(),p(d)?.querySelector(`.emoji-option`)?.focus()})()});var g=Li();let v;s(g,21,()=>Ni,E,(e,n)=>{var i=Ii(),a=j(i,!0);M(i),l(()=>{k(i,`aria-label`,`React with ${p(n)}`),k(i,`title`,p(n)),i.disabled=u(),o(a,p(n))}),t(`click`,i,()=>r.onPick(p(n))),t(`keydown`,i,f),c(e,i)}),M(g),ne(g,e=>y(d,e),()=>p(d)),l(()=>{v=_(g,1,`emoji-grid svelte-1caswp`,null,v,{below:i()===`below`,"above-right":i()===`above-right`}),k(g,`id`,r.id)}),c(n,g),S()}P([`click`,`keydown`]);var zi=i(` `),Bi=i(``),Vi=i(`
        `),Hi=i(` `),Ui=i(`
        `);function Wi(r,i){m(i,!0);let a=h(i,`reactions`,19,()=>[]),u=h(i,`pending`,3,!1),d=h(i,`error`,3,``),f=h(i,`disabled`,3,!1),v=x(()=>[...a()].sort((e,t)=>t.count-e.count||e.emoji.localeCompare(t.emoji))),b=D(!1),C=D(void 0),ee=D(void 0),O=x(()=>`reaction-picker-${i.messageId}`);function A(){f()||u()||y(b,!p(b))}function te(e){f()||u()||(i.onToggle(e),y(b,!1))}function re(){y(b,!1),p(ee)?.focus()}function N(e){p(C)&&!p(C).contains(e.target)&&y(b,!1)}e(()=>{if(p(b))return document.addEventListener(`click`,N),()=>document.removeEventListener(`click`,N)}),e(()=>{(f()||u())&&y(b,!1)});var P=n(),ie=w(P),ae=e=>{var n=Ui(),r=j(n);s(r,17,()=>p(v),E,(e,n)=>{let r=()=>p(n).emoji,a=()=>p(n).count,s=()=>p(n).reacted_by_me;var d=Bi();let m;var h=j(d),v=j(h,!0);M(h);var y=g(h,2),b=e=>{var t=zi(),n=j(t,!0);M(t),l(()=>o(n,a())),c(e,t)};T(y,e=>{a()>1&&e(b)}),M(d),l(()=>{m=_(d,1,`reaction-btn svelte-nxju2c`,null,m,{me:s()}),d.disabled=f()||u(),k(d,`aria-pressed`,s()),k(d,`aria-label`,`${r()??``} — ${a()??``} reaction${a()===1?``:`s`}`),k(d,`title`,r()),o(v,r())}),t(`click`,d,()=>i.onToggle(r())),c(e,d)});var a=g(r,2),m=e=>{var n=Vi(),r=j(n);ne(r,e=>y(ee,e),()=>p(ee));var i=g(r,2),a=e=>{{let t=x(()=>f()||u());Ri(e,{get id(){return p(O)},get disabled(){return p(t)},onPick:te,onEscape:re})}};T(i,e=>{p(b)&&e(a)}),M(n),ne(n,e=>y(C,e),()=>p(C)),l(()=>{k(r,`aria-controls`,p(O)),k(r,`aria-expanded`,p(b)),r.disabled=f()||u()}),t(`click`,r,A),c(e,n)};T(a,e=>{p(v).length>0&&!f()&&e(m)});var h=g(a,2),S=e=>{var t=Hi(),n=j(t,!0);M(t),l(()=>o(n,d())),c(e,t)};T(h,e=>{d()&&e(S)}),M(n),c(e,n)};T(ie,e=>{(p(v).length>0||d())&&e(ae)}),c(r,P),S()}P([`click`]);function Gi(e){return document.body.appendChild(e),{destroy(){e.remove()}}}var Ki=i(``),qi=i(``),Ji=i(` `),Yi=i(``),Xi=i(``),Zi=i(``);function Qi(e,n){m(n,!0);let r=h(n,`canReact`,3,!1),i=h(n,`canReply`,3,!1),a=h(n,`showOpenThread`,3,!0),u=h(n,`canOpenThread`,3,!1),f=h(n,`canEdit`,3,!1),v=h(n,`canDelete`,3,!1),b=h(n,`deleting`,3,!1),x=h(n,`copyStatus`,3,``),C=D(void 0),w=D(void 0),O=!0,A=new Set;function re(e){if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),n.onClose();return}if(e.key!==`Tab`||!p(w))return;let t=[...p(w).querySelectorAll(`a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])`)].filter(e=>!e.inert&&e.getClientRects().length>0);if(t.length===0){e.preventDefault(),p(w).focus();return}let r=t[0],i=t[t.length-1];e.shiftKey&&(document.activeElement===r||!p(w).contains(document.activeElement))?(e.preventDefault(),i.focus()):!e.shiftKey&&(document.activeElement===i||!p(w).contains(document.activeElement))&&(e.preventDefault(),r.focus())}function N(e,t=!1){O=t,e()}te(()=>{let e=p(C)?.parentElement;if(e)for(let t of e.children)!(t instanceof HTMLElement)||t===p(C)||t.inert||(t.inert=!0,A.add(t));p(w)?.querySelector(`button:not(:disabled)`)?.focus({preventScroll:!0})}),ee(()=>{for(let e of A)e.inert=!1;A.clear(),O&&n.returnFocus?.isConnected&&n.returnFocus.focus({preventScroll:!0})});var P=Zi(),ie=j(P),ae=g(ie,2),F=g(j(ae),2);s(F,21,()=>Fi,E,(e,i)=>{var a=Ki(),s=j(a,!0);M(a),l(()=>{k(a,`aria-label`,`React with ${p(i)}`),a.disabled=!r(),o(s,p(i))}),t(`click`,a,()=>N(()=>n.onReact(p(i)),!0)),c(e,a)}),M(F);var oe=g(F,2),se=j(oe),ce=e=>{var r=qi();l(()=>r.disabled=!u()),t(`click`,r,()=>N(n.onOpenThread)),c(e,r)};T(se,e=>{a()&&e(ce)});var le=g(se,2),I=g(le,2),ue=g(j(I),2),L=e=>{var t=Ji();let n;var r=j(t,!0);M(t),l(()=>{n=_(t,1,`sheet-copy-status`,null,n,{"is-error":x()===`failed`}),o(r,x()===`copied`?`Copied`:`Couldn't copy`)}),c(e,t)};T(ue,e=>{x()&&e(L)}),M(I);var de=g(I,2),R=e=>{var r=Yi();t(`click`,r,()=>N(n.onEdit)),c(e,r)};T(de,e=>{f()&&e(R)});var fe=g(de,2),pe=e=>{var r=Xi();l(()=>r.disabled=b()),t(`click`,r,()=>N(n.onDelete)),c(e,r)};T(fe,e=>{v()&&e(pe)}),M(oe),M(ae),ne(ae,e=>y(w,e),()=>p(w)),M(P),ne(P,e=>y(C,e),()=>p(C)),d(P,e=>Gi?.(e)),l(()=>{k(ae,`id`,n.id),le.disabled=!i()}),t(`keydown`,P,re),t(`click`,ie,function(...e){n.onClose?.apply(this,e)}),t(`click`,le,()=>N(n.onReply)),t(`click`,I,function(...e){n.onCopy?.apply(this,e)}),c(e,P),S()}P([`keydown`,`click`]);function $i(e,t){if(!e)return!1;let n=window.innerHeight,r=e.parentElement;for(;r;){let e=getComputedStyle(r).overflowY;if(e===`auto`||e===`scroll`||e===`hidden`){n=r.getBoundingClientRect().bottom;break}r=r.parentElement}let i=e.getBoundingClientRect();return n-i.bottomt}var ea=i(`
        `),ta=i(``),na=i(` `,1),ra=i(`
        `,2),ia=i(`
        `),aa=i(`
        `),oa=i(` `);function sa(e,r){m(r,!0);let i=h(r,`onOpenImage`,3,()=>{}),a=h(r,`onOpenArtifact`,3,()=>{}),s=D(null),u=D(!1),d=D(``),v=x(()=>p(d)||P(r.upload.duration_ms??0)),b=x(()=>(r.upload.content_type||``).split(`;`)[0].trim().toLowerCase()),C=x(()=>Vn(r.upload)),E=x(()=>p(C)===`unsupported`&&p(b).startsWith(`image/`)),ee=x(()=>p(C)===`unsupported`&&p(b).startsWith(`video/`)),O=x(()=>p(C)===`unsupported`&&p(b).startsWith(`audio/`)),A=x(()=>p(C)===`code`||p(C)===`text`||p(C)===`markdown`||p(C)===`pdf`||p(C)===`spreadsheet`||p(C)===`presentation`||p(C)===`html`),te=x(()=>Un(p(C))),re=x(()=>{let e=r.upload.width??0,t=r.upload.height??0;if(e<=0||t<=0)return``;let n=p(E)?320:360;return`aspect-ratio: ${e} / ${t}; max-height: ${Math.min(n,Math.max(120,t))}px;`});function P(e){if(!e||e<=0)return``;let t=Math.floor(e/1e3);return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}function ie(){y(u,!0)}function ae(){!p(s)||!isFinite(p(s).duration)||y(d,P(p(s).duration*1e3),!0)}function F(){p(s)&&(y(u,!0),p(s).play())}function oe(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}var se=n(),ce=w(se),le=e=>{var n=ea(),a=j(n),s=j(a);M(a);var u=g(a,2),d=j(u),f=j(d,!0);M(d);var m=g(d,2);M(u),M(n),l(()=>{k(a,`aria-label`,`Open image ${r.upload.filename}`),k(s,`src`,r.url),k(s,`alt`,r.upload.filename),k(s,`width`,r.upload.width||void 0),k(s,`height`,r.upload.height||void 0),N(s,p(re)),o(f,r.upload.filename),k(m,`href`,r.url),k(m,`download`,r.upload.filename),k(m,`aria-label`,`Download ${r.upload.filename}`)}),t(`click`,a,()=>i()(r.url,r.upload.filename)),t(`click`,m,e=>e.stopPropagation()),c(e,n)},I=e=>{var n=ra();let i;var a=j(n),d=j(a);M(a),ne(a,e=>y(s,e),()=>p(s));var m=g(a,2),h=e=>{var n=na(),i=w(n),a=g(i,2),s=e=>{var t=ta(),n=j(t,!0);M(t),l(()=>o(n,p(v))),c(e,t)};T(a,e=>{p(v)&&e(s)}),l(()=>k(i,`aria-label`,`Play ${r.upload.filename}`)),t(`click`,i,F),c(e,n)};T(m,e=>{p(u)||e(h)});var x=g(m,2),S=j(x),C=j(S,!0);M(S);var E=g(S,2);M(x),M(n),l(()=>{i=_(n,1,`media-tile media-tile--video`,null,i,{"is-started":p(u)}),a.controls=p(u),k(a,`aria-label`,r.upload.filename),k(a,`width`,r.upload.width||void 0),k(a,`height`,r.upload.height||void 0),N(a,p(re)),k(d,`src`,r.url),k(d,`type`,p(b)),o(C,r.upload.filename),k(E,`href`,r.url),k(E,`download`,r.upload.filename),k(E,`aria-label`,`Download ${r.upload.filename}`)}),f(`play`,a,ie),f(`loadedmetadata`,a,ae),t(`click`,E,e=>e.stopPropagation()),c(e,n)},ue=e=>{var t=ia(),n=j(t),i=g(j(n),2),a=j(i),s=j(a,!0);M(a);var u=g(a,2),d=j(u,!0);M(u),M(i),M(n);var f=g(n,2),p=j(f),m=j(p,!0);M(p),M(f),M(t),l(e=>{o(s,r.upload.filename),o(d,e),k(f,`src`,r.url),k(p,`href`,r.url),o(m,r.upload.filename)},[()=>oe(r.upload.byte_size)]),c(e,t)},L=e=>{var n=aa(),i=j(n),s=j(i),u=j(s,!0);M(s),M(i);var d=g(i,2),f=j(d),m=j(f,!0);M(f);var h=g(f,2),_=j(h,!0);M(h),M(d);var v=g(d,2);M(n),l(e=>{k(i,`data-artifact-upload-id`,r.upload.id),k(i,`aria-label`,`Open ${r.upload.filename}`),o(u,p(te)),k(f,`data-artifact-upload-id`,r.upload.id),o(m,r.upload.filename),o(_,e),k(v,`href`,r.url),k(v,`download`,r.upload.filename),k(v,`aria-label`,`Download ${r.upload.filename}`)},[()=>oe(r.upload.byte_size)]),t(`click`,i,()=>a()(r.upload)),t(`click`,f,()=>a()(r.upload)),c(e,n)},de=e=>{var t=oa(),n=g(j(t),2),i=j(n),a=j(i,!0);M(i);var s=g(i,2),u=j(s,!0);M(s),M(n),M(t),l(e=>{k(t,`href`,r.url),k(t,`download`,r.upload.filename),k(t,`aria-label`,`Download ${r.upload.filename}`),o(a,r.upload.filename),o(u,e)},[()=>oe(r.upload.byte_size)]),c(e,t)};T(ce,e=>{p(E)?e(le):p(ee)?e(I,1):p(O)?e(ue,2):p(A)?e(L,3):e(de,-1)}),c(e,se),S()}P([`click`]);var ca=i(``),la=i(`
        `);function ua(e,n){m(n,!0);let r=D(void 0);te(async()=>{await a(),p(r)?.focus(),p(r)?.setSelectionRange(p(r).value.length,p(r).value.length)});async function i(){await n.onSave()}function s(e){if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),n.onCancel();return}e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),i())}var d=la(),f=j(d);A(f),ne(f,e=>y(r,e),()=>p(r));var h=g(f,2),_=j(h),v=j(_),b=e=>{c(e,u(`Saving…`))},x=e=>{c(e,u(`Save`))};T(v,e=>{n.saving?e(b):e(x,-1)}),M(_);var w=g(_,2);M(h);var E=g(h,2),ee=e=>{var t=ca(),r=j(t,!0);M(t),l(()=>o(r,n.errorMessage)),c(e,t)};T(E,e=>{n.errorMessage&&e(ee)}),M(d),l(e=>{k(d,`aria-busy`,n.saving),C(f,n.body),f.disabled=n.saving,k(f,`aria-invalid`,n.errorMessage?`true`:void 0),k(f,`aria-describedby`,n.errorMessage?`message-edit-error`:void 0),_.disabled=e,w.disabled=n.saving},[()=>n.saving||!Ce(n.body)]),t(`input`,f,e=>n.onBody(e.currentTarget.value)),t(`keydown`,f,s),t(`click`,_,i),t(`click`,w,function(...e){n.onCancel?.apply(this,e)}),c(e,d),S()}P([`input`,`keydown`,`click`]);var da=i(` `),fa=i(` `),pa=i(``);function ma(e,r){m(r,!0);var i=n(),a=w(i),s=e=>{var n=pa();let i;var a=g(j(n),2),s=j(a),u=j(s,!0);M(s);var d=g(s,2),f=e=>{var t=da(),n=j(t,!0);M(t),l(e=>o(n,e),[()=>Ze(r.message.quoted_body_snapshot)]),c(e,t)},p=e=>{var t=fa(),n=j(t);M(t),l(e=>o(n,`[original deleted] ${e??``}`),[()=>Ze(r.message.quoted_body_snapshot)]),c(e,t)};T(d,e=>{r.message.quoted_message_id?e(f):e(p,-1)}),M(a),M(n),l((e,t)=>{i=_(n,1,`quote-block`,null,i,{dangling:!r.message.quoted_message_id}),n.disabled=!r.message.quoted_message_id,k(n,`aria-label`,e),o(u,t)},[()=>r.message.quoted_message_id?`Jump to quoted message from ${Qe(r.message)}`:`Original message was deleted`,()=>Qe(r.message)]),t(`click`,n,()=>r.onJump(r.message)),c(e,n)};T(a,e=>{(r.message.quoted_message_id||r.message.quoted_body_snapshot)&&e(s)}),c(e,i),S()}P([`click`]);export{xe as A,Ke as C,we as D,je as E,B as F,z as I,R as L,ye as M,he as N,_e as O,V as P,L as R,$e as S,Pe as T,jn as _,Qi as a,et as b,Pi as c,Si as d,Ci as f,Vn as g,Wn as h,$i as i,ve as j,be as k,Mi as l,Hn as m,ua as n,Wi as o,Un as p,sa as r,Ri as s,ma as t,Ti as u,mt as v,We as w,tt as x,it as y,ue as z}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/CEzVcVFQ.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/CEzVcVFQ.js deleted file mode 100644 index 1d40b879..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/CEzVcVFQ.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,B as t,D as n,F as r,I as i,K as a,N as o,O as s,P as c,Q as l,R as u,S as d,St as f,V as p,W as m,_t as h,a as g,at as _,b as v,bt as ee,ct as y,ft as b,gt as x,it as S,j as C,k as te,lt as w,n as ne,ot as T,p as E,rt as D,s as O,xt as k,y as A,z as j}from"./CySd1wef.js";import"./xihTtKlq.js";import{M,N as re,R as ie,S as ae,a as oe,b as se,c as ce,d as le,f as N,i as P,l as F,n as ue,o as I,r as de,s as fe,t as pe,w as me,x as he,y as ge}from"./C5AMwlHa.js";import{t as _e}from"./DlGnnCJo.js";import{t as ve}from"./YGHvv9X0.js";var L=i(`
        `),R=i(`
        `);function ye(e,t){let n=g(t,`rows`,3,3);var r=R();s(r,21,()=>Array.from({length:n()}),te,(e,t,n)=>{var r=L();A(r,`--history-row: ${n}`),c(e,r)}),k(r),l(()=>{v(r,1,`history-loader history-loader--${t.direction}`),E(r,`aria-label`,t.direction===`older`?`Loading older messages`:`Loading newer messages`)}),c(e,r)}var z={bash:{glyph:`🖥`,action:`Ran shell command`},exec:{glyph:`🖥`,action:`Ran shell command`},command:{glyph:`🖥`,action:`Ran shell command`},bashsession:{glyph:`🖥`,action:`Managed shell session`},sessions_send:{glyph:`🖥`,action:`Managed shell session`},read:{glyph:`📖`,action:`Read file`},write:{glyph:`📝`,action:`Wrote file`},edit:{glyph:`✏`,action:`Edited file`},apply_patch:{glyph:`🧩`,action:`Applied patch`},applypatch:{glyph:`🧩`,action:`Applied patch`},browsercontrol:{glyph:`🌐`,action:`Controlled browser`},websearch:{glyph:`🔍`,action:`Searched the web`},webfetch:{glyph:`🔗`,action:`Fetched a page`},image:{glyph:`🖼`,action:`Analyzed image`},imagecreate:{glyph:`🎨`,action:`Generated image`},scheduler:{glyph:`⏰`,action:`Scheduled a job`},sendmessage:{glyph:`📤`,action:`Sent a message`},message:{glyph:`📤`,action:`Sent a message`},systemctl:{glyph:`⚙`,action:`Controlled the system`},process:{glyph:`⚙`,action:`Managed a process`},devicecontrol:{glyph:`📱`,action:`Controlled a device`},pdfparse:{glyph:`📄`,action:`Parsed a PDF`},statuscheck:{glyph:`📊`,action:`Checked status`}},B=[{test:e=>e.includes(`search`),glyph:`🔍`,action:`Searched`},{test:e=>e.includes(`fetch`),glyph:`🔗`,action:`Fetched`},{test:e=>e.includes(`browser`),glyph:`🌐`,action:`Controlled browser`},{test:e=>e.includes(`patch`),glyph:`🧩`,action:`Applied patch`},{test:e=>e.includes(`write`),glyph:`📝`,action:`Wrote file`},{test:e=>e.includes(`edit`),glyph:`✏`,action:`Edited file`},{test:e=>e.includes(`read`),glyph:`📖`,action:`Read file`},{test:e=>e.includes(`session`),glyph:`🖥`,action:`Managed shell session`},{test:e=>e.includes(`bash`)||e.includes(`shell`)||e.includes(`exec`),glyph:`🖥`,action:`Ran command`},{test:e=>e.includes(`image`),glyph:`🖼`,action:`Worked with image`},{test:e=>e.includes(`message`)||e.includes(`send`),glyph:`📤`,action:`Sent a message`},{test:e=>e.includes(`agent`)||e.includes(`subagent`),glyph:`🤖`,action:`Ran a sub-agent`},{test:e=>e.includes(`schedul`)||e.includes(`cron`),glyph:`⏰`,action:`Scheduled a job`},{test:e=>e.includes(`device`),glyph:`📱`,action:`Controlled a device`},{test:e=>e.includes(`file`)||e.includes(`dir`),glyph:`📁`,action:`Worked with files`}];function V(e,t){let n=String(e||``).trim(),r=n.toLowerCase().replace(/[^a-z0-9_]/g,``),i=String(t||``).trim()||void 0,a=z[r];if(a)return{name:n,glyph:a.glyph,action:a.action,detail:i};for(let e of B)if(e.test(r))return{name:n,glyph:e.glyph,action:e.action,detail:i};return{name:n||`tool`,glyph:`🔧`,action:`Used tool`,detail:i}}var be=i(`
        `),xe=i(` `),Se=i(` `),Ce=i(`
        `),H=i(`
        `),U=i(`
        `),we=i(`
        `),W=i(`
        `),Te=i(`
        `);function Ee(i,a){h(a,!0);let u=w(!0),f=w(void 0);e(()=>{(m(f)===void 0||a.block.final!==m(f))&&(y(f,a.block.final,!0),y(u,!a.block.final))});let p=T({});function g(e){p[e]=!p[e]}function ee(e){let t=e.match(/^\*\*([^]*?)\*\*\s*\n*([^]*)$/);if(!t)return{text:e};let n=t[1].trim(),r=t[2].trim();return{head:n||void 0,text:r}}let te=b(()=>a.block.items.map(e=>e.type===`tool`?{item:e,tool:V(e.name,e.detail)}:{item:e,tool:null})),ne=b(()=>a.block.final?m(u)?`expanded`:`collapsed`:`live`),O=b(()=>m(u)?`Hide preamble`:`Show preamble`);var A=Te();let j;var M=D(A),re=D(M);let ae;var oe=_(re,2);let se;var ce=D(oe,!0);k(oe);var N=_(oe,2),P=D(N,!0);k(N),k(M);var F=_(M,2),ue=e=>{var i=W();s(i,21,()=>m(te),e=>e.item.id,(e,i)=>{var a=r(),s=S(a),u=e=>{var t=be();n(t,()=>le(m(i).item.body),!0),k(t),d(t,e=>ie?.(e)),c(e,t)},f=e=>{let r=b(()=>p[m(i).item.id]===!0);var a=we();let s;var u=D(a),f=D(u);let h;var y=_(f,2),x=D(y,!0);k(y);var S=_(y,2),te=D(S,!0);k(S);var w=_(S,2),ne=e=>{var t=xe(),n=D(t,!0);k(t),l(()=>o(n,m(i).tool.name)),c(e,t)};C(w,e=>{m(i).tool.name&&m(i).tool.name!==`tool`&&e(ne)});var T=_(w,2),O=e=>{var t=Se(),n=D(t,!0);k(t),l(()=>{E(t,`title`,m(i).tool.detail),o(n,m(i).tool.detail)}),c(e,t)};C(T,e=>{!m(r)&&m(i).tool.detail&&e(O)}),k(u);var A=_(u,2),j=e=>{let t=b(()=>ee(m(i).item.full));var r=U(),a=D(r),s=e=>{var n=Ce(),r=D(n,!0);k(n),l(()=>o(r,m(t).head)),c(e,n)};C(a,e=>{m(t).head&&e(s)});var u=_(a,2),f=e=>{var r=H();n(r,()=>le(m(t).text),!0),k(r),d(r,e=>ie?.(e)),c(e,r)};C(u,e=>{m(t).text&&e(f)}),k(r),c(e,r)};C(A,e=>{m(r)&&e(j)}),k(a),l(()=>{s=v(a,1,`preamble-tool`,null,s,{expanded:m(r)}),E(u,`aria-expanded`,m(r)),h=v(f,1,`tool-line-chevron`,null,h,{open:m(r)}),o(x,m(i).tool.glyph),o(te,m(i).tool.action)}),t(`click`,u,()=>g(m(i).item.id)),c(e,a)};C(s,e=>{m(i).item.type===`commentary`?e(u):m(i).tool&&e(f,1)}),c(e,a)}),k(i),c(e,i)};C(F,e=>{m(u)&&e(ue)}),k(A),l(()=>{j=v(A,1,`preamble-contract`,null,j,{"is-final":a.block.final}),E(M,`aria-expanded`,m(u)),ae=v(re,1,`preamble-chevron`,null,ae,{open:m(u)}),se=v(oe,1,`preamble-state`,null,se,{"is-live":!a.block.final}),o(ce,m(ne)),o(P,m(O))}),t(`click`,M,()=>y(u,!m(u))),c(i,A),x()}j([`click`]);var De=i(`
        This message was deleted.
        `),Oe=i(`(edited)`),ke=i(`
        `),G=i(``),Ae=i(``),je=i(``),Me=i(`
        `,1),Ne=i(``),Pe=i(` `,1),Fe=i(``),K=i(` `),Ie=i(``),Le=i(` `,1),q=i(` `,1),Re=i(`
        `),ze=i(`
        `),Be=i(`
        `);function J(i,u){h(u,!0);let f=g(u,`reactionsDisabled`,3,!1),ee=g(u,`canDeleteAnyMessage`,3,!1),A=g(u,`deleting`,3,!1),j=g(u,`editScope`,3,``),M=b(()=>u.editController?.session(j())),re=b(()=>m(M)?.surface===`timeline`&&m(M).messageID===u.message.id);async function F(){await a(),m(Ze)?.focus()}function ge(){u.editController?.start(j(),u.message,`timeline`)===`cancelled`&&F()}function _e(){u.editController?.cancel(j(),`timeline`)&&F()}async function ve(){if(!u.editController)return;let e=await u.editController.save(j(),u.message,e=>u.onMessageEdited?.(e));(e===`saved`||e===`cancelled`)&&await F()}let L=b(()=>u.message.status===`pending`),R=b(()=>u.message.status===`failed`),ye=b(()=>!!u.message.deleted_at),z=b(()=>ee()||!!u.currentUserID&&(u.message.author?.id||u.message.author_id)===u.currentUserID),B=b(()=>!!u.currentUserID&&(u.message.author?.id||u.message.author_id)===u.currentUserID),V=b(()=>u.message.preamble_block),be=b(()=>!!u.previousMessage?.preamble_block&&!m(V)),xe=b(()=>!!m(V)&&!!u.nextMessage&&!u.nextMessage?.preamble_block),Se=b(()=>u.message.thread_state?.reply_count||0),Ce=b(()=>m(Se)>0),H=b(()=>he(u.message)),U=b(()=>u.selectedThreadID===u.message.id),we=b(()=>!m(V)&&!m(L)&&!m(R)&&(!m(ye)||m(Ce)||m(U)));function W(e){if(Tt||m(bt)){Tt=!1,e.preventDefault(),e.stopPropagation();return}m(we)&&(window.getSelection()?.toString()||e.target?.closest(_t)||u.onOpenThread(u.message))}function Te(e){return e.addEventListener(`click`,W),{destroy(){e.removeEventListener(`click`,W)}}}let J=w(!1),Y=w(!1),X=w(``),Ve=w(!1),He=w(!1),Z=w(void 0),Ue=w(!1),We=w(!1),Ge=b(()=>m(Ue)||m(We)||u.selected),Ke=w(!1);function qe(){let e=m(Z)?.closest(`.messages-scroll`);if(!m(Z)||!e){y(Ke,!1);return}let t=m(Z).getBoundingClientRect().top-e.getBoundingClientRect().top;y(Ke,t<26)}let Je=w(void 0),Ye=w(void 0),Xe=w(void 0),Ze=w(void 0),Qe,$e,et=!1,tt=b(()=>`toolbar-reaction-picker-${u.message.id}`),nt=b(()=>u.reactionController.pending(u.message.id)),Q=b(()=>f()||!u.currentUserID||m(L)||m(R)||m(nt));function rt(e){m(Q)||u.reactionController.toggle(u.message,e)}function it(){m(Q)||(m(J)||y(Ve,P(m(Je),130),!0),y(J,!m(J)))}function at(e){m(Q)||(u.reactionController.toggle(u.message,e),y(J,!1))}function ot(){y(J,!1),m(Xe)?.focus()}async function st(){m(Y)||y(He,P(m(Ye),160),!0),y(Y,!m(Y)),m(Y)&&(await a(),ut()[0]?.focus())}function ct(){if(m(yt)){At(m(Ze));return}st()}function lt(e=!0){y(Y,!1),e&&m(Ze)?.focus()}function ut(){return[...m(Ye)?.querySelectorAll(`[role="menuitem"]:not(:disabled)`)??[]].filter(e=>e.getClientRects().length>0)}function dt(e){if(e.key===`Escape`){e.preventDefault(),lt();return}if(e.key===`Tab`){lt(!1);return}let t=ut();if(t.length===0)return;let n=t.indexOf(document.activeElement),r;e.key===`ArrowDown`?r=n<0?0:(n+1)%t.length:e.key===`ArrowUp`?r=n<=0?t.length-1:n-1:e.key===`Home`?r=0:e.key===`End`&&(r=t.length-1),r!==void 0&&(e.preventDefault(),t[r]?.focus())}function ft(e){et||(y(X,e,!0),Qe&&window.clearTimeout(Qe),Qe=window.setTimeout(()=>{y(X,``),Qe=void 0},1800))}async function pt(){lt(),await mt()}async function mt(){try{if(!navigator.clipboard)throw Error(`Clipboard unavailable`);return await navigator.clipboard.writeText(u.message.body??``),ft(`copied`),!0}catch{return ft(`failed`),!1}}function ht(){lt(!1),ge()}function gt(){lt(!1),u.onDeleteMessage?.(u.message)}let _t=`a, button, input, textarea, select, .attachment-grid, .media-tile, .markdown img, .gif-player, .markdown-table-scroll, .message-actions, .message-failed`,vt=typeof window<`u`?window.matchMedia(`(hover: none), (pointer: coarse)`):null,yt=w(T(vt?.matches??!1)),bt=w(!1),xt,St,Ct=0,wt=w(void 0),Tt=!1,Et=b(()=>`message-action-sheet-${u.message.id}`);e(()=>{if(!vt)return;let e=()=>{y(yt,vt.matches,!0)};return vt.addEventListener(`change`,e),()=>vt.removeEventListener(`change`,e)});function Dt(){xt!==void 0&&(window.clearTimeout(xt),xt=void 0)}function Ot(){St?.(),St=void 0}function kt(){$e!==void 0&&(window.clearTimeout($e),$e=void 0)}function At(e){kt(),Ct+=1,y(wt,e,!0),y(Y,!1),y(J,!1),y(bt,!0)}function jt(e){if(e.pointerType!==`touch`||!e.isPrimary||e.button!==0||m(V)||m(ye)||m(L)||m(R)||m(re)||e.target?.closest(_t))return;Ot();let t=e.pointerId,n=e.clientX,r=e.clientY;xt=window.setTimeout(()=>{xt=void 0,Tt=!0,At()},450);let i=e=>{e.pointerId===t&&(Math.abs(e.clientX-n)>10||Math.abs(e.clientY-r)>10)&&o()},a=e=>{e.pointerId===t&&o()},o=()=>{Dt(),window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,a),window.removeEventListener(`pointercancel`,a),St===o&&(St=void 0)};St=o,window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,a),window.addEventListener(`pointercancel`,a)}function Mt(e){(m(bt)||xt!==void 0)&&e.preventDefault()}function Nt(){kt(),Ct+=1,y(bt,!1),Tt=!1}function Pt(e){Nt(),!m(Q)&&u.reactionController.toggle(u.message,e)}function Ft(){Nt(),u.onOpenThread(u.message)}function It(){Nt(),u.onReply(u.message,u.replyContext)}async function Lt(){kt();let e=Ct;!await mt()||!m(bt)||e!==Ct||($e=window.setTimeout(()=>{$e=void 0,!et&&e===Ct&&Nt()},900))}function Rt(){Nt(),ge()}function zt(){Nt(),u.onDeleteMessage?.(u.message)}e(()=>{if(!m(J)&&!m(Y))return;let e=e=>{let t=e.target;m(J)&&m(Je)&&!m(Je).contains(t)&&y(J,!1),m(Y)&&m(Ye)&&!m(Ye).contains(t)&&y(Y,!1)};return document.addEventListener(`click`,e),()=>document.removeEventListener(`click`,e)}),e(()=>{m(Q)&&y(J,!1)}),ne(()=>{et=!0,Qe&&window.clearTimeout(Qe),kt(),Ot()}),e(()=>{if(!(m(Y)||m(J)||m(Ge))||!m(Z))return;let e=m(Z).parentElement;for(;e&&e.style.position!==`absolute`;)e=e.parentElement;if(!e)return;let t=e.style.zIndex;return e.style.zIndex=`10`,()=>{e.style.zIndex=t}});var $=Be();let Bt;var Vt=D($),Ht=D(Vt,!0);k(Vt);var Ut=_(Vt,2),Wt=D(Ut),Gt=e=>{Ee(e,{get block(){return m(V)}})},Kt=e=>{c(e,De())},qt=e=>{var t=r(),n=S(t),i=e=>{ue(e,{get body(){return m(M).draft},get errorMessage(){return m(M).error},get saving(){return m(M).saving},onBody:e=>u.editController?.updateDraft(j(),e),onCancel:_e,onSave:ve})};C(n,e=>{m(M)&&e(i)}),c(e,t)},Jt=e=>{var r=Me(),i=S(r);pe(i,{get message(){return u.message},get onJump(){return u.onJumpToQuote}});var a=_(i,2);n(a,()=>le(u.message.body),!0),k(a),d(a,e=>ie?.(e));var o=_(a,2),p=e=>{var t=Oe();l(e=>E(t,`title`,`Edited ${e??``}`),[()=>N(u.message.edited_at)]),c(e,t)};C(o,e=>{u.message.edited_at&&e(p)});var h=_(o,2),g=e=>{{let t=b(()=>u.reactionController.reactionsFor(u.message)),n=b(()=>u.reactionController.pending(u.message.id)),r=b(()=>u.reactionController.error(u.message.id)),i=b(()=>f()||!u.currentUserID);I(e,{get messageId(){return u.message.id},get reactions(){return m(t)},get pending(){return m(n)},get error(){return m(r)},get disabled(){return m(i)},onToggle:e=>void u.reactionController.toggle(u.message,e)})}};C(h,e=>{!m(L)&&!m(R)&&e(g)});var v=_(h,2),ee=e=>{var t=ke();s(t,21,()=>u.message.attachments,e=>e.id,(e,t)=>{{let n=b(()=>me(m(t)));de(e,{get upload(){return m(t)},get url(){return m(n)},get onOpenImage(){return u.onOpenImage},get onOpenArtifact(){return u.onOpenArtifact}})}}),k(t),c(e,t)};C(v,e=>{u.message.attachments?.length&&e(ee)});var y=_(v,2),x=e=>{var n=je(),r=_(D(n),2),i=e=>{var n=G();t(`click`,n,()=>u.onRetry?.(u.message)),c(e,n)};C(r,e=>{u.onRetry&&e(i)});var a=_(r,2),o=e=>{var n=Ae();t(`click`,n,()=>u.onDiscard?.(u.message)),c(e,n)};C(a,e=>{u.onDiscard&&e(o)}),k(n),c(e,n)};C(y,e=>{m(R)&&e(x)}),c(e,r)};C(Wt,e=>{m(V)?e(Gt):m(ye)?e(Kt,1):m(re)?e(qt,2):e(Jt,-1)});var Yt=_(Wt,2),Xt=e=>{var n=Fe();let r;var i=_(D(n),2),a=e=>{var t=Pe(),n=S(t),r=D(n,!0);k(n);var i=_(n,2),a=e=>{var t=Ne(),n=D(t,!0);k(t),l(()=>{E(t,`datetime`,u.message.thread_state?.last_reply_at),o(n,m(H))}),c(e,t)};C(i,e=>{m(H)&&e(a)}),l(e=>o(r,e),[()=>se(u.message)]),c(e,t)};C(i,e=>{(m(Ce)||m(U))&&e(a)}),k(n),l((e,t)=>{r=v(n,1,`thread-hint tooltip`,null,r,{"has-replies":m(Ce),"is-open":m(U)}),E(n,`data-tooltip`,e),E(n,`aria-label`,t)},[()=>ae(u.message,u.selectedThreadID),()=>ae(u.message,u.selectedThreadID)]),t(`click`,n,()=>u.onOpenThread(u.message)),c(e,n)};C(Yt,e=>{m(we)&&e(Xt)}),k(Ut);var Zt=_(Ut,2),Qt=e=>{var n=ze(),r=D(n),i=e=>{var t=K();let n;var r=D(t,!0);k(t),l(()=>{n=v(t,1,`message-copy-status`,null,n,{"is-error":m(X)===`failed`}),o(r,m(X)===`copied`?`Copied`:`Couldn't copy`)}),c(e,t)};C(r,e=>{m(X)&&e(i)});var a=_(r,2);s(a,17,()=>ce,te,(e,n)=>{var r=Ie(),i=D(r,!0);k(r),l(()=>{E(r,`aria-label`,`React with ${m(n)}`),E(r,`data-tooltip`,`React with ${m(n)}`),r.disabled=m(Q),o(i,m(n))}),t(`click`,r,()=>rt(m(n))),c(e,r)});var d=_(a,2),f=D(d);O(f,e=>y(Xe,e),()=>m(Xe));var p=_(f,2),h=e=>{{let t=b(()=>m(Ve)?`above-right`:`below`);fe(e,{get id(){return m(tt)},get placement(){return m(t)},get disabled(){return m(Q)},onPick:at,onEscape:ot})}};C(p,e=>{m(J)&&e(h)}),k(d),O(d,e=>y(Je,e),()=>m(Je));var g=_(d,4),ee=_(g,2),x=_(ee,4),w=D(x);let ne;O(w,e=>y(Ze,e),()=>m(Ze));var T=_(w,2),M=e=>{var n=Re();let r;var i=D(n),a=_(i,2),o=e=>{var n=Le();t(`click`,_(S(n),2),ht),c(e,n)};C(a,e=>{m(B)&&u.editController&&j()&&!m(re)&&e(o)});var s=_(a,2),d=e=>{var n=q(),r=_(S(n),2);l(()=>r.disabled=A()),t(`click`,r,gt),c(e,n)};C(s,e=>{m(z)&&u.onDeleteMessage&&e(d)}),k(n),l(()=>r=v(n,1,`message-menu`,null,r,{above:m(He)})),t(`keydown`,n,dt),t(`click`,i,pt),c(e,n)};C(T,e=>{m(Y)&&e(M)}),k(x),O(x,e=>y(Ye,e),()=>m(Ye)),k(n),l(e=>{E(f,`aria-controls`,m(tt)),E(f,`aria-expanded`,m(J)),f.disabled=m(Q),E(g,`data-tooltip`,e),g.disabled=m(L)||m(R),ee.disabled=m(L)||m(R),ne=v(w,1,`message-actions-trigger`,null,ne,{tooltip:!m(yt),"tooltip-align-end":!m(yt)}),E(w,`data-tooltip`,m(yt)?void 0:`More actions`),E(w,`aria-haspopup`,m(yt)?`dialog`:`menu`),E(w,`aria-controls`,m(yt)?m(Et):void 0),E(w,`aria-expanded`,m(yt)?m(bt):m(Y)),w.disabled=m(L)||m(R)},[()=>ae(u.message,u.selectedThreadID)]),t(`click`,f,it),t(`click`,g,()=>u.onOpenThread(u.message)),t(`click`,ee,()=>u.onReply(u.message,u.replyContext)),t(`click`,w,ct),c(e,n)};C(Zt,e=>{!m(V)&&!m(ye)&&e(Qt)});var $t=_(Zt,2),en=e=>{{let t=b(()=>!m(Q)),n=b(()=>!m(L)&&!m(R)),r=b(()=>m(B)&&!!u.editController&&!!j()&&!m(re)),i=b(()=>m(z)&&!!u.onDeleteMessage);oe(e,{get id(){return m(Et)},get canReact(){return m(t)},get canReply(){return m(n)},get canOpenThread(){return m(we)},get canEdit(){return m(r)},get canDelete(){return m(i)},get deleting(){return A()},get copyStatus(){return m(X)},onReact:Pt,onOpenThread:Ft,onReply:It,onCopy:Lt,onEdit:Rt,onDelete:zt,onClose:Nt,get returnFocus(){return m(wt)}})}};C($t,e=>{m(bt)&&e(en)}),k($),O($,e=>y(Z,e),()=>m(Z)),d($,e=>Te?.(e)),l((e,t)=>{Bt=v($,1,`message-row`,null,Bt,e),E($,`data-message-id`,u.message.id),o(Ht,t)},[()=>({selected:u.selected,"is-pending":m(L),"is-failed":m(R),"is-deleted":m(ye),"is-preamble":!!m(V),"is-preamble-collapsed":m(V)?.final===!0,"is-preamble-live":m(V)?.final===!1,"before-final-message":m(xe),"after-preamble":m(be),"can-open-thread":m(we),editing:m(re),"menu-open":m(Y)||m(J),"actions-flip":m(Ke)}),()=>u.index===0?``:N(u.message.created_at)]),t(`pointerdown`,$,jt),t(`contextmenu`,$,Mt),p(`mouseenter`,$,()=>{!m(Ue)&&!m(We)&&qe(),y(Ue,!0)}),p(`mouseleave`,$,()=>y(Ue,!1)),t(`focusin`,$,()=>{!m(Ue)&&!m(We)&&qe(),y(We,!0)}),t(`focusout`,$,e=>{m(Z)?.contains(e.relatedTarget)||y(We,!1)}),c(i,$),x()}j([`pointerdown`,`contextmenu`,`focusin`,`focusout`,`click`,`keydown`]);var Y=i(` deleted bot`,1),X=i(`bot`),Ve=i(` `,1),He=i(` `),Z=i(`
        `);function Ue(e,n){h(n,!0);let r=g(n,`reactionsDisabled`,3,!1),i=g(n,`canDeleteAnyMessage`,3,!1),a=g(n,`deletingMessageIDs`,19,()=>new Set),u=g(n,`editScope`,3,``),d=b(()=>n.group.messages[0]?.author),f=b(()=>m(d)?.kind===`bot`),p=b(()=>!m(f)&&!!n.currentUserID&&n.group.authorID===n.currentUserID);var y=Z();let te;var w=D(y);{let e=b(()=>n.group.authorDeleted?`avatar`:`avatar avatar-button`),t=b(()=>n.group.authorDeleted?void 0:`View profile for ${n.group.authorName}`);F(w,{get class(){return m(e)},get id(){return n.group.authorID},get name(){return n.group.authorName},get src(){return n.group.authorAvatarURL},size:38,get buttonLabel(){return m(t)},onclick:()=>n.onOpenProfile(n.group.messages[0]?.author)})}var ne=_(w,2),T=D(ne),E=D(T),O=e=>{var t=Y(),r=S(t),i=D(r,!0);k(r),ee(2),l(()=>o(i,n.group.authorName)),c(e,t)},A=e=>{var r=Ve(),i=S(r),a=D(i,!0);k(i);var s=_(i,2),u=e=>{c(e,X())};C(s,e=>{m(f)&&e(u)}),l(()=>o(a,n.group.authorName)),t(`click`,i,()=>n.onOpenProfile(n.group.messages[0]?.author)),c(e,r)};C(E,e=>{n.group.authorDeleted?e(O):e(A,-1)});var j=_(E,2),M=e=>{var t=He(),r=D(t,!0);k(t),l(e=>o(r,e),[()=>re(n.group.authorHandle)]),c(e,t)};C(j,e=>{n.group.authorHandle&&e(M)});var ie=_(j,2),ae=D(ie,!0);k(ie),k(T),s(_(T,2),19,()=>n.group.messages,e=>e.id,(e,t,o)=>{{let s=b(()=>n.selectedThreadID===m(t).id),c=b(()=>a().has(m(t).id));J(e,{get message(){return m(t)},get index(){return m(o)},get previousMessage(){return n.group.messages[m(o)-1]},get nextMessage(){return n.group.messages[m(o)+1]},get selected(){return m(s)},get replyContext(){return n.replyContext},get selectedThreadID(){return n.selectedThreadID},get currentUserID(){return n.currentUserID},get reactionController(){return n.reactionController},get reactionsDisabled(){return r()},get canDeleteAnyMessage(){return i()},get deleting(){return m(c)},get editController(){return n.editController},get editScope(){return u()},get onMessageEdited(){return n.onMessageEdited},get onReply(){return n.onReply},get onOpenThread(){return n.onOpenThread},get onJumpToQuote(){return n.onJumpToQuote},get onOpenImage(){return n.onOpenImage},get onOpenArtifact(){return n.onOpenArtifact},get onRetry(){return n.onRetry},get onDiscard(){return n.onDiscard},get onDeleteMessage(){return n.onDeleteMessage}})}}),k(ne),k(y),l(e=>{te=v(y,1,`message-group`,null,te,{"is-agent":m(f),"is-self":m(p)}),o(ae,e)},[()=>N(n.group.timestamp)]),c(e,y),x()}j([`click`]);var We=i(`
        Send a message in Markdown — code fences, lists, links all work. Threads open from any message.
        `),Ge=i(`
        `),Ke=i(`
        `),qe=i(`
        New
        `),Je=i(`
        `),Ye=i(`
        `),Xe=i(`
        `);function Ze(n,i){h(i,!0);let s=g(i,`loading`,3,!1),d=g(i,`unreadCount`,3,0),p=g(i,`unreadBoundarySeq`,3,0),te=g(i,`unreadBoundaryLoaded`,3,!1),T=g(i,`unreadSince`,3,``),A=g(i,`hasOlder`,3,!1),j=g(i,`hasNewer`,3,!1),re=g(i,`loadingOlder`,3,!1),ie=g(i,`loadingNewer`,3,!1),ae=g(i,`prepending`,3,!1),oe=g(i,`reactionsDisabled`,3,!1),se=g(i,`canDeleteAnyMessage`,3,!1),ce=g(i,`deletingMessageIDs`,19,()=>new Set),le=g(i,`editScope`,3,``),N=1.5,P=w(void 0),F=w(void 0),ue=w(void 0),I=w(0),de=w(0),fe=b(()=>i.selectedDirect?`dm`:`channel`),pe=w(``),me=w(-1),he=w(0),L=b(()=>m(pe)===i.viewKey&&m(me)===p()&&d()<=m(he)?0:d()),R=w(``),z=w(0),B=w(!1),V,be=b(()=>m(L)>0?m(L):m(z));function xe(){V&&=(window.clearTimeout(V),void 0)}e(()=>{if(m(R)&&m(R)!==i.viewKey){xe(),y(z,0),y(R,``),y(B,!1);return}if(m(L)>0){xe(),y(R,i.viewKey,!0),y(z,m(L),!0),y(B,!1);return}m(z)>0&&!m(B)&&(y(B,!0),V=window.setTimeout(()=>{V=void 0,!(m(L)>0)&&(y(z,0),y(R,``),y(B,!1))},180))}),ne(xe);let Se=b(()=>{let e=p()+1;if(m(be)<=0||e<=0)return!1;let t=1/0,n=0;for(let e of i.messages){if(e.parent_message_id)continue;let r=e.channel_seq||0;r<=0||(t=Math.min(t,r),n=Math.max(n,r))}return t<=e&&n>=e}),Ce=b(()=>te()&&m(Se)),H=b(()=>{let e=[],t=!1,n=e=>!m(Ce)||e.parent_message_id||e.author?.id===i.currentUserID||e.author_id===i.currentUserID?!1:m(be)>0&&(e.channel_seq||0)>p();for(let r of ge(i.messages)){let i=-1;if(!t){for(let e=0;ei.messages.map(e=>{let t=e.preamble_block;if(!t)return``;let n=t.items.map(e=>e.type===`commentary`?`${e.id}\u0000${e.body}`:`${e.id}\u0000${e.name}\u0000${e.detail||``}\u0000${e.full}`).join(``);return`${e.id}\u0000${t.final?`final`:`live`}\u0000${n}`}).filter(Boolean).join(``)),W=w(!0),Te=w(!1),Ee,De=0,Oe=``,ke,G=!1,Ae=!1,je=!1,Me=!1,Ne=0,Pe=0;function Fe(e=!0){return e&&(G=!1,y(Te,!0)),Pe+=1,Pe}function K(e,t){return it(e)&&t===Pe}function Ie(e=2){let t=++Ne;Ae=!0;let n=e=>{requestAnimationFrame(()=>{if(t===Ne){if(e<=1){Ae=!1;return}n(e-1)}})};n(e)}function Le(){if(!m(P))return 0;let e=m(P).getScrollSize()+m(I);return Math.max(0,e-m(P).getScrollOffset()-m(P).getViewportSize())}function q(){return!m(P)||Le()<=N}function Re(e=N){return!m(P)||Le()<=e}function ze(){if(!m(P))return{atBottom:!0,nearOlder:!1,nearNewer:!1};let e=Le();return{atBottom:q(),nearOlder:m(P).getScrollOffset()-m(I)<=160,nearNewer:e<=260}}function Be(){i.onHistorySettled?.(ze())}function J(){j()||m(L)>0||i.onReachedBottom?.()}e(()=>{if(ie()){Me=!0;return}Me&&(Me=!1,je=!1)});async function Y(){!m(P)||m(H).length===0||(U=!j(),await X(Fe()))}async function X(e=Fe()){if(!m(P)||m(H).length===0)return;let t=i.viewKey;document.activeElement===m(F)&&m(F).blur();let n=-1;for(let r=0;r<6;r+=1){if(!m(P)||!K(t,e)||(U=!j(),Ie(2),m(P).scrollToIndex(m(H).length-1,{align:`end`}),await a(),await tt(),!m(P)||!K(t,e)))return;let r=m(P).getScrollSize(),i=n>=0&&Math.abs(r-n)<=N;if(n=r,i&&q())break}y(Te,!0),U=!j(),q()&&(y(W,!0),J()),Be()}e(()=>{if(!m(F))return;let e=m(F),t=e=>{e.deltaY>0&&!G&&!Ae&&j()&&q()&&(je=!0,i.onLoadNewer?.(`wheel`))};return e.addEventListener(`wheel`,t,{passive:!0}),()=>{e.removeEventListener(`wheel`,t)}});function Ve(e){return m(H).findIndex(t=>t.kind===`group`&&t.group.messages.some(t=>t.id===e))}let He=b(()=>{if(!A()||s()||!ae())return 0;let e=Math.max(m(de),480);return Math.max(4,Math.ceil(e/52))});e(()=>{if(!m(F))return;let e=()=>{m(F)&&y(de,m(F).clientHeight,!0)};e();let t=new ResizeObserver(e);return t.observe(m(F)),()=>t.disconnect()});let Z=0;e(()=>{if(!m(ue)||!m(F)){y(I,0),Z=0;return}let e=m(ue),t=()=>{let t=e.offsetHeight,n=Z;if(y(I,t,!0),Z=t,n>0&&t!==n){let e=t-n;m(P)&&m(P).getScrollOffset()>0&&m(P).scrollBy(e)}};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect(),y(I,0),Z=0}});function Ze(){return m(H).findIndex(e=>e.kind===`divider`)}function Qe(){if(!m(Ce)||m(be)<=0)return``;for(let e of i.messages)if(!e.parent_message_id&&!(e.author?.id===i.currentUserID||e.author_id===i.currentUserID)&&(e.channel_seq||0)>p())return e.id;return``}function $e(){let e=0;for(let t of i.messages)e=Math.max(e,t.channel_seq||0);return e}function et(){y(pe,i.viewKey,!0),y(me,p()),y(he,d()),i.onMarkRead?.($e())}function tt(){return new Promise(e=>requestAnimationFrame(()=>e()))}function nt(e){if(!m(F)||!m(P))return!1;let t=m(F).querySelector(e);if(!t)return!1;let n=t.getBoundingClientRect().top-m(F).getBoundingClientRect().top;return Math.abs(n)<=N?!0:(m(P).scrollBy(n),!1)}function Q(){if(!m(F))return null;let e=m(F).getBoundingClientRect(),t=new Map(i.messages.map((e,t)=>[e.id,t])),n=1/0,r=-1;for(let i of m(F).querySelectorAll(`[data-message-id]`)){let a=i.getBoundingClientRect();if(a.bottome.bottom)continue;let o=t.get(i.dataset.messageId||``);o!==void 0&&(n=Math.min(n,o),r=Math.max(r,o))}return r<0?null:{first:n,last:r}}function rt(e){if(!m(F)||!m(P))return!1;let t=i.messages.findIndex(t=>t.id===e),n=Q();return t<0||!n?!1:n.first>t?(m(P).scrollBy(-Math.max(80,m(F).clientHeight*.85)),!0):n.lastVe(e),`[data-message-id="${CSS.escape(e)}"]`,e),!0}function st(e=!0){if(!m(P)||Ze()<0)return!1;U=!1;let t=i.viewKey,n=Fe();return at(t,n,()=>Ze(),`[data-unread-divider='true']`,Qe()).then(r=>{e&&!r&&K(t,n)&&i.onJumpToUnread?.()}),!0}function ct(){if(!(m(Ce)&&st(!1))&&i.onJumpToUnread){i.onJumpToUnread();return}}function lt(){if(!m(P))return null;if(q())return{atBottom:!0};let e=m(P).getScrollOffset(),t=m(P).findItemIndex(e),n=Math.max(0,e-m(I));for(let e=Math.max(0,t);e(i.onListRef({scrollToBottom:Y,scrollToMessage:ot,scrollToDivider:st,captureState:lt,isAtBottom:()=>q(),isNearBottom:e=>Re(e)}),()=>i.onListRef(null))),e(()=>{let e=i.viewKey,t=m(H).length,n=m(we);if(e!==Ee){Ee=e,De=t,Oe=n,ke=i.restoreState,U=!0,y(W,!0),y(Te,!1),je=!1,G=!0,dt(e,i.restoreState,!0);return}let r=i.restoreState;if(r&&r!==ke){if(ke=r,r.atBottom){De=t,Oe=n,G=!0,dt(e,r,!0);return}if(r.anchorMessageID){De=t,Oe=n,G=!0,dt(e,r,!1);return}}let a=t!==De||n!==Oe;a&&U&&!j()&&!G?X():a&&!G&&ut(e),De=t,Oe=n});async function ut(e){await a(),await tt(),e===Ee&&Be()}async function dt(e,t,n){let r=Fe(!1),i=!1;if(await a(),await new Promise(e=>requestAnimationFrame(e)),K(e,r)){if(t&&!t.atBottom&&t.anchorMessageID){let i=await ft(e,r,t.anchorMessageID,t.anchorPixelOffset??0);if(!K(e,r))return;!i&&n?await X(r):U=!1}else m(H).findIndex(e=>e.kind===`divider`)>=0&&m(P)?(i=!0,await at(e,r,()=>Ze(),`[data-unread-divider='true']`,Qe()),U=!1):await X(r);await new Promise(e=>requestAnimationFrame(e)),K(e,r)&&(G=!1,y(Te,!0),y(W,q(),!0),U=m(W)&&!j(),i||(m(W)&&J(),m(P)&&pt(m(P).getScrollOffset())),Be())}}async function ft(e,t,n,r){if(!m(P))return!1;let i=Ve(n);if(i<0)return!1;for(let n=0;n<8;n++){if(!m(P)||!K(e,t))return!1;let n=m(I)+m(P).getItemOffset(i)+r;if(Ie(),m(P).scrollTo(n),await new Promise(e=>requestAnimationFrame(e)),!K(e,t))return!1;let a=m(I)+m(P).getItemOffset(i)+r,o=m(P).getScrollOffset();if(Math.abs(a-n)<1&&Math.abs(o-n)<1)break}return!0}function pt(e){if(!m(P)||G&&!m(Te))return;let t=Le(),n=q(),r=n||t<=260;U=n&&!j(),y(W,n,!0),j()||(je=!1),!n&&A()&&e-m(I)<=160&&i.onLoadOlder?.(),!Ae&&j()&&r&&!je&&(je=!0,i.onLoadNewer?.(`scroll`)),n&&!Ae&&J()}var mt=Xe();let ht;var gt=D(mt),_t=e=>{var t=We(),n=D(t),r=D(n),a=e=>{c(e,u(`@`))},s=e=>{c(e,u(`#`))};C(r,e=>{i.selectedDirect?e(a):e(s,-1)}),k(n);var d=_(n,2),f=D(d),p=e=>{var t=u();l(e=>o(t,`This is the start of your conversation with ${e??``}.`),[()=>M(i.selectedDirect,i.currentUserID)]),c(e,t)},m=e=>{var t=u();l(e=>o(t,`Welcome to #${e??``}!`),[()=>_e(i.selectedChannel)]),c(e,t)},h=e=>{c(e,u(`Pick a channel to get started.`))};C(f,e=>{i.selectedDirect?e(p):i.selectedChannel?e(m,1):e(h,-1)}),k(d),ee(2),k(t),c(e,t)},vt=e=>{var t=Je(),n=_(D(t),2),a=e=>{var t=Ge();ye(D(t),{direction:`older`,get rows(){return m(He)}}),k(t),O(t,e=>y(ue,e),()=>m(ue)),l(()=>E(t,`aria-hidden`,re()?`false`:`true`)),c(e,t)};C(n,e=>{m(He)>0&&e(a)}),O(ve(_(n,2),{get data(){return m(H)},getKey:e=>e.id,get scrollRef(){return m(F)},get shift(){return ae()},get startMargin(){return m(I)},onscroll:pt,children:(e,t=f,n=f)=>{var a=r(),s=S(a),u=e=>{ye(e,{get direction(){return t().direction},get rows(){return t().rows}})},d=e=>{var n=Ke(),r=D(n),i=D(r,!0);k(r),k(n),l(()=>o(i,t().label)),c(e,n)},p=e=>{var t=qe();let n;l(()=>n=v(t,1,`new-messages-divider`,null,n,{"is-clearing":m(B)})),c(e,t)},h=e=>{Ue(e,{get group(){return t().group},get currentUserID(){return i.currentUserID},get reactionController(){return i.reactionController},get reactionsDisabled(){return oe()},get selectedThreadID(){return i.selectedThreadID},get replyContext(){return m(fe)},get canDeleteAnyMessage(){return se()},get deletingMessageIDs(){return ce()},get editController(){return i.editController},get editScope(){return le()},get onMessageEdited(){return i.onMessageEdited},get onOpenProfile(){return i.onOpenProfile},get onReply(){return i.onReply},get onOpenThread(){return i.onOpenThread},get onJumpToQuote(){return i.onJumpToQuote},get onOpenImage(){return i.onOpenImage},get onOpenArtifact(){return i.onOpenArtifact},get onRetry(){return i.onRetry},get onDiscard(){return i.onDiscard},get onDeleteMessage(){return i.onDeleteMessage}})};C(s,e=>{t().kind===`loader`?e(u):t().kind===`day`?e(d,1):t().kind===`divider`?e(p,2):t().kind===`group`&&e(h,3)}),c(e,a)},$$slots:{default:!0}}),e=>y(P,e,!0),()=>m(P)),k(t),O(t,e=>y(F,e),()=>m(F)),c(e,t)};C(gt,e=>{!s()&&i.messages.length===0?e(_t):i.messages.length>0&&e(vt,1)});var yt=_(gt,2),bt=e=>{var n=Ye();let r;var i=D(n),a=D(i),s=D(a);k(a),k(i);var u=_(i,2);k(n),l(e=>{r=v(n,1,`unread-bar`,null,r,{"is-clearing":m(B)}),E(n,`aria-hidden`,m(B)?`true`:void 0),i.disabled=m(B),E(i,`aria-label`,e),o(s,`${(m(z)>99?`99+`:m(z))??``} new message${m(z)===1?``:`s`}${T()?` since ${T()}`:``}`),u.disabled=m(B)},[()=>`Jump to ${m(z)>0?m(z):``} new message${m(z)===1?``:`s`}`.replace(/ +/g,` `)]),t(`click`,i,ct),t(`click`,u,et),c(e,n)};C(yt,e=>{!s()&&i.messages.length>0&&m(z)>0&&e(bt)}),k(mt),l(()=>ht=v(mt,1,`messages`,null,ht,{"is-revealing":s()||!m(Te)&&i.messages.length>0})),t(`pointerdown`,mt,function(...e){i.onActivateMessageComposer?.apply(this,e)}),t(`pointerup`,mt,function(...e){i.onInlineImagePointerUp?.apply(this,e)}),c(n,mt),x()}j([`pointerdown`,`pointerup`,`click`]);export{Ze as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/CQx5QjGd.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/CQx5QjGd.js new file mode 100644 index 00000000..39cff80b --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/CQx5QjGd.js @@ -0,0 +1,66 @@ +import{$ as e,B as t,F as n,H as r,I as i,K as a,N as o,O as s,P as c,Q as l,R as u,S as d,V as f,W as p,_t as m,a as h,at as g,b as _,bt as v,ct as y,f as b,ft as x,gt as S,h as C,it as w,j as T,k as E,lt as D,n as ee,ot as O,p as k,pt as A,r as te,rt as j,s as ne,x as re,xt as M,y as N,z as P}from"./-xOSXMZB.js";import"./xihTtKlq.js";import{a as ie,i as ae,n as F,o as oe}from"./BEqsQr3A.js";var se=Symbol(`clickclackAnimatedURL`),ce=new WeakMap;function le(e){let t=e.scrollWidth-e.clientWidth>1;if(e.toggleAttribute(`data-overflowing`,t),t){e.tabIndex=0,e.setAttribute(`role`,`group`),e.setAttribute(`aria-label`,`Scrollable table`);return}e.removeAttribute(`tabindex`),e.removeAttribute(`role`),e.removeAttribute(`aria-label`)}var I=typeof ResizeObserver>`u`?null:new ResizeObserver(e=>{let t=new Set;for(let n of e){let e=ce.get(n.target);e&&t.add(e)}for(let e of t)le(e)});function ue(e){return e[se]||e.currentSrc||e.src}function L(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=!1,o=e=>{let t=r.get(e);t&&(I?.unobserve(e),I?.unobserve(t),r.delete(e))},s=()=>{for(let t of r.keys())e.contains(t)||o(t);for(let t of e.querySelectorAll(`table`)){let e=t.parentElement?.classList.contains(`markdown-table-scroll`)===!0?t.parentElement:null;e&&r.has(e)||(e||(e=document.createElement(`div`),e.className=`markdown-table-scroll`,t.before(e),e.append(t)),r.set(e,t),ce.set(e,e),ce.set(t,e),I?.observe(e),I?.observe(t),le(e))}},c=e=>{try{let t=new URL(e,window.location.href);if(t.hostname!==`giphy.com`&&!t.hostname.endsWith(`.giphy.com`))return``;let n=t.pathname.match(/\/media\/(?:v1\.[^/]+\/)?([^/]+)\/giphy\.gif$/);if(n)return`${t.origin}/media/${n[1]}/giphy_s.gif`}catch{return``}return``},l=e=>`${e}${e.includes(`?`)?`&`:`?`}cc_replay=${Date.now()}`,u=(e,r,i,o,s,c=!1)=>{let u=t.get(r);u&&window.clearTimeout(u);let d=(n.get(r)||0)+1;n.set(r,d),e.classList.add(`playing`),e.classList.remove(`paused`),i.disabled=!0,i.tabIndex=-1,i.ariaHidden=`true`;let f=!1,p=()=>{if(f||(f=!0,a||n.get(r)!==d))return;let o=window.setTimeout(()=>{a||n.get(r)!==d||(e.classList.remove(`playing`),e.classList.add(`paused`),i.disabled=!1,i.tabIndex=0,i.ariaHidden=`false`,s&&(r.src=s))},2600);t.set(r,o)},m=()=>{r.decode().catch(()=>{}).then(p)};r.addEventListener(`load`,m,{once:!0}),c&&(r.src=l(o)),r.complete&&r.naturalWidth>0&&m()},d=()=>{s();for(let t of e.querySelectorAll(`img`)){if(t.closest(`.gif-player`)||t.closest(`a`))continue;let e=t.getAttribute(`src`)||t.src;if(!/\.gif(?:$|[?#])/i.test(e))continue;let n=c(e);if(!n)continue;let r=document.createElement(`span`);r.className=`gif-player`;let a=document.createElement(`span`);a.className=`gif-badge`,a.textContent=`GIF`;let o=document.createElement(`button`);o.type=`button`,o.className=`gif-replay`,o.disabled=!0,o.tabIndex=-1,o.ariaHidden=`true`,o.ariaLabel=`Replay GIF ${t.alt||`image`}`,o.title=`Replay GIF`,o.textContent=`↻`;let s=t.parentNode,l=t.nextSibling,d=t.getAttribute(`src`)||t.src;t[se]=e,s?.insertBefore(r,t),r.append(t,a,o);let f=i=>{i.preventDefault(),i.stopPropagation(),u(r,t,o,e,n,!0)};i.set(t,{wrapper:r,replay:o,originalSrc:d,originalParent:s,originalNextSibling:l,onReplay:f}),o.addEventListener(`click`,f),u(r,t,o,e,n)}},f=new MutationObserver(d);return f.observe(e,{childList:!0,subtree:!0}),d(),{destroy(){a=!0,f.disconnect();for(let e of r.keys())o(e);for(let e of t.values())window.clearTimeout(e);for(let[e,t]of i)t.replay.removeEventListener(`click`,t.onReplay),delete e[se],e.src=t.originalSrc,t.wrapper.parentNode?t.wrapper.replaceWith(e):t.originalParent&&e.parentNode!==t.originalParent&&t.originalParent.insertBefore(e,t.originalNextSibling);i.clear(),t.clear(),n.clear()}}}var de=1e3;function R(e,t,n){if(e.length<=900)return e;let r=fe(e,n);if(t===`prepend`)return pe(e,0,700,r,`start`);if(t===`append`)return pe(e,Math.max(0,e.length-700),e.length,r,`end`);if(t===`around`){let t=r?.first??-1,n=t>=0?t:Math.floor(e.length/2),i=Math.max(0,n-350),a=Math.min(e.length,i+700);return i=Math.max(0,a-700),pe(e,i,a,r,`start`)}return pe(e,Math.max(0,e.length-700),e.length,r,`end`)}function fe(e,t){if(t.size===0)return null;let n=-1,r=-1;for(let i=0;i1e3&&(i===`start`?(a=t,o=Math.min(e.length,a+de)):(o=n,a=Math.max(0,o-de))),e.slice(a,o)}function z(e){let t=e.trim();if(!t)return`?`;let n=t.split(/\s+/);return n.length>=2?(n[0][0]+n[1][0]).toUpperCase():t.slice(0,2).toUpperCase()}function me(e){if(!e)return`?`;let t=e.trim();return t?t[0].toUpperCase():`?`}function he(e){return e?`@${e}`:``}function B(e){return e?.handle||e?.former_handle||``}function V(e){return e?.kind===`bot`&&!!e.deleted_at}function ge(e,t=`Local User`){let n=e?.display_name||t;return V(e)?`${n} (deleted bot)`:n}function _e(e){let t=0;for(let n=0;n>>0;return t%360}function ve(e,t){return e.members.find(e=>e.id!==t)||e.members[0]}function ye(e,t){let n=e.members.filter(e=>e.id!==t);return(n.length>0?n:e.members).map(e=>ge(e)).join(`, `)}function be(e,t,n){let r=new Map;for(let e of t)for(let t of e.members)t.id&&t.id!==n&&!t.deleted_at&&r.set(t.id,t);for(let t of[...e].reverse()){let e=t.author;e?.id&&e.id!==n&&!e.deleted_at&&r.set(e.id,e)}return[...r.values()].slice(0,12)}function xe(e,t){return e.find(e=>e.members.some(e=>e.id===t))}var Se=12;function Ce(e){return e.replace(/^\p{White_Space}+/u,``).replace(/\p{White_Space}+$/u,``)}var we=class{reveal;#e=D(O(new Map));get sessions(){return p(this.#e)}set sessions(e){y(this.#e,e,!0)}generation=0;touchSequence=0;constructor(e){this.reveal=e}session(e){return e?this.sessions.get(e):void 0}isEditing(e,t,n){let r=this.session(e);return r?.messageID===t&&r.surface===n}start(e,t,n){if(!e||!t.id||t.deleted_at||t.status===`pending`||t.status===`failed`)return`invalid`;let r=this.sessions.get(e);if(r){if(r.messageID===t.id&&r.surface===n)return this.cancel(e)?`cancelled`:`blocked`;let i=this.touched(r);return this.setSession(e,i),this.reveal?.(e,i),`blocked`}let i={messageID:t.id,surface:n,originalBody:t.body,draft:t.body,error:``,saving:!1,generation:++this.generation,touchedAt:++this.touchSequence};return this.setSession(e,i),this.trimSessions(e),`started`}updateDraft(e,t){let n=this.sessions.get(e);!n||n.saving||this.setSession(e,this.touched({...n,draft:t,error:``}))}cancel(e,t){let n=this.sessions.get(e);return!n||n.saving||t&&n.surface!==t?!1:(this.deleteSession(e),!0)}cancelMessage(e,t){let n=this.sessions.get(e);return!n||n.messageID!==t?!1:this.cancel(e)}clear(){this.generation+=1,this.sessions=new Map}reconcile(e,t){let n=this.sessions.get(e);if(!n||n.saving)return;let r=t.find(e=>e.id===n.messageID);if(r){if(r.deleted_at){this.deleteSession(e);return}if(r.body!==n.originalBody){if(n.draft===n.originalBody){this.setSession(e,this.touched({...n,originalBody:r.body,draft:r.body,error:``}));return}this.setSession(e,this.touched({...n,originalBody:r.body,error:`This message changed elsewhere. Review your draft before saving.`}))}}}async save(e,t,n){let r=this.sessions.get(e);if(!r||r.messageID!==t.id||r.saving)return`invalid`;let i=Ce(r.draft);if(!i)return this.setSession(e,this.touched({...r,error:`Message body is required`})),`invalid`;if(i===t.body)return this.deleteSession(e),`cancelled`;this.setSession(e,this.touched({...r,error:``,saving:!0}));let a=r.generation;try{let i=await F(`/api/messages/${t.id}`,{method:`PATCH`,body:JSON.stringify({body:r.draft})});return this.sessions.get(e)?.generation===a?(n(i.message),this.deleteSession(e),`saved`):`invalid`}catch(t){let n=this.sessions.get(e);return n?.generation===a?(this.setSession(e,this.touched({...n,error:oe(t,`Could not edit message`)})),`failed`):`invalid`}finally{let t=this.sessions.get(e);t?.generation===a&&this.setSession(e,this.touched({...t,saving:!1}))}}touched(e){return{...e,touchedAt:++this.touchSequence}}setSession(e,t){let n=new Map(this.sessions);n.delete(e),n.set(e,t),this.sessions=n}deleteSession(e){if(!this.sessions.has(e))return;let t=new Map(this.sessions);t.delete(e),this.sessions=t}trimSessions(e){if(this.sessions.size<=Se)return;let t=[...this.sessions.entries()].filter(([t,n])=>t!==e&&!n.saving).sort((e,t)=>e[1].touchedAt-t[1].touchedAt),n=this.sessions.size-Se,r=new Map(this.sessions);for(let[e]of t.slice(0,n))r.delete(e);this.sessions=r}},Te=4001;function Ee(e){return e===Te}async function De(e){let t=e.readCursor();if(!e.isActive())return{active:!1};if(t!==null&&t!==``)return{active:!0,cursor:t,persistAfterOpen:!1};let n=await e.fetchTailCursor();return e.isActive()?{active:!0,cursor:n,persistAfterOpen:!0}:{active:!1}}var Oe=8192;function ke(e){let t=e.isActive??(()=>!0),n=e.maxPendingEvents??Oe,r=[],i=[],a=!1,o=!1;function s(){if(a)return!1;try{return t()}catch{return!1}}function c(){if(!(o||r.length>0))for(let e of i.splice(0))e()}function l(t){if(s()){a=!0,r.length=0;try{e.onError?.(t)}catch{}try{e.onFailure?.()}catch{}c()}}async function u(){if(!o){for(o=!0;s()&&r.length>0;){let t=r.shift();try{if(await e.onEvent(t),!s()){r.length=0;break}t.cursor&&e.persistCursor(t.cursor)}catch(e){l(e);break}}o=!1,c()}}return{enqueue(e){if(s()){if(r.length>=n){l(Error(`Realtime event queue overflowed; reconnecting to recover`));return}r.push(e),u()}},stop(){a=!0,r.length=0,c()},whenIdle(){return!o&&r.length===0?Promise.resolve():new Promise(e=>i.push(e))}}}var Ae=e=>`clickclack:${e}:cursor`;function je(e){let{workspaceID:t,onEvent:n,onOpen:r,onError:i,onStatusChange:a}=e,o=e.reconnectDelayMs??1200,s=null,c=null,l,u=0,d=null,f=!1,p=!0,m=!1,h=null,g=!1,_=!1;function v(e){_!==e&&(_=e,a?.(e))}function y(e){try{i?.(e)}catch{}}function b(){if(m)return null;if(d!==null||f)return d;f=!0;try{d=localStorage.getItem(Ae(t))}catch{p=!1}return d}function x(e){if(d=e,p)try{localStorage.setItem(Ae(t),e)}catch{p=!1}}function S(e){return!g&&u===e}function C(e){if(!S(e)||l!==void 0)return;let t=++u;c?.abort(),c=null,v(!1),l=window.setTimeout(()=>{l=void 0,!g&&u===t&&E()},o)}async function w(e){if(m&&h!==null)return h;let n=new URLSearchParams({workspace_id:t,limit:`1`,include_tail:`true`}),r=await F(`/api/realtime/events?${n.toString()}`,{signal:e});if(typeof r.tail_cursor!=`string`)throw Error(`Realtime bootstrap response did not include a tail cursor`);return m&&(h=r.tail_cursor),r.tail_cursor}async function T(e,i){let a=await De({readCursor:b,fetchTailCursor:()=>w(i),isActive:()=>S(e)});if(!a.active||!S(e))return;let o=new URL(ie(`/api/realtime/ws`),window.location.href);o.protocol=o.protocol===`https:`?`wss:`:`ws:`,o.searchParams.set(`workspace_id`,t),a.cursor&&o.searchParams.set(`after_cursor`,a.cursor);let c=new WebSocket(o);s=c;let l=()=>S(e)&&s===c,u=Promise.resolve(),d=!1,f=t=>{l()&&(d||y(t),d=!0,C(e),c.close())},p=ke({async onEvent(e){await u,l()&&await n(e,l)},persistCursor(e){x(e)},onError:f,isActive:l});c.addEventListener(`open`,()=>{l()&&(u=Promise.resolve().then(()=>r?.(l,a.persistAfterOpen)).then(()=>{a.persistAfterOpen&&l()&&(x(a.cursor),m=!1,h=null)}),u.then(()=>{l()&&v(!0)},f))}),c.addEventListener(`message`,e=>{if(!l())return;let t;try{t=JSON.parse(String(e.data))}catch{return}Me(t)&&p.enqueue(t)}),c.addEventListener(`close`,t=>{p.stop(),l()&&(Ee(t.code)&&(m=!0,h=null),s=null,v(!1),C(e))})}function E(){if(g)return;let e=++u,t=new AbortController;c=t,T(e,t.signal).catch(t=>{S(e)&&(y(t),C(e))}).finally(()=>{c===t&&(c=null)})}return E(),{get connected(){return _},close(){g=!0,u+=1,c?.abort(),c=null,v(!1),l&&window.clearTimeout(l),l=void 0,s?.close(),s=null}}}function Me(e){return typeof e==`object`&&!!e&&typeof e.type==`string`}var Ne=de+50,Pe=class{currentUserID;#e=D(O(new Map));get entries(){return p(this.#e)}set entries(e){y(this.#e,e,!0)}revision=0;generation=0;constructor(e){this.currentUserID=e}clear(){this.generation+=1,this.revision=0,this.entries=new Map}seedMessages(e){if(e.length===0)return;let t=new Map(this.entries),n=!1;for(let r of e){let e=Fe(r.reactions??[]),i=t.get(r.id);if(!i){t.set(r.id,this.newEntry(e,!0)),n=!0;continue}if(i.complete)continue;let a=Ie(e,i.confirmed,i.partialEmojis);t.set(r.id,{...i,confirmed:a,displayed:Le(a,i.pendingIntent),complete:!0,partialEmojis:new Set,revision:++this.revision}),n=!0}n&&(this.entries=Ve(t))}reactionsFor(e){return this.entries.get(e.id)?.displayed??e.reactions??[]}pending(e){return!!this.entries.get(e)?.pendingIntent}error(e){return this.entries.get(e)?.error??``}applyEvent(e){if(e.type!==`reaction.added`&&e.type!==`reaction.removed`)return;let t=e.payload.message_id,n=e.payload.emoji,r=e.payload.count;if(!t||!n||typeof r!=`number`)return;let i=this.entries.get(t);if(i?.lastEventCursor&&e.cursor&&e.cursor<=i.lastEventCursor)return;let a=e.payload.user_id===this.currentUserID(),o=Re(i?.confirmed??[],n,Math.max(0,r),e.type===`reaction.added`,a),s=i?.pendingIntent,c=a&&s?.emoji===n;this.setEntry(t,{confirmed:o,displayed:c?o:Le(o,s),complete:i?.complete??!1,partialEmojis:i?.complete?new Set:new Set([...i?.partialEmojis??[],n]),revision:++this.revision,lastEventCursor:e.cursor||i?.lastEventCursor||``,pendingIntent:s,error:``})}async toggle(e,t){if(!this.currentUserID()||!t)return;let n=this.ensureEntry(e);if(n.pendingIntent)return;let r=ze(n.displayed,t)?`remove`:`add`,i=this.generation,a=n.revision,o={emoji:t,intent:r};this.setEntry(e.id,{...n,displayed:Le(n.confirmed,o),pendingIntent:o,error:``});try{let n=r===`remove`?await F(`/api/messages/${e.id}/reactions/${encodeURIComponent(t)}`,{method:`DELETE`}):await F(`/api/messages/${e.id}/reactions`,{method:`POST`,body:JSON.stringify({emoji:t})});if(i!==this.generation)return;let o=this.entries.get(e.id);if(!o)return;let s=n.event?.cursor??``;if(o.revision===a||s&&(!o.lastEventCursor||s>=o.lastEventCursor)){let t=Fe(n.reactions);this.setEntry(e.id,{...o,confirmed:t,displayed:Le(t,o.pendingIntent),complete:!0,partialEmojis:new Set,revision:++this.revision})}}catch(t){if(i!==this.generation)return;let n=this.entries.get(e.id)?.revision;try{let t=await F(`/api/messages/${e.id}`);if(i===this.generation&&this.entries.get(e.id)?.revision===n){let n=Fe(t.message.reactions??[]),r=this.entries.get(e.id);r&&this.setEntry(e.id,{...r,confirmed:n,displayed:Le(n,r.pendingIntent),complete:!0,partialEmojis:new Set,revision:++this.revision})}}catch{}let r=this.entries.get(e.id);i===this.generation&&r&&this.setEntry(e.id,{...r,error:H(r.confirmed,o)?``:He(t)})}finally{if(i===this.generation){let t=this.entries.get(e.id);t?.pendingIntent===o&&this.setEntry(e.id,{...t,displayed:t.confirmed,pendingIntent:void 0})}}}ensureEntry(e){let t=this.entries.get(e.id);if(t)return t;let n=this.newEntry(Fe(e.reactions??[]),!0);return this.setEntry(e.id,n),n}newEntry(e,t){return{confirmed:e,displayed:e,complete:t,partialEmojis:new Set,revision:++this.revision,lastEventCursor:``,error:``}}setEntry(e,t){let n=new Map(this.entries);n.delete(e),n.set(e,t),this.entries=Ve(n)}};function Fe(e){let t=new Map;for(let n of e)!n.emoji||n.count<=0||t.set(n.emoji,{emoji:n.emoji,count:n.count,reacted_by_me:n.reacted_by_me});return Be([...t.values()])}function Ie(e,t,n){let r=new Map(e.map(e=>[e.emoji,e])),i=new Map(t.map(e=>[e.emoji,e]));for(let e of n){let t=i.get(e);t?r.set(e,t):r.delete(e)}return Be([...r.values()])}function Le(e,t){if(!t)return e;let n=e.map(e=>({...e})),r=n.findIndex(e=>e.emoji===t.emoji);if(t.intent===`remove`){if(r<0||!n[r].reacted_by_me)return n;n[r].count<=1?n.splice(r,1):n[r]={...n[r],count:n[r].count-1,reacted_by_me:!1}}else r<0?n.push({emoji:t.emoji,count:1,reacted_by_me:!0}):n[r].reacted_by_me||(n[r]={...n[r],count:n[r].count+1,reacted_by_me:!0});return Be(n)}function Re(e,t,n,r,i){let a=e.map(e=>({...e})),o=a.findIndex(e=>e.emoji===t);if(n===0)return o>=0&&a.splice(o,1),Be(a);let s={emoji:t,count:n,reacted_by_me:i?r:o>=0&&a[o].reacted_by_me};return o>=0?a[o]=s:a.push(s),Be(a)}function ze(e,t){return e.some(e=>e.emoji===t&&e.reacted_by_me)}function H(e,t){return ze(e,t.emoji)===(t.intent===`add`)}function Be(e){return e.sort((e,t)=>t.count-e.count||e.emoji.localeCompare(t.emoji))}function Ve(e){let t=e.size;for(;e.size>Ne&&t>0;){--t;let n=e.keys().next().value;if(!n)break;let r=e.get(n);e.delete(n),r?.pendingIntent&&e.set(n,r)}return e}function He(e){if(!(e instanceof Error))return`Could not update reaction`;try{return JSON.parse(e.message).error||`Could not update reaction`}catch{return e.message||`Could not update reaction`}}function Ue(e,t){let n=()=>{let t=e.style.height;e.style.height=`auto`;let n=`${e.scrollHeight}px`;t===n?e.style.height=t:e.style.height=n},r=()=>n(),i=()=>n();return requestAnimationFrame(n),e.addEventListener(`input`,r),window.addEventListener(`resize`,i),{update(){requestAnimationFrame(n)},destroy(){e.removeEventListener(`input`,r),window.removeEventListener(`resize`,i)}}}function We(e){return ie(`/api/uploads/${encodeURIComponent(e.id)}`)}function Ge(e){return e.content_type.startsWith(`image/`)}function Ke(e){return e<1024?`${e} B`:e<1048576?`${Math.round(e/1024)} KB`:`${(e/1048576).toFixed(1)} MB`}var qe=i(`
        `);function Je(e,n){m(n,!0);let r=h(n,`disabled`,3,!1);var i=qe(),a=j(i),o=g(a,2),s=g(o,2),u=j(s);u.textContent=`<>`,M(s);var d=g(s,2),f=j(d);f.textContent=`{}`,M(d);var p=g(d,2),v=g(p,2);let y;M(i),l(()=>{a.disabled=r(),o.disabled=r(),s.disabled=r(),d.disabled=r(),p.disabled=r(),v.disabled=r(),y=_(v,1,``,null,y,{active:n.showGifPicker})}),t(`click`,a,()=>n.onWrap(`**`)),t(`click`,o,()=>n.onWrap(`_`)),t(`click`,s,()=>n.onWrap("`")),t(`click`,d,()=>n.onWrap("```","\n```")),t(`click`,p,()=>n.onAppend(`[label](https://)`)),t(`click`,v,function(...e){n.onToggleGif?.apply(this,e)}),c(e,i),S()}P([`click`]);var Ye=i(``),Xe=i(`
        GIFs
        `);function U(e,n){m(n,!0);var r=Xe(),i=j(r),a=g(j(i),2);b(a),M(i);var u=g(i,2);s(u,21,()=>n.gifs,e=>e.url,(e,r)=>{var i=Ye(),a=j(i),s=g(a,2),u=j(s,!0);M(s),M(i),l(()=>{k(a,`src`,p(r).url),k(a,`alt`,p(r).title),o(u,p(r).title)}),t(`click`,i,()=>n.onPick(p(r).url,p(r).title)),c(e,i)}),M(u),M(r),l(()=>C(a,n.query)),t(`input`,a,e=>n.onQuery(e.currentTarget.value)),c(e,r),S()}P([`input`,`click`]);function Ze(e,t=120){if(!e||t<=0)return``;let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:t<=3?`.`.repeat(t):`${n.slice(0,t-3)}...`}function Qe(e){return ge(e.quoted_author,`Unknown`)}function $e(e,t){if(t===e.id)return`Open`;let n=e.thread_state?.reply_count||0;return n===0?`No replies yet`:`${n} ${n===1?`reply`:`replies`}`}function et(e){let t=e.thread_state?.reply_count||0;return t===0?`Thread`:`${t} ${t===1?`reply`:`replies`}`}function tt(e){let t=e.thread_state?.last_reply_at;return t?nt(t):``}function nt(e){let t=new Date(e).getTime();if(!Number.isFinite(t))return``;let n=Math.max(0,Date.now()-t),r=Math.floor(n/6e4);if(r<1)return`now`;if(r<60)return`${r}m`;let i=Math.floor(r/60);return i<24?`${i}h`:`${Math.floor(i/24)}d`}function rt(e){let t=new Date(e),n=new Date,r=new Date;r.setDate(n.getDate()-1);let i=(e,t)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate();return i(t,n)?`Today`:i(t,r)?`Yesterday`:new Intl.DateTimeFormat(void 0,{weekday:`long`,month:`long`,day:`numeric`}).format(t)}function it(e){let t=[],n=``,r=``,i=0;for(let a of e){let e=new Date(a.created_at),o=e.toDateString(),s=a.author?.id||a.author_id||`local`,c=o!==n,l=s!==r,u=e.getTime()-i>3e5;c||l||u||t.length===0?t.push({key:a.id,dayLabel:c?rt(a.created_at):null,messages:[a],authorName:a.author?.display_name||`Local User`,authorHandle:B(a.author),authorAvatarURL:V(a.author)?``:a.author?.avatar_url||``,authorID:s,authorDeleted:V(a.author),timestamp:a.created_at}):t[t.length-1].messages.push(a),n=o,r=s,i=e.getTime()}return t}var at=i(`
        Replying to
        `);function ot(e,n){m(n,!0);var r=at(),i=g(j(r),2),a=j(i),s=g(j(a)),u=j(s,!0);M(s),M(a);var d=g(a,2),f=j(d,!0);M(d),M(i);var p=g(i,2);M(r),l((e,t)=>{o(u,e),o(f,t)},[()=>ge(n.target.author),()=>Ze(n.target.body)]),t(`click`,p,function(...e){n.onClear?.apply(this,e)}),c(e,r),S()}P([`click`]);var st=i(` `),ct=i(``),lt=i(`
        `),ut=i(``),dt=i(`
        `),ft=i(``),pt=i(`
        `);function mt(n,r){m(r,!0);let i=h(r,`formClass`,3,`composer`),b=h(r,`pendingUpload`,3,null),w=h(r,`replyTarget`,3,null),E=h(r,`showUpload`,3,!1),ee=h(r,`showToolbar`,3,!1),O=h(r,`showGifPicker`,3,!1),te=h(r,`gifQuery`,3,``),N=h(r,`filteredGifs`,19,()=>[]),P=h(r,`slashCommands`,19,()=>[]),ie=h(r,`botCommands`,19,()=>[]),ae=h(r,`mentionPeople`,19,()=>[]),F=h(r,`disabled`,3,!1),oe=h(r,`onUploadFile`,3,()=>{}),se=h(r,`onRemoveUpload`,3,()=>{}),ce=h(r,`onClearReply`,3,()=>{}),le=h(r,`onApplyMarkdownWrap`,3,()=>{}),I=h(r,`onAppendToComposer`,3,()=>{}),ue=h(r,`onToggleGif`,3,()=>{}),L=h(r,`onGifQuery`,3,()=>{}),de=h(r,`onPickGif`,3,()=>{}),R=D(null),fe=D(0),pe=D(``),z=D(0),B=x(()=>ge(r.value,p(fe))),V=x(()=>!p(B)||_e(p(B))===p(pe)?[]:p(B).kind===`slash`?be(p(B)):Se(p(B)));e(()=>(r.onInputRef(p(R)),()=>r.onInputRef(null))),e(()=>{if(p(V).length===0){y(z,0);return}p(z)>=p(V).length&&y(z,0)});function ge(e,t){let n=Math.max(0,Math.min(t||e.length,e.length)),r=e.slice(0,n),i=/(^|\s)([/@][^\s]*)$/.exec(r);if(!i)return null;let a=i[2],o=r.length-a.length;return a.startsWith(`/`)&&o!==0?null:{kind:a.startsWith(`/`)?`slash`:`mention`,start:o,end:n,query:a.slice(1).toLowerCase(),raw:a}}function _e(e){return`${e.kind}:${e.start}:${e.raw}`}function ve(e=p(R)){y(fe,e?.selectionStart??r.value.length,!0)}function ye(e){return e.startsWith(`/`)?e:`/${e}`}function be(e){let t=e.query,n=P().filter(e=>!e.revoked_at).map(e=>{let t=ye(e.command);return{id:e.id,kind:`slash`,label:t,detail:e.description||`Slash command`,insertText:`${t} `,sortText:t.slice(1).toLowerCase()}}),r=new Set(n.map(e=>e.label)),i=ie().filter(e=>!r.has(ye(e.command))).map(e=>{let t=ye(e.command);return{id:e.id,kind:`slash`,label:t,detail:e.description,insertText:`${t} `,sortText:t.slice(1).toLowerCase(),hint:e.args_hint||void 0,source:e.bot.handle?`@${e.bot.handle}`:e.bot.display_name}});return[...n,...i].filter(e=>!t||e.sortText.includes(t)).sort((e,n)=>Number(!e.sortText.startsWith(t))-Number(!n.sortText.startsWith(t))||e.sortText.localeCompare(n.sortText)).slice(0,6)}function xe(e){return he(e.handle||e.display_name.replace(/\s+/g,``))}function Se(e){let t=e.query,n=new Set;return ae().filter(e=>!e.id||n.has(e.id)?!1:(n.add(e.id),!0)).map(e=>{let t=xe(e),n=`${e.handle||``} ${e.display_name}`.trim().toLowerCase();return{id:e.id,kind:`mention`,label:t,detail:e.kind===`bot`?`${e.display_name} · bot`:e.display_name,insertText:`${t} `,sortText:n}}).filter(e=>!t||e.sortText.includes(t)).sort((e,n)=>Number(!e.sortText.startsWith(t))-Number(!n.sortText.startsWith(t))||e.sortText.localeCompare(n.sortText)).slice(0,6)}function Ce(e){if(!p(B))return;let t=`${r.value.slice(0,p(B).start)}${e.insertText}${r.value.slice(p(B).end)}`,n=p(B).start+e.insertText.length;r.onValue(t),a().then(()=>{p(R)?.focus(),p(R)?.setSelectionRange(n,n),y(fe,n)})}function we(e){let t=e.currentTarget;r.onValue(t.value),ve(t)}function Te(){ve(),r.onFocus()}function Ee(e){if(p(V).length>0){if(e.key===`ArrowDown`){e.preventDefault(),y(z,(p(z)+1)%p(V).length);return}if(e.key===`ArrowUp`){e.preventDefault(),y(z,(p(z)-1+p(V).length)%p(V).length);return}if(e.key===`Enter`||e.key===`Tab`){e.preventDefault(),Ce(p(V)[p(z)]);return}if(e.key===`Escape`&&p(B)){e.preventDefault(),y(pe,_e(p(B)),!0);return}}r.onKeydown(e)}var De=pt(),Oe=j(De),ke=e=>{U(e,{get gifs(){return N()},get query(){return te()},get onQuery(){return L()},get onPick(){return de()}})};T(Oe,e=>{O()&&e(ke)});var Ae=g(Oe,2),je=e=>{var n=lt();s(n,23,()=>p(V),e=>e.id,(e,n,r)=>{var i=ct();let a;var s=j(i),d=j(s),f=e=>{var t=u(`/`);c(e,t)},m=e=>{var t=u();l(e=>o(t,e),[()=>me(p(n).detail)]),c(e,t)};T(d,e=>{p(n).kind===`slash`?e(f):e(m,-1)}),M(s);var h=g(s,2),v=j(h),y=j(v,!0),b=g(y),x=e=>{var t=st(),r=j(t,!0);M(t),l(()=>o(r,p(n).hint)),c(e,t)};T(b,e=>{p(n).hint&&e(x)}),M(v);var S=g(v,2),C=j(S,!0);M(S),M(h);var w=g(h,2),E=j(w,!0);M(w),M(i),l(()=>{k(i,`aria-selected`,p(r)===p(z)),a=_(i,1,``,null,a,{active:p(r)===p(z)}),o(y,p(n).label),o(C,p(n).detail),o(E,p(n).source??(p(n).kind===`slash`?`command`:`mention`))}),t(`mousedown`,i,e=>e.preventDefault()),t(`click`,i,()=>Ce(p(n))),c(e,i)}),M(n),l(()=>k(n,`aria-label`,p(B)?.kind===`slash`?`Slash command suggestions`:`Mention suggestions`)),c(e,n)};T(Ae,e=>{p(V).length>0&&e(je)});var Me=g(Ae,2),Ne=j(Me),Pe=e=>{var n=dt(),r=g(j(n),2),i=e=>{var t=ut();l(e=>{k(t,`src`,e),k(t,`alt`,b().filename)},[()=>We(b())]),c(e,t)},a=x(()=>Ge(b()));T(r,e=>{p(a)&&e(i)});var s=g(r,2),u=j(s);M(s);var d=g(s,2);M(n),l(e=>o(u,`${b().filename??``} · ${e??``}`),[()=>Ke(b().byte_size)]),t(`click`,d,function(...e){se()?.apply(this,e)}),c(e,n)};T(Ne,e=>{b()&&e(Pe)});var Fe=g(Ne,2),Ie=e=>{ot(e,{get target(){return w()},get onClear(){return ce()}})};T(Fe,e=>{w()&&e(Ie)});var Le=g(Fe,2),Re=j(Le),ze=e=>{var n=ft(),r=j(n);v(2),M(n),l(()=>r.disabled=F()),t(`change`,r,function(...e){oe()?.apply(this,e)}),c(e,n)};T(Re,e=>{E()&&e(ze)});var H=g(Re,2);A(H),ne(H,e=>y(R,e),()=>p(R)),d(H,(e,t)=>Ue?.(e,t),()=>r.value);var Be=g(H,2);M(Le);var Ve=g(Le,2),He=e=>{Je(e,{get showGifPicker(){return O()},get disabled(){return F()},get onWrap(){return le()},get onAppend(){return I()},get onToggleGif(){return ue()}})};T(Ve,e=>{ee()&&e(He)}),M(Me),M(De),l(e=>{_(De,1,re(i())),C(H,r.value),k(H,`placeholder`,r.placeholder),k(H,`aria-label`,r.ariaLabel),H.disabled=F(),k(Be,`aria-label`,r.submitLabel),Be.disabled=e},[()=>F()||!r.value.trim()]),f(`submit`,De,e=>{e.preventDefault(),!F()&&r.onSubmit()}),t(`input`,H,we),f(`focus`,H,Te),t(`keydown`,H,Ee),t(`keyup`,H,()=>ve()),t(`mouseup`,H,()=>ve()),f(`select`,H,()=>ve()),c(n,De),S()}P([`mousedown`,`click`,`change`,`input`,`keydown`,`keyup`,`mouseup`]);function ht(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n`u`?null:J(BigInt.prototype.toString),Gt=typeof Symbol>`u`?null:J(Symbol.prototype.toString),K=J(Object.prototype.hasOwnProperty),Kt=J(Object.prototype.toString),q=J(RegExp.prototype.test),qt=Jt(TypeError);function J(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return Ot(e,t,n)}}function Jt(e){return function(){return kt(e,[...arguments])}}function Y(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:It;if(St&&St(e,null),!Ft(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(Ct(t)||(t[r]=e),i=e)}e[i]=!0}return e}function Yt(e){for(let t=0;t/g),pn=G(/\${[\w\W]*/g),mn=G(/^data-[\-\w.\u00B7-\uFFFF]+$/),hn=G(/^aria-[\-\w]+$/),gn=G(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),_n=G(/^(?:\w+script|data):/i),vn=G(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),yn=G(/^html$/i),bn=G(/^[a-z][.\w]*(-[.\w]+)+$/i),xn=G(/<[/\w!]/g),Sn=G(/<[/\w]/g),Cn=G(/<\/no(script|embed|frames)/i),wn=G(/\/>/i),Tn={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},En=function(){return typeof window>`u`?null:window},Dn=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},On=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},kn=function(e,t,n,r){return K(e,t)&&Ft(e[t])?Y(r.base?X(r.base):{},e[t],r.transform):n};function An(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:En(),t=e=>An(e);if(t.version=`3.4.12`,t.removed=[],!e||!e.document||e.document.nodeType!==Tn.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,u=e.trustedTypes,d=s.prototype,f=Zt(d,`cloneNode`),p=Zt(d,`remove`),m=Zt(d,`nextSibling`),h=Zt(d,`childNodes`),g=Zt(d,`parentNode`),_=Zt(d,`shadowRoot`),v=Zt(d,`attributes`),y=o&&o.prototype?Zt(o.prototype,`nodeType`):null,b=o&&o.prototype?Zt(o.prototype,`nodeName`):null;if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let x,S=``,C,w=!1,T=0,E=function(){if(T>0)throw qt(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},D=function(e){E(),T++;try{return x.createHTML(e)}finally{T--}},ee=function(e){E(),T++;try{return x.createScriptURL(e)}finally{T--}},O=function(){return w||=(C=Dn(u,i),!0),C},k=n,A=k.implementation,te=k.createNodeIterator,j=k.createDocumentFragment,ne=k.getElementsByTagName,re=r.importNode,M=On();t.isSupported=typeof xt==`function`&&typeof g==`function`&&A&&A.createHTMLDocument!==void 0;let N=dn,P=fn,ie=pn,ae=mn,F=hn,oe=_n,se=vn,ce=bn,le=gn,I=null,ue=Y({},[...$t,...en,...tn,...rn,...on]),L=null,de=Y({},[...sn,...cn,...ln,...un]),R=Object.seal(Et(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),fe=null,pe=null,z=Object.seal(Et(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),me=!0,he=!0,B=!1,V=!0,ge=!1,_e=!0,ve=!1,ye=!1,be=null,xe=null,Se=!1,Ce=!1,we=!1,Te=!1,Ee=!0,De=!1,Oe=`user-content-`,ke=!0,Ae=!1,je={},Me=null,Ne=Y({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),Pe=null,Fe=Y({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Ie=null,Le=Y({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),Re=`http://www.w3.org/1998/Math/MathML`,ze=`http://www.w3.org/2000/svg`,H=`http://www.w3.org/1999/xhtml`,Be=H,Ve=!1,He=null,Ue=Y({},[Re,ze,H],Lt),We=W([`mi`,`mo`,`mn`,`ms`,`mtext`]),Ge=Y({},We),Ke=W([`annotation-xml`]),qe=Y({},Ke),Je=Y({},[`title`,`style`,`font`,`a`,`script`]),Ye=null,Xe=[`application/xhtml+xml`,`text/html`],U=null,Ze=null,Qe=n.createElement(`form`),$e=function(e){return e instanceof RegExp||e instanceof Function},et=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Ze&&Ze===e)return;(!e||typeof e!=`object`)&&(e={}),e=X(e),Ye=Xe.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,U=Ye===`application/xhtml+xml`?Lt:It,I=kn(e,`ALLOWED_TAGS`,ue,{transform:U}),L=kn(e,`ALLOWED_ATTR`,de,{transform:U}),He=kn(e,`ALLOWED_NAMESPACES`,Ue,{transform:Lt}),Ie=kn(e,`ADD_URI_SAFE_ATTR`,Le,{transform:U,base:Le}),Pe=kn(e,`ADD_DATA_URI_TAGS`,Fe,{transform:U,base:Fe}),Me=kn(e,`FORBID_CONTENTS`,Ne,{transform:U}),fe=kn(e,`FORBID_TAGS`,X({}),{transform:U}),pe=kn(e,`FORBID_ATTR`,X({}),{transform:U}),je=K(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?X(e.USE_PROFILES):e.USE_PROFILES:!1,me=e.ALLOW_ARIA_ATTR!==!1,he=e.ALLOW_DATA_ATTR!==!1,B=e.ALLOW_UNKNOWN_PROTOCOLS||!1,V=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ge=e.SAFE_FOR_TEMPLATES||!1,_e=e.SAFE_FOR_XML!==!1,ve=e.WHOLE_DOCUMENT||!1,Ce=e.RETURN_DOM||!1,we=e.RETURN_DOM_FRAGMENT||!1,Te=e.RETURN_TRUSTED_TYPE||!1,Se=e.FORCE_BODY||!1,Ee=e.SANITIZE_DOM!==!1,De=e.SANITIZE_NAMED_PROPS||!1,ke=e.KEEP_CONTENT!==!1,Ae=e.IN_PLACE||!1,le=Qt(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:gn,Be=typeof e.NAMESPACE==`string`?e.NAMESPACE:H,Ge=K(e,`MATHML_TEXT_INTEGRATION_POINTS`)&&e.MATHML_TEXT_INTEGRATION_POINTS&&typeof e.MATHML_TEXT_INTEGRATION_POINTS==`object`?X(e.MATHML_TEXT_INTEGRATION_POINTS):Y({},We),qe=K(e,`HTML_INTEGRATION_POINTS`)&&e.HTML_INTEGRATION_POINTS&&typeof e.HTML_INTEGRATION_POINTS==`object`?X(e.HTML_INTEGRATION_POINTS):Y({},Ke);let t=K(e,`CUSTOM_ELEMENT_HANDLING`)&&e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING==`object`?X(e.CUSTOM_ELEMENT_HANDLING):Et(null);if(R=Et(null),K(t,`tagNameCheck`)&&$e(t.tagNameCheck)&&(R.tagNameCheck=t.tagNameCheck),K(t,`attributeNameCheck`)&&$e(t.attributeNameCheck)&&(R.attributeNameCheck=t.attributeNameCheck),K(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(R.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),G(R),ge&&(he=!1),we&&(Ce=!0),je&&(I=Y({},on),L=Et(null),je.html===!0&&(Y(I,$t),Y(L,sn)),je.svg===!0&&(Y(I,en),Y(L,cn),Y(L,un)),je.svgFilters===!0&&(Y(I,tn),Y(L,cn),Y(L,un)),je.mathMl===!0&&(Y(I,rn),Y(L,ln),Y(L,un))),z.tagCheck=null,z.attributeCheck=null,K(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?z.tagCheck=e.ADD_TAGS:Ft(e.ADD_TAGS)&&(I===ue&&(I=X(I)),Y(I,e.ADD_TAGS,U))),K(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?z.attributeCheck=e.ADD_ATTR:Ft(e.ADD_ATTR)&&(L===de&&(L=X(L)),Y(L,e.ADD_ATTR,U))),K(e,`ADD_URI_SAFE_ATTR`)&&Ft(e.ADD_URI_SAFE_ATTR)&&Y(Ie,e.ADD_URI_SAFE_ATTR,U),K(e,`FORBID_CONTENTS`)&&Ft(e.FORBID_CONTENTS)&&(Me===Ne&&(Me=X(Me)),Y(Me,e.FORBID_CONTENTS,U)),K(e,`ADD_FORBID_CONTENTS`)&&Ft(e.ADD_FORBID_CONTENTS)&&(Me===Ne&&(Me=X(Me)),Y(Me,e.ADD_FORBID_CONTENTS,U)),ke&&(I[`#text`]=!0),ve&&Y(I,[`html`,`head`,`body`]),I.table&&(Y(I,[`tbody`]),delete fe.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw qt(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw qt(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=x;x=e.TRUSTED_TYPES_POLICY;try{S=D(``)}catch(e){throw x=t,e}}else e.TRUSTED_TYPES_POLICY===null?(x=void 0,S=``):(x===void 0&&(x=O()),x&&typeof S==`string`&&(S=D(``)));W&&W(e),Ze=e},tt=Y({},[...en,...tn,...nn]),nt=Y({},[...rn,...an]),rt=function(e,t,n){return t.namespaceURI===H?e===`svg`:t.namespaceURI===Re?e===`svg`&&(n===`annotation-xml`||Ge[n]):!!tt[e]},it=function(e,t,n){return t.namespaceURI===H?e===`math`:t.namespaceURI===ze?e===`math`&&qe[n]:!!nt[e]},at=function(e,t,n){return t.namespaceURI===ze&&!qe[n]||t.namespaceURI===Re&&!Ge[n]?!1:!nt[e]&&(Je[e]||!tt[e])},ot=function(e){let t=g(e);(!t||!t.tagName)&&(t={namespaceURI:Be,tagName:`template`});let n=It(e.tagName),r=It(t.tagName);return He[e.namespaceURI]?e.namespaceURI===ze?rt(n,t,r):e.namespaceURI===Re?it(n,t,r):e.namespaceURI===H?at(n,t,r):!!(Ye===`application/xhtml+xml`&&He[e.namespaceURI]):!1},st=function(e){Nt(t.removed,{element:e});try{g(e).removeChild(e)}catch{if(p(e),!g(e))throw qt(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},ct=function(e){dt(e);let t=h(e);if(t){let e=[];At(t,t=>{Nt(e,t)}),At(e,e=>{try{p(e)}catch{}})}let n=v(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;if(typeof i==`string`)try{e.removeAttribute(i)}catch{}}},lt=function(e,n){try{Nt(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{Nt(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(Ce||we)try{st(n)}catch{}else try{n.setAttribute(e,``)}catch{}},ut=function(e){let t=v(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;if(!(typeof i!=`string`||L[U(i)]))try{e.removeAttribute(i)}catch{}}},dt=function(e){let t=[e];for(;t.length>0;){let e=t.pop();(y?y(e):e.nodeType)===Tn.element&&ut(e);let n=h(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},ft=function(e){if(!_e)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=y?y(e):e.nodeType;if(n===Tn.processingInstruction||n===Tn.comment&&q(Sn,e.data)){try{p(e)}catch{}continue}if(n===Tn.element){let t=e,n=U(b?b(e):e.nodeName);try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&n!==`label`&&n!==`output`&&t.removeAttribute(`for`)}catch{}}let r=h(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},pt=function(e){let t=null,r=null;if(Se)e=``+e;else{let t=Rt(e,/^[\r\n\t ]+/);r=t&&t[0]}Ye===`application/xhtml+xml`&&Be===H&&(e=``+e+``);let i=x?D(e):e;if(Be===H)try{t=new l().parseFromString(i,Ye)}catch{}if(!t||!t.documentElement){t=A.createDocument(Be,`template`,null);try{t.documentElement.innerHTML=Ve?S:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Be===H?ne.call(t,ve?`html`:`body`)[0]:ve?t.documentElement:a},mt=function(e){return te.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},ht=function(e){return e=zt(e,N,` `),e=zt(e,P,` `),e=zt(e,ie,` `),e},gt=function(e){e.normalize();let t=te.call(e.ownerDocument||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),n=t.nextNode();for(;n;)n.data=ht(n.data),n=t.nextNode();let r=e.querySelectorAll?.call(e,`template`);r&&At(r,e=>{vt(e.content)&>(e.content)})},_t=function(e){let t=b?b(e):null;return typeof t!=`string`||U(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==v(e)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==y(e)||e.childNodes!==h(e)},vt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return y(e)===Tn.documentFragment}catch{return!1}},yt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return typeof y(e)==`number`}catch{return!1}};function bt(e,n,r){e.length!==0&&At(e,e=>{e.call(t,n,r,Ze)})}let St=function(e,t){return!!(_e&&e.hasChildNodes()&&!yt(e.firstElementChild)&&q(xn,e.textContent)&&q(xn,e.innerHTML)||_e&&e.namespaceURI===H&&t===`style`&&yt(e.firstElementChild)||e.nodeType===Tn.processingInstruction||_e&&e.nodeType===Tn.comment&&q(Sn,e.data))},Ct=function(e,t){if(!fe[t]&&Ot(t)&&(R.tagNameCheck instanceof RegExp&&q(R.tagNameCheck,t)||R.tagNameCheck instanceof Function&&R.tagNameCheck(t)))return!1;if(ke&&!Me[t]){let t=g(e),n=h(e);if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=Ae?n[i]:f(n[i],!0);t.insertBefore(r,m(e))}}}return st(e),!0},wt=function(e,n){if(bt(M.beforeSanitizeElements,e,null),e!==n&&g(e)===null)return!0;if(_t(e))return st(e),!0;let r=U(b?b(e):e.nodeName);if(bt(M.uponSanitizeElement,e,{tagName:r,allowedTags:I}),e!==n&&g(e)===null)return!0;if(St(e,r))return st(e),!0;if(fe[r]||!(z.tagCheck instanceof Function&&z.tagCheck(r))&&!I[r]){let t=Ct(e,r);return t===!1&&bt(M.afterSanitizeElements,e,null),t}if((y?y(e):e.nodeType)===Tn.element&&!ot(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&q(Cn,e.innerHTML))return st(e),!0;if(ge&&e.nodeType===Tn.text){let n=ht(e.textContent);e.textContent!==n&&(Nt(t.removed,{element:e.cloneNode()}),e.textContent=n)}return bt(M.afterSanitizeElements,e,null),!1},Tt=function(e,t,r){if(pe[t]||_e&&t===`patchsrc`||_e&&t===`for`&&e!==`label`&&e!==`output`||Ee&&(t===`id`||t===`name`)&&(r in n||r in Qe))return!1;let i=L[t]||z.attributeCheck instanceof Function&&z.attributeCheck(t,e);if(!(he&&q(ae,t))&&!(me&&q(F,t))){if(!i){if(!(Ot(e)&&(R.tagNameCheck instanceof RegExp&&q(R.tagNameCheck,e)||R.tagNameCheck instanceof Function&&R.tagNameCheck(e))&&(R.attributeNameCheck instanceof RegExp&&q(R.attributeNameCheck,t)||R.attributeNameCheck instanceof Function&&R.attributeNameCheck(t,e))||t===`is`&&R.allowCustomizedBuiltInElements&&(R.tagNameCheck instanceof RegExp&&q(R.tagNameCheck,r)||R.tagNameCheck instanceof Function&&R.tagNameCheck(r))))return!1}else if(!Ie[t]&&!q(le,zt(r,se,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Bt(r,`data:`)===0&&Pe[e])&&!(B&&!q(oe,zt(r,se,``)))&&r)return!1}return!0},Dt=Y({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),Ot=function(e){return!Dt[It(e)]&&q(ce,e)},kt=function(e,t,n,r){if(x&&typeof u==`object`&&typeof u.getAttributeType==`function`&&!n)switch(u.getAttributeType(e,t)){case`TrustedHTML`:return D(r);case`TrustedScriptURL`:return ee(r)}return r},Ht=function(e,n,r,i){try{r?e.setAttributeNS(r,n,i):e.setAttribute(n,i),_t(e)?st(e):Mt(t.removed)}catch{lt(n,e)}},Ut=function(e){bt(M.beforeSanitizeAttributes,e,null);let t=e.attributes;if(!t||_t(e))return;let n={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:L,forceKeepAttr:void 0},r=t.length,i=U(e.nodeName);for(;r--;){let a=t[r],o=a.name,s=a.namespaceURI,c=a.value,l=U(o),u=c,d=o===`value`?u:Vt(u);if(n.attrName=l,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,bt(M.uponSanitizeAttribute,e,n),d=n.attrValue,De&&(l===`id`||l===`name`)&&Bt(d,Oe)!==0&&(lt(o,e),d=Oe+d),_e&&q(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){lt(o,e);continue}if(l===`attributename`&&Rt(d,`href`)){lt(o,e);continue}if(!n.forceKeepAttr){if(!n.keepAttr){lt(o,e);continue}if(!V&&q(wn,d)){lt(o,e);continue}if(ge&&(d=ht(d)),!Tt(i,l,d)){lt(o,e);continue}d=kt(i,l,s,d),d!==u&&Ht(e,o,s,d)}}bt(M.afterSanitizeAttributes,e,null)},Wt=function(e){let t=null,n=mt(e);for(bt(M.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if(bt(M.uponSanitizeShadowNode,t,null),wt(t,e),Ut(t),vt(t.content)&&Wt(t.content),(y?y(t):t.nodeType)===Tn.element){let e=_(t);vt(e)&&(Gt(e),Wt(e))}bt(M.afterSanitizeShadowDOM,e,null)},Gt=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){Wt(e.shadow);continue}let n=e.node,r=(y?y(n):n.nodeType)===Tn.element,i=h(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=b?b(n):null;if(typeof e==`string`&&U(e)===`template`){let e=n.content;vt(e)&&t.push({node:e,shadow:null})}}if(r){let e=_(n);vt(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(Ve=!e,Ve&&(e=``),typeof e!=`string`&&!yt(e)&&(e=Xt(e),typeof e!=`string`))throw qt(`dirty is not a string, aborting`);if(!t.isSupported)return e;ye?(I=be,L=xe):et(n),(M.uponSanitizeElement.length>0||M.uponSanitizeAttribute.length>0)&&(I=X(I)),M.uponSanitizeAttribute.length>0&&(L=X(L)),t.removed=[];let c=Ae&&typeof e!=`string`&&yt(e);if(c){ft(e);let t=b?b(e):e.nodeName;if(typeof t==`string`){let n=U(t);if(!I[n]||fe[n])throw ct(e),qt(`root node is forbidden and cannot be sanitized in-place`)}if(_t(e))throw ct(e),qt(`root node is clobbered and cannot be sanitized in-place`);try{Gt(e)}catch(t){throw ct(e),t}}else if(yt(e))i=pt(``),a=i.ownerDocument.importNode(e,!0),a.nodeType===Tn.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),Gt(a);else{if(!Ce&&!ge&&!ve&&e.indexOf(`<`)===-1)return x&&Te?D(e):e;if(i=pt(e),!i)return Ce?null:Te?S:``}i&&Se&&st(i.firstChild);let l=c?e:i,u=mt(l);try{for(;o=u.nextNode();)wt(o,l),Ut(o),vt(o.content)&&Wt(o.content)}catch(n){throw c&&(ct(e),At(t.removed,e=>{e.element&&dt(e.element)})),n}if(c)return At(t.removed,e=>{e.element&&dt(e.element)}),ge&>(e),e;if(Ce){if(ge&>(i),we)for(s=j.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(L.shadowroot||L.shadowrootmode)&&(s=re.call(r,s,!0)),s}let d=ve?i.outerHTML:i.innerHTML;return ve&&I[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&q(yn,i.ownerDocument.doctype.name)&&(d=` +`+d),ge&&(d=ht(d)),x&&Te?D(d):d},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};et(e),ye=!0,be=I,xe=L},t.clearConfig=function(){Ze=null,ye=!1,be=null,xe=null,x=C,S=``},t.isValidAttribute=function(e,t,n){Ze||et({});let r=U(e),i=U(t);return Tt(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&K(M,e)&&Nt(M[e],t)},t.removeHook=function(e,t){if(K(M,e)){if(t!==void 0){let n=jt(M[e],t);return n===-1?void 0:Pt(M[e],n,1)[0]}return Mt(M[e])}},t.removeHooks=function(e){K(M,e)&&(M[e]=[])},t.removeAllHooks=function(){M=On()},t}var jn=An(),Mn=2097152,Nn=67108864,Pn=25165824,Fn={bash:`bash`,c:`c`,cc:`cpp`,cpp:`cpp`,css:`css`,go:`go`,h:`c`,hpp:`cpp`,java:`java`,js:`javascript`,json:`json`,jsx:`javascript`,mjs:`javascript`,py:`python`,rb:`ruby`,rs:`rust`,sh:`bash`,sql:`sql`,toml:`ini`,ts:`typescript`,tsx:`typescript`,xml:`xml`,yaml:`yaml`,yml:`yaml`,zsh:`bash`},In=new Set([`application/javascript`,`application/json`,`application/ld+json`,`application/sql`,`application/toml`,`application/typescript`,`application/xml`,`application/x-httpd-php`,`application/x-javascript`,`application/x-sh`,`application/x-yaml`,`text/css`,`text/csv`,`text/javascript`,`text/typescript`,`text/x-python`,`text/x-shellscript`,`text/xml`,`text/yaml`]),Ln=new Set([`application/vnd.ms-excel.sheet.macroenabled.12`,`application/vnd.ms-excel.template.macroenabled.12`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,`application/vnd.openxmlformats-officedocument.spreadsheetml.template`]),Rn=new Set([`application/vnd.ms-powerpoint.presentation.macroenabled.12`,`application/vnd.ms-powerpoint.slideshow.macroenabled.12`,`application/vnd.ms-powerpoint.template.macroenabled.12`,`application/vnd.openxmlformats-officedocument.presentationml.presentation`,`application/vnd.openxmlformats-officedocument.presentationml.slideshow`,`application/vnd.openxmlformats-officedocument.presentationml.template`]);function zn(e){let t=e.toLowerCase().split(/[\\/]/).pop()||``,n=t.lastIndexOf(`.`);return n>0?t.slice(n+1):``}function Bn(e){return(e.content_type||``).split(`;`,1)[0].trim().toLowerCase()}function Vn(e){let t=zn(e.filename),n=Bn(e);return t===`docx`||n===`application/vnd.openxmlformats-officedocument.wordprocessingml.document`?`docx`:[`xlsx`,`xlsm`,`xltx`,`xltm`].includes(t)||Ln.has(n)?`spreadsheet`:[`pptx`,`pptm`,`potx`,`potm`,`ppsx`,`ppsm`].includes(t)||Rn.has(n)?`presentation`:t===`md`||t===`markdown`||n===`text/markdown`?`markdown`:t===`html`||t===`htm`||n===`text/html`?`html`:t===`pdf`||n===`application/pdf`?`pdf`:Fn[t]||In.has(n)?`code`:t===`txt`||t===`log`||n===`text/plain`||n.startsWith(`text/`)?`text`:`unsupported`}function Hn(e){let t=zn(e.filename);if(Fn[t])return Fn[t];let n=Bn(e);if(n.includes(`json`))return`json`;if(n.includes(`javascript`))return`javascript`;if(n.includes(`typescript`))return`typescript`;if(n.includes(`yaml`))return`yaml`;if(n.includes(`xml`))return`xml`;if(n.includes(`sql`))return`sql`}function Un(e){switch(e){case`code`:return`Code`;case`text`:return`Text`;case`markdown`:return`Markdown`;case`pdf`:return`PDF`;case`docx`:return`Word document`;case`spreadsheet`:return`Spreadsheet`;case`presentation`:return`Slide text outline`;case`html`:return`Web page`;default:return`File`}}function Wn(e){if(e===`pdf`)return Nn;if(e===`spreadsheet`||e===`presentation`)return Pn;if(e===`code`||e===`text`||e===`markdown`||e===`html`)return Mn}function Gn(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Kn=Gn();function qn(e){Kn=e}var Jn={exec:()=>null};function Yn(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function Z(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(Q.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var Xn=((e=``)=>{try{return!!RegExp(`(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Yn(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Yn(e=>RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:Yn(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:Yn(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:Yn(e=>RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,`i`)),blockquoteBeginRegex:Yn(e=>RegExp(`^ {0,${e}}>`))},Zn=/^(?:[ \t]*(?:\n|$))+/,Qn=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,$n=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,er=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,tr=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,nr=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,rr=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ir=Z(rr).replace(/bull/g,nr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),ar=Z(rr).replace(/bull/g,nr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),or=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,sr=/^[^\n]+/,cr=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,lr=Z(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,cr).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ur=Z(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,nr).getRegex(),dr=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,fr=/|$))/,pr=Z(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|[^\\n]*\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,fr).replace(`tag`,dr).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),mr=e=>Z(or).replace(`hr`,er).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~~~)[^\\n]*\\n").replace(`list`,e).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,dr).getRegex(),hr=mr(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),gr=mr(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),_r={blockquote:Z(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,gr).getRegex(),code:Qn,def:lr,fences:$n,heading:tr,hr:er,html:pr,lheading:ir,list:ur,newline:Zn,paragraph:hr,table:Jn,text:sr},vr=Z(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,er).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~~~)[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,dr).getRegex(),yr={..._r,lheading:ar,table:vr,paragraph:Z(or).replace(`hr`,er).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,vr).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~~~)[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]`).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,dr).getRegex()},br={..._r,html:Z(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,fr).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Jn,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Z(or).replace(`hr`,er).replace(`heading`,` *#{1,6} *[^ +]`).replace(`lheading`,ir).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},xr=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Sr=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Cr=/^( {2,}|\\)\n(?!\s*$)/,wr=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,Xn?"(?`+)[^`]+\k(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Nr=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Pr=Z(Nr,`u`).replace(/punct/g,Tr).getRegex(),Fr=Z(Nr,`u`).replace(/punct/g,kr).getRegex(),Ir=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,Lr=Z(Ir,`gu`).replace(/notPunctSpace/g,Dr).replace(/punctSpace/g,Er).replace(/punct/g,Tr).getRegex(),Rr=Z(Ir,`gu`).replace(/notPunctSpace/g,jr).replace(/punctSpace/g,Ar).replace(/punct/g,kr).getRegex(),zr=Z(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,Dr).replace(/punctSpace/g,Er).replace(/punct/g,Tr).getRegex(),Br=Z(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,Tr).getRegex(),Vr=Z(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Dr).replace(/punctSpace/g,Er).replace(/punct/g,Tr).getRegex(),Hr=Z(/\\(punct)/,`gu`).replace(/punct/g,Tr).getRegex(),Ur=Z(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Wr=Z(fr).replace(`(?:-->|$)`,`-->`).getRegex(),Gr=Z(`^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^`).replace(`comment`,Wr).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Kr=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,qr=Z(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,Kr).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Jr=Z(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Kr).replace(`ref`,cr).getRegex(),Yr=Z(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,cr).getRegex(),Xr=Z(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,Jr).replace(`nolink`,Yr).getRegex(),Zr=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Qr={_backpedal:Jn,anyPunctuation:Hr,autolink:Ur,blockSkip:Mr,br:Cr,code:Sr,del:Jn,delLDelim:Jn,delRDelim:Jn,emStrongLDelim:Pr,emStrongRDelimAst:Lr,emStrongRDelimUnd:zr,escape:xr,link:qr,nolink:Yr,punctuation:Or,reflink:Jr,reflinkSearch:Xr,tag:Gr,text:wr,url:Jn},$r={...Qr,link:Z(/^!?\[(label)\]\((.*?)\)/).replace(`label`,Kr).getRegex(),reflink:Z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,Kr).getRegex()},ei={...Qr,emStrongRDelimAst:Rr,emStrongLDelim:Fr,delLDelim:Br,delRDelim:Vr,url:Z(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,Zr).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Z(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":`>`,'"':`"`,"'":`'`},ai=e=>ii[e];function oi(e,t){if(t){if(Q.escapeTest.test(e))return e.replace(Q.escapeReplace,ai)}else if(Q.escapeTestNoEncode.test(e))return e.replace(Q.escapeReplaceNoEncode,ai);return e}function si(e){try{e=encodeURI(e).replace(Q.percentDecode,`%`)}catch{return null}return e}function ci(e,t){let n=e.replace(Q.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(Q.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length=0&&Q.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(` +`)}function di(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r0?-2:-1}function fi(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function pi(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function mi(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(` +`).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(` +`)}var hi=class{options;rules;lexer;constructor(e){this.options=e||Kn}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:ui(t[0]);return{type:`code`,raw:e,codeBlockStyle:`indented`,text:e.replace(this.rules.other.codeRemoveIndent,``)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=mi(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=li(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:li(t[0],` +`),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:li(t[0],` +`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=li(t[0],` +`).split(` +`),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o;for(o=0;o1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=fi(t[2].split(` +`,1)[0],t[1].length),l=e.split(` +`,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+` +`,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),f=this.rules.other.blockquoteBeginRegex(d);for(;e;){let p=e.split(` +`,1)[0],m;if(l=p,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),m=l):m=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||f.test(l)||t.test(l)||n.test(l))break;if(m.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=` +`+m.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=` +`+l}u=!l.trim(),r+=p+` +`,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items){this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]);let t=e.tokens[0];if(e.task&&(t?.type===`text`||t?.type===`paragraph`)){e.text=e.text.replace(this.rules.other.listReplaceTask,``),t.raw=t.raw.replace(this.rules.other.listReplaceTask,``),t.text=t.text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:`checkbox`,raw:n[0]+` `,checked:n[0]!==`[ ]`};e.checked=t.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:`paragraph`,raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}else e.task&&=!1;if(!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=ui(t[0]);return{type:`html`,block:!0,raw:e,pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:li(t[0],` +`),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=ci(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(` +`):[],a={type:`table`,raw:li(t[0],` +`),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:li(t[0],` +`),depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===` +`?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=li(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=di(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),pi(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return pi(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=0,c=r[0][0]===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+n);(r=c.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(a=[...i].length,r[3]||r[4]){o+=a;continue}if((r[5]||r[6])&&n%3&&!((n+a)%3)){s+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o+s);let t=[...r[0]][0].length,c=e.slice(0,n+r.index+t+a);if(Math.min(n,a)%2){let e=c.slice(1,-1);return{type:`em`,raw:c,text:e,tokens:this.lexer.inlineTokens(e)}}let l=c.slice(2,-2);return{type:`strong`,raw:c,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},gi=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Kn,this.options.tokenizer=this.options.tokenizer||new hi,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:Q,block:ni.normal,inline:ri.normal};this.options.pedantic?(t.block=ni.pedantic,t.inline=ri.pedantic):this.options.gfm&&(t.block=ni.gfm,t.inline=this.options.breaks?ri.breaks:ri.gfm),this.tokenizer.rules=t}static get rules(){return{block:ni,inline:ri}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(Q.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let e=0;e(i=n.call({lexer:this},e,t))?(e=e.substring(i.raw.length),t.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let n=t.at(-1);i.raw.length===1&&n!==void 0?n.raw+=` +`:t.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(` +`)?``:` +`)+i.raw,n.text+=` +`+i.text,this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(` +`)?``:` +`)+i.raw,n.text+=` +`+i.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},t.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),t.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(a=e.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let r=t.at(-1);n&&r?.type===`paragraph`?(r.raw+=(r.raw.endsWith(` +`)?``:` +`)+i.raw,r.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(` +`)?``:` +`)+i.raw,n.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e;if(this.tokens.links){let e=Object.keys(this.tokens.links);e.length>0&&(n=n.replace(this.tokenizer.rules.inline.reflinkSearch,t=>e.includes(t.slice(t.lastIndexOf(`[`)+1,-1))?`[`+`a`.repeat(t.length-2)+`]`:t))}n=n.replace(this.tokenizer.rules.inline.anyPunctuation,`++`),n=n.replace(this.tokenizer.rules.inline.blockSkip,(e,t,n)=>{let r=n?n.length:0;return e.slice(0,r)+`[`+`a`.repeat(e.length-r-2)+`]`}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let r=!1,i=``,a=1/0;for(;e;){if(e.length(o=n.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let n=t.at(-1);o.type===`text`&&n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let s=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(o=this.tokenizer.inlineText(s)){e=e.substring(o.raw.length),o.raw.slice(-1)!==`_`&&(i=o.raw.slice(-1)),r=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=`Infinite loop on byte: `+e;if(this.options.silent)console.error(t);else throw Error(t)}},_i=class{options;parser;constructor(e){this.options=e||Kn}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(Q.notSpaceStart)?.[0],i=e.replace(Q.endingNewline,``)+` +`;return r?`
        `+(n?i:oi(i,!0))+`
        +`:`
        `+(n?i:oi(i,!0))+`
        +`}blockquote({tokens:e}){return`
        +${this.parser.parse(e)}
        +`}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)} +`}hr(e){return`
        +`}list(e){let t=e.ordered,n=e.start,r=``;for(let t=0;t +`+r+` +`}listitem(e){return`
      3. ${this.parser.parse(e.tokens)}
      4. +`}checkbox({checked:e}){return` `}paragraph({tokens:e}){return`

        ${this.parser.parseInline(e)}

        +`}table(e){let t=``,n=``;for(let t=0;t${r}`,` + +`+t+` +`+r+`
        +`}tablerow({text:e}){return` +${e} +`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+` +`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${oi(e,!0)}`}br(e){return`
        `}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=si(e);if(i===null)return r;e=i;let a=`
        `+r+``,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=si(e);if(i===null)return oi(n);e=i;let a=`${oi(n)}`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:oi(e.text)}},vi=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},yi=class e{options;renderer;textRenderer;constructor(e){this.options=e||Kn,this.options.renderer=this.options.renderer||new _i,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new vi}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new _i(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new hi(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new bi;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];t[r]=bi.passThroughHooks.has(n)?e=>{if(this.defaults.async&&bi.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return gi.lex(e,t??this.defaults)}parser(e,t){return yi.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?gi.lex:gi.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?yi.parse:yi.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?gi.lex:gi.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?yi.parse:yi.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=` +Please report this to https://github.com/markedjs/marked.`,e){let e=`

        An error occurred:

        `+oi(n.message+``,!0)+`
        `;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function $(e,t){return xi.parse(e,t)}$.options=$.setOptions=function(e){return xi.setOptions(e),$.defaults=xi.defaults,qn($.defaults),$},$.getDefaults=Gn,$.defaults=Kn,$.use=function(...e){return xi.use(...e),$.defaults=xi.defaults,qn($.defaults),$},$.walkTokens=function(e,t){return xi.walkTokens(e,t)},$.parseInline=xi.parseInline,$.Parser=yi,$.parser=yi.parse,$.Renderer=_i,$.TextRenderer=vi,$.Lexer=gi,$.lexer=gi.lex,$.Tokenizer=hi,$.Hooks=bi,$.parse=$,$.options,$.setOptions,$.use,$.walkTokens,$.parseInline,yi.parse,gi.lex;function Si(e){return jn.sanitize($.parse(e,{async:!1,breaks:!0,gfm:!0}))}function Ci(e){return new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(new Date(e))}var wi=i(``);function Ti(e,n){m(n,!0);let r=D(null),i=D(null),a=D(null),s=typeof document<`u`&&document.activeElement instanceof HTMLElement?document.activeElement:null,u=s?.closest(`.thread`),d=s?.closest(`.timeline`),f=u?.querySelector(`[aria-label="Reply body"]:not(:disabled)`)??u?.querySelector(`[aria-label="Close thread"]`)??d?.querySelector(`[aria-label="Message body"]:not(:disabled)`)??d?.querySelector(`[aria-label="Search messages"]`)??(typeof document<`u`?document.querySelector(`[aria-label="Reply body"]:not(:disabled)`)??document.querySelector(`[aria-label="Message body"]:not(:disabled)`)??document.querySelector(`[aria-label="Close thread"]`)??document.querySelector(`[aria-label="Search messages"]`):null),h=new Set;te(()=>{let e=p(r)?.parentElement;if(e)for(let t of e.children)!(t instanceof HTMLElement)||t===p(r)||t.inert||(t.inert=!0,h.add(t));p(a)?.focus({preventScroll:!0})}),ee(()=>{for(let e of h)e.inert=!1;h.clear(),!(s?.isConnected&&s!==document.body&&(s.focus({preventScroll:!0}),document.activeElement===s))&&f?.isConnected&&f.focus({preventScroll:!0})});function _(e){if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),n.onClose();return}if(e.key!==`Tab`||!p(i))return;let t=Array.from(p(i).querySelectorAll(`a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.inert&&e.getClientRects().length>0);if(t.length===0){e.preventDefault(),p(i).focus();return}let r=t[0],a=t[t.length-1];e.shiftKey&&(document.activeElement===r||!p(i).contains(document.activeElement))?(e.preventDefault(),a.focus()):!e.shiftKey&&(document.activeElement===a||!p(i).contains(document.activeElement))&&(e.preventDefault(),r.focus())}var v=wi(),b=j(v),x=g(b,2),C=j(x),w=j(C),T=j(w,!0);M(w);var E=g(w,2),O=j(E),A=g(O,2);ne(A,e=>y(a,e),()=>p(a)),M(E),M(C);var re=g(C,2),N=j(re);M(re),M(x),ne(x,e=>y(i,e),()=>p(i)),M(v),ne(v,e=>y(r,e),()=>p(r)),l(()=>{k(x,`aria-label`,`Image viewer: ${n.title}`),o(T,n.title),k(O,`href`,n.url),k(N,`src`,n.url),k(N,`alt`,n.title)}),t(`click`,b,function(...e){n.onClose?.apply(this,e)}),t(`keydown`,x,_),t(`click`,A,function(...e){n.onClose?.apply(this,e)}),c(e,v),S()}P([`click`,`keydown`]);var Ei=512,Di=new Map;function Oi(e){let t=ae(e?.trim()||``);if(!t)return``;let n=Di.get(t);if(n)return n;if(Di.size>=Ei){let e=Di.keys().next().value;e&&Di.delete(e)}return Di.set(t,t),t}var ki=i(``),Ai=i(``),ji=i(``);function Mi(e,i){m(i,!0);let a=h(i,`class`,3,`avatar`),s=h(i,`size`,3,40),d=h(i,`loading`,3,`lazy`),g=h(i,`fetchPriority`,3,`low`),v=D(``),b=x(()=>Oi(i.src)),C=x(()=>p(b)!==``&&p(v)!==p(b)),E=x(()=>_e(i.id||i.name||p(b)||`avatar`)),ee=x(()=>me(i.name));function O(){y(v,p(b),!0)}var A=n(),te=w(A),ne=e=>{var n=Ai(),m=j(n),h=e=>{var t=ki();l(()=>{k(t,`src`,p(b)),k(t,`width`,s()),k(t,`height`,s()),k(t,`loading`,d()),k(t,`fetchpriority`,g())}),f(`error`,t,O),r(t),c(e,t)},v=e=>{var t=u();l(()=>o(t,p(ee))),c(e,t)};T(m,e=>{p(C)?e(h):e(v,-1)}),M(n),l(()=>{_(n,1,re(a())),N(n,`--hue: ${p(E)??``}deg`),k(n,`aria-label`,i.buttonLabel)}),t(`click`,n,function(...e){i.onclick?.apply(this,e)}),c(e,n)},P=e=>{var t=ji(),n=j(t),i=e=>{var t=ki();l(()=>{k(t,`src`,p(b)),k(t,`width`,s()),k(t,`height`,s()),k(t,`loading`,d()),k(t,`fetchpriority`,g())}),f(`error`,t,O),r(t),c(e,t)},m=e=>{var t=u();l(()=>o(t,p(ee))),c(e,t)};T(n,e=>{p(C)?e(i):e(m,-1)}),M(t),l(()=>{_(t,1,re(a())),N(t,`--hue: ${p(E)??``}deg`)}),c(e,t)};T(te,e=>{i.buttonLabel?e(ne):e(P,-1)}),c(e,A),S()}P([`click`]);var Ni=[`👍`,`❤️`,`😂`,`😮`,`😢`,`🙏`,`🎉`,`🔥`,`💯`,`👀`,`🚀`,`✅`],Pi=[`👍`,`✅`,`👀`],Fi=[...Pi,...Ni.filter(e=>!Pi.includes(e))].slice(0,6),Ii=i(``),Li=i(`
        `);function Ri(n,r){m(r,!0);let i=h(r,`placement`,3,`above`),u=h(r,`disabled`,3,!1),d=D(void 0);function f(e){e.key===`Escape`&&(e.preventDefault(),r.onEscape())}e(()=>{(async()=>{await a(),p(d)?.querySelector(`.emoji-option`)?.focus()})()});var g=Li();let v;s(g,21,()=>Ni,E,(e,n)=>{var i=Ii(),a=j(i,!0);M(i),l(()=>{k(i,`aria-label`,`React with ${p(n)}`),k(i,`title`,p(n)),i.disabled=u(),o(a,p(n))}),t(`click`,i,()=>r.onPick(p(n))),t(`keydown`,i,f),c(e,i)}),M(g),ne(g,e=>y(d,e),()=>p(d)),l(()=>{v=_(g,1,`emoji-grid svelte-1caswp`,null,v,{below:i()===`below`,"above-right":i()===`above-right`}),k(g,`id`,r.id)}),c(n,g),S()}P([`click`,`keydown`]);var zi=i(` `),Bi=i(``),Vi=i(`
        `),Hi=i(` `),Ui=i(`
        `);function Wi(r,i){m(i,!0);let a=h(i,`reactions`,19,()=>[]),u=h(i,`pending`,3,!1),d=h(i,`error`,3,``),f=h(i,`disabled`,3,!1),v=x(()=>[...a()].sort((e,t)=>t.count-e.count||e.emoji.localeCompare(t.emoji))),b=D(!1),C=D(void 0),ee=D(void 0),O=x(()=>`reaction-picker-${i.messageId}`);function A(){f()||u()||y(b,!p(b))}function te(e){f()||u()||(i.onToggle(e),y(b,!1))}function re(){y(b,!1),p(ee)?.focus()}function N(e){p(C)&&!p(C).contains(e.target)&&y(b,!1)}e(()=>{if(p(b))return document.addEventListener(`click`,N),()=>document.removeEventListener(`click`,N)}),e(()=>{(f()||u())&&y(b,!1)});var P=n(),ie=w(P),ae=e=>{var n=Ui(),r=j(n);s(r,17,()=>p(v),E,(e,n)=>{let r=()=>p(n).emoji,a=()=>p(n).count,s=()=>p(n).reacted_by_me;var d=Bi();let m;var h=j(d),v=j(h,!0);M(h);var y=g(h,2),b=e=>{var t=zi(),n=j(t,!0);M(t),l(()=>o(n,a())),c(e,t)};T(y,e=>{a()>1&&e(b)}),M(d),l(()=>{m=_(d,1,`reaction-btn svelte-nxju2c`,null,m,{me:s()}),d.disabled=f()||u(),k(d,`aria-pressed`,s()),k(d,`aria-label`,`${r()??``} — ${a()??``} reaction${a()===1?``:`s`}`),k(d,`title`,r()),o(v,r())}),t(`click`,d,()=>i.onToggle(r())),c(e,d)});var a=g(r,2),m=e=>{var n=Vi(),r=j(n);ne(r,e=>y(ee,e),()=>p(ee));var i=g(r,2),a=e=>{{let t=x(()=>f()||u());Ri(e,{get id(){return p(O)},get disabled(){return p(t)},onPick:te,onEscape:re})}};T(i,e=>{p(b)&&e(a)}),M(n),ne(n,e=>y(C,e),()=>p(C)),l(()=>{k(r,`aria-controls`,p(O)),k(r,`aria-expanded`,p(b)),r.disabled=f()||u()}),t(`click`,r,A),c(e,n)};T(a,e=>{p(v).length>0&&!f()&&e(m)});var h=g(a,2),S=e=>{var t=Hi(),n=j(t,!0);M(t),l(()=>o(n,d())),c(e,t)};T(h,e=>{d()&&e(S)}),M(n),c(e,n)};T(ie,e=>{(p(v).length>0||d())&&e(ae)}),c(r,P),S()}P([`click`]);function Gi(e){return document.body.appendChild(e),{destroy(){e.remove()}}}var Ki=i(``),qi=i(``),Ji=i(` `),Yi=i(``),Xi=i(``),Zi=i(``);function Qi(e,n){m(n,!0);let r=h(n,`canReact`,3,!1),i=h(n,`canReply`,3,!1),a=h(n,`showOpenThread`,3,!0),u=h(n,`canOpenThread`,3,!1),f=h(n,`canEdit`,3,!1),v=h(n,`canDelete`,3,!1),b=h(n,`deleting`,3,!1),x=h(n,`copyStatus`,3,``),C=D(void 0),w=D(void 0),O=!0,A=new Set;function re(e){if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),n.onClose();return}if(e.key!==`Tab`||!p(w))return;let t=[...p(w).querySelectorAll(`a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])`)].filter(e=>!e.inert&&e.getClientRects().length>0);if(t.length===0){e.preventDefault(),p(w).focus();return}let r=t[0],i=t[t.length-1];e.shiftKey&&(document.activeElement===r||!p(w).contains(document.activeElement))?(e.preventDefault(),i.focus()):!e.shiftKey&&(document.activeElement===i||!p(w).contains(document.activeElement))&&(e.preventDefault(),r.focus())}function N(e,t=!1){O=t,e()}te(()=>{let e=p(C)?.parentElement;if(e)for(let t of e.children)!(t instanceof HTMLElement)||t===p(C)||t.inert||(t.inert=!0,A.add(t));p(w)?.querySelector(`button:not(:disabled)`)?.focus({preventScroll:!0})}),ee(()=>{for(let e of A)e.inert=!1;A.clear(),O&&n.returnFocus?.isConnected&&n.returnFocus.focus({preventScroll:!0})});var P=Zi(),ie=j(P),ae=g(ie,2),F=g(j(ae),2);s(F,21,()=>Fi,E,(e,i)=>{var a=Ki(),s=j(a,!0);M(a),l(()=>{k(a,`aria-label`,`React with ${p(i)}`),a.disabled=!r(),o(s,p(i))}),t(`click`,a,()=>N(()=>n.onReact(p(i)),!0)),c(e,a)}),M(F);var oe=g(F,2),se=j(oe),ce=e=>{var r=qi();l(()=>r.disabled=!u()),t(`click`,r,()=>N(n.onOpenThread)),c(e,r)};T(se,e=>{a()&&e(ce)});var le=g(se,2),I=g(le,2),ue=g(j(I),2),L=e=>{var t=Ji();let n;var r=j(t,!0);M(t),l(()=>{n=_(t,1,`sheet-copy-status`,null,n,{"is-error":x()===`failed`}),o(r,x()===`copied`?`Copied`:`Couldn't copy`)}),c(e,t)};T(ue,e=>{x()&&e(L)}),M(I);var de=g(I,2),R=e=>{var r=Yi();t(`click`,r,()=>N(n.onEdit)),c(e,r)};T(de,e=>{f()&&e(R)});var fe=g(de,2),pe=e=>{var r=Xi();l(()=>r.disabled=b()),t(`click`,r,()=>N(n.onDelete)),c(e,r)};T(fe,e=>{v()&&e(pe)}),M(oe),M(ae),ne(ae,e=>y(w,e),()=>p(w)),M(P),ne(P,e=>y(C,e),()=>p(C)),d(P,e=>Gi?.(e)),l(()=>{k(ae,`id`,n.id),le.disabled=!i()}),t(`keydown`,P,re),t(`click`,ie,function(...e){n.onClose?.apply(this,e)}),t(`click`,le,()=>N(n.onReply)),t(`click`,I,function(...e){n.onCopy?.apply(this,e)}),c(e,P),S()}P([`keydown`,`click`]);function $i(e,t){if(!e)return!1;let n=window.innerHeight,r=e.parentElement;for(;r;){let e=getComputedStyle(r).overflowY;if(e===`auto`||e===`scroll`||e===`hidden`){n=r.getBoundingClientRect().bottom;break}r=r.parentElement}let i=e.getBoundingClientRect();return n-i.bottomt}var ea=i(`
        `),ta=i(``),na=i(` `,1),ra=i(`
        `,2),ia=i(`
        `),aa=i(`
        `),oa=i(` `);function sa(e,r){m(r,!0);let i=h(r,`onOpenImage`,3,()=>{}),a=h(r,`onOpenArtifact`,3,()=>{}),s=D(null),u=D(!1),d=D(``),v=x(()=>p(d)||P(r.upload.duration_ms??0)),b=x(()=>(r.upload.content_type||``).split(`;`)[0].trim().toLowerCase()),C=x(()=>Vn(r.upload)),E=x(()=>p(C)===`unsupported`&&p(b).startsWith(`image/`)),ee=x(()=>p(C)===`unsupported`&&p(b).startsWith(`video/`)),O=x(()=>p(C)===`unsupported`&&p(b).startsWith(`audio/`)),A=x(()=>p(C)===`code`||p(C)===`text`||p(C)===`markdown`||p(C)===`pdf`||p(C)===`spreadsheet`||p(C)===`presentation`||p(C)===`html`),te=x(()=>Un(p(C))),re=x(()=>{let e=r.upload.width??0,t=r.upload.height??0;if(e<=0||t<=0)return``;let n=p(E)?320:360;return`aspect-ratio: ${e} / ${t}; max-height: ${Math.min(n,Math.max(120,t))}px;`});function P(e){if(!e||e<=0)return``;let t=Math.floor(e/1e3);return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}function ie(){y(u,!0)}function ae(){!p(s)||!isFinite(p(s).duration)||y(d,P(p(s).duration*1e3),!0)}function F(){p(s)&&(y(u,!0),p(s).play())}function oe(e){return e<1024?`${e} B`:e<1048576?`${Math.round(e/1024)} KB`:`${(e/1048576).toFixed(1)} MB`}var se=n(),ce=w(se),le=e=>{var n=ea(),a=j(n),s=j(a);M(a);var u=g(a,2),d=j(u),f=j(d,!0);M(d);var m=g(d,2);M(u),M(n),l(()=>{k(a,`aria-label`,`Open image ${r.upload.filename}`),k(s,`src`,r.url),k(s,`alt`,r.upload.filename),k(s,`width`,r.upload.width||void 0),k(s,`height`,r.upload.height||void 0),N(s,p(re)),o(f,r.upload.filename),k(m,`href`,r.url),k(m,`download`,r.upload.filename),k(m,`aria-label`,`Download ${r.upload.filename}`)}),t(`click`,a,()=>i()(r.url,r.upload.filename)),t(`click`,m,e=>e.stopPropagation()),c(e,n)},I=e=>{var n=ra();let i;var a=j(n),d=j(a);M(a),ne(a,e=>y(s,e),()=>p(s));var m=g(a,2),h=e=>{var n=na(),i=w(n),a=g(i,2),s=e=>{var t=ta(),n=j(t,!0);M(t),l(()=>o(n,p(v))),c(e,t)};T(a,e=>{p(v)&&e(s)}),l(()=>k(i,`aria-label`,`Play ${r.upload.filename}`)),t(`click`,i,F),c(e,n)};T(m,e=>{p(u)||e(h)});var x=g(m,2),S=j(x),C=j(S,!0);M(S);var E=g(S,2);M(x),M(n),l(()=>{i=_(n,1,`media-tile media-tile--video`,null,i,{"is-started":p(u)}),a.controls=p(u),k(a,`aria-label`,r.upload.filename),k(a,`width`,r.upload.width||void 0),k(a,`height`,r.upload.height||void 0),N(a,p(re)),k(d,`src`,r.url),k(d,`type`,p(b)),o(C,r.upload.filename),k(E,`href`,r.url),k(E,`download`,r.upload.filename),k(E,`aria-label`,`Download ${r.upload.filename}`)}),f(`play`,a,ie),f(`loadedmetadata`,a,ae),t(`click`,E,e=>e.stopPropagation()),c(e,n)},ue=e=>{var t=ia(),n=j(t),i=g(j(n),2),a=j(i),s=j(a,!0);M(a);var u=g(a,2),d=j(u,!0);M(u),M(i),M(n);var f=g(n,2),p=j(f),m=j(p,!0);M(p),M(f),M(t),l(e=>{o(s,r.upload.filename),o(d,e),k(f,`src`,r.url),k(p,`href`,r.url),o(m,r.upload.filename)},[()=>oe(r.upload.byte_size)]),c(e,t)},L=e=>{var n=aa(),i=j(n),s=j(i),u=j(s,!0);M(s),M(i);var d=g(i,2),f=j(d),m=j(f,!0);M(f);var h=g(f,2),_=j(h,!0);M(h),M(d);var v=g(d,2);M(n),l(e=>{k(i,`data-artifact-upload-id`,r.upload.id),k(i,`aria-label`,`Open ${r.upload.filename}`),o(u,p(te)),k(f,`data-artifact-upload-id`,r.upload.id),o(m,r.upload.filename),o(_,e),k(v,`href`,r.url),k(v,`download`,r.upload.filename),k(v,`aria-label`,`Download ${r.upload.filename}`)},[()=>oe(r.upload.byte_size)]),t(`click`,i,()=>a()(r.upload)),t(`click`,f,()=>a()(r.upload)),c(e,n)},de=e=>{var t=oa(),n=g(j(t),2),i=j(n),a=j(i,!0);M(i);var s=g(i,2),u=j(s,!0);M(s),M(n),M(t),l(e=>{k(t,`href`,r.url),k(t,`download`,r.upload.filename),k(t,`aria-label`,`Download ${r.upload.filename}`),o(a,r.upload.filename),o(u,e)},[()=>oe(r.upload.byte_size)]),c(e,t)};T(ce,e=>{p(E)?e(le):p(ee)?e(I,1):p(O)?e(ue,2):p(A)?e(L,3):e(de,-1)}),c(e,se),S()}P([`click`]);var ca=i(``),la=i(`
        `);function ua(e,n){m(n,!0);let r=D(void 0);te(async()=>{await a(),p(r)?.focus(),p(r)?.setSelectionRange(p(r).value.length,p(r).value.length)});async function i(){await n.onSave()}function s(e){if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),n.onCancel();return}e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),i())}var d=la(),f=j(d);A(f),ne(f,e=>y(r,e),()=>p(r));var h=g(f,2),_=j(h),v=j(_),b=e=>{var t=u(`Saving…`);c(e,t)},x=e=>{var t=u(`Save`);c(e,t)};T(v,e=>{n.saving?e(b):e(x,-1)}),M(_);var w=g(_,2);M(h);var E=g(h,2),ee=e=>{var t=ca(),r=j(t,!0);M(t),l(()=>o(r,n.errorMessage)),c(e,t)};T(E,e=>{n.errorMessage&&e(ee)}),M(d),l(e=>{k(d,`aria-busy`,n.saving),C(f,n.body),f.disabled=n.saving,k(f,`aria-invalid`,n.errorMessage?`true`:void 0),k(f,`aria-describedby`,n.errorMessage?`message-edit-error`:void 0),_.disabled=e,w.disabled=n.saving},[()=>n.saving||!Ce(n.body)]),t(`input`,f,e=>n.onBody(e.currentTarget.value)),t(`keydown`,f,s),t(`click`,_,i),t(`click`,w,function(...e){n.onCancel?.apply(this,e)}),c(e,d),S()}P([`input`,`keydown`,`click`]);var da=i(` `),fa=i(` `),pa=i(``);function ma(e,r){m(r,!0);var i=n(),a=w(i),s=e=>{var n=pa();let i;var a=g(j(n),2),s=j(a),u=j(s,!0);M(s);var d=g(s,2),f=e=>{var t=da(),n=j(t,!0);M(t),l(e=>o(n,e),[()=>Ze(r.message.quoted_body_snapshot)]),c(e,t)},p=e=>{var t=fa(),n=j(t);M(t),l(e=>o(n,`[original deleted] ${e??``}`),[()=>Ze(r.message.quoted_body_snapshot)]),c(e,t)};T(d,e=>{r.message.quoted_message_id?e(f):e(p,-1)}),M(a),M(n),l((e,t)=>{i=_(n,1,`quote-block`,null,i,{dangling:!r.message.quoted_message_id}),n.disabled=!r.message.quoted_message_id,k(n,`aria-label`,e),o(u,t)},[()=>r.message.quoted_message_id?`Jump to quoted message from ${Qe(r.message)}`:`Original message was deleted`,()=>Qe(r.message)]),t(`click`,n,()=>r.onJump(r.message)),c(e,n)};T(a,e=>{(r.message.quoted_message_id||r.message.quoted_body_snapshot)&&e(s)}),c(e,i),S()}P([`click`]);export{xe as A,Ke as C,we as D,je as E,B as F,z as I,R as L,ye as M,he as N,_e as O,V as P,L as R,$e as S,Pe as T,jn as _,Qi as a,et as b,Pi as c,Si as d,Ci as f,Vn as g,Wn as h,$i as i,ve as j,be as k,Mi as l,Hn as m,ua as n,Wi as o,Un as p,sa as r,Ri as s,ma as t,Ti as u,mt as v,We as w,tt as x,it as y,ue as z}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/CaEGKmxL.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/CaEGKmxL.js deleted file mode 100644 index 6b37cd91..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/CaEGKmxL.js +++ /dev/null @@ -1 +0,0 @@ -import{n as e,t}from"./BEqsQr3A.js";async function n(t){let n=new URLSearchParams;t.limit&&n.set(`limit`,String(t.limit)),t.cursor&&n.set(`cursor`,t.cursor);let r=t.query?.trim();r&&n.set(`q`,r),t.role&&n.set(`role`,t.role);let i=n.toString();return e(`/api/workspaces/${t.workspaceID}/members${i?`?${i}`:``}`)}function r(e){if(e instanceof t){if(e.status===401||e.status===403)return`You don't have permission to view this workspace's members.`;if(e.status===400)return`That search isn't valid. Try a different query or filter.`}return e instanceof Error?e.message:`Could not load members`}export{r as n,n as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/CgfADbOh.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/CgfADbOh.js new file mode 100644 index 00000000..c7e011a8 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/CgfADbOh.js @@ -0,0 +1 @@ +import{$ as e,E as t,F as n,K as r,O as i,P as a,W as o,_t as s,a as c,ct as l,d as u,et as d,ft as f,gt as p,it as m,lt as h,n as g,ot as _,r as v,s as y,w as b}from"./-xOSXMZB.js";import"./xihTtKlq.js";var x=e=>Object.keys(e).reduce((t,n)=>{let r=e[n];return r==null?t:t+`${n}:${r};`},``),S=(e,t)=>`_`+t,{min:C,max:w,abs:T,floor:E}=Math,D=(e,t,n)=>C(n,w(t,e)),O=e=>[...e].sort((e,t)=>e-t),k=typeof queueMicrotask==`function`?queueMicrotask:e=>{Promise.resolve().then(e)},A=()=>{let e;return[new Promise(t=>{e=t}),e]},j=e=>{let t;return()=>(e&&=(t=e(),void 0),t)},M=(e,t,n)=>{let r=n?`unshift`:`push`;for(let n=0;n{let n=e.t[t];return n===-1?e.o:n},P=(e,t,n)=>{let r=e.t[t]===-1;return e.t[t]=n,e.l=C(t,e.l),r},F=(e,t)=>{if(!e.i)return 0;if(e.l>=t)return e.u[t];e.l<0&&(e.u[0]=0,e.l=0);let n=e.l,r=e.u[n];for(;n{let i=n;for(;n<=r;){let a=E((n+r)/2);F(e,a)<=t?(i=a,n=a+1):r=a-1}return D(i,0,e.i-1)},L=(e,t,n)=>{let r=t-e.i;return e.l=n?-1:C(t-1,e.l),e.i=t,r>0?(M(e.u,r),M(e.t,r,n),e.o*r):(e.u.splice(r),(n?e.t.splice(0,-r):e.t.splice(r)).reduce((t,n)=>t-(n===-1?e.o:n),0))},R=e=>e.documentElement,z=e=>e.ownerDocument,B=e=>e.defaultView,V=j(()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&navigator.maxTouchPoints>0),H=j(()=>`scrollBehavior`in R(document).style),U=e=>w(e.$getTotalSize(),e.$getViewportSize()),W=(e,t=40,n=0,r,i=!1)=>{let a=!!n,o=1,s=0,c=0,l=0,u=0,d=0,f=0,p=0,m=0,h=null,g=[0,a?w(n-1,0):-1],_=0,v=!1,y=((e,t,n)=>({o:t,t:n?M(n.slice(0,C(e,n.length)),w(0,e-n.length)):M([],e),i:e,l:-1,u:M([],e+1)}))(e,r?r[1]:t,r&&r[0]),b=new Set,x=()=>l-c,S=()=>x()+d+u,E=(e,t)=>((e,t,n,r)=>{if(r=C(r,e.i-1),F(e,r)<=t){let i=I(e,n,r);return[I(e,t,r,i),i]}{let i=I(e,t,void 0,r);return[i,I(e,n,i)]}})(y,e,t,g[0]),D=()=>F(y,y.i),k=(e,t)=>{let n=F(y,e)-d;return t?D()-n-A(e):n},A=e=>N(y,e),j=(e,t=-1)=>y.t[e]===t,R=e=>{e&&(V()&&p!==0||h&&m===1?d+=e:u+=e)};return{$dispose:()=>{b.clear()},$getStateVersion:()=>o,$getCacheSnapshot:()=>(e=>[e.t.slice(),e.o])(y),$getRange:(e=200)=>{if(!v||a)return g;let t,n;if(f)[t,n]=g;else{let r=w(0,S()),a=r+s;i||(e=w(0,e),p!==1&&(r-=e),p!==2&&(a+=e)),[t,n]=g=E(w(0,r),w(0,a)),h&&(t=C(t,h[0]),n=w(n,h[1]))}return[w(t,0),C(n,y.i-1)]},$findItemIndex:e=>I(y,e-c),$isUnmeasuredItem:j,$getItemOffset:k,$getItemSize:A,$getItemsLength:()=>y.i,$getScrollOffset:()=>l,$isScrolling:()=>p!==0,$getViewportSize:()=>s,$getStartSpacerSize:()=>c,$getTotalSize:D,$:()=>(f=u,u=0,[f,m===2]),$subscribe:(e,t)=>{let n=[e,t];return b.add(n),()=>{b.delete(n)}},$update:(e,t)=>{let n,r,g=0;switch(e){case 1:{if(t===l&&m===0)break;let e=f;f=0;let n=t-l,i=T(n);e&&i=-s&&o<=D()&&(g+=1,r=i>s);break}case 2:g=8,p!==0&&(n=!0,g+=1),p=0,m=0,h=null;break;case 3:{let e=t.filter(([e,t])=>!j(e,t));if(!e.length)break;R(e.reduce((e,[t,n])=>{let r;if(m===2)r=!0;else if(h&&m===1)r=ts&&(R(((e,t)=>{let n=0,r=[];e.t.forEach((e,i)=>{e!==-1&&(r.push(e),i{g&e&&t(r)}))}}},G=setTimeout,K=(e,t)=>t?-e:e,q=(e,t,n,r,i,a)=>{let o=Date.now,s=0,c=!1,l=!1,u=!1,d=!1,f=(()=>{let t,n=()=>{t!=null&&clearTimeout(t)},r=()=>{n(),t=G(()=>{t=null,(()=>{if(c||l)return c=!1,void f();u=!1,e.$update(2)})()},150)};return r.p=n,r})(),p=()=>{s=o(),u&&(d=!0),a&&e.$update(6,a()),e.$update(1,r()),f()},m=t=>{if(c||!e.$isScrolling()||t.ctrlKey)return;let r=o()-s;150>r&&50{l=!0,u=d=!1},g=()=>{l=!1,V()&&(u=!0)};return t.addEventListener(`scroll`,p),t.addEventListener(`wheel`,m,{passive:!0}),t.addEventListener(`touchstart`,h,{passive:!0}),t.addEventListener(`touchend`,g,{passive:!0}),{h:()=>{t.removeEventListener(`scroll`,p),t.removeEventListener(`wheel`,m),t.removeEventListener(`touchstart`,h),t.removeEventListener(`touchend`,g),f.p()},v:()=>{let[t,n]=e.$();t&&(i(t,n,d),d=!1,n&&e.$getViewportSize()>e.$getTotalSize()&&e.$update(1,r()))}}},J=(e,t,n)=>{let r;return[async(i,a)=>{if(!await t())return;r&&r();let o=()=>{let[t,n]=A();return r=()=>{n(!1)},e.$getViewportSize()&&G(r,150),[t,e.$subscribe(2,()=>{n(!0)})]};if(a&&H())e.$update(8,i()),k(async()=>{for(;;){let t=!0;for(let[n,r]=e.$getRange();n<=r;n++)if(e.$isUnmeasuredItem(n)){t=!1;break}if(t)break;let[n,r]=o();try{if(!await n)return}finally{r()}}e.$update(7),n(i(),a)});else for(;;){let[t,r]=o();try{if(e.$update(7),n(i()),!await t)return}finally{r()}}},()=>{r&&r()}]},Y=(e,t)=>{let n,r,i=A(),a=!1,o=t?`scrollLeft`:`scrollTop`,s=t?`overflowX`:`overflowY`,[c,l]=J(e,()=>i[0],(e,r)=>{e=K(e,a),r?n.scrollTo({[t?`left`:`top`]:e,behavior:`smooth`}):n[o]=e});return{$observe(c,u){n=u,t&&(a=getComputedStyle(u).direction===`rtl`),r=q(e,u,t,()=>K(u[o],a),(t,n,r)=>{if(r){let e=u.style,t=e[s];e[s]=`hidden`,G(()=>{e[s]=t})}u[o]=K(e.$getScrollOffset()+t,a),n&&l()}),i[1](!0)},$dispose(){r&&r.h(),i[1](!1),i=A()},$isNegative:()=>a,$scrollTo(e){c(()=>e)},$scrollBy(t){t+=e.$getScrollOffset(),c(()=>t)},$scrollToIndex(t,{align:n,smooth:r,offset:i=0}={}){if(t=D(t,0,e.$getItemsLength()-1),n===`nearest`){let r=e.$getItemOffset(t),i=e.$getScrollOffset();if(ri+e.$getViewportSize()))return;n=`end`}}c(()=>i+e.$getStartSpacerSize()+e.$getItemOffset(t)+(n===`end`?e.$getItemSize(t)-e.$getViewportSize():n===`center`?(e.$getItemSize(t)-e.$getViewportSize())/2:0),r)},$fixScrollJump:()=>{r&&r.v()}}},X=e=>{let t;return{m(n){(t||=new(B(z(n))).ResizeObserver(e)).observe(n)},S(e){t.unobserve(e)},h(){t&&t.disconnect()}}},Z=(e,t)=>{let n,r=t?`width`:`height`,i=new WeakMap,a=X(t=>{let a=[];for(let{target:o,contentRect:s}of t)if(o.offsetParent)if(o===n)e.$update(4,s[r]);else{let e=i.get(o);e!=null&&a.push([e,s[r]])}a.length&&e.$update(3,a)});return{$observeRoot(e){a.m(n=e)},$observeItem:(e,t)=>(i.set(e,t),a.m(e),()=>{i.delete(e),a.S(e)}),$dispose:a.h}};function ee(r,i){s(i,!0);let l=c(i,`as`,3,`div`),d,h,_;e(()=>{_!==i.index&&(h&&h(),h=i.resizer(d,_=i.index))}),g(()=>{h&&h()});let v=f(()=>{let e={contain:`layout style`,position:`absolute`,[i.horizontal?`height`:`width`]:`100%`,[i.horizontal?`top`:`left`]:`0px`,[i.horizontal?`left`:`top`]:i.offset+`px`,visibility:i.hide?`hidden`:void 0,...i.itemProps?.style};return i.horizontal&&(e.display=`inline-flex`),x(e)}),S=f(()=>{if(!i.itemProps)return;let{style:e,...t}=i.itemProps;return t});var C=n(),w=m(C);b(w,l,!1,(e,r)=>{y(e,e=>d=e,()=>d),u(e,()=>({style:o(v),...o(S)}));var s=n(),c=m(s);t(c,()=>i.children,()=>i.item,()=>i.index),a(r,s)}),a(r,C),p()}function Q(t,C){s(C,!0);let w=c(C,`getKey`,3,S),T=c(C,`as`,3,`div`),E=c(C,`shift`,3,!1),D=c(C,`horizontal`,3,!1),k=c(C,`startMargin`,3,0),A=W(C.data.length,C.itemSize,C.ssrCount,C.cache,!C.itemSize),j=Z(A,D()),M=Y(A,D());A.$subscribe(1,()=>{l(P,A.$getStateVersion(),!0)}),A.$subscribe(4,()=>{C.onscroll&&C.onscroll(A.$getScrollOffset())}),A.$subscribe(8,()=>{C.onscrollend&&C.onscrollend()});let N=h(void 0),P=h(_(A.$getStateVersion())),F=f(()=>o(P)&&A.$getRange(C.bufferSize)),I=f(()=>o(P)&&A.$isScrolling()),L=f(()=>o(P)&&A.$getTotalSize()),R=f(()=>o(P)&&M.$isNegative()),z=f(()=>{let e=C.data.length,[t,n]=o(F),r=[];if(C.keepMounted){let i=new Set(C.keepMounted);for(let e=t;e<=n;e++)i.add(e);for(let t of O([...i]))t{let e=o(N),t=t=>{j.$observeRoot(t),M.$observe(e,t)};r().then(()=>{C.scrollRef?t(C.scrollRef):t(e.parentElement)})}),g(()=>{A.$dispose(),j.$dispose(),M.$dispose()}),d(()=>{C.data.length!==A.$getItemsLength()&&A.$update(5,[C.data.length,E()])}),d(()=>{k()!==A.$getStartSpacerSize()&&A.$update(6,k())});let B;e(()=>{B!==o(P)&&(B=o(P),M.$fixScrollJump())});let V=A.$getCacheSnapshot,H=A.$getScrollOffset,G=()=>U(A),K=A.$getViewportSize,q=A.$findItemIndex,J=A.$getItemOffset,X=A.$getItemSize,Q=M.$scrollToIndex,te=M.$scrollTo,ne=M.$scrollBy,re=f(()=>x({contain:`size style`,"overflow-anchor":`none`,flex:`none`,position:`relative`,width:D()?o(L)+`px`:`100%`,height:D()?`100%`:o(L)+`px`,"pointer-events":o(I)?`none`:void 0}));var ie={getCache:V,getScrollOffset:H,getScrollSize:G,getViewportSize:K,findItemIndex:q,getItemOffset:J,getItemSize:X,scrollToIndex:Q,scrollTo:te,scrollBy:ne},$=n(),ae=m($);return b(ae,T,!1,(e,t)=>{y(e,e=>l(N,e,!0),()=>o(N)),u(e,()=>({style:o(re)}));var r=n(),s=m(r);i(s,17,()=>o(z),e=>w()(C.data[e],e),(e,t)=>{let n=f(()=>C.data[o(t)]);{let r=f(()=>o(P)&&A.$getItemOffset(o(t),o(R))),i=f(()=>o(P)&&A.$isUnmeasuredItem(o(t))),a=f(()=>C.itemProps?.({item:o(n),index:o(t)}));ee(e,{get children(){return C.children},get item(){return o(n)},get index(){return o(t)},get as(){return C.item},get offset(){return o(r)},get hide(){return o(i)},get horizontal(){return D()},get resizer(){return j.$observeItem},get itemProps(){return o(a)}})}}),a(t,r)}),a(t,$),p(ie)}export{Q as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/CySd1wef.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/CySd1wef.js deleted file mode 100644 index a1b6faf9..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/CySd1wef.js +++ /dev/null @@ -1,3 +0,0 @@ -import{t as e}from"./DK3Fl9T5.js";var t=Array.isArray,n=Array.prototype.indexOf,r=Array.prototype.includes,i=Array.from,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyDescriptors,c=Object.prototype,l=Array.prototype,u=Object.getPrototypeOf,d=Object.isExtensible,f=()=>{};function p(e){return typeof e?.then==`function`}function m(e){return e()}function h(e){for(var t=0;t{e=n,t=r}),resolve:e,reject:t}}var _=1<<24,v=1024,y=2048,b=4096,x=8192,S=16384,ee=32768,te=1<<25,ne=65536,re=1<<18,ie=1<<19,ae=1<<20,oe=1<<25,se=65536,ce=1<<21,le=1<<22,ue=1<<23,C=Symbol(`$state`),de=Symbol(`legacy props`),fe=Symbol(``),pe=Symbol(`attributes`),me=Symbol(`class`),he=Symbol(`style`),ge=Symbol(`text`),_e=Symbol(`form reset`),ve=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},ye=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function be(e){throw Error(`https://svelte.dev/e/experimental_async_required`)}function xe(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function Se(){throw Error(`https://svelte.dev/e/missing_context`)}function Ce(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function we(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Te(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Ee(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function De(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Oe(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function ke(){throw Error(`https://svelte.dev/e/fork_discarded`)}function Ae(){throw Error(`https://svelte.dev/e/fork_timing`)}function je(){throw Error(`https://svelte.dev/e/get_abort_signal_outside_reaction`)}function Me(){throw Error(`https://svelte.dev/e/hydration_failed`)}function Ne(e){throw Error(`https://svelte.dev/e/lifecycle_legacy_only`)}function Pe(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Fe(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ie(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Le(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Re(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var ze={},w=Symbol(`uninitialized`),Be=`http://www.w3.org/1999/xhtml`,Ve=`http://www.w3.org/2000/svg`,He=`http://www.w3.org/1998/Math/MathML`;function Ue(){console.warn(`https://svelte.dev/e/derived_inert`)}function We(e){console.warn(`https://svelte.dev/e/hydratable_missing_but_expected`)}function Ge(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Ke(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function qe(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var T=!1;function E(e){T=e}var D;function O(e){if(e===null)throw Ge(),ze;return D=e}function k(){return O(R(D))}function Je(e){if(T){if(R(D)!==null)throw Ge(),ze;D=e}}function Ye(e=1){if(T){for(var t=e,n=D;t--;)n=R(n);D=n}}function Xe(e=!0){for(var t=0,n=D;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=R(n);e&&n.remove(),n=i}}function Ze(e){if(!e||e.nodeType!==8)throw Ge(),ze;return e.data}function Qe(e){return e===this.v}function $e(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function et(e){return!$e(e,this.v)}var tt=!1;function nt(){tt=!0}var A=null;function rt(e){A=e}function it(){let e={};return[()=>(st(e)||Se(),at(e)),t=>ot(e,t)]}function at(e){return ft(`getContext`).get(e)}function ot(e,t){return ft(`setContext`).set(e,t),t}function st(e){return ft(`hasContext`).has(e)}function ct(){return ft(`getAllContexts`)}function lt(e,t=!1,n){A={p:A,i:!1,c:null,e:null,s:e,x:null,r:G,l:tt&&!t?{s:null,u:null,$:[]}:null}}function ut(e){var t=A,n=t.e;if(n!==null){t.e=null;for(var r of n)Qn(r)}return e!==void 0&&(t.x=e),t.i=!0,A=t.p,e??{}}function dt(){return!tt||A!==null&&A.l===null}function ft(e){return A===null&&xe(e),A.c??=new Map(pt(A)||void 0)}function pt(e){let t=e.p;for(;t!==null;){let e=t.c;if(e!==null)return e;t=t.p}return null}var mt=[];function ht(){var e=mt;mt=[],h(e)}function j(e){if(mt.length===0&&!en){var t=mt;queueMicrotask(()=>{t===mt&&ht()})}mt.push(e)}function gt(){for(;mt.length>0;)ht()}function _t(e){var t=G;if(t===null)return H.f|=ue,e;if(!(t.f&32768)&&!(t.f&4))throw e;vt(e,t)}function vt(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var yt=~(y|b|v);function M(e,t){e.f=e.f&yt|t}function bt(e){e.f&512||e.deps===null?M(e,v):M(e,b)}function xt(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=se,xt(t.deps))}function St(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),xt(e.deps),M(e,v)}var Ct=[];function wt(e,t=f){let n=null,r=new Set;function i(t){if($e(e,t)&&(e=t,n)){let t=!Ct.length;for(let t of r)t[1](),Ct.push(t,e);if(t){for(let e=0;e{r.delete(c),r.size===0&&n&&(n(),n=null)}}return{set:i,update:a,subscribe:o}}var Tt=!1;function Et(e){var t=Tt;try{return Tt=!1,[e(),Tt]}finally{Tt=t}}function Dt(e,t){if(t){let t=document.body;e.autofocus=!0,j(()=>{document.activeElement===t&&e.focus()})}}function Ot(e){T&&L(e)!==null&&Un(e)}var kt=!1;function At(){kt||(kt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[_e]?.()})},{capture:!0}))}function jt(e){var t=H,n=G;W(null),K(null);try{return e()}finally{W(t),K(n)}}function Mt(e,t,n,r=n){e.addEventListener(t,()=>jt(n));let i=e[_e];i?e[_e]=()=>{i(),r(!0)}:e[_e]=()=>r(!0),At()}function Nt(e){let t=0,n=Cn(0),r;return()=>{Yn()&&(Z(n),ar(()=>(t===0&&(r=Q(()=>e(()=>kn(n)))),t+=1,()=>{j(()=>{--t,t===0&&(r?.(),r=void 0,kn(n))})})))}}var Pt=ne|ie;function Ft(e,t,n,r){new It(e,t,n,r)}var It=class{parent;is_pending=!1;transform_error;#e;#t=T?D:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=Nt(()=>(this.#m=Cn(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=G;t.b=this,t.f|=128,n(e)},this.parent=G.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=cr(()=>{if(T){let e=this.#t;k();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},Pt),T&&(this.#e=D)}#g(){try{this.#a=B(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=B(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=B(()=>e(this.#e)),j(()=>{var e=this.#c=document.createDocumentFragment(),t=I();e.append(t),this.#a=this.#x(()=>B(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,hr(this.#o,()=>{this.#o=null}),this.#b(N))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=B(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();yr(this.#a,e);let t=this.#n.pending;this.#o=B(()=>t(this.#e))}else this.#b(N)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){St(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=G,n=H,r=A;K(this.#i),W(this.#i),rt(this.#i.ctx);try{return sn.ensure(),e()}catch(e){return _t(e),null}finally{K(t),W(n),rt(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&hr(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,j(()=>{this.#d=!1,this.#m&&En(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),Z(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;N?.is_fork?(this.#a&&N.skip_effect(this.#a),this.#o&&N.skip_effect(this.#o),this.#s&&N.skip_effect(this.#s),N.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(V(this.#a),null),this.#o&&=(V(this.#o),null),this.#s&&=(V(this.#s),null),T&&(O(this.#t),Ye(),O(Xe()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){qe();return}r=!0,i&&Re(),this.#s!==null&&hr(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){vt(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return B(()=>{var t=G;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return vt(e,this.#i.parent),null}}))};j(()=>{var t;try{t=this.transform_error(e)}catch(e){vt(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>vt(e,this.#i&&this.#i.parent)):o(t)})}};function Lt(e,t,n,r){let i=dt()?Vt:Gt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=G,c=Rt(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){vt(e,s)}zt()}}var d=Bt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Ut(e))).then(u).catch(e=>vt(e,s)).finally(d)}l?l.then(()=>{c(),f(),zt()}):f()}function Rt(){var e=G,t=H,n=A,r=N;return function(i=!0){K(e),W(t),rt(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function zt(e=!0){K(null),W(null),rt(null),e&&N?.deactivate()}function Bt(){var e=G,t=e.b,n=N,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Vt(e){var t=2|y;return G!==null&&(G.f|=ie),{ctx:A,deps:null,effects:null,equals:Qe,f:t,fn:e,reactions:null,rv:0,v:w,wv:0,parent:G,ac:null}}var Ht=Symbol(`obsolete`);function Ut(e,t,n){let r=G;r===null&&Ce();var i=void 0,a=Cn(w),o=!H,s=new Set;return ir(()=>{var t=G,n=g();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ve&&n.reject(e)}).finally(zt)}catch(e){n.reject(e),zt()}var c=N;if(o){if(t.f&32768)var l=Bt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(Ht);else for(let e of s.values())e.reject(Ht);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==Ht&&(c.activate(),t?(a.f|=ue,En(a,t)):(a.f&8388608&&(a.f^=ue),En(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),Xn(()=>{for(let e of s)e.reject(Ht)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function Wt(e){let t=Vt(e);return wr(t),t}function Gt(e){let t=Vt(e);return t.equals=et,t}function Kt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n{t.ac.abort(ve),t.ac=null}),t.fn!==null&&(t.teardown=f),Fr(t,0),dr(t))}function Xt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Ir(t)}var Zt=null,N=null,Qt=null,P=null,$t=null,en=!1,tn=!1,nn=null,rn=null,an=0,on=1,sn=class e{id=on++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Zt===null?Zt=this:(Zt.#n=this,this.#t=Zt),Zt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)M(r,y),t(r);for(r of n.m)M(r,b),t(r)}this.#p.add(e)}#g(){this.#e=!0,an++>1e3&&(this.#x(),ln());for(let e of this.#u)this.#d.delete(e),M(e,y),this.schedule(e);for(let e of this.#d)M(e,b),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=nn=[],r=[],i=rn=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw _n(e),this.#h()||this.discard(),t}if(N=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(nn=null,rn=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)gn(e,t);i.length>0&&N.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),Qt=this,dn(r),dn(n),Qt=null,this.#s?.resolve();var s=N;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):jr(r)&&(i&16&&this.#d.add(r),Ir(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),M(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),N=this,this.#g()}#b(e){for(var t=0;t{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=g()).promise}static ensure(){if(N===null){let t=N=new e;!tn&&!en&&j(()=>{t.#e||t.flush()})}return N}apply(){P=null}schedule(e){if($t=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(nn!==null&&t===G&&(H===null||!(H.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Zt=e:t.#t=e,this.linked=!1}}};function cn(e){var t=en;en=!0;try{var n;for(e&&(N!==null&&!N.is_fork&&N.flush(),n=e());;){if(gt(),N===null)return n;N.flush()}}finally{en=t}}function ln(){try{Oe()}catch(e){vt(e,$t)}}var un=null;function dn(e){var t=e.length;if(t!==0){for(var n=0;n0)){bn.clear();for(let e of un){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)un.has(n)&&(un.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Ir(n)}}un.clear()}}un=null}}function fn(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?fn(i,t,n,r):e&4194320&&!(e&2048)&&mn(i,t,r)&&(M(i,y),hn(i))}}function pn(e,t){if(e.reactions!==null)for(let n of e.reactions){let e=n.f;e&2?pn(n,t):e&131072&&(M(n,y),t.add(n))}}function mn(e,t,n){let i=n.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(r.call(t,i))return!0;if(i.f&2&&mn(i,t,n))return n.set(i,!0),!0}return n.set(e,!1),!1}function hn(e){N.schedule(e)}function gn(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),M(e,v);for(var n=e.first;n!==null;)gn(n,t),n=n.next}}function _n(e){M(e,v);for(var t=e.first;t!==null;)_n(t),t=t.next}function vn(e){be(`fork`),N!==null&&Ae();var t=sn.ensure();t.is_fork=!0,P=new Map;var n=!1,r=t.settled();return cn(e),{commit:async()=>{if(n){await r;return}t.linked||ke(),n=!0,t.is_fork=!1;for(var[e,[i]]of t.current)e.v=i,e.wv=Ar();cn(()=>{var e=new Set;for(var n of t.current.keys())pn(n,e);xn(e),Dn()}),t.flush(),await r},discard:()=>{for(var e of t.current.keys())e.wv=Ar();!n&&t.linked&&t.discard()}}}var yn=new Set,bn=new Map;function xn(e){yn=e}var Sn=!1;function Cn(e,t){return{f:0,v:e,reactions:null,equals:Qe,rv:0,wv:0}}function wn(e,t){let n=Cn(e,t);return wr(n),n}function Tn(e,t=!1,n=!0){let r=Cn(e);return t||(r.equals=et),tt&&n&&A!==null&&A.l!==null&&(A.l.s??=[]).push(r),r}function F(e,t,n=!1){return H!==null&&(!U||H.f&131072)&&dt()&&H.f&4325394&&(q===null||!q.has(e))&&Le(),En(e,n?jn(t):t,rn)}function En(e,t,n=null){if(!e.equals(t)){bn.set(e,Sr?t:e.v);var r=sn.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&qt(t),P===null&&bt(t)}e.wv=Ar(),An(e,y,n),dt()&&G!==null&&G.f&1024&&!(G.f&96)&&(X===null?Tr([e]):X.push(e)),!r.is_fork&&yn.size>0&&!Sn&&Dn()}return t}function Dn(){Sn=!1;for(let e of yn){e.f&1024&&M(e,b);let t;try{t=jr(e)}catch{t=!0}t&&Ir(e)}yn.clear()}function On(e,t=1){var n=Z(e),r=t===1?n++:n--;return F(e,n),r}function kn(e){F(e,e.v+1)}function An(e,t,n){var r=e.reactions;if(r!==null)for(var i=dt(),a=r.length,o=0;o{if(Or===d)return e();var t=H,n=Or;W(null),kr(d);var r=e();return W(t),kr(n),r};return i&&r.set(`length`,wn(e.length,s)),new Proxy(e,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Fe();var i=r.get(t);return i===void 0?f(()=>{var e=wn(n.value,s);return r.set(t,e),e}):F(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>wn(w,s));r.set(t,e),kn(a)}}else F(n,w),kn(a);return!0},get(t,n,i){if(n===C)return e;var a=r.get(n),c=n in t;if(a===void 0&&(!c||o(t,n)?.writable)&&(a=f(()=>wn(jn(c?t[n]:w),s)),r.set(n,a)),a!==void 0){var l=Z(a);return l===w?void 0:l}return Reflect.get(t,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=Z(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==w)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===C)return!0;var n=r.get(t),i=n!==void 0&&n.v!==w||Reflect.has(e,t);return(n!==void 0||G!==null&&(!i||o(e,t)?.writable))&&(n===void 0&&(n=f(()=>wn(i?jn(e[t]):w,s)),r.set(t,n)),Z(n)===w)?!1:i},set(e,t,n,c){var l=r.get(t),u=t in e;if(i&&t===`length`)for(var d=n;dwn(w,s)),r.set(d+``,p)):F(p,w)}if(l===void 0)(!u||o(e,t)?.writable)&&(l=f(()=>wn(void 0,s)),F(l,jn(n)),r.set(t,l));else{u=l.v!==w;var m=f(()=>jn(n));F(l,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(c,n),!u){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&F(g,_+1)}kn(a)}return!0},ownKeys(e){Z(a);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==w});for(var[n,i]of r)i.v!==w&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ie()}})}function Mn(e){try{if(typeof e==`object`&&e&&C in e)return e[C]}catch{}return e}function Nn(e,t){return Object.is(Mn(e),Mn(t))}var Pn,Fn,In,Ln,Rn;function zn(){if(Pn===void 0){Pn=window,Fn=document,In=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Ln=o(t,`firstChild`).get,Rn=o(t,`nextSibling`).get,d(e)&&(e[me]=void 0,e[pe]=null,e[he]=void 0,e.__e=void 0),d(n)&&(n[ge]=void 0)}}function I(e=``){return document.createTextNode(e)}function L(e){return Ln.call(e)}function R(e){return Rn.call(e)}function Bn(e,t){if(!T)return L(e);var n=L(D);if(n===null)n=D.appendChild(I());else if(t&&n.nodeType!==3){var r=I();return n?.before(r),O(r),r}return t&&Kn(n),O(n),n}function Vn(e,t=!1){if(!T){var n=L(e);return n instanceof Comment&&n.data===``?R(n):n}if(t){if(D?.nodeType!==3){var r=I();return D?.before(r),O(r),r}Kn(D)}return D}function Hn(e,t=1,n=!1){let r=T?D:e;for(var i;t--;)i=r,r=R(r);if(!T)return r;if(n){if(r?.nodeType!==3){var a=I();return r===null?i?.after(a):r.before(a),O(a),a}Kn(r)}return O(r),r}function Un(e){e.textContent=``}function Wn(){return!1}function Gn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function Kn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function qn(e){G===null&&(H===null&&De(e),Ee()),Sr&&Te(e)}function Jn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function z(e,t){var n=G;n!==null&&n.f&8192&&(e|=x);var r={ctx:A,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};N?.register_created_effect(r);var i=r;if(e&4)nn===null?sn.ensure().schedule(r):nn.push(r);else if(t!==null){try{Ir(r)}catch(e){throw V(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=ne))}if(i!==null&&(i.parent=n,n!==null&&Jn(i,n),H!==null&&H.f&2&&!(e&64))){var a=H;(a.effects??=[]).push(i)}return r}function Yn(){return H!==null&&!U}function Xn(e){let t=z(8,null);return M(t,v),t.teardown=e,t}function Zn(e){qn(`$effect`);var t=G.f;if(!H&&t&32&&A!==null&&!A.i){var n=A;(n.e??=[]).push(e)}else return Qn(e)}function Qn(e){return z(4|ae,e)}function $n(e){return qn(`$effect.pre`),z(8|ae,e)}function er(e){sn.ensure();let t=z(64|ie,e);return(e={})=>new Promise(n=>{e.outro?hr(t,()=>{V(t),n(void 0)}):(V(t),n(void 0))})}function tr(e){return z(4,e)}function nr(e,t){var n=A,r={effect:null,ran:!1,deps:e};n.l.$.push(r),r.effect=ar(()=>{if(e(),!r.ran){r.ran=!0;var n=G;try{K(n.parent),Q(t)}finally{K(n)}}})}function rr(){var e=A;ar(()=>{for(var t of e.l.$){t.deps();var n=t.effect;n.f&1024&&n.deps!==null&&M(n,b),jr(n)&&Ir(n),t.ran=!1}})}function ir(e){return z(le|ie,e)}function ar(e,t=0){return z(8|t,e)}function or(e,t=[],n=[],r=[]){Lt(r,t,n,t=>{z(8,()=>{e(...t.map(Z))})})}function sr(e,t=[],n=[],r=[]){Lt(r,t,n,t=>{z(4,()=>e(...t.map(Z)))})}function cr(e,t=0){return z(16|t,e)}function lr(e,t=0){return z(_|t,e)}function B(e){return z(32|ie,e)}function ur(e){var t=e.teardown;if(t!==null){let e=Sr,n=H;Cr(!0),W(null);try{t.call(null)}finally{Cr(e),W(n)}}}function dr(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&jt(()=>{e.abort(ve)});var r=n.next;n.f&64?n.parent=null:V(n,t),n=r}}function fr(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||V(t),t=n}}function V(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(pr(e.nodes.start,e.nodes.end),n=!0),e.f|=te,dr(e,t&&!n),Fr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();ur(e),e.f^=te,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&mr(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function pr(e,t){for(;e!==null;){var n=e===t?null:R(e);e.remove(),e=n}}function mr(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function hr(e,t,n=!0){var r=[];gr(e,r,!0);var i=()=>{n&&V(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function gr(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;gr(i,t,o?n:!1)}i=a}}}function _r(e){vr(e,!0)}function vr(e,t){if(e.f&8192){e.f^=x,e.f&1024||(M(e,y),sn.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;vr(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function yr(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:R(n);t.append(n),n=i}}var br=null,xr=!1,Sr=!1;function Cr(e){Sr=e}var H=null,U=!1;function W(e){H=e}var G=null;function K(e){G=e}var q=null;function wr(e){H!==null&&(q??=new Set).add(e)}var J=null,Y=0,X=null;function Tr(e){X=e}var Er=1,Dr=0,Or=Dr;function kr(e){Or=e}function Ar(){return++Er}function jr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~se),t&4096){for(var n=e.deps,r=n.length,i=0;ie.wv)return!0}t&512&&P===null&&M(e,v)}return!1}function Mr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(q!==null&&q.has(e)))for(var i=0;i{e.ac.abort(ve)}),e.ac=null);try{e.f|=ce;var u=e.fn,d=u();e.f|=ee;var f=e.deps,p=N?.is_fork;if(J!==null){var m;if(p||Fr(e,Y),f!==null&&Y>0)for(f.length=Y+J.length,m=0;m{s.ac.abort(ve),s.ac=null}),Yt(s),Fr(s,0)}}function Fr(e,t){var n=e.deps;if(n!==null)for(var r=t;r{e.isConnected&&e.dispatchEvent(t)}))}function ri(e,t,n,r={}){function i(e){if(r.capture||ci.call(t,e),!e.cancelBubble)return jt(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?j(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function ii(e,t,n,r,i){var a={capture:r,passive:i},o=ri(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Xn(()=>{t.removeEventListener(e,o,a)})}function ai(e,t,n){(t[$r]??={})[e]=n}function oi(e){for(var t=0;t{throw e});throw p}}finally{e[$r]=t,delete e.currentTarget,W(d),K(f)}}}var li=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function ui(e){return li?.createHTML(e)??e}function di(e){var t=Gn(`template`);return t.innerHTML=ui(e.replaceAll(``,``)),t.content}function $(e,t){var n=G;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function fi(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(``);return()=>{if(T)return $(D,null),D;i===void 0&&(i=di(a?e:``+e),n||(i=L(i)));var t=r||In?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=L(t),s=t.lastChild;$(o,s)}else $(t,t);return t}}function pi(e,t,n=`svg`){var r=!e.startsWith(``),i=(t&1)!=0,a=`<${n}>${r?e:``+e}`,o;return()=>{if(T)return $(D,null),D;if(!o){var e=L(di(a));if(i)for(o=document.createDocumentFragment();L(e);)o.appendChild(L(e));else o=L(e)}var t=o.cloneNode(!0);if(i){var n=L(t),r=t.lastChild;$(n,r)}else $(t,t);return t}}function mi(e,t){return pi(e,t,`svg`)}function hi(e=``){if(!T){var t=I(e+``);return $(t,t),t}var n=D;return n.nodeType===3?Kn(n):(n.before(n=I()),O(n)),$(n,n),n}function gi(){if(T)return $(D,null),D;var e=document.createDocumentFragment(),t=document.createComment(``),n=I();return e.append(t,n),$(t,n),e}function _i(e,t){if(T){var n=G;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=D),k();return}e!==null&&e.before(t)}function vi(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[ge]??=e.nodeValue)&&(e[ge]=n,e.nodeValue=`${n}`)}function yi(e,t){return Si(e,t)}function bi(e,t){zn(),t.intro=t.intro??!1;let n=t.target,r=T,i=D;try{for(var a=L(n);a&&(a.nodeType!==8||a.data!==`[`);)a=R(a);if(!a)throw ze;E(!0),O(a);let r=Si(e,{...t,anchor:a});return E(!1),r}catch(r){if(r instanceof Error&&r.message.split(` -`).some(e=>e.startsWith(`https://svelte.dev/e/`)))throw r;return r!==ze&&console.warn(`Failed to hydrate: `,r),t.recover===!1&&Me(),zn(),Un(n),E(!1),yi(e,t)}finally{E(r),O(i)}}var xi=new Map;function Si(e,{target:t,anchor:n,props:r={},events:a,context:o,intro:s=!0,transformError:c}){zn();var l=void 0,u=er(()=>{var s=n??t.appendChild(I());Ft(s,{pending:()=>{}},t=>{lt({});var n=A;if(o&&(n.c=o),a&&(r.$$events=a),T&&$(t,null),l=e(t,r)||{},T&&(G.nodes.end=D,D===null||D.nodeType!==8||D.data!==`]`))throw Ge(),ze;ut()},c);var u=new Set,d=e=>{for(var n=0;n{for(var e of u)for(let n of[t,document]){var r=xi.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,ci),r.delete(e),r.size===0&&xi.delete(n)):r.set(e,i)}ti.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return Ci.set(l,u),l}var Ci=new WeakMap;function wi(e,t){let n=Ci.get(e);return n?(Ci.delete(e),n(t)):Promise.resolve()}var Ti=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)_r(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(_r(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(V(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();yr(r,t),t.append(I()),this.#n.set(e,{effect:r,fragment:t})}else V(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),hr(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(V(n.effect),this.#n.delete(e))};ensure(e,t){var n=N,r=Wn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=I();i.append(a),this.#n.set(e,{effect:B(()=>t(a)),fragment:i})}else this.#t.set(e,B(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else T&&(this.anchor=D),this.#a(n)}},Ei=0,Di=1,Oi=2;function ki(e,t,n,r,i){T&&k();var a=dt(),o=w,s=a?Cn(o):Tn(o,!1,!1),c=a?Cn(o):Tn(o,!1,!1),l=new Ti(e);cr(()=>{var a=N,o=t(),u=!1;let d=T&&p(o)===(e.data===`[!`);if(d&&(O(Xe()),E(!1)),p(o)){var f=Rt(),m=!1;let e=e=>{if(!u){m=!0,f(!1),N===a&&a.deactivate(),sn.ensure();try{e()}finally{zt(!1),en||cn()}}};o.then(t=>{e(()=>{En(s,t),l.ensure(Di,r&&(e=>r(e,s)))})},t=>{e(()=>{if(En(c,t),l.ensure(Oi,i&&(e=>i(e,c))),!i)throw c.v})}),T?l.ensure(Ei,n):j(()=>{m||e(()=>{l.ensure(Ei,n)})})}else En(s,o),l.ensure(Di,r&&(e=>r(e,s)));return d&&E(!0),()=>{u=!0}})}function Ai(e,t,n=!1){var r;T&&(r=D,k());var i=new Ti(e),a=n?ne:0;function o(e,t){if(T){var n=Ze(r);if(e!==parseInt(n.substring(1))){var a=Xe();O(a),i.anchor=a,E(!1),i.ensure(e,t),E(!0);return}}i.ensure(e,t)}cr(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}var ji=Symbol(`NaN`);function Mi(e,t,n){T&&k();var r=new Ti(e),i=!dt();cr(()=>{var e=t();e!==e&&(e=ji),i&&typeof e==`object`&&e&&(e={}),r.ensure(e,n)})}function Ni(e,t){return t}function Pi(e,t,n){for(var r=[],a=t.length,o,s=t.length,c=0;c{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Fi(e,i(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=r.length===0&&n!==null;if(l){var u=n,d=u.parentNode;Un(d),d.append(u),e.items.clear()}Fi(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Fi(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i{var e=r();return t(e)?e:e==null?[]:i(e)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,zi(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=oe,Vi(d,null,c)):_r(d):hr(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:cr(()=>{p=Z(f);var e=p.length;let t=!1;T&&Ze(c)===`[!`!=(e===0)&&(c=Xe(),O(c),E(!1),t=!0);for(var i=new Set,u=N,v=Wn(),y=0;ys(c)):(d=B(()=>s(Ii??=I())),d.f|=oe)),e>i.size&&we(``,``,``),T&&e>0&&O(Xe()),!h)if(m.set(u,i),v){for(let[e,t]of l)i.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&E(!0),Z(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,T&&(c=D)}function Ri(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function zi(e,t,n,r,a){var o=(r&8)!=0,s=t.length,c=e.items,l=Ri(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v0){var re=r&4&&s===0?n:null;if(o){for(v=0;v{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Bi(e,t,n,r,i,a,o,s){var c=o&1?o&16?Cn(n):Tn(n,!1,!1):null,l=o&2?Cn(i):null;return{v:c,i:l,e:B(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Vi(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=R(r);if(a.before(r),r===i)return;r=o}}function Hi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Ui(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;T&&(o=O(L(c)))}or(()=>{var e=G;if(s===(s=t()??``)){T&&k();return}if(n&&!T){e.nodes=null,c.innerHTML=s,s!==``&&$(L(c),c.lastChild);return}if(e.nodes!==null&&(pr(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(T){for(var a=D.data,l=k(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=R(l);if(l===null)throw Ge(),ze;$(D,u),o=O(l);return}var d=Gn(r?`svg`:i?`math`:`template`,r?Ve:i?He:void 0);d.innerHTML=s;var f=r||i?d:d.content;if($(L(f),f.lastChild),r||i)for(;L(f);)o.before(L(f));else o.before(f)}})}function Wi(e,t,...n){var r=new Ti(e);cr(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},ne)}function Gi(e){return(t,...n)=>{var r=e(...n),i;T?(i=D,k()):(i=L(di(r.render().trim())),t.before(i));let a=r.setup?.(i);$(i,i),typeof a==`function`&&Xn(a)}}function Ki(e,t,n){var r;T&&(r=D,k());var i=new Ti(e);cr(()=>{var e=t()??null;if(T&&Ze(r)===`[`!=(e!==null)){var a=Xe();O(a),i.anchor=a,E(!1),i.ensure(e,e&&(t=>n(t,e))),E(!0);return}i.ensure(e,e&&(t=>n(t,e)))},ne)}function qi(e,t,n,r,i,a){let o=T;T&&k();var s=null;T&&D.nodeType===1&&(s=D,k());var c=T?D:e,l=new Ti(c,!1);cr(()=>{let e=t()||null;var a=i?i():n||e===`svg`?Ve:void 0;if(e===null){l.ensure(null,null);return}return l.ensure(e,t=>{if(e){if(s=T?s:Gn(e,a),$(s,s),r){var n=null;T&&Qr(e)&&s.append(n=document.createComment(``));var i=T?L(s):s.appendChild(I());T&&(i===null?E(!1):O(i)),r(s,i),n?.remove()}G.nodes.end=s,t.before(s)}T&&O(t)}),()=>{}},ne),Xn(()=>{}),o&&(E(!0),O(c))}function Ji(e,t){let n=null,r=T;var i;if(T){n=D;for(var a=L(document.head);a!==null&&(a.nodeType!==8||a.data!==e);)a=R(a);if(a===null)E(!1);else{var o=R(a);a.remove(),O(o)}}T||(i=document.head.appendChild(I()));try{cr(()=>{var e=B(()=>t(i));e.f|=re})}finally{r&&(E(!0),O(n))}}function Yi(e,t,n){tr(()=>{var r=Q(()=>t(e,n?.())||{});if(n&&r?.update){var i=!1,a={};ar(()=>{var e=n();Vr(e),i&&$e(a,e)&&(a=e,r.update(e))}),i=!0}if(r?.destroy)return()=>r.destroy()})}function Xi(e,t){var n=void 0,r;lr(()=>{n!==(n=t())&&(r&&=(V(r),null),n&&(r=B(()=>{tr(()=>n(e))})))})}function Zi(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t=0;){var s=o+a;(o===0||ea.includes(r[o-1]))&&(s===r.length||ea.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function na(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function ra(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function ia(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(ra)),i&&c.push(...Object.keys(i).map(ra));var l=0,u=-1;let t=e.length;for(var d=0;d{ca(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Xn(()=>{t.disconnect()})}function ua(e,t,n=t){var r=new WeakSet,i=!0;Mt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),da);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&da(o)}n(a),e.__value=a,N!==null&&r.add(N)}),tr(()=>{var a=t();if(e===document.activeElement){var o=N;if(r.has(o))return}if(ca(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=da(s),n(a))}e.__value=a,i=!1}),la(e)}function da(e){return`__value`in e?e.__value:e.value}var fa=Symbol(`class`),pa=Symbol(`style`),ma=Symbol(`is custom element`),ha=Symbol(`is html`),ga=ye?`link`:`LINK`,_a=ye?`input`:`INPUT`,va=ye?`option`:`OPTION`,ya=ye?`select`:`SELECT`,ba=ye?`progress`:`PROGRESS`;function xa(e){if(T){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;Ta(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;Ta(e,`checked`,null),e.checked=r}}};e[_e]=n,j(n),At()}}function Sa(e,t){var n=Oa(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==ba)||(e.value=t??``)}function Ca(e,t){var n=Oa(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function wa(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function Ta(e,t,n,r){var i=Oa(e);T&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ga)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[fe]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&Aa(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function Ea(e,t,n,r,i=!1,a=!1){if(T&&i&&e.nodeName===_a){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||xa(o)}var s=Oa(e),c=s[ma],l=!s[ha];let u=T&&c;u&&E(!1);var d=t||{},f=e.nodeName===va;for(var p in t)p in n||(n[p]=null);n.class?n.class=$i(n.class):(r||n[fa])&&(n.class=null),n[pa]&&(n.style??=null);var m=Aa(e);if(e.nodeName===_a&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==d.type||h===void 0&&e.hasAttribute(`type`))&&(d.type=h,Ta(e,`type`,h,a))}for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){aa(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[fa],n[fa]),d[i]=o,d[fa]=n[fa];continue}if(i===`style`){sa(e,o,t?.[pa],n[pa]),d[i]=o,d[pa]=n[pa];continue}var g=d[i];if(!(o===g&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var _=i[0]+i[1];if(_!==`$$`)if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=Gr(r);if(Ur(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(v)ai(r,e,o),oi([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=ri(r,e,a,t)}}else if(i===`style`)Ta(e,i,o);else if(i===`autofocus`)Dt(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)wa(e,o);else{var y=i;l||(y=Jr(y));var b=y===`defaultValue`||y===`defaultChecked`;if(o==null&&!c&&!b)if(s[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else b||m.includes(y)&&(c||typeof o!=`string`)?(e[y]=o,y in s&&(s[y]=w)):typeof o!=`function`&&Ta(e,y,o,a)}}}return u&&E(!0),d}function Da(e,t,n=[],r=[],i=[],a,o=!1,s=!1){Lt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===ya,l=!1;if(lr(()=>{var u=t(...n.map(Z)),d=Ea(e,r,u,a,o,s);l&&c&&`value`in u&&ca(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||V(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&V(i[t]),i[t]=B(()=>Xi(e,()=>f))),d[t]=f}r=d}),c){var u=e;tr(()=>{ca(u,r.value,!0),la(u)})}l=!0})}function Oa(e){return e[pe]??={[ma]:e.nodeName.includes(`-`),[ha]:e.namespaceURI===Be}}var ka=new Map;function Aa(e){var t=e.getAttribute(`is`)||e.nodeName,n=ka.get(t);if(n)return n;ka.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=s(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.push(o);i=u(i)}return n}function ja(e,t,n=t){var r=new WeakSet;Mt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Ia(e)?La(a):a,n(a),N!==null&&r.add(N),await Lr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(T&&e.defaultValue!==e.value||Q(t)==null&&e.value)&&(n(Ia(e)?La(e.value):e.value),N!==null&&r.add(N)),ar(()=>{var n=t();if(e===document.activeElement){var i=N;if(r.has(i))return}Ia(e)&&n===La(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}var Ma=new Set;function Na(e,t,n,r,i=r){var a=n.getAttribute(`type`)===`checkbox`,o=e;let s=!1;if(t!==null)for(var c of t)o=o[c]??=[];o.push(n),Mt(n,`change`,()=>{var e=n.__value;a&&(e=Fa(o,e,n.checked)),i(e)},()=>i(a?[]:null)),ar(()=>{var e=r();if(T&&n.defaultChecked!==n.checked){s=!0;return}a?(e||=[],n.checked=e.includes(n.__value)):n.checked=Nn(n.__value,e)}),Xn(()=>{var e=o.indexOf(n);e!==-1&&o.splice(e,1)}),Ma.has(o)||(Ma.add(o),j(()=>{o.sort((e,t)=>e.compareDocumentPosition(t)===4?-1:1),Ma.delete(o)})),j(()=>{if(s){var e=a?Fa(o,e,n.checked):o.find(e=>e.checked)?.__value;i(e)}})}function Pa(e,t,n=t){Mt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(T&&e.defaultChecked!==e.checked||Q(t)==null)&&n(e.checked),ar(()=>{e.checked=!!t()})}function Fa(e,t,n){for(var r=new Set,i=0;i{var o,s;return ar(()=>{o=s,s=r?.()||[],Q(()=>{Ra(n(...s),e)||(t(e,...s),o&&Ra(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Ra(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Ba(e=!1){let t=A,n=t.l.u;if(!n)return;let r=()=>Vr(t.s);if(e){let e=0,n={},i=Vt(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>Z(i)}n.b.length&&$n(()=>{Va(t,r),h(n.b)}),Zn(()=>{let e=Q(()=>n.m.map(m));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Zn(()=>{Va(t,r),h(n.a)})}function Va(e,t){if(e.l.s)for(let t of e.l.s)Z(t);t()}function Ha(e,t,n,r){var i=!tt||(n&2)!=0,a=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Vt(r),Z(u)):(l&&(l=!1,c=s?Q(r):r),c);let f;if(a){var p=C in e||de in e;f=o(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;a?[m,h]=Et(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Pe(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Vt:Gt)(()=>(v=!1,g()));a&&Z(y);var b=G;return(function(e,t){if(arguments.length>0){let n=t?Z(y):i&&a?jn(e):e;return F(y,n),v=!0,c!==void 0&&(c=n),e}return Sr&&v||b.f&16384?y.v:Z(y)})}function Ua(e){return class extends Wa{constructor(t){super({component:e,...t})}}}var Wa=class{#e;#t;constructor(e){var t=new Map,n=(e,n)=>{var r=Tn(n,!1,!1);return t.set(e,r),r};let r=new Proxy({...e.props||{},$$events:{}},{get(e,r){return Z(t.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===de?!0:(Z(t.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,i){return F(t.get(r)??n(r,i),i),Reflect.set(e,r,i)}});this.#t=(e.hydrate?bi:yi)(e.component,{target:e.target,anchor:e.anchor,props:r,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),(!e?.props?.$$host||e.sync===!1)&&cn(),this.#e=r.$$events;for(let e of Object.keys(this.#t))e===`$set`||e===`$destroy`||e===`$on`||a(this,e,{get(){return this.#t[e]},set(t){this.#t[e]=t},enumerable:!0});this.#t.$set=e=>{Object.assign(r,e)},this.#t.$destroy=()=>{wi(this.#t)}}$set(e){this.#t.$set(e)}$on(e,t){this.#e[e]=this.#e[e]||[];let n=(...e)=>t.call(this,...e);return this.#e[e].push(n),()=>{this.#e[e]=this.#e[e].filter(e=>e!==n)}}$destroy(){this.#t.$destroy()}};function Ga(e,t){if(be(`hydratable`),T){let t=window.__svelte?.h;if(t?.has(e))return t.get(e);We(e)}return t()}var Ka=e({afterUpdate:()=>$a,beforeUpdate:()=>Qa,createContext:()=>it,createEventDispatcher:()=>Za,createRawSnippet:()=>Gi,flushSync:()=>cn,fork:()=>vn,getAbortSignal:()=>qa,getAllContexts:()=>ct,getContext:()=>at,hasContext:()=>st,hydratable:()=>Ga,hydrate:()=>bi,mount:()=>yi,onDestroy:()=>Ya,onMount:()=>Ja,setContext:()=>ot,settled:()=>Rr,tick:()=>Lr,unmount:()=>wi,untrack:()=>Q});function qa(){return H===null&&je(),(H.ac??=new AbortController).signal}function Ja(e){A===null&&xe(`onMount`),tt&&A.l!==null?eo(A).m.push(e):Zn(()=>{let t=Q(e);if(typeof t==`function`)return t})}function Ya(e){A===null&&xe(`onDestroy`),Ja(()=>()=>Q(e))}function Xa(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function Za(){let e=A;return e===null&&xe(`createEventDispatcher`),(n,r,i)=>{let a=e.s.$$events?.[n];if(a){let o=t(a)?a.slice():[a],s=Xa(n,r,i);for(let t of o)t.call(e.x,s);return!s.defaultPrevented}return!0}}function Qa(e){A===null&&xe(`beforeUpdate`),A.l===null&&Ne(`beforeUpdate`),eo(A).b.push(e)}function $a(e){A===null&&xe(`afterUpdate`),A.l===null&&Ne(`afterUpdate`),eo(A).a.push(e)}function eo(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}export{Zn as $,Mi as A,ai as B,Ji as C,Ui as D,Wi as E,gi as F,Rr as G,ni as H,fi as I,sr as J,Lr as K,mi as L,ki as M,vi as N,Li as O,_i as P,or as Q,hi as R,Yi as S,f as St,Ki as T,Vr as U,ii as V,Z as W,nr as X,tr as Y,rr as Z,la as _,lt as _t,Ha as a,Hn as at,aa as b,Ye as bt,Pa as c,F as ct,Da as d,Gt as dt,$n as et,xa as f,Wt as ft,ua as g,ut as gt,Sa as h,at as ht,Ua as i,Vn as it,Ai as j,Ni as k,Na as l,wn as lt,Ca as m,wt as mt,Ya as n,Pn as nt,Ba as o,jn as ot,Ta as p,Ot as pt,Q as q,Ja as r,Bn as rt,za as s,Tn as st,Ka as t,Fn as tt,ja as u,On as ut,ca as v,ot as vt,qi as w,$i as x,Je as xt,sa as y,nt as yt,oi as z}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/DGD3aKTU.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/DGD3aKTU.js deleted file mode 100644 index bba33b24..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/DGD3aKTU.js +++ /dev/null @@ -1,54 +0,0 @@ -import{t as e}from"./HclGiUj8.js";var t=typeof process==`object`&&process+``==`[object process]`&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!==`browser`),n=[1/0,1/0,-1/0,-1/0],r=new Float32Array(n),i=[.001,0,0,.001,0,0],a=1.35,o=`http://www.w3.org/2000/svg`,s={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},c={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},l=`pdfjs_internal_id_`,u=`pdfjs_internal_editor_`,d={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,POPUP:16,SIGNATURE:101,COMMENT:102},f={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,INK_COLOR_AND_OPACITY:24,HIGHLIGHT_COLOR:31,HIGHLIGHT_THICKNESS:32,HIGHLIGHT_FREE:33,HIGHLIGHT_SHOW_ALL:34,DRAW_STEP:41},p={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},m={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},h={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},g={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26,RICHMEDIA:27},_={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},v={ERRORS:0,WARNINGS:1,INFOS:5},y={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93,rawFillPath:94},b={moveTo:0,lineTo:1,curveTo:2,quadraticCurveTo:3,closePath:4},x={NEED_PASSWORD:1,INCORRECT_PASSWORD:2},S=v.WARNINGS;function C(e){Number.isInteger(e)&&(S=e)}function w(){return S}function T(e){S>=v.INFOS&&console.info(`Info: ${e}`)}function E(e){S>=v.WARNINGS&&console.warn(`Warning: ${e}`)}function D(e){throw Error(e)}function O(e,t){e||D(t)}function ee(e){switch(e?.protocol){case`http:`:case`https:`:case`ftp:`:case`mailto:`:case`tel:`:return!0;default:return!1}}function k(e,t=null,n=null){if(!e)return null;if(n&&typeof e==`string`&&(n.addDefaultProtocol&&e.startsWith(`www.`)&&e.match(/\./g)?.length>=2&&(e=`http://${e}`),n.tryConvertEncoding))try{e=ce(e)}catch{}let r=t?URL.parse(e,t):URL.parse(e);return ee(r)?r:null}function A(e,t,n=!1){let r=URL.parse(e);return r?(r.hash=t,r.href):n&&k(e,`http://example.com`)?e.split(`#`,1)[0]+`${t?`#${t}`:``}`:``}function j(e){return e.substring(e.lastIndexOf(`/`)+1)}function M(e,t,n,r=!1){return Object.defineProperty(e,t,{value:n,enumerable:!r,configurable:!0,writable:!1}),n}var N=function(){function e(e,t){this.message=e,this.name=t}return e.prototype=Error(),e.constructor=e,e}(),te=class extends N{constructor(e,t){super(e,`PasswordException`),this.code=t}},ne=class extends N{constructor(e,t){super(e,`UnknownErrorException`),this.details=t}},re=class extends N{constructor(e){super(e,`InvalidPDFException`)}},ie=class extends N{constructor(e,t,n){super(e,`ResponseException`),this.status=t,this.missing=n}},ae=class extends N{constructor(e){super(e,`FormatError`)}},P=class extends N{constructor(e){super(e,`AbortException`)}};function oe(e){(typeof e!=`object`||e?.length===void 0)&&D(`Invalid argument for bytesToString`);let t=e.length,n=8192;if(t`u`)return M(this,`isAlphaColorInputSupported`,!1);let e=document.createElement(`input`);return e.type=`color`,e.setAttribute(`alpha`,``),e.value=`#ff000080`,M(this,`isAlphaColorInputSupported`,e.value!==`#ff0000`)}static get isBackdropFilterSupported(){return M(this,`isBackdropFilterSupported`,typeof CSS<`u`&&CSS.supports(`backdrop-filter`,`blur(1px)`))}},I=class{static get hexNums(){return M(this,`hexNums`,Array.from(Array(256).keys(),e=>e.toString(16).padStart(2,`0`)))}static makeHexColor(e,t,n){return`#${this.hexNums[e]}${this.hexNums[t]}${this.hexNums[n]}`}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static multiplyByDOMMatrix(e,t){return[e[0]*t.a+e[2]*t.b,e[1]*t.a+e[3]*t.b,e[0]*t.c+e[2]*t.d,e[1]*t.c+e[3]*t.d,e[0]*t.e+e[2]*t.f+e[4],e[1]*t.e+e[3]*t.f+e[5]]}static applyTransform(e,t,n=0){let r=e[n],i=e[n+1];e[n]=r*t[0]+i*t[2]+t[4],e[n+1]=r*t[1]+i*t[3]+t[5]}static applyTransformToBezier(e,t,n=0){let r=t[0],i=t[1],a=t[2],o=t[3],s=t[4],c=t[5];for(let t=0;t<6;t+=2){let l=e[n+t],u=e[n+t+1];e[n+t]=l*r+u*a+s,e[n+t+1]=l*i+u*o+c}}static applyInverseTransform(e,t){let n=e[0],r=e[1],i=t[0]*t[3]-t[1]*t[2];e[0]=(n*t[3]-r*t[2]+t[2]*t[5]-t[4]*t[3])/i,e[1]=(-n*t[1]+r*t[0]+t[4]*t[1]-t[5]*t[0])/i}static axialAlignedBoundingBox(e,t,n){let r=t[0],i=t[1],a=t[2],o=t[3],s=t[4],c=t[5],l=e[0],u=e[1],d=e[2],f=e[3],p=r*l+s,m=p,h=r*d+s,g=h,_=o*u+c,v=_,y=o*f+c,b=y;if(i!==0||a!==0){let e=i*l,t=i*d,n=a*u,r=a*f;p+=n,g+=n,h+=r,m+=r,_+=e,b+=e,y+=t,v+=t}n[0]=Math.min(n[0],p,h,m,g),n[1]=Math.min(n[1],_,y,v,b),n[2]=Math.max(n[2],p,h,m,g),n[3]=Math.max(n[3],_,y,v,b)}static inverseTransform(e){let t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static singularValueDecompose2dScale(e,t){let n=e[0],r=e[1],i=e[2],a=e[3],o=n**2+r**2,s=n*i+r*a,c=i**2+a**2,l=(o+c)/2,u=Math.sqrt(l**2-(o*c-s**2));t[0]=Math.sqrt(l+u||1),t[1]=Math.sqrt(l-u||1)}static normalizeRect(e){let t=e.slice(0);return e[0]>e[2]&&(t[0]=e[2],t[2]=e[0]),e[1]>e[3]&&(t[1]=e[3],t[3]=e[1]),t}static intersect(e,t){let n=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),r=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(n>r)return null;let i=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),a=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return i>a?null:[n,i,r,a]}static pointBoundingBox(e,t,n){n[0]=Math.min(n[0],e),n[1]=Math.min(n[1],t),n[2]=Math.max(n[2],e),n[3]=Math.max(n[3],t)}static rectBoundingBox(e,t,n,r,i){i[0]=Math.min(i[0],e,n),i[1]=Math.min(i[1],t,r),i[2]=Math.max(i[2],e,n),i[3]=Math.max(i[3],t,r)}static#e(e,t,n,r,i,a,o,s,c,l){if(c<=0||c>=1)return;let u=1-c,d=c*c,f=d*c,p=u*(u*(u*e+3*c*t)+3*d*n)+f*r,m=u*(u*(u*i+3*c*a)+3*d*o)+f*s;l[0]=Math.min(l[0],p),l[1]=Math.min(l[1],m),l[2]=Math.max(l[2],p),l[3]=Math.max(l[3],m)}static#t(e,t,n,r,i,a,o,s,c,l,u,d){if(Math.abs(c)<1e-12){Math.abs(l)>=1e-12&&this.#e(e,t,n,r,i,a,o,s,-u/l,d);return}let f=l**2-4*u*c;if(f<0)return;let p=Math.sqrt(f),m=2*c;this.#e(e,t,n,r,i,a,o,s,(-l+p)/m,d),this.#e(e,t,n,r,i,a,o,s,(-l-p)/m,d)}static bezierBoundingBox(e,t,n,r,i,a,o,s,c){c[0]=Math.min(c[0],e,o),c[1]=Math.min(c[1],t,s),c[2]=Math.max(c[2],e,o),c[3]=Math.max(c[3],t,s),this.#t(e,n,i,o,t,r,a,s,3*(-e+3*(n-i)+o),6*(e-2*n+i),3*(n-e),c),this.#t(e,n,i,o,t,r,a,s,3*(-t+3*(r-a)+s),6*(t-2*r+a),3*(r-t),c)}};function ce(e){return decodeURIComponent(escape(e))}var le=null,ue=null;function de(e){return le||(le=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,ue=new Map([[`ſt`,`ſt`]])),e.replaceAll(le,(e,t,n)=>t?t.normalize(`NFKC`):ue.get(n))}function fe(){if(typeof crypto.randomUUID==`function`)return crypto.randomUUID();let e=new Uint8Array(32);return crypto.getRandomValues(e),oe(e)}function pe(e,t,n){if(!Array.isArray(n)||n.length<2)return!1;let[r,i,...a]=n;if(!e(r)&&!Number.isInteger(r)||!t(i))return!1;let o=a.length,s=!0;switch(i.name){case`XYZ`:if(o<2||o>3)return!1;break;case`Fit`:case`FitB`:return o===0;case`FitH`:case`FitBH`:case`FitV`:case`FitBV`:if(o>1)return!1;break;case`FitR`:if(o!==4)return!1;s=!1;break;default:return!1}for(let e of a)if(!(typeof e==`number`||s&&e===null))return!1;return!0}var me=()=>[],he=()=>new Map,ge=()=>Object.create(null);function L(e,t,n){return Math.min(Math.max(e,t),n)}var _e=class e{constructor({viewBox:e,userUnit:t,scale:n,rotation:r,offsetX:i=0,offsetY:a=0,dontFlip:o=!1}){this.viewBox=e,this.userUnit=t,this.scale=n,this.rotation=r,this.offsetX=i,this.offsetY=a,n*=t;let s=(e[2]+e[0])/2,c=(e[3]+e[1])/2,l,u,d,f;switch(r%=360,r<0&&(r+=360),r){case 180:l=-1,u=0,d=0,f=1;break;case 90:l=0,u=1,d=1,f=0;break;case 270:l=0,u=-1,d=-1,f=0;break;case 0:l=1,u=0,d=0,f=-1;break;default:throw Error(`PageViewport: Invalid rotation, must be a multiple of 90 degrees.`)}o&&(d=-d,f=-f);let p,m,h,g;l===0?(p=Math.abs(c-e[1])*n+i,m=Math.abs(s-e[0])*n+a,h=(e[3]-e[1])*n,g=(e[2]-e[0])*n):(p=Math.abs(s-e[0])*n+i,m=Math.abs(c-e[1])*n+a,h=(e[2]-e[0])*n,g=(e[3]-e[1])*n),this.transform=[l*n,u*n,d*n,f*n,p-l*n*s-d*n*c,m-u*n*s-f*n*c],this.width=h,this.height=g}get rawDims(){let e=this.viewBox;return M(this,`rawDims`,{pageWidth:e[2]-e[0],pageHeight:e[3]-e[1],pageX:e[0],pageY:e[1]})}clone({scale:t=this.scale,rotation:n=this.rotation,offsetX:r=this.offsetX,offsetY:i=this.offsetY,dontFlip:a=!1}={}){return new e({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:t,rotation:n,offsetX:r,offsetY:i,dontFlip:a})}convertToViewportPoint(e,t){let n=[e,t];return I.applyTransform(n,this.transform),n}convertToPdfPoint(e,t){let n=[e,t];return I.applyInverseTransform(n,this.transform),n}},ve=class e{static textContent(t){let n=[],r={items:n,styles:Object.create(null)};function i(t){if(!t)return;let r=null,a=t.name;if(a===`#text`)r=t.value;else if(e.shouldBuildText(a))t?.attributes?.textContent?r=t.attributes.textContent:t.value&&(r=t.value);else return;if(r!==null&&n.push({str:r}),t.children)for(let e of t.children)i(e)}return i(t),r}static shouldBuildText(e){return!(e===`textarea`||e===`input`||e===`option`||e===`select`)}},ye=class{static setupStorage(e,t,n,r,i){let a=r.getValue(t,{value:null});switch(n.name){case`textarea`:if(a.value!==null&&(e.textContent=a.value),i===`print`)break;e.addEventListener(`input`,e=>{r.setValue(t,{value:e.target.value})});break;case`input`:if(n.attributes.type===`radio`||n.attributes.type===`checkbox`){if(a.value===n.attributes.xfaOn?e.setAttribute(`checked`,!0):a.value===n.attributes.xfaOff&&e.removeAttribute(`checked`),i===`print`)break;e.addEventListener(`change`,e=>{r.setValue(t,{value:e.target.checked?e.target.getAttribute(`xfaOn`):e.target.getAttribute(`xfaOff`)})})}else{if(a.value!==null&&e.setAttribute(`value`,a.value),i===`print`)break;e.addEventListener(`input`,e=>{r.setValue(t,{value:e.target.value})})}break;case`select`:if(a.value!==null){e.setAttribute(`value`,a.value);for(let e of n.children)e.attributes.value===a.value?e.attributes.selected=!0:Object.hasOwn(e.attributes,`selected`)&&delete e.attributes.selected}e.addEventListener(`input`,e=>{let n=e.target.options,i=n.selectedIndex===-1?``:n[n.selectedIndex].value;r.setValue(t,{value:i})});break}}static setAttributes({html:e,element:t,storage:n=null,intent:r,linkService:i}){let{attributes:a}=t,o=e instanceof HTMLAnchorElement;a.type===`radio`&&(a.name=`${a.name}-${r}`);for(let[t,n]of Object.entries(a))if(n!=null)switch(t){case`class`:n.length&&e.setAttribute(t,n.join(` `));break;case`dataId`:break;case`id`:e.setAttribute(`data-element-id`,n);break;case`style`:Object.assign(e.style,n);break;case`textContent`:e.textContent=n;break;default:(!o||t!==`href`&&t!==`newWindow`)&&e.setAttribute(t,n)}o&&i.addLinkAttributes(e,a.href,a.newWindow),n&&a.dataId&&this.setupStorage(e,a.dataId,t,n)}static render(e){let t=e.annotationStorage,n=e.linkService,r=e.xfaHtml,i=e.intent||`display`,a=document.createElement(r.name);r.attributes&&this.setAttributes({html:a,element:r,intent:i,linkService:n});let o=i!==`richText`,s=e.div;if(s.append(a),e.viewport){let t=`matrix(${e.viewport.transform.join(`,`)})`;s.style.transform=t}o&&s.setAttribute(`class`,`xfaLayer xfaFont`);let c=[];if(r.children.length===0){if(r.value){let e=document.createTextNode(r.value);a.append(e),o&&ve.shouldBuildText(r.name)&&c.push(e)}return{textDivs:c}}let l=[[r,-1,a]];for(;l.length>0;){let[e,r,a]=l.at(-1);if(r+1===e.children.length){l.pop();continue}let s=e.children[++l.at(-1)[1]];if(s===null)continue;let{name:u}=s;if(u===`#text`){let e=document.createTextNode(s.value);c.push(e),a.append(e);continue}let d=s?.attributes?.xmlns?document.createElementNS(s.attributes.xmlns,u):document.createElement(u);if(a.append(d),s.attributes&&this.setAttributes({html:d,element:s,storage:t,intent:i,linkService:n}),s.children?.length>0)l.push([s,-1,d]);else if(s.value){let e=document.createTextNode(s.value);o&&ve.shouldBuildText(u)&&c.push(e),d.append(e)}}for(let e of s.querySelectorAll(`.xfaNonInteractive input, .xfaNonInteractive textarea`))e.setAttribute(`readOnly`,!0);return{textDivs:c}}static update(e){let t=`matrix(${e.viewport.transform.join(`,`)})`;e.div.style.transform=t,e.div.hidden=!1}static getPageViewport(e,{scale:t=1,rotation:n=0}){let{width:r,height:i}=e.attributes.style;return new _e({viewBox:[0,0,parseInt(r,10),parseInt(i,10)],userUnit:1,scale:t,rotation:n})}},be=class{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF};async function xe(e,t=`text`){if(Oe(e,document.baseURI)){let n=await fetch(e);if(!n.ok)throw Error(n.statusText);switch(t){case`blob`:return n.blob();case`bytes`:return n.bytes();case`json`:return n.json()}return n.text()}return new Promise((n,r)=>{let i=new XMLHttpRequest;i.open(`GET`,e,!0),i.responseType=t===`bytes`?`arraybuffer`:t,i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE){if(i.status===200||i.status===0){switch(t){case`bytes`:n(new Uint8Array(i.response));return;case`blob`:case`json`:n(i.response);return}n(i.responseText);return}r(Error(i.statusText))}},i.send(null)})}var Se=class extends N{constructor(e,t=0){super(e,`RenderingCancelledException`),this.extraDelay=t}};function Ce(e){let t=e.length,n=0;for(;n{try{return new URL(e)}catch{}try{return new URL(decodeURIComponent(e))}catch{}try{return new URL(e,`https://foo.bar`)}catch{}try{return new URL(decodeURIComponent(e),`https://foo.bar`)}catch{}return null})(e);if(!n)return t;let r=e=>{try{let t=decodeURIComponent(e);return t.includes(`/`)&&(t=j(t),t.length===4&&i.test(t))?e:t}catch{return e}},i=/\.pdf$/i,a=j(n.pathname);if(i.test(a))return r(a);if(n.searchParams.size>0){let e=e=>[...e].findLast(e=>i.test(e)),t=e(n.searchParams.values())??e(n.searchParams.keys());if(t)return r(t)}if(n.hash){let e=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i.exec(n.hash);if(e)return r(e[0])}return t}var De=class{#e=new Map;times=[];time(e){this.#e.has(e)&&E(`Timer is already running for ${e}`),this.#e.set(e,Date.now())}timeEnd(e){this.#e.has(e)||E(`Timer has not been started for ${e}`),this.times.push({name:e,start:this.#e.get(e),end:Date.now()}),this.#e.delete(e)}toString(){let e=Math.max(...this.times.map(e=>e.name.length));return this.times.map(t=>`${t.name.padEnd(e)} ${t.end-t.start}ms\n`).join(``)}};function Oe(e,t){let n=t?URL.parse(e,t):URL.parse(e);return/https?:/.test(n?.protocol??``)}function R(e){e.preventDefault()}function z(e){e.preventDefault(),e.stopPropagation()}var ke=class{static#e;static toDateObject(e){if(e instanceof Date)return e;if(!e||typeof e!=`string`)return null;this.#e||=RegExp(`^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+\\-])?(\\d{2})?'?(\\d{2})?'?`);let t=this.#e.exec(e);if(!t)return null;let n=parseInt(t[1],10),r=parseInt(t[2],10);r=r>=1&&r<=12?r-1:0;let i=parseInt(t[3],10);i=i>=1&&i<=31?i:1;let a=parseInt(t[4],10);a=a>=0&&a<=23?a:0;let o=parseInt(t[5],10);o=o>=0&&o<=59?o:0;let s=parseInt(t[6],10);s=s>=0&&s<=59?s:0;let c=t[7]||`Z`,l=parseInt(t[8],10);l=l>=0&&l<=23?l:0;let u=parseInt(t[9],10)||0;return u=u>=0&&u<=59?u:0,c===`-`?(a+=l,o+=u):c===`+`&&(a-=l,o-=u),new Date(Date.UTC(n,r,i,a,o,s))}};function Ae(e){if(e.startsWith(`#`)){let t=e.slice(1);return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16),t.length>=8?parseInt(t.slice(6,8),16)/255:1]}if(e.startsWith(`rgb(`)){let[t,n,r]=e.slice(4,-1).split(`,`).map(e=>parseInt(e,10));return[t,n,r,1]}if(e.startsWith(`rgba(`)){let t=e.slice(5,-1).split(`,`);return[parseInt(t[0],10),parseInt(t[1],10),parseInt(t[2],10),parseFloat(t[3])]}let t=e.match(/^color\(srgb\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*([\d.]+|none))?\)$/);return t?[Math.round(parseFloat(t[1])*255),Math.round(parseFloat(t[2])*255),Math.round(parseFloat(t[3])*255),t[4]!==void 0&&t[4]!==`none`?parseFloat(t[4]):1]:null}function je(e){let t=Ae(e);return t?t.slice(0,3):(E(`Not a valid color format: "${e}"`),[0,0,0])}function Me(e){let t=document.createElement(`span`);t.style.visibility=`hidden`,t.style.colorScheme=`only light`,document.body.append(t);for(let n of e.keys()){t.style.color=n;let r=window.getComputedStyle(t).color;e.set(n,je(r))}t.remove()}function B(e){let{a:t,b:n,c:r,d:i,e:a,f:o}=e.getTransform();return[t,n,r,i,a,o]}function V(e){let{a:t,b:n,c:r,d:i,e:a,f:o}=e.getTransform().invertSelf();return[t,n,r,i,a,o]}function Ne(e,t,n=!1,r=!0){if(t instanceof _e){let{pageWidth:r,pageHeight:i}=t.rawDims,{style:a}=e,o=`round(down, var(--total-scale-factor) * ${r}px, var(--scale-round-x))`,s=`round(down, var(--total-scale-factor) * ${i}px, var(--scale-round-y))`;!n||t.rotation%180==0?(a.width=o,a.height=s):(a.width=s,a.height=o)}r&&e.setAttribute(`data-main-rotation`,t.rotation)}var Pe=class e{constructor(){let{pixelRatio:t}=e;this.sx=t,this.sy=t}get scaled(){return this.sx!==1||this.sy!==1}get symmetric(){return this.sx===this.sy}limitCanvas(t,n,r,i,a=-1){let o=1/0,s=1/0,c=1/0;r=e.capPixels(r,a),r>0&&(o=Math.sqrt(r/(t*n))),i!==-1&&(s=i/t,c=i/n);let l=Math.min(o,s,c);return this.sx>l||this.sy>l?(this.sx=l,this.sy=l,!0):!1}static get pixelRatio(){return globalThis.devicePixelRatio||1}static capPixels(e,t){if(t>=0){let n=Math.ceil(window.screen.availWidth*window.screen.availHeight*this.pixelRatio**2*(1+t/100));return e>0?Math.min(e,n):n}return e}},Fe=[`image/apng`,`image/avif`,`image/bmp`,`image/gif`,`image/jpeg`,`image/png`,`image/svg+xml`,`image/webp`,`image/x-icon`],Ie=class{static get isDarkMode(){return M(this,`isDarkMode`,!!window?.matchMedia?.(`(prefers-color-scheme: dark)`).matches)}},Le=class{static get commentForegroundColor(){let e=document.createElement(`span`);e.classList.add(`comment`,`sidebar`);let{style:t}=e;t.width=t.height=`0`,t.display=`none`,t.color=`var(--comment-fg-color)`,document.body.append(e);let{color:n}=window.getComputedStyle(e);return e.remove(),M(this,`commentForegroundColor`,je(n))}};function Re(e,t){t=L(t??1,0,1);let n=255*(1-t);return e.map(e=>Math.round(e*t+n))}function ze(e,t){let n=e[0]/255,r=e[1]/255,i=e[2]/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2;if(a===o)t[0]=t[1]=0;else{let e=a-o;switch(t[1]=s<.5?e/(a+o):e/(2-a-o),a){case n:t[0]=((r-i)/e+(ri?(r+.05)/(i+.05):(i+.05)/(r+.05)}var Ue=new Map;function We(e,t){let n=e[0]+e[1]*256+e[2]*65536+t[0]*16777216+t[1]*4294967296+t[2]*1099511627776,r=Ue.get(n);if(r)return r;let i=new Float32Array(9),a=i.subarray(0,3),o=i.subarray(3,6);ze(e,o);let s=i.subarray(6,9);ze(t,s);let c=s[2]<.5,l=c?12:4.5;if(o[2]=c?Math.sqrt(o[2]):1-Math.sqrt(1-o[2]),He(o,s,a).005;){let n=o[2]=(e+t)/2;c===He(o,s,a){n.delete()},{signal:n._signal}),this.#r.append(r)}get#p(){let e=document.createElement(`div`);return e.className=`divider`,e}async addAltText(e){let t=await e.render();this.#f(t),this.#r.append(t,this.#p),this.#i=e}addComment(e,t=null){if(this.#a)return;let n=e.renderForToolbar();if(!n)return;this.#f(n);let r=this.#o=this.#p;t?(this.#r.insertBefore(n,t),this.#r.insertBefore(r,t)):this.#r.append(n,r),this.#a=e,e.toolbar=this}addColorPicker(e){if(this.#t)return;this.#t=e;let t=e.renderButton();this.#f(t),this.#r.append(t,this.#p)}async addEditSignatureButton(e){let t=this.#s=await e.renderEditButton(this.#n);this.#f(t),this.#r.append(t,this.#p)}removeButton(e){switch(e){case`comment`:this.#a?.removeToolbarCommentButton(),this.#a=null,this.#o?.remove(),this.#o=null;break}}async addButton(e,t){switch(e){case`colorPicker`:t&&this.addColorPicker(t);break;case`altText`:t&&await this.addAltText(t);break;case`editSignature`:t&&await this.addEditSignatureButton(t);break;case`delete`:this.addDeleteButton();break;case`comment`:t&&this.addComment(t);break}}async addButtonBefore(e,t,n){if(!t&&e===`comment`)return;let r=this.#r.querySelector(n);r&&e===`comment`&&this.addComment(t,r)}updateEditSignatureButton(e){this.#s&&(this.#s.title=e)}remove(){this.#e.remove(),this.#t?.destroy(),this.#t=null}},Je=class{#e=null;#t=null;#n;constructor(e){this.#n=e}#r(){let e=this.#t=document.createElement(`div`);e.className=`editToolbar`,e.setAttribute(`role`,`toolbar`);let t=this.#n._signal;t instanceof AbortSignal&&!t.aborted&&e.addEventListener(`contextmenu`,R,{signal:t});let n=this.#e=document.createElement(`div`);return n.className=`buttons`,e.append(n),this.#n.hasCommentManager()&&this.#a(`commentButton`,`pdfjs-comment-floating-button`,`pdfjs-comment-floating-button-label`,()=>{this.#n.commentSelection(`floating_button`)}),this.#a(`highlightButton`,`pdfjs-highlight-floating-button1`,`pdfjs-highlight-floating-button-label`,()=>{this.#n.highlightSelection(`floating_button`)}),e}#i(e,t){let n=0,r=0;for(let i of e){let e=i.y+i.height;if(en){r=a,n=e;continue}t?a>r&&(r=a):a=1}static clearPointerType(){e.#r=null}static clearPointerIds(){e.#e=NaN,e.#t=null}static clearTimeStamp(){e.#n=NaN}},Ze=class{#e=0;get id(){return`${u}${this.#e++}`}},Qe=class e{#e=fe();#t=0;#n=null;static get _isSVGFittingCanvas(){let e=`data:image/svg+xml;charset=UTF-8,`,t=new OffscreenCanvas(1,3).getContext(`2d`,{willReadFrequently:!0}),n=new Image;n.src=e;let r=n.decode().then(()=>(t.drawImage(n,0,0,1,1,0,0,1,3),new Uint32Array(t.getImageData(0,0,1,1).data.buffer)[0]===0));return M(this,`_isSVGFittingCanvas`,r)}async#r(t,n){this.#n||=new Map;let r=this.#n.get(t);if(r===null)return null;if(r?.bitmap)return r.refCounter+=1,r;try{r||={bitmap:null,id:`image_${this.#e}_${this.#t++}`,refCounter:0,isSvg:!1};let t;if(typeof n==`string`?(r.url=n,t=await xe(n,`blob`)):n instanceof File?t=r.file=n:n instanceof Blob&&(t=n),t.type===`image/svg+xml`){let n=e._isSVGFittingCanvas,i=new FileReader,a=new Image,o=new Promise((e,t)=>{a.onload=()=>{r.bitmap=a,r.isSvg=!0,e()},i.onload=async()=>{let e=r.svgUrl=i.result;a.src=await n?`${e}#svgView(preserveAspectRatio(none))`:e},a.onerror=i.onerror=t});i.readAsDataURL(t),await o}else r.bitmap=await createImageBitmap(t);r.refCounter=1}catch(e){E(e),r=null}return this.#n.set(t,r),r&&this.#n.set(r.id,r),r}async getFromFile(e){let{lastModified:t,name:n,size:r,type:i}=e;return this.#r(`${t}_${n}_${r}_${i}`,e)}async getFromUrl(e){return this.#r(e,e)}async getFromBlob(e,t){let n=await t;return this.#r(e,n)}async getFromId(e){this.#n||=new Map;let t=this.#n.get(e);if(!t)return null;if(t.bitmap)return t.refCounter+=1,t;if(t.file)return this.getFromFile(t.file);if(t.blobPromise){let{blobPromise:e}=t;return delete t.blobPromise,this.getFromBlob(t.id,e)}return this.getFromUrl(t.url)}getFromCanvas(e,t){this.#n||=new Map;let n=this.#n.get(e);if(n?.bitmap)return n.refCounter+=1,n;let r=new OffscreenCanvas(t.width,t.height);return r.getContext(`2d`).drawImage(t,0,0),n={bitmap:r.transferToImageBitmap(),id:`image_${this.#e}_${this.#t++}`,refCounter:1,isSvg:!1},this.#n.set(e,n),this.#n.set(n.id,n),n}getSvgUrl(e){let t=this.#n.get(e);return t?.isSvg?t.svgUrl:null}deleteId(e){this.#n||=new Map;let t=this.#n.get(e);if(!t||(--t.refCounter,t.refCounter!==0))return;let{bitmap:n}=t;if(!t.url&&!t.file){let e=new OffscreenCanvas(n.width,n.height);e.getContext(`bitmaprenderer`).transferFromImageBitmap(n),t.blobPromise=e.convertToBlob()}n.close?.(),t.bitmap=null}isValidId(e){return e.startsWith(`image_${this.#e}_`)}},$e=class{#e=[];#t=!1;#n;#r=-1;constructor(e=128){this.#n=e}add({cmd:e,undo:t,post:n,mustExec:r,type:i=NaN,overwriteIfSameType:a=!1,keepUndo:o=!1}){if(r&&e(),this.#t)return;let s={cmd:e,undo:t,post:n,type:i};if(this.#r===-1){this.#e.length>0&&(this.#e.length=0),this.#r=0,this.#e.push(s);return}if(a&&this.#e[this.#r].type===i){o&&(s.undo=this.#e[this.#r].undo),this.#e[this.#r]=s;return}let c=this.#r+1;c===this.#n?this.#e.splice(0,1):(this.#r=c,c=0;t--)if(this.#e[t].type!==e){this.#e.splice(t+1,this.#r-t),this.#r=t;return}this.#e.length=0,this.#r=-1}}destroy(){this.#e=null}},et=class e{static ALT=1;static CTRL=2;static META=4;static SHIFT=8;constructor(t){this.callbacks=new Map;let{isMac:n}=F.platform;for(let[r,i,a={}]of t){let t=r.some(e=>e.startsWith(`mac+`));for(let o of r){let r=o;if(t){let e=o.startsWith(`mac+`);if(n!==e)continue;e&&(r=o.slice(4))}let[s,c]=e.#e(r);s!==null&&this.callbacks.getOrInsertComputed(s,me).push({callback:i,options:a,modifiers:c})}}}static#e(t){let n=null,r=0;for(let i of t.split(`+`)){if(i=i.trim(),!i)continue;let a=i.toUpperCase(),o=e[a];if(o){r|=o;continue}if(n!==null){E(`KeyboardManager: multiple keys in shortcut "${t}"`);break}n=a===`SPACE`?` `:i}return n===null&&E(`KeyboardManager: no key found in shortcut "${t}"`),[n,r]}static#t(e){let t=/^(?:Key([A-Z])|(?:Digit|Numpad)(\d))$/.exec(e);return t?t[1]?.toLowerCase()??t[2]:null}exec(t,n){let r=this.callbacks.get(n.key);if(!r){if(/^[a-z]$/i.test(n.key))return;let t=e.#t(n.code);if(t===null||t===n.key||(r=this.callbacks.get(t),!r))return}let i=(n.altKey?e.ALT:0)|(n.ctrlKey?e.CTRL:0)|(n.metaKey?e.META:0)|(n.shiftKey?e.SHIFT:0),a=r.find(e=>e.modifiers===i);if(!a)return;let{callback:o,options:{bubbles:s=!1,args:c=[],checker:l=null}}=a;l&&!l(t,n)||(o.bind(t,...c,n)(),s||z(n))}},tt=class e{static _colorsMapping=new Map([[`CanvasText`,[0,0,0]],[`Canvas`,[255,255,255]]]);get _colors(){let e=new Map([[`CanvasText`,null],[`Canvas`,null]]);return Me(e),M(this,`_colors`,e)}convert(t){let n=je(t);if(!window.matchMedia(`(forced-colors: active)`).matches)return n;for(let[t,r]of this._colors)if(r.every((e,t)=>e===n[t]))return e._colorsMapping.get(t);return n}getHexCode(e){let t=this._colors.get(e);return t?I.makeHexColor(...t):e}},nt=class e{#e=new AbortController;#t=null;#n=null;#r=new Map;#i=new Map;#a=null;#o=null;#s=null;#c=null;#l=new $e;#u=null;#d=null;#f=null;#p=0;#m=new Set;#h=null;#g=null;#_=new Set;_editorUndoBar=null;#v=!1;#y=!1;#b=!1;#x=null;#S=null;#C=null;#w=null;#T=!1;#E=null;#D=new Ze;#O=!1;#k=!1;#A=!1;#j=null;#M=null;#N=null;#P=null;#F=null;#I=d.NONE;#L=new Set;#R=null;#z=null;#B=null;#V=null;#H=null;#U={isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1};#W=[0,0];#G=null;#K=null;#q=null;#J=null;#Y=null;static TRANSLATE_SMALL=1;static TRANSLATE_BIG=10;static get _keyboardManager(){let t=e.prototype,n=e=>e.#K.contains(document.activeElement)&&document.activeElement.tagName!==`BUTTON`&&e.hasSomethingToControl(),r=(e,{target:t})=>{if(t instanceof HTMLInputElement){let{type:e}=t;return e!==`text`&&e!==`number`}return!0},i=this.TRANSLATE_SMALL,a=this.TRANSLATE_BIG;return M(this,`_keyboardManager`,new et([[[`ctrl+a`,`mac+meta+a`],t.selectAll,{checker:r}],[[`ctrl+z`,`mac+meta+z`],t.undo,{checker:r}],[[`ctrl+y`,`ctrl+shift+z`,`mac+meta+shift+z`,`ctrl+shift+Z`,`mac+meta+shift+Z`],t.redo,{checker:r}],[[`Backspace`,`alt+Backspace`,`ctrl+Backspace`,`shift+Backspace`,`mac+Backspace`,`mac+alt+Backspace`,`mac+ctrl+Backspace`,`Delete`,`ctrl+Delete`,`shift+Delete`,`mac+Delete`],t.delete,{checker:r}],[[`Enter`],t.addNewEditorFromKeyboard,{checker:(e,{target:t})=>!(t instanceof HTMLButtonElement)&&e.#K.contains(t)&&!e.isEnterHandled}],[[`Space`],t.addNewEditorFromKeyboard,{checker:(e,{target:t})=>!(t instanceof HTMLButtonElement)&&e.#K.contains(document.activeElement)}],[[`Escape`],t.unselectAll],[[`ArrowLeft`],t.translateSelectedEditors,{args:[-i,0],checker:n}],[[`ctrl+ArrowLeft`,`mac+shift+ArrowLeft`],t.translateSelectedEditors,{args:[-a,0],checker:n}],[[`ArrowRight`],t.translateSelectedEditors,{args:[i,0],checker:n}],[[`ctrl+ArrowRight`,`mac+shift+ArrowRight`],t.translateSelectedEditors,{args:[a,0],checker:n}],[[`ArrowUp`],t.translateSelectedEditors,{args:[0,-i],checker:n}],[[`ctrl+ArrowUp`,`mac+shift+ArrowUp`],t.translateSelectedEditors,{args:[0,-a],checker:n}],[[`ArrowDown`],t.translateSelectedEditors,{args:[0,i],checker:n}],[[`ctrl+ArrowDown`,`mac+shift+ArrowDown`],t.translateSelectedEditors,{args:[0,a],checker:n}]]))}constructor(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){let g=this._signal=this.#e.signal;this.#K=e,this.#q=t,this.#J=n,this.#o=r,this.#u=i,this.#z=a,this.#H=s,this._eventBus=o;let _={signal:g,...Ye};o.on(`editingaction`,this.onEditingAction.bind(this),_),o.on(`pagechanging`,this.onPageChanging.bind(this),_),o.on(`scalechanging`,this.onScaleChanging.bind(this),_),o.on(`rotationchanging`,this.onRotationChanging.bind(this),_),o.on(`setpreference`,this.onSetPreference.bind(this),_),o.on(`switchannotationeditorparams`,e=>this.updateParams(e.type,e.value),_),window.addEventListener(`pointerdown`,()=>{this.#k=!0},{capture:!0,signal:g}),window.addEventListener(`pointerup`,()=>{this.#k=!1},{capture:!0,signal:g}),window.addEventListener(`beforeunload`,this.#Q.bind(this),{capture:!0,signal:g}),this.#ne(),this.#le(),this.#ae(),this.#s=s.annotationStorage,this.#x=s.filterFactory,this.#B=c,this.#w=l||null,this.#v=u,this.#y=d,this.#b=f,this.#F=p||null,this.viewParameters={realScale:be.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1,this._editorUndoBar=m||null,this._supportsPinchToZoom=h!==!1,i?.setSidebarUiManager(this)}destroy(){this.#Y?.resolve(),this.#Y=null,this.#e?.abort(),this.#e=null,this._signal=null;for(let e of this.#i.values())e.destroy();this.#i.clear(),this.#r.clear(),this.#_.clear(),this.#P?.clear(),this.#t=null,this.#L.clear(),this.#l.destroy(),this.#o?.destroy(),this.#u?.destroy(),this.#z?.destroy(),this.#E?.hide(),this.#E=null,this.#N?.destroy(),this.#N=null,this.#n=null,this.#S&&=(clearTimeout(this.#S),null),this.#G&&=(clearTimeout(this.#G),null),this._editorUndoBar?.destroy(),this.#H=null}combinedSignal(e){return AbortSignal.any([this._signal,e.signal])}get mlManager(){return this.#F}get useNewAltTextFlow(){return this.#y}get useNewAltTextWhenAddingImage(){return this.#b}get hcmFilter(){return M(this,`hcmFilter`,this.#B?this.#x.addHCMFilter(this.#B.foreground,this.#B.background):`none`)}get direction(){return M(this,`direction`,getComputedStyle(this.#K).direction)}get _highlightColors(){return M(this,`_highlightColors`,this.#w?new Map(this.#w.split(`,`).map(e=>(e=e.split(`=`).map(e=>e.trim()),e[1]=e[1].toUpperCase(),e))):null)}get highlightColors(){let{_highlightColors:e}=this;if(!e)return M(this,`highlightColors`,null);let t=new Map,n=!!this.#B;for(let[r,i]of e){let e=r.endsWith(`_HCM`);if(n&&e){t.set(r.replace(`_HCM`,``),i);continue}!n&&!e&&t.set(r,i)}return M(this,`highlightColors`,t)}get highlightColorNames(){return M(this,`highlightColorNames`,this.highlightColors?new Map(Array.from(this.highlightColors,e=>e.reverse())):null)}getNonHCMColor(e){if(!this._highlightColors)return e;let t=this.highlightColorNames.get(e);return this._highlightColors.get(t)||e}getNonHCMColorName(e){return this.highlightColorNames.get(e)||e}setCurrentDrawingSession(e){e?(this.unselectAll(),this.disableUserSelect(!0)):this.disableUserSelect(!1),this.#f=e}setMainHighlightColorPicker(e){this.#N=e}editAltText(e,t=!1){this.#o?.editAltText(this,e,t)}hasCommentManager(){return!!this.#u}editComment(e,t,n,r){this.#u?.showDialog(this,e,t,n,r)}selectComment(e,t){(this.#i.get(e)?.getEditorByUID(t))?.toggleComment(!0,!0)}updateComment(e){this.#u?.updateComment(e.getData())}updatePopupColor(e){this.#u?.updatePopupColor(e)}removeComment(e){this.#u?.removeComments([e.uid])}deleteComment(e,t){let n=()=>{e.comment=t};this.addCommands({cmd:()=>{this._editorUndoBar?.show(n,`comment`),this.toggleComment(null),e.comment=null},undo:n,mustExec:!0})}toggleComment(e,t,n=void 0){this.#u?.toggleCommentPopup(e,t,n)}makeCommentColor(e,t){return e&&this.#u?.makeCommentColor(e,t)||null}getCommentDialogElement(){return this.#u?.dialogElement||null}async waitForEditorsRendered(e){if(this.#i.has(e-1))return;let{resolve:t,promise:n}=Promise.withResolvers(),r=n=>{n.pageNumber===e&&(this._eventBus.off(`editorsrendered`,r),t())};this._eventBus.on(`editorsrendered`,r,Ye),await n}getSignature(e){this.#z?.getSignature({uiManager:this,editor:e})}get signatureManager(){return this.#z}switchToMode(e,t){this._eventBus.on(`annotationeditormodechanged`,t,{once:!0,signal:this._signal,...Ye}),this._eventBus.dispatch(`showannotationeditorui`,{source:this,mode:e})}setPreference(e,t){this._eventBus.dispatch(`setpreference`,{source:this,name:e,value:t})}onSetPreference({name:e,value:t}){switch(e){case`enableNewAltTextWhenAddingImage`:this.#b=t;break}}onPageChanging({pageNumber:e}){this.#p=e-1}deletePage(e){for(let t of this.getEditors(e))t.remove();this.#i.delete(e),this.#p===e&&(this.#p=0)}focusMainContainer(){this.#K.focus()}findParent(e,t){for(let n of this.#i.values()){let{x:r,y:i,width:a,height:o}=n.div.getBoundingClientRect();if(e>=r&&e<=r+a&&t>=i&&t<=i+o)return n}return null}disableUserSelect(e=!1){this.#q.classList.toggle(`noUserSelect`,e)}addShouldRescale(e){this.#_.add(e)}removeShouldRescale(e){this.#_.delete(e)}onScaleChanging({scale:e}){this.commitOrRemove(),this.viewParameters.realScale=e*be.PDF_TO_CSS_UNITS;for(let e of this.#_)e.onScaleChanging();this.#f?.onScaleChanging()}onRotationChanging({pagesRotation:e}){this.commitOrRemove(),this.viewParameters.rotation=e}#X({anchorNode:e}){return e.nodeType===Node.TEXT_NODE?e.parentElement:e}#Z(e){let{currentLayer:t}=this;if(t.hasTextLayer(e))return t;for(let t of this.#i.values())if(t.hasTextLayer(e))return t;return null}highlightSelection(e=``,t=!1){let n=document.getSelection();if(!n||n.isCollapsed)return;let{anchorNode:r,anchorOffset:i,focusNode:a,focusOffset:o}=n,s=n.toString(),c=this.#X(n).closest(`.textLayer`),l=this.getSelectionBoxes(c);if(!l)return;n.empty();let u=this.#Z(c),f=this.#I===d.NONE,p=()=>{let n=u?.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:e,boxes:l,anchorNode:r,anchorOffset:i,focusNode:a,focusOffset:o,text:s});f&&this.showAllEditors(`highlight`,!0,!0),t&&n?.editComment()};if(f){this.switchToMode(d.HIGHLIGHT,p);return}p()}commentSelection(e=``){this.highlightSelection(e,!0)}#Q(e){this.commitOrRemove(),this.currentLayer?.endDrawingSession(!1)}#$(){let e=document.getSelection();if(!e||e.isCollapsed)return;let t=this.#X(e).closest(`.textLayer`),n=this.getSelectionBoxes(t);n&&(this.#E||=new Je(this),this.#E.show(t,n,this.direction===`ltr`))}getAndRemoveDataFromAnnotationStorage(e){if(!this.#s)return null;let t=`${u}${e}`,n=this.#s.getRawValue(t);return n&&this.#s.remove(t),n}addToAnnotationStorage(e){!e.isEmpty()&&this.#s&&!this.#s.has(e.id)&&this.#s.setValue(e.id,e)}a11yAlert(e,t=null){let n=this.#J;n&&(n.setAttribute(`data-l10n-id`,e),t?n.setAttribute(`data-l10n-args`,JSON.stringify(t)):n.removeAttribute(`data-l10n-args`))}#ee(){let e=document.getSelection();if(!e||e.isCollapsed){this.#R&&(this.#E?.hide(),this.#R=null,this.#ue({hasSelectedText:!1}));return}let{anchorNode:t}=e;if(t===this.#R)return;let n=this.#X(e).closest(`.textLayer`);if(!n){this.#R&&(this.#E?.hide(),this.#R=null,this.#ue({hasSelectedText:!1}));return}if(this.#E?.hide(),this.#R=t,this.#ue({hasSelectedText:!0}),!(this.#I!==d.HIGHLIGHT&&this.#I!==d.NONE)&&(this.#I===d.HIGHLIGHT&&this.showAllEditors(`highlight`,!0,!0),this.#T=this.isShiftKeyDown,!this.isShiftKeyDown)){let e=this.#I===d.HIGHLIGHT?this.#Z(n):null;if(e?.toggleDrawing(),this.#k){let t=new AbortController,n=this.combinedSignal(t),r=n=>{n.type===`pointerup`&&n.button!==0||(t.abort(),e?.toggleDrawing(!0),n.type===`pointerup`&&this.#te(`main_toolbar`))};window.addEventListener(`pointerup`,r,{signal:n}),window.addEventListener(`blur`,r,{signal:n})}else e?.toggleDrawing(!0),this.#te(`main_toolbar`)}}#te(e=``){this.#I===d.HIGHLIGHT?this.highlightSelection(e):this.#v&&this.#$()}#ne(){document.addEventListener(`selectionchange`,this.#ee.bind(this),{signal:this._signal})}#re(){if(this.#C)return;this.#C=new AbortController;let e=this.combinedSignal(this.#C);window.addEventListener(`focus`,this.focus.bind(this),{signal:e}),window.addEventListener(`blur`,this.blur.bind(this),{signal:e})}#ie(){this.#C?.abort(),this.#C=null}blur(){if(this.isShiftKeyDown=!1,this.#T&&(this.#T=!1,this.#te(`main_toolbar`)),!this.hasSelection)return;let{activeElement:e}=document;for(let t of this.#L)if(t.div.contains(e)){this.#M=[t,e],t._focusEventsAllowed=!1;break}}focus(){if(!this.#M)return;let[e,t]=this.#M;this.#M=null,t.addEventListener(`focusin`,()=>{e._focusEventsAllowed=!0},{once:!0,signal:this._signal}),t.focus()}#ae(){if(this.#j)return;this.#j=new AbortController;let e=this.combinedSignal(this.#j);window.addEventListener(`keydown`,this.keydown.bind(this),{signal:e}),window.addEventListener(`keyup`,this.keyup.bind(this),{signal:e})}#oe(){this.#j?.abort(),this.#j=null}#se(){if(this.#d)return;this.#d=new AbortController;let e=this.combinedSignal(this.#d);document.addEventListener(`copy`,this.copy.bind(this),{signal:e}),document.addEventListener(`cut`,this.cut.bind(this),{signal:e}),document.addEventListener(`paste`,this.paste.bind(this),{signal:e})}#ce(){this.#d?.abort(),this.#d=null}#le(){let e=this._signal;document.addEventListener(`dragover`,this.dragOver.bind(this),{signal:e}),document.addEventListener(`drop`,this.drop.bind(this),{signal:e})}addEditListeners(){this.#ae(),this.setEditingState(!0)}removeEditListeners(){this.#oe(),this.setEditingState(!1)}dragOver(e){for(let{type:t}of e.dataTransfer.items)for(let n of this.#g)if(n.isHandlingMimeForPasting(t)){e.dataTransfer.dropEffect=`copy`,e.preventDefault();return}}drop(e){for(let t of e.dataTransfer.items)for(let n of this.#g)if(n.isHandlingMimeForPasting(t.type)){n.paste(t,this.currentLayer),e.preventDefault();return}}copy(e){if(e.preventDefault(),this.#t?.commitOrRemove(),!this.hasSelection)return;let t=[];for(let e of this.#L){let n=e.serialize(!0);n&&t.push(n)}t.length!==0&&e.clipboardData.setData(`application/pdfjs`,JSON.stringify(t))}cut(e){this.copy(e),this.delete()}async paste(e){e.preventDefault();let{clipboardData:t}=e;for(let e of t.items)for(let t of this.#g)if(t.isHandlingMimeForPasting(e.type)){t.paste(e,this.currentLayer);return}let n=t.getData(`application/pdfjs`);if(!n)return;try{n=JSON.parse(n)}catch(e){E(`paste: "${e.message}".`);return}if(!Array.isArray(n))return;this.unselectAll();let r=this.currentLayer;try{let e=[];for(let t of n){let n=await r.deserialize(t);if(!n)return;e.push(n)}this.addCommands({cmd:()=>{for(let t of e)this.#me(t);this.#_e(e)},undo:()=>{for(let t of e)t.remove()},mustExec:!0})}catch(e){E(`paste: "${e.message}".`)}}keydown(t){!this.isShiftKeyDown&&t.key===`Shift`&&(this.isShiftKeyDown=!0),this.#I!==d.NONE&&!this.isEditorHandlingKeyboard&&e._keyboardManager.exec(this,t)}keyup(e){this.isShiftKeyDown&&e.key===`Shift`&&(this.isShiftKeyDown=!1,this.#T&&(this.#T=!1,this.#te(`main_toolbar`)))}onEditingAction({name:e}){switch(e){case`undo`:case`redo`:case`delete`:case`selectAll`:this[e]();break;case`highlightSelection`:this.highlightSelection(`context_menu`);break;case`commentSelection`:this.commentSelection(`context_menu`);break}}updatePageIndex(e,t){for(let n of this.getEditors(e))n.pageIndex=t;let n=this.#a.get(e);n&&(n.pageIndex=t,this.#i.set(t,n),this.#O?n.enable():n.disable())}startUpdatePages(){this.#a=new Map(this.#i),this.#i.clear()}endUpdatePages(){this.#a=null}clonePage(e,t){for(let n of this.getEditors(e)){let e=n.serialize(n.mode!==d.HIGHLIGHT);e&&(e.pageIndex=t,e.id=this.getId(),e.isClone=!0,delete e.popupRef,this.#s.setValue(e.id,e))}}findClonesForPage(e){let t=[],{pageIndex:n}=e;for(let[r,i]of this.#s)i.pageIndex===n&&i.isClone&&(this.#s.remove(r),t.push(e.deserialize(i).then(t=>{t&&(t.isClone=!0,e.addOrRebuild(t))})));return Promise.all(t)}#ue(e){Object.entries(e).some(([e,t])=>this.#U[e]!==t)&&(this._eventBus.dispatch(`editingstateschanged`,{source:this,details:Object.assign(this.#U,e)}),this.#I===d.HIGHLIGHT&&e.hasSelectedEditor===!1&&this.#de([[f.HIGHLIGHT_FREE,!0]]))}#de(e){this._eventBus.dispatch(`annotationeditorparamschanged`,{source:this,details:e})}setEditingState(e){e?(this.#re(),this.#se(),this.#ue({isEditing:this.#I!==d.NONE,isEmpty:this.#ge(),hasSomethingToUndo:this.#l.hasSomethingToUndo(),hasSomethingToRedo:this.#l.hasSomethingToRedo(),hasSelectedEditor:!1})):(this.#ie(),this.#ce(),this.#ue({isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(e){if(!this.#g){this.#g=e;for(let e of this.#g)this.#de(e.defaultPropertiesToUpdate)}}getId(){return this.#D.id}get currentLayer(){return this.#i.get(this.#p)}getLayer(e){return this.#i.get(e)}get currentPageIndex(){return this.#p}addLayer(e){this.#i.set(e.pageIndex,e),this.#O?e.enable():e.disable()}removeLayer(e){this.#i.delete(e.pageIndex)}async updateMode(e,t=null,n=!1,r=!1,i=!1,a=!1){if(this.#I!==e&&!(this.#Y&&(await this.#Y.promise,!this.#Y))){if(this.#Y=Promise.withResolvers(),this.#f?.commitOrRemove(),this.#I===d.POPUP&&this.#u?.hideSidebar(),this.#u?.destroyPopup(),this.#I=e,e===d.NONE){this.setEditingState(!1),this.#pe();for(let e of this.#r.values())e.hideStandaloneCommentButton();this._editorUndoBar?.hide(),this.toggleComment(null),this.#Y.resolve();return}for(let e of this.#r.values())e.addStandaloneCommentButton();e===d.SIGNATURE&&await this.#z?.loadSignatures(),n&&H.clearPointerType(),this.setEditingState(!0),await this.#fe(),this.unselectAll();for(let t of this.#i.values())t.updateMode(e);if(e===d.POPUP){this.#n||=await this.#H.getAnnotationsByType(new Set(this.#g.map(e=>e._editorType)));let e=new Set,t=[];for(let n of this.#r.values()){let{annotationElementId:r,hasComment:i,deleted:a}=n;r&&e.add(r),i&&!a&&t.push(n.getData())}for(let n of this.#n){let{id:r,popupRef:i,contentsObj:a}=n;i&&a?.str&&!e.has(r)&&!this.#m.has(r)&&t.push(n)}this.#u?.showSidebar(t)}if(!t){r&&this.addNewEditorFromKeyboard(),this.#Y.resolve();return}for(let e of this.#r.values())e.uid===t?(this.setSelected(e),a?e.editComment():i?e.enterInEditMode():e.focus()):e.unselect();this.#Y.resolve()}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(e){e.mode!==this.#I&&this._eventBus.dispatch(`switchannotationeditormode`,{source:this,...e})}updateParams(e,t){if(this.#g){switch(e){case f.CREATE:this.currentLayer.addNewEditor(t);return;case f.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch(`reporttelemetry`,{source:this,details:{type:`editing`,data:{type:`highlight`,action:`toggle_visibility`}}}),(this.#V||=new Map).set(e,t),this.showAllEditors(`highlight`,t);break}if(this.hasSelection)for(let n of this.#L)n.updateParams(e,t);else for(let n of this.#g)n.updateDefaultParams(e,t)}}showAllEditors(e,t,n=!1){for(let n of this.#r.values())n.editorType===e&&n.show(t);(this.#V?.get(f.HIGHLIGHT_SHOW_ALL)??!0)!==t&&this.#de([[f.HIGHLIGHT_SHOW_ALL,t]])}enableWaiting(e=!1){if(this.#A!==e){this.#A=e;for(let t of this.#i.values())e?t.disableClick():t.enableClick(),t.div.classList.toggle(`waiting`,e)}}async#fe(){if(!this.#O){this.#O=!0;let e=[];for(let t of this.#i.values())e.push(t.enable());await Promise.all(e);for(let e of this.#r.values())e.enable()}}#pe(){if(this.unselectAll(),this.#O){this.#O=!1;for(let e of this.#i.values())e.disable();for(let e of this.#r.values())e.disable()}}*getEditors(e){for(let t of this.#r.values())t.pageIndex===e&&(yield t)}getEditor(e){return this.#r.get(e)}addEditor(e){this.#r.set(e.id,e)}removeEditor(e){e.div.contains(document.activeElement)&&(this.#S&&clearTimeout(this.#S),this.#S=setTimeout(()=>{this.focusMainContainer(),this.#S=null},0)),this.#r.delete(e.id),e.annotationElementId&&this.#P?.delete(e.annotationElementId),this.unselect(e),(!e.annotationElementId||!this.#m.has(e.annotationElementId))&&this.#s?.remove(e.id)}addDeletedAnnotationElement(e){this.#m.add(e.annotationElementId),this.addChangedExistingAnnotation(e),e.deleted=!0}isDeletedAnnotationElement(e){return this.#m.has(e)}removeDeletedAnnotationElement(e){this.#m.delete(e.annotationElementId),this.removeChangedExistingAnnotation(e),e.deleted=!1}#me(e){let t=this.#i.get(e.pageIndex);t?t.addOrRebuild(e):(this.addEditor(e),this.addToAnnotationStorage(e))}setActiveEditor(e){this.#t!==e&&(this.#t=e,e&&this.#de(e.propertiesToUpdate))}get#he(){let e=null;for(e of this.#L);return e}updateUI(e){this.#he===e&&this.#de(e.propertiesToUpdate)}updateUIForDefaultProperties(e){this.#de(e.defaultPropertiesToUpdate)}toggleSelected(e){if(this.#L.has(e)){this.#L.delete(e),e.unselect(),this.#ue({hasSelectedEditor:this.hasSelection});return}this.#L.add(e),e.select(),this.#de(e.propertiesToUpdate),this.#ue({hasSelectedEditor:!0})}setSelected(e){this.updateToolbar({mode:e.mode,editId:e.uid}),this.#f?.commitOrRemove();for(let t of this.#L)t!==e&&t.unselect();this.#u?.destroyPopup(),this.#L.clear(),this.#L.add(e),e.select(),this.#de(e.propertiesToUpdate),this.#ue({hasSelectedEditor:!0})}get firstSelectedEditor(){return this.#L.values().next().value}unselect(e){e.unselect(),this.#L.delete(e),this.#ue({hasSelectedEditor:this.hasSelection})}get hasSelection(){return this.#L.size!==0}get isEnterHandled(){return this.#L.size===1&&this.firstSelectedEditor.isEnterHandled}undo(){this.#l.undo(),this.#ue({hasSomethingToUndo:this.#l.hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:this.#ge()}),this._editorUndoBar?.hide()}redo(){this.#l.redo(),this.#ue({hasSomethingToUndo:!0,hasSomethingToRedo:this.#l.hasSomethingToRedo(),isEmpty:this.#ge()})}addCommands(e){this.#l.add(e),this.#ue({hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:this.#ge()})}cleanUndoStack(e){this.#l.cleanType(e)}#ge(){if(this.#r.size===0)return!0;if(this.#r.size===1)for(let e of this.#r.values())return e.isEmpty();return!1}delete(){this.commitOrRemove();let e=this.currentLayer?.endDrawingSession(!0);if(!this.hasSelection&&!e)return;let t=e?[e]:[...this.#L],n=()=>{this._editorUndoBar?.show(r,t.length===1?t[0].editorType:t.length);for(let e of t)e.remove()},r=()=>{for(let e of t)this.#me(e)};this.addCommands({cmd:n,undo:r,mustExec:!0})}commitOrRemove(){this.#t?.commitOrRemove()}hasSomethingToControl(){return this.#t||this.hasSelection}#_e(e){for(let e of this.#L)e.unselect();this.#L.clear();for(let t of e)t.isEmpty()||(this.#L.add(t),t.select());this.#ue({hasSelectedEditor:this.hasSelection})}selectAll(){for(let e of this.#L)e.commit();this.#_e(this.#r.values())}unselectAll(){if(!(this.#t&&(this.#t.commitOrRemove(),this.#I!==d.NONE))&&!this.#f?.commitOrRemove()&&(this.#u?.destroyPopup(),this.hasSelection)){for(let e of this.#L)e.unselect();this.#L.clear(),this.#ue({hasSelectedEditor:!1})}}translateSelectedEditors(e,t,n=!1){if(n||this.commitOrRemove(),!this.hasSelection)return;this.#W[0]+=e,this.#W[1]+=t;let[r,i]=this.#W,a=[...this.#L];this.#G&&clearTimeout(this.#G),this.#G=setTimeout(()=>{this.#G=null,this.#W[0]=this.#W[1]=0,this.addCommands({cmd:()=>{for(let e of a)this.#r.has(e.id)&&(e.translateInPage(r,i),e.translationDone())},undo:()=>{for(let e of a)this.#r.has(e.id)&&(e.translateInPage(-r,-i),e.translationDone())},mustExec:!1})},1e3);for(let n of a)n.translateInPage(e,t),n.translationDone()}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),this.#h=new Map;for(let e of this.#L)this.#h.set(e,{savedX:e.x,savedY:e.y,savedPageIndex:e.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!this.#h)return!1;this.disableUserSelect(!1);let e=this.#h;this.#h=null;let t=!1;for(let[{x:n,y:r,pageIndex:i},a]of e)a.newX=n,a.newY=r,a.newPageIndex=i,t||=n!==a.savedX||r!==a.savedY||i!==a.savedPageIndex;if(!t)return!1;let n=(e,t,n,r)=>{if(this.#r.has(e.id)){let i=this.#i.get(r);i?e._setParentAndPosition(i,t,n):(e.pageIndex=r,e.x=t,e.y=n)}};return this.addCommands({cmd:()=>{for(let[t,{newX:r,newY:i,newPageIndex:a}]of e)n(t,r,i,a)},undo:()=>{for(let[t,{savedX:r,savedY:i,savedPageIndex:a}]of e)n(t,r,i,a)},mustExec:!0}),!0}dragSelectedEditors(e,t){if(this.#h)for(let n of this.#h.keys())n.drag(e,t)}rebuild(e){if(e.parent===null){let t=this.getLayer(e.pageIndex);t?(t.changeParent(e),t.addOrRebuild(e)):(this.addEditor(e),this.addToAnnotationStorage(e),e.rebuild())}else e.parent.addOrRebuild(e)}get isEditorHandlingKeyboard(){return this.getActive()?.shouldGetKeyboardEvents()||this.#L.size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(e){return this.#t===e}getActive(){return this.#t}getMode(){return this.#I}isEditingMode(){return this.#I!==d.NONE}get imageManager(){return M(this,`imageManager`,new Qe)}getSelectionBoxes(e){if(!e)return null;let t=document.getSelection();for(let n=0,r=t.rangeCount;n({x:(t-r)/a,y:1-(e+o-n)/i,width:s/a,height:o/i});break;case`180`:o=(e,t,o,s)=>({x:1-(e+o-n)/i,y:1-(t+s-r)/a,width:o/i,height:s/a});break;case`270`:o=(e,t,o,s)=>({x:1-(t+s-r)/a,y:(e-n)/i,width:s/a,height:o/i});break;default:o=(e,t,o,s)=>({x:(e-n)/i,y:(t-r)/a,width:o/i,height:s/a});break}let s=[];for(let e=0,n=t.rangeCount;ee.stopPropagation(),{signal:r});let i=e=>{e.preventDefault(),this.#c._uiManager.editAltText(this.#c),this.#d&&this.#c._reportTelemetry({action:`pdfjs.image.alt_text.image_status_label_clicked`,data:{label:this.#p}})};return t.addEventListener(`click`,i,{capture:!0,signal:r}),t.addEventListener(`keydown`,e=>{e.target===t&&e.key===`Enter`&&(this.#o=!0,i(e))},{signal:r}),await this.#m(),t}get#p(){return this.#e&&`added`||this.#e===null&&this.guessedText&&`review`||`missing`}finish(){this.#n&&(this.#n.focus({focusVisible:this.#o}),this.#o=!1)}isEmpty(){return this.#d?this.#e===null:!this.#e&&!this.#t}hasData(){return this.#d?this.#e!==null||!!this.#l:this.isEmpty()}get guessedText(){return this.#l}async setGuessedText(t){this.#e===null&&(this.#l=t,this.#u=await e._l10n.get(`pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer`,{generatedAltText:t}),this.#m())}toggleAltTextBadge(e=!1){if(!this.#d||this.#e){this.#s?.remove(),this.#s=null;return}if(!this.#s){let e=this.#s=document.createElement(`div`);e.className=`noAltTextBadge`,this.#c.div.append(e)}this.#s.classList.toggle(`hidden`,!e)}serialize(e){let t=this.#e;return!e&&this.#l===t&&(t=this.#u),{altText:t,decorative:this.#t,guessedText:this.#l,textWithDisclaimer:this.#u}}get data(){return{altText:this.#e,decorative:this.#t}}set data({altText:e,decorative:t,guessedText:n,textWithDisclaimer:r,cancel:i=!1}){n&&(this.#l=n,this.#u=r),!(this.#e===e&&this.#t===t)&&(i||(this.#e=e,this.#t=t),this.#m())}toggle(e=!1){this.#n&&(!e&&this.#a&&(clearTimeout(this.#a),this.#a=null),this.#n.disabled=!e)}shown(){this.#c._reportTelemetry({action:`pdfjs.image.alt_text.image_status_label_displayed`,data:{label:this.#p}})}destroy(){this.#n?.remove(),this.#n=null,this.#r=null,this.#i=null,this.#s?.remove(),this.#s=null}async#m(){let t=this.#n;if(!t)return;if(this.#d){if(t.classList.toggle(`done`,!!this.#e),t.setAttribute(`data-l10n-id`,e.#f[this.#p]),this.#r?.setAttribute(`data-l10n-id`,e.#f[`${this.#p}-label`]),!this.#e){this.#i?.remove();return}}else{if(!this.#e&&!this.#t){t.classList.remove(`done`),this.#i?.remove();return}t.classList.add(`done`),t.setAttribute(`data-l10n-id`,`pdfjs-editor-alt-text-edit-button`)}let n=this.#i;if(!n){this.#i=n=document.createElement(`span`),n.className=`tooltip`,n.setAttribute(`role`,`tooltip`),n.id=`alt-text-tooltip-${this.#c.id}`;let e=this.#c._uiManager._signal;e.addEventListener(`abort`,()=>{clearTimeout(this.#a),this.#a=null},{once:!0}),t.addEventListener(`mouseenter`,()=>{this.#a=setTimeout(()=>{this.#a=null,this.#i.classList.add(`show`),this.#c._reportTelemetry({action:`alt_text_tooltip`})},100)},{signal:e}),t.addEventListener(`mouseleave`,()=>{this.#a&&=(clearTimeout(this.#a),null),this.#i?.classList.remove(`show`)},{signal:e})}this.#t?n.setAttribute(`data-l10n-id`,`pdfjs-editor-alt-text-decorative-tooltip`):(n.removeAttribute(`data-l10n-id`),n.textContent=this.#e),n.parentNode||t.append(n),this.#c.getElementForAltText()?.setAttribute(`aria-describedby`,n.id)}},it=class{#e=null;#t=null;#n=!1;#r=null;#i=null;#a=null;#o=null;#s=null;#c=!1;#l=null;constructor(e){this.#r=e}renderForToolbar(){let e=this.#t=document.createElement(`button`);return e.className=`comment`,this.#u(e,!1)}renderForStandalone(){let e=this.#e=document.createElement(`button`);e.className=`annotationCommentButton`;let t=this.#r.commentButtonPosition;if(t){let{style:n}=e;n.insetInlineEnd=`calc(${100*(this.#r._uiManager.direction===`ltr`?1-t[0]:t[0])}% - var(--comment-button-dim))`,n.top=`calc(${100*t[1]}% - var(--comment-button-dim))`;let r=this.#r.commentButtonColor;r&&(n.backgroundColor=r)}return this.#u(e,!0)}focusButton(){setTimeout(()=>{(this.#e??this.#t)?.focus()},0)}onUpdatedColor(){if(!this.#e)return;let e=this.#r.commentButtonColor;e&&(this.#e.style.backgroundColor=e),this.#r._uiManager.updatePopupColor(this.#r)}get commentButtonWidth(){return(this.#e?.getBoundingClientRect().width??0)/this.#r.parent.boundingClientRect.width}get commentPopupPositionInLayer(){if(this.#l)return this.#l;if(!this.#e)return null;let{x:e,y:t,height:n}=this.#e.getBoundingClientRect(),{x:r,y:i,width:a,height:o}=this.#r.parent.boundingClientRect;return[(e-r)/a,(t+n-i)/o]}set commentPopupPositionInLayer(e){this.#l=e}hasDefaultPopupPosition(){return this.#l===null}removeStandaloneCommentButton(){this.#e?.remove(),this.#e=null}removeToolbarCommentButton(){this.#t?.remove(),this.#t=null}setCommentButtonStates({selected:e,hasPopup:t}){this.#e&&(this.#e.classList.toggle(`selected`,e),this.#e.ariaExpanded=t)}#u(e,t){if(!this.#r._uiManager.hasCommentManager())return null;e.tabIndex=`0`,e.ariaHasPopup=`dialog`,t?(e.ariaControls=`commentPopup`,e.setAttribute(`data-l10n-id`,`pdfjs-show-comment-button`)):(e.ariaControlsElements=[this.#r._uiManager.getCommentDialogElement()],e.setAttribute(`data-l10n-id`,`pdfjs-editor-add-comment-button`));let n=this.#r._uiManager._signal;if(!(n instanceof AbortSignal)||n.aborted)return e;e.addEventListener(`contextmenu`,R,{signal:n}),t&&(e.addEventListener(`focusin`,e=>{this.#r._focusEventsAllowed=!1,z(e)},{capture:!0,signal:n}),e.addEventListener(`focusout`,e=>{this.#r._focusEventsAllowed=!0,z(e)},{capture:!0,signal:n})),e.addEventListener(`pointerdown`,e=>e.stopPropagation(),{signal:n});let r=t=>{t.preventDefault(),e===this.#t?this.edit():this.#r.toggleComment(!0)};return e.addEventListener(`click`,r,{capture:!0,signal:n}),e.addEventListener(`keydown`,t=>{t.target===e&&t.key===`Enter`&&(this.#n=!0,r(t))},{signal:n}),e.addEventListener(`pointerenter`,()=>{this.#r.toggleComment(!1,!0)},{signal:n}),e.addEventListener(`pointerleave`,()=>{this.#r.toggleComment(!1,!1)},{signal:n}),e}edit(e){let t=this.commentPopupPositionInLayer,n,r;if(t)[n,r]=t;else{[n,r]=this.#r.commentButtonPosition;let{width:e,height:t,x:i,y:a}=this.#r;n=i+n*e,r=a+r*t}let i=this.#r.parent.boundingClientRect,{x:a,y:o,width:s,height:c}=i;this.#r._uiManager.editComment(this.#r,a+n*s,o+r*c,{...e,parentDimensions:i})}finish(){this.#t&&(this.#t.focus({focusVisible:this.#n}),this.#n=!1)}isDeleted(){return this.#c||this.#o===``}isEmpty(){return this.#o===null}hasBeenEdited(){return this.isDeleted()||this.#o!==this.#i}serialize(){return this.data}get data(){return{text:this.#o,richText:this.#a,date:this.#s,deleted:this.isDeleted()}}set data(e){if(e!==this.#o&&(this.#a=null),e===null){this.#o=``,this.#c=!0;return}this.#o=e,this.#s=new Date,this.#c=!1}restoreData({text:e,richText:t,date:n}){this.#o=e,this.#a=t,this.#s=n,this.#c=!1}setInitialText(e,t=null){this.#i=e,this.data=e,this.#s=null,this.#a=t}shown(){}destroy(){this.#t?.remove(),this.#t=null,this.#e?.remove(),this.#e=null,this.#o=``,this.#a=null,this.#s=null,this.#r=null,this.#n=!1,this.#c=!1}},at=class e{#e;#t=!1;#n=null;#r;#i;#a;#o;#s=null;#c;#l=null;#u;#d=null;constructor({container:e,isPinchingDisabled:t=null,isPinchingStopped:n=null,onPinchStart:r=null,onPinching:i=null,onPinchEnd:a=null,signal:o}){this.#e=e,this.#n=n,this.#r=t,this.#i=r,this.#a=i,this.#o=a,this.#u=new AbortController,this.#c=AbortSignal.any([o,this.#u.signal]),e.addEventListener(`touchstart`,this.#f.bind(this),{passive:!1,signal:this.#c})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return 35/Pe.pixelRatio}#f(e){if(this.#r?.())return;if(e.touches.length===1){if(this.#s)return;let e=this.#s=new AbortController,t=AbortSignal.any([this.#c,e.signal]),n=this.#e,r={capture:!0,signal:t,passive:!1},i=e=>{e.pointerType===`touch`&&(this.#s?.abort(),this.#s=null)};n.addEventListener(`pointerdown`,e=>{e.pointerType===`touch`&&(z(e),i(e))},r),n.addEventListener(`pointerup`,i,r),n.addEventListener(`pointercancel`,i,r);return}if(!this.#d){this.#d=new AbortController;let e=AbortSignal.any([this.#c,this.#d.signal]),t=this.#e,n={signal:e,capture:!1,passive:!1};t.addEventListener(`touchmove`,this.#p.bind(this),n);let r=this.#m.bind(this);t.addEventListener(`touchend`,r,n),t.addEventListener(`touchcancel`,r,n),n.capture=!0,t.addEventListener(`pointerdown`,z,n),t.addEventListener(`pointermove`,z,n),t.addEventListener(`pointercancel`,z,n),t.addEventListener(`pointerup`,z,n),this.#i?.()}if(z(e),e.touches.length!==2||this.#n?.()){this.#l=null;return}let[t,n]=e.touches;t.identifier>n.identifier&&([t,n]=[n,t]),this.#l={touch0X:t.screenX,touch0Y:t.screenY,touch1X:n.screenX,touch1Y:n.screenY}}#p(t){if(!this.#l||t.touches.length!==2)return;z(t);let[n,r]=t.touches;n.identifier>r.identifier&&([n,r]=[r,n]);let{screenX:i,screenY:a}=n,{screenX:o,screenY:s}=r,c=this.#l,{touch0X:l,touch0Y:u,touch1X:d,touch1Y:f}=c,p=d-l,m=f-u,h=o-i,g=s-a,_=Math.hypot(h,g)||1,v=Math.hypot(p,m)||1;if(!this.#t&&Math.abs(v-_)<=e.MIN_TOUCH_DISTANCE_TO_PINCH)return;if(c.touch0X=i,c.touch0Y=a,c.touch1X=o,c.touch1Y=s,!this.#t){this.#t=!0;return}let y=[(i+o)/2,(a+s)/2];this.#a?.(y,v,_)}#m(e){e.touches.length>=2||(this.#d&&(this.#d.abort(),this.#d=null,this.#o?.()),this.#l&&(z(e),this.#l=null,this.#t=!1))}destroy(){this.#u?.abort(),this.#u=null,this.#s?.abort(),this.#s=null}},U=class e{#e=null;#t=null;#n=null;#r=null;#i=null;#a=!1;#o=null;#s=``;#c=null;#l=null;#u=null;#d=null;#f=null;#p=``;#m=!1;#h=null;#g=!1;#_=!1;#v=!1;#y=null;#b=0;#x=0;#S=null;#C=null;isSelected=!1;_isCopy=!1;_editToolbar=null;_initialOptions=Object.create(null);_initialData=null;_isVisible=!0;_uiManager=null;_focusEventsAllowed=!0;static _l10n=null;static _l10nAlert=null;static _l10nResizer=null;#w=!1;#T=e._zIndex++;static _borderLineWidth=-1;static _colorManager=new tt;static _zIndex=1;static _telemetryTimeout=1e3;static get _resizerKeyboardManager(){let t=e.prototype._resizeWithKeyboard,n=nt.TRANSLATE_SMALL,r=nt.TRANSLATE_BIG;return M(this,`_resizerKeyboardManager`,new et([[[`ArrowLeft`],t,{args:[-n,0]}],[[`ctrl+ArrowLeft`,`mac+shift+ArrowLeft`],t,{args:[-r,0]}],[[`ArrowRight`],t,{args:[n,0]}],[[`ctrl+ArrowRight`,`mac+shift+ArrowRight`],t,{args:[r,0]}],[[`ArrowUp`],t,{args:[0,-n]}],[[`ctrl+ArrowUp`,`mac+shift+ArrowUp`],t,{args:[0,-r]}],[[`ArrowDown`],t,{args:[0,n]}],[[`ctrl+ArrowDown`,`mac+shift+ArrowDown`],t,{args:[0,r]}],[[`Escape`],e.prototype._stopResizingWithKeyboard]]))}constructor(e){this.parent=e.parent,this.id=e.id,this.width=this.height=null,this.pageIndex=e.parent.pageIndex,this.name=e.name,this.div=null,this._uiManager=e.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=e.isCentered,this._structTreeParentId=null,this.annotationElementId=e.annotationElementId||null,this.creationDate=e.creationDate||new Date,this.modificationDate=e.modificationDate||null,this.canAddComment=!0;let{rotation:t,rawDims:{pageWidth:n,pageHeight:r,pageX:i,pageY:a}}=this.parent.viewport;this.rotation=t,this.pageRotation=(360+t-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[n,r],this.pageTranslation=[i,a];let[o,s]=this.parentDimensions;this.x=e.x/o,this.y=e.y/s,this.isAttachedToDOM=!1,this.deleted=!1}updatePageIndex(e){this.pageIndex=e}get editorType(){return Object.getPrototypeOf(this).constructor._type}get mode(){return Object.getPrototypeOf(this).constructor._editorType}static get isDrawer(){return!1}static get _defaultLineColor(){return M(this,`_defaultLineColor`,this._colorManager.getHexCode(`CanvasText`))}static deleteAnnotationElement(e){let t=new ot({id:e._uiManager.getId(),parent:e.parent,uiManager:e._uiManager});t.annotationElementId=e.annotationElementId,t.deleted=!0,t._uiManager.addToAnnotationStorage(t)}static initialize(t,n){if(e._l10n??=t,e._l10nAlert??=Object.freeze({highlight:`pdfjs-editor-highlight-added-alert`,freetext:`pdfjs-editor-freetext-added-alert`,ink:`pdfjs-editor-ink-added-alert`,stamp:`pdfjs-editor-stamp-added-alert`,signature:`pdfjs-editor-signature-added-alert`}),e._l10nResizer??=Object.freeze({topLeft:`pdfjs-editor-resizer-top-left`,topMiddle:`pdfjs-editor-resizer-top-middle`,topRight:`pdfjs-editor-resizer-top-right`,middleRight:`pdfjs-editor-resizer-middle-right`,bottomRight:`pdfjs-editor-resizer-bottom-right`,bottomMiddle:`pdfjs-editor-resizer-bottom-middle`,bottomLeft:`pdfjs-editor-resizer-bottom-left`,middleLeft:`pdfjs-editor-resizer-middle-left`}),e._borderLineWidth!==-1)return;let r=getComputedStyle(document.documentElement);e._borderLineWidth=parseFloat(r.getPropertyValue(`--outline-width`))||0}static updateDefaultParams(e,t){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(e){return!1}static paste(e,t){D(`Not implemented`)}get propertiesToUpdate(){return[]}get _isDraggable(){return this.#w}set _isDraggable(e){this.#w=e,this.div?.classList.toggle(`draggable`,e)}get uid(){return this.annotationElementId||this.id}get isEnterHandled(){return!0}center(){let[e,t]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*t/(e*2),this.y+=this.width*e/(t*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*t/(e*2),this.y-=this.width*e/(t*2);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(e){this._uiManager.addCommands(e)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=this.#T}setParent(e){e===null?(this.#W(),this.#d?.remove(),this.#d=null):(this.pageIndex=e.pageIndex,this.pageDimensions=e.pageDimensions),this.parent=e}focusin(e){this._focusEventsAllowed&&(this.#m?this.#m=!1:this.parent.setSelected(this))}focusout(e){this._focusEventsAllowed&&this.isAttachedToDOM&&(e.relatedTarget?.closest(`#${this.id}`)||(e.preventDefault(),this.parent?.isMultipleSelection||this.commitOrRemove()))}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.isInEditMode()&&this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(e,t,n,r){let[i,a]=this.parentDimensions;[n,r]=this.screenToPageTranslation(n,r),this.x=(e+n)/i,this.y=(t+r)/a,this.fixAndSetPosition()}_moveAfterPaste(e,t){if(this.isClone){delete this.isClone;return}let[n,r]=this.parentDimensions;this.setAt(e*n,t*r,this.width*n,this.height*r),this._onTranslated()}#E([e,t],n,r){[n,r]=this.screenToPageTranslation(n,r),this.x+=n/e,this.y+=r/t,this._onTranslating(this.x,this.y),this.fixAndSetPosition()}translate(e,t){this.#E(this.parentDimensions,e,t)}translateInPage(e,t){this.#h||=[this.x,this.y,this.width,this.height],this.#E(this.pageDimensions,e,t),this.div.scrollIntoView({block:`nearest`})}translationDone(){this._onTranslated(this.x,this.y)}drag(e,t){this.#h||=[this.x,this.y,this.width,this.height];let{div:n,parentDimensions:[r,i]}=this;if(this.x+=e/r,this.y+=t/i,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){let{x:e,y:t}=this.div.getBoundingClientRect();this.parent.findNewParent(this,e,t)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:a,y:o}=this,[s,c]=this.getBaseTranslation();a+=s,o+=c;let{style:l}=n;l.left=`${(100*a).toFixed(2)}%`,l.top=`${(100*o).toFixed(2)}%`,this._onTranslating(a,o),n.scrollIntoView({block:`nearest`})}_onTranslating(e,t){}_onTranslated(e,t){}get _hasBeenMoved(){return!!this.#h&&(this.#h[0]!==this.x||this.#h[1]!==this.y)}get _hasBeenResized(){return!!this.#h&&(this.#h[2]!==this.width||this.#h[3]!==this.height)}getBaseTranslation(){let[t,n]=this.parentDimensions,{_borderLineWidth:r}=e,i=r/t,a=r/n;switch(this.rotation){case 90:return[-i,a];case 180:return[i,a];case 270:return[i,-a];default:return[-i,-a]}}get _mustFixPosition(){return!0}fixAndSetPosition(e=this.rotation){let{div:{style:t},pageDimensions:[n,r]}=this,{x:i,y:a,width:o,height:s}=this;if(o*=n,s*=r,i*=n,a*=r,this._mustFixPosition)switch(e){case 0:i=L(i,0,n-o),a=L(a,0,r-s);break;case 90:i=L(i,0,n-s),a=L(a,o,r);break;case 180:i=L(i,o,n),a=L(a,s,r);break;case 270:i=L(i,s,n),a=L(a,0,r-o);break}this.x=i/=n,this.y=a/=r;let[c,l]=this.getBaseTranslation();i+=c,a+=l,t.left=`${(100*i).toFixed(2)}%`,t.top=`${(100*a).toFixed(2)}%`,this.moveInDOM()}static#D(e,t,n){switch(n){case 90:return[t,-e];case 180:return[-e,-t];case 270:return[-t,e];default:return[e,t]}}screenToPageTranslation(t,n){return e.#D(t,n,this.parentRotation)}pageTranslationToScreen(t,n){return e.#D(t,n,360-this.parentRotation)}#O(e){switch(e){case 90:{let[e,t]=this.pageDimensions;return[0,-e/t,t/e,0]}case 180:return[-1,0,0,-1];case 270:{let[e,t]=this.pageDimensions;return[0,e/t,-t/e,0]}default:return[1,0,0,1]}}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){let{parentScale:e,pageDimensions:[t,n]}=this;return[t*e,n*e]}setDims(){let{div:{style:e},width:t,height:n}=this;e.width=`${(100*t).toFixed(2)}%`,e.height=`${(100*n).toFixed(2)}%`}getInitialTranslation(){return[0,0]}#k(){if(this.#c)return;this.#c=document.createElement(`div`),this.#c.classList.add(`resizers`);let e=this._willKeepAspectRatio?[`topLeft`,`topRight`,`bottomRight`,`bottomLeft`]:[`topLeft`,`topMiddle`,`topRight`,`middleRight`,`bottomRight`,`bottomMiddle`,`bottomLeft`,`middleLeft`],t=this._uiManager._signal;for(let n of e){let e=document.createElement(`div`);this.#c.append(e),e.classList.add(`resizer`,n),e.setAttribute(`data-resizer-name`,n),e.addEventListener(`pointerdown`,this.#A.bind(this,n),{signal:t}),e.addEventListener(`contextmenu`,R,{signal:t}),e.tabIndex=-1}this.div.prepend(this.#c)}#A(e,t){t.preventDefault();let{isMac:n}=F.platform;if(t.button!==0||t.ctrlKey&&n)return;this.#n?.toggle(!1);let r=this._isDraggable;this._isDraggable=!1,this.#l=[t.screenX,t.screenY];let i=new AbortController,a=this._uiManager.combinedSignal(i);this.parent.togglePointerEvents(!1),window.addEventListener(`pointermove`,this.#N.bind(this,e),{passive:!0,capture:!0,signal:a}),window.addEventListener(`touchmove`,z,{passive:!1,signal:a}),window.addEventListener(`contextmenu`,R,{signal:a}),this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};let o=this.parent.div.style.cursor,s=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(t.target).cursor;let c=()=>{i.abort(),this.parent.togglePointerEvents(!0),this.#n?.toggle(!0),this._isDraggable=r,this.parent.div.style.cursor=o,this.div.style.cursor=s,this.#M()};window.addEventListener(`pointerup`,c,{signal:a}),window.addEventListener(`blur`,c,{signal:a})}#j(e,t,n,r){this.width=n,this.height=r,this.x=e,this.y=t,this.setDims(),this.fixAndSetPosition(),this._onResized()}_onResized(){}#M(){if(!this.#u)return;let{savedX:e,savedY:t,savedWidth:n,savedHeight:r}=this.#u;this.#u=null;let i=this.x,a=this.y,o=this.width,s=this.height;i===e&&a===t&&o===n&&s===r||this.addCommands({cmd:this.#j.bind(this,i,a,o,s),undo:this.#j.bind(this,e,t,n,r),mustExec:!0})}static _round(e){return Math.round(e*1e4)/1e4}#N(t,n){let[r,i]=this.parentDimensions,a=this.x,o=this.y,s=this.width,c=this.height,l=e.MIN_SIZE/r,u=e.MIN_SIZE/i,d=this.#O(this.rotation),f=(e,t)=>[d[0]*e+d[2]*t,d[1]*e+d[3]*t],p=this.#O(360-this.rotation),m=(e,t)=>[p[0]*e+p[2]*t,p[1]*e+p[3]*t],h,g,_=!1,v=!1;switch(t){case`topLeft`:_=!0,h=(e,t)=>[0,0],g=(e,t)=>[e,t];break;case`topMiddle`:h=(e,t)=>[e/2,0],g=(e,t)=>[e/2,t];break;case`topRight`:_=!0,h=(e,t)=>[e,0],g=(e,t)=>[0,t];break;case`middleRight`:v=!0,h=(e,t)=>[e,t/2],g=(e,t)=>[0,t/2];break;case`bottomRight`:_=!0,h=(e,t)=>[e,t],g=(e,t)=>[0,0];break;case`bottomMiddle`:h=(e,t)=>[e/2,t],g=(e,t)=>[e/2,0];break;case`bottomLeft`:_=!0,h=(e,t)=>[0,t],g=(e,t)=>[e,0];break;case`middleLeft`:v=!0,h=(e,t)=>[0,t/2],g=(e,t)=>[e,t/2];break}let y=h(s,c),b=g(s,c),x=f(...b),S=e._round(a+x[0]),C=e._round(o+x[1]),w=1,T=1,E,D;if(n.fromKeyboard)({deltaX:E,deltaY:D}=n);else{let{screenX:e,screenY:t}=n,[r,i]=this.#l;[E,D]=this.screenToPageTranslation(e-r,t-i),this.#l[0]=e,this.#l[1]=t}if([E,D]=m(E/r,D/i),_){let e=Math.hypot(s,c);w=T=Math.max(Math.min(Math.hypot(b[0]-y[0]-E,b[1]-y[1]-D)/e,1/s,1/c),l/s,u/c)}else v?w=L(Math.abs(b[0]-y[0]-E),l,1)/s:T=L(Math.abs(b[1]-y[1]-D),u,1)/c;let O=e._round(s*w),ee=e._round(c*T);x=f(...g(O,ee));let k=S-x[0],A=C-x[1];this.#h||=[this.x,this.y,this.width,this.height],this.width=O,this.height=ee,this.x=k,this.y=A,this.setDims(),this.fixAndSetPosition(),this._onResizing()}_onResizing(){}altTextFinish(){this.#n?.finish()}get toolbarButtons(){return null}async addEditToolbar(){if(this._editToolbar||this.#_)return this._editToolbar;this._editToolbar=new qe(this),this.div.append(this._editToolbar.render());let{toolbarButtons:e}=this;if(e)for(let[t,n]of e)await this._editToolbar.addButton(t,n);return this.hasComment||this._editToolbar.addButton(`comment`,this.addCommentButton()),this._editToolbar.addButton(`delete`),this._editToolbar}addCommentButtonInToolbar(){this._editToolbar?.addButtonBefore(`comment`,this.addCommentButton(),`.deleteButton`)}removeCommentButtonFromToolbar(){this._editToolbar?.removeButton(`comment`)}removeEditToolbar(){this._editToolbar?.remove(),this._editToolbar=null,this.#n?.destroy()}addContainer(e){let t=this._editToolbar?.div;t?t.before(e):this.div.append(e)}getClientDimensions(){return this.div.getBoundingClientRect()}createAltText(){return this.#n||(rt.initialize(e._l10n),this.#n=new rt(this),this.#e&&=(this.#n.data=this.#e,null)),this.#n}get altTextData(){return this.#n?.data}set altTextData(e){this.#n&&(this.#n.data=e)}get guessedAltText(){return this.#n?.guessedText}async setGuessedAltText(e){await this.#n?.setGuessedText(e)}serializeAltText(e){return this.#n?.serialize(e)}hasAltText(){return!!this.#n&&!this.#n.isEmpty()}hasAltTextData(){return this.#n?.hasData()??!1}focusCommentButton(){this.#r?.focusButton()}addCommentButton(){return this.canAddComment?this.#r||=new it(this):null}addStandaloneCommentButton(){if(this._uiManager.hasCommentManager()){if(this.#i){this._uiManager.isEditingMode()&&this.#i.classList.remove(`hidden`);return}this.hasComment&&(this.#i=this.#r.renderForStandalone(),this.div.append(this.#i))}}removeStandaloneCommentButton(){this.#r.removeStandaloneCommentButton(),this.#i=null}hideStandaloneCommentButton(){this.#i?.classList.add(`hidden`)}get comment(){if(!this.#r)return null;let{data:{richText:e,text:t,date:n,deleted:r}}=this.#r;return{text:t,richText:e,date:n,deleted:r,color:this.getNonHCMColor(),opacity:this.opacity??1}}set comment(e){this.#r||=new it(this),typeof e==`object`&&e?this.#r.restoreData(e):this.#r.data=e,this.hasComment?(this.removeCommentButtonFromToolbar(),this.addStandaloneCommentButton(),this._uiManager.updateComment(this)):(this.addCommentButtonInToolbar(),this.removeStandaloneCommentButton(),this._uiManager.removeComment(this))}setCommentData({comment:e,popupRef:t,richText:n}){if(!t||(this.#r||=new it(this),this.#r.setInitialText(e,n),!this.annotationElementId))return;let r=this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);r&&this.updateFromAnnotationLayer(r)}get hasEditedComment(){return this.#r?.hasBeenEdited()}get hasDeletedComment(){return this.#r?.isDeleted()}get hasComment(){return!!this.#r&&!this.#r.isEmpty()&&!this.#r.isDeleted()}async editComment(e){this.#r||=new it(this),this.#r.edit(e)}toggleComment(e,t=void 0){this.hasComment&&this._uiManager.toggleComment(this,e,t)}setSelectedCommentButton(e){this.#r.setSelectedButton(e)}addComment(e){if(this.hasEditedComment){let[,,,t]=e.rect,[n]=this.pageDimensions,[r]=this.pageTranslation,i=r+n+1,a=t-100,o=i+180;e.popup={contents:this.comment.text,deleted:this.comment.deleted,rect:[i,a,o,t]}}}updateFromAnnotationLayer({popup:{contents:e,deleted:t}}){this.#r.data=t?null:e}get parentBoundingClientRect(){return this.parent.boundingClientRect}render(){let e=this.div=document.createElement(`div`);e.setAttribute(`data-editor-rotation`,(360-this.rotation)%360),e.className=this.name,e.setAttribute(`id`,this.id),e.tabIndex=this.#a?-1:0,e.setAttribute(`role`,`application`),this.defaultL10nId&&e.setAttribute(`data-l10n-id`,this.defaultL10nId),this._isVisible||e.classList.add(`hidden`),this.setInForeground(),this.#z();let[t,n]=this.parentDimensions;this.parentRotation%180!=0&&(e.style.maxWidth=`${(100*n/t).toFixed(2)}%`,e.style.maxHeight=`${(100*t/n).toFixed(2)}%`);let[r,i]=this.getInitialTranslation();return this.translate(r,i),Xe(this,e,[`keydown`,`pointerdown`,`dblclick`]),this.isResizable&&this._uiManager._supportsPinchToZoom&&(this.#C||=new at({container:e,isPinchingDisabled:()=>!this.isSelected,onPinchStart:this.#P.bind(this),onPinching:this.#F.bind(this),onPinchEnd:this.#I.bind(this),signal:this._uiManager._signal})),this.addStandaloneCommentButton(),this._uiManager._editorUndoBar?.hide(),e}#P(){this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height},this.#n?.toggle(!1),this.parent.togglePointerEvents(!1)}#F(t,n,r){let i=.7,a=r/n*i+1-i;if(a===1)return;let o=this.#O(this.rotation),s=(e,t)=>[o[0]*e+o[2]*t,o[1]*e+o[3]*t],[c,l]=this.parentDimensions,u=this.x,d=this.y,f=this.width,p=this.height,m=e.MIN_SIZE/c,h=e.MIN_SIZE/l;a=Math.max(Math.min(a,1/f,1/p),m/f,h/p);let g=e._round(f*a),_=e._round(p*a);if(g===f&&_===p)return;this.#h||=[u,d,f,p];let v=s(f/2,p/2),y=e._round(u+v[0]),b=e._round(d+v[1]),x=s(g/2,_/2);this.x=y-x[0],this.y=b-x[1],this.width=g,this.height=_,this.setDims(),this.fixAndSetPosition(),this._onResizing()}#I(){this.#n?.toggle(!0),this.parent.togglePointerEvents(!0),this.#M()}pointerdown(e){let{isMac:t}=F.platform;if(e.button!==0||e.ctrlKey&&t){e.preventDefault();return}if(this.#m=!0,this._isDraggable){this.#R(e);return}this.#L(e)}#L(e){let{isMac:t}=F.platform;e.ctrlKey&&!t||e.shiftKey||e.metaKey&&t?this.parent.toggleSelected(this):this.parent.setSelected(this)}#R(e){let{isSelected:t}=this;this._uiManager.setUpDragSession();let n=!1,r=new AbortController,i=this._uiManager.combinedSignal(r),a={capture:!0,passive:!1,signal:i},o=e=>{r.abort(),this.#o=null,this.#m=!1,this._uiManager.endDragSession()||this.#L(e),n&&this._onStopDragging()};t&&(this.#b=e.clientX,this.#x=e.clientY,this.#o=e.pointerId,this.#s=e.pointerType,window.addEventListener(`pointermove`,e=>{n||(n=!0,this._uiManager.toggleComment(this,!0,!1),this._onStartDragging());let{clientX:t,clientY:r,pointerId:i}=e;if(i!==this.#o){z(e);return}let[a,o]=this.screenToPageTranslation(t-this.#b,r-this.#x);this.#b=t,this.#x=r,this._uiManager.dragSelectedEditors(a,o)},a),window.addEventListener(`touchmove`,z,a),window.addEventListener(`pointerdown`,e=>{e.pointerType===this.#s&&(this.#C||e.isPrimary)&&o(e),z(e)},a));let s=e=>{if(!this.#o||this.#o===e.pointerId){o(e);return}z(e)};window.addEventListener(`pointerup`,s,{signal:i}),window.addEventListener(`blur`,s,{signal:i})}_onStartDragging(){}_onStopDragging(){}moveInDOM(){this.#y&&clearTimeout(this.#y),this.#y=setTimeout(()=>{this.#y=null,this.parent?.moveEditorInDOM(this)},0)}_setParentAndPosition(e,t,n){e.changeParent(this),this.x=t,this.y=n,this.fixAndSetPosition(),this._onTranslated()}getRect(e,t,n=this.rotation){let r=this.parentScale,[i,a]=this.pageDimensions,[o,s]=this.pageTranslation,c=e/r,l=t/r,u=this.x*i,d=this.y*a,f=this.width*i,p=this.height*a;switch(n){case 0:return[u+c+o,a-d-l-p+s,u+c+f+o,a-d-l+s];case 90:return[u+l+o,a-d+c+s,u+l+p+o,a-d+c+f+s];case 180:return[u-c-f+o,a-d+l+s,u-c+o,a-d+l+p+s];case 270:return[u-l-p+o,a-d-c-f+s,u-l+o,a-d-c+s];default:throw Error(`Invalid rotation`)}}getRectInCurrentCoords(e,t){let[n,r,i,a]=e,o=i-n,s=a-r;switch(this.rotation){case 0:return[n,t-a,o,s];case 90:return[n,t-r,s,o];case 180:return[i,t-r,o,s];case 270:return[i,t-a,s,o];default:throw Error(`Invalid rotation`)}}getPDFRect(){return this.getRect(0,0)}getNonHCMColor(){return this.color&&e._colorManager.convert(this._uiManager.getNonHCMColor(this.color))}onUpdatedColor(){this.#r?.onUpdatedColor()}getData(){let{comment:{text:e,color:t,date:n,opacity:r,deleted:i,richText:a},uid:o,pageIndex:s,creationDate:c,modificationDate:l}=this;return{id:o,pageIndex:s,rect:this.getPDFRect(),richText:a,contentsObj:{str:e},creationDate:c,modificationDate:n||l,popupRef:!i,color:t,opacity:r}}onceAdded(e){}isEmpty(){return!1}enableEditMode(){return this.isInEditMode()?!1:(this.parent.setEditingState(!1),this.#_=!0,!0)}disableEditMode(){return this.isInEditMode()?(this.parent.setEditingState(!0),this.#_=!1,!0):!1}isInEditMode(){return this.#_}shouldGetKeyboardEvents(){return this.#v}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){let{top:e,left:t,bottom:n,right:r}=this.getClientDimensions(),{innerHeight:i,innerWidth:a}=window;return t0&&e0}#z(){if(this.#f||!this.div)return;this.#f=new AbortController;let e=this._uiManager.combinedSignal(this.#f);this.div.addEventListener(`focusin`,this.focusin.bind(this),{signal:e}),this.div.addEventListener(`focusout`,this.focusout.bind(this),{signal:e})}rebuild(){this.#z()}rotate(e){}resize(){}serializeDeleted(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:this._initialData?.popupRef||``}}serialize(e=!1,t=null){return{annotationType:this.mode,pageIndex:this.pageIndex,rect:this.getPDFRect(),rotation:this.rotation,structTreeParentId:this._structTreeParentId,popupRef:this._initialData?.popupRef||``}}static async deserialize(e,t,n){let r=new this.prototype.constructor({parent:t,id:n.getId(),uiManager:n,annotationElementId:e.annotationElementId,creationDate:e.creationDate,modificationDate:e.modificationDate});r.rotation=e.rotation,r.#e=e.accessibilityData,r._isCopy=e.isCopy||!1;let[i,a]=r.pageDimensions,[o,s,c,l]=r.getRectInCurrentCoords(e.rect,a);return r.x=o/i,r.y=s/a,r.width=c/i,r.height=l/a,r}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){if(this.#f?.abort(),this.#f=null,this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),this.hideCommentPopup(),this.#y&&=(clearTimeout(this.#y),null),this.#W(),this.removeEditToolbar(),this.#S){for(let e of this.#S.values())clearTimeout(e);this.#S=null}this.parent=null,this.#C?.destroy(),this.#C=null,this.#d?.remove(),this.#d=null}get isResizable(){return!1}makeResizable(){this.isResizable&&(this.#k(),this.#c.classList.remove(`hidden`))}get toolbarPosition(){return null}get commentButtonPosition(){return this._uiManager.direction===`ltr`?[1,0]:[0,0]}get commentButtonPositionInPage(){let{commentButtonPosition:[t,n]}=this,[r,i,a,o]=this.getPDFRect();return[e._round(r+(a-r)*t),e._round(i+(o-i)*(1-n))]}get commentButtonColor(){return this._uiManager.makeCommentColor(this.getNonHCMColor(),this.opacity)}get commentPopupPosition(){return this.#r.commentPopupPositionInLayer}set commentPopupPosition(e){this.#r.commentPopupPositionInLayer=e}hasDefaultPopupPosition(){return this.#r.hasDefaultPopupPosition()}get commentButtonWidth(){return this.#r.commentButtonWidth}get elementBeforePopup(){return this.div}setCommentButtonStates(e){this.#r?.setCommentButtonStates(e)}keydown(t){if(!this.isResizable||t.target!==this.div||t.key!==`Enter`)return;this._uiManager.setSelected(this),this.#u={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};let n=this.#c.children;if(!this.#t){this.#t=Array.from(n);let t=this.#B.bind(this),r=this.#V.bind(this),i=this._uiManager._signal;for(let n of this.#t){let a=n.getAttribute(`data-resizer-name`);n.setAttribute(`role`,`spinbutton`),n.addEventListener(`keydown`,t,{signal:i}),n.addEventListener(`blur`,r,{signal:i}),n.addEventListener(`focus`,this.#H.bind(this,a),{signal:i}),n.setAttribute(`data-l10n-id`,e._l10nResizer[a])}}let r=this.#t[0],i=0;for(let e of n){if(e===r)break;i++}let a=(360-this.rotation+this.parentRotation)%360/90*(this.#t.length/4);if(a!==i){if(ai)for(let e=0;e{this.div?.classList.contains(`selectedEditor`)&&this._editToolbar?.show()});return}this._editToolbar?.show(),this.#n?.toggleAltTextBadge(!1)}focus(){this.div&&!this.div.contains(document.activeElement)&&setTimeout(()=>this.div?.focus({preventScroll:!0}),0)}unselect(){this.isSelected&&(this.isSelected=!1,this.#c?.classList.add(`hidden`),this.div?.classList.remove(`selectedEditor`),this.div?.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),this._editToolbar?.hide(),this.#n?.toggleAltTextBadge(!0),this.hideCommentPopup())}hideCommentPopup(){this.hasComment&&this._uiManager.toggleComment(null)}updateParams(e,t){}disableEditing(){}enableEditing(){}get canChangeContent(){return!1}enterInEditMode(){this.canChangeContent&&(this.enableEditMode(),this.div.focus())}dblclick(e){e.target.nodeName!==`BUTTON`&&(this.enterInEditMode(),this.parent.updateToolbar({mode:this.constructor._editorType,editId:this.uid}))}getElementForAltText(){return this.div}get contentDiv(){return this.div}get isEditing(){return this.#g}set isEditing(e){this.#g=e,this.parent&&(e?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:`added`}}get telemetryFinalData(){return null}_reportTelemetry(t,n=!1){if(n){this.#S||=new Map;let{action:n}=t,r=this.#S.get(n);r&&clearTimeout(r),r=setTimeout(()=>{this._reportTelemetry(t),this.#S.delete(n),this.#S.size===0&&(this.#S=null)},e._telemetryTimeout),this.#S.set(n,r);return}t.type||=this.editorType,this._uiManager._eventBus.dispatch(`reporttelemetry`,{source:this,details:{type:`editing`,data:t}})}show(e=this._isVisible){this.div.classList.toggle(`hidden`,!e),this._isVisible=e}enable(){this.div&&(this.div.tabIndex=0),this.#a=!1}disable(){this.div&&(this.div.tabIndex=-1),this.#a=!0}updateFakeAnnotationElement(e){if(!this.#d&&!this.deleted){this.#d=e.addFakeAnnotation(this);return}if(this.deleted){this.#d.remove(),this.#d=null;return}(this.hasEditedComment||this._hasBeenMoved||this._hasBeenResized)&&this.#d.updateEdited({rect:this.getPDFRect(),popup:this.comment})}renderAnnotationElement(e){if(this.deleted)return e.hide(),null;let t=e.container.querySelector(`.annotationContent`);if(!t)t=document.createElement(`div`),t.classList.add(`annotationContent`,this.editorType),e.container.prepend(t);else if(t.nodeName===`CANVAS`){let e=t;t=document.createElement(`div`),t.classList.add(`annotationContent`,this.editorType),e.before(t)}return t}resetAnnotationElement(e){let{firstElementChild:t}=e.container;t?.nodeName===`DIV`&&t.classList.contains(`annotationContent`)&&t.remove()}},ot=class extends U{constructor(e){super(e),this.annotationElementId=e.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}},st=3285377520,W=4294901760,ct=65535,lt=class{constructor(e){this.h1=e?e&4294967295:st,this.h2=e?e&4294967295:st}update(e){let t,n;if(typeof e==`string`){t=new Uint8Array(e.length*2),n=0;for(let r=0,i=e.length;r>>8,t[n++]=i&255)}}else if(ArrayBuffer.isView(e))t=e.slice(),n=t.byteLength;else throw Error(`Invalid data format, must be a string or TypedArray.`);let r=n>>2,i=n-r*4,a=new Uint32Array(t.buffer,0,r),o=0,s=0,c=this.h1,l=this.h2,u=3432918353,d=461845907,f=11601,p=13715;for(let e=0;e>>17,o=o*d&W|o*p&ct,c^=o,c=c<<13|c>>>19,c=c*5+3864292196):(s=a[e],s=s*u&W|s*f&ct,s=s<<15|s>>>17,s=s*d&W|s*p&ct,l^=s,l=l<<13|l>>>19,l=l*5+3864292196);switch(o=0,i){case 3:o^=t[r*4+2]<<16;case 2:o^=t[r*4+1]<<8;case 1:o^=t[r*4],o=o*u&W|o*f&ct,o=o<<15|o>>>17,o=o*d&W|o*p&ct,r&1?c^=o:l^=o}this.h1=c,this.h2=l}hexdigest(){let e=this.h1,t=this.h2;return e^=t>>>1,e=e*3981806797&W|e*36045&ct,t=t*4283543511&W|((t<<16|e>>>16)*2950163797&W)>>>16,e^=t>>>1,e=e*444984403&W|e*60499&ct,t=t*3301882366&W|((t<<16|e>>>16)*3120437893&W)>>>16,e^=t>>>1,(e>>>0).toString(16).padStart(8,`0`)+(t>>>0).toString(16).padStart(8,`0`)}},ut=Object.freeze({map:null,hash:``,transfer:void 0}),dt=class{#e=!1;#t=null;#n=null;#r=new Map;onSetModified=null;onResetModified=null;onAnnotationEditor=null;getValue(e,t){let n=this.#r.get(e);return n===void 0?t:Object.assign(t,n)}getRawValue(e){return this.#r.get(e)}remove(e){let t=this.#r.get(e);t!==void 0&&(t instanceof U&&this.#n.delete(t.annotationElementId),this.#r.delete(e),this.#r.size===0&&this.resetModified(),!this.#r.values().some(e=>e instanceof U)&&this.onAnnotationEditor?.(null))}setValue(e,t){let n=this.#r.get(e),r=!1;if(n!==void 0)for(let[e,i]of Object.entries(t))n[e]!==i&&(r=!0,n[e]=i);else r=!0,this.#r.set(e,t);r&&this.#i(),t instanceof U&&((this.#n||=new Map).set(t.annotationElementId,t),this.onAnnotationEditor?.(t.constructor._type))}has(e){return this.#r.has(e)}get size(){return this.#r.size}#i(){this.#e||(this.#e=!0,this.onSetModified?.())}resetModified(){this.#e&&(this.#e=!1,this.onResetModified?.())}get print(){return new ft(this)}get serializable(){if(this.#r.size===0)return ut;let e=new Map,t=new lt,n=[],r=Object.create(null),i=!1;for(let[n,a]of this.#r){let o=a instanceof U?a.serialize(!1,r):a;a.page&&(a.pageIndex=a.page._pageIndex,delete a.page),o&&(e.set(n,o),t.update(`${n}:${JSON.stringify(o)}`),i||=!!o.bitmap)}if(i)for(let t of e.values())t.bitmap&&n.push(t.bitmap);return e.size>0?{map:e,hash:t.hexdigest(),transfer:n}:ut}get editorStats(){let e=null,t=new Map,n=0,r=0;for(let i of this.#r.values()){if(!(i instanceof U)){i.popup&&(i.popup.deleted?r+=1:n+=1);continue}i.isCommentDeleted?r+=1:i.hasEditedComment&&(n+=1);let a=i.telemetryFinalData;if(!a)continue;let{type:o}=a;t.getOrInsertComputed(o,()=>Object.getPrototypeOf(i).constructor),e||=Object.create(null);let s=e[o]||=new Map;for(let[e,t]of Object.entries(a)){if(e===`type`)continue;let n=s.getOrInsertComputed(e,he);n.set(t,(n.get(t)??0)+1)}}if((r>0||n>0)&&(e||=Object.create(null),e.comments={deleted:r,edited:n}),!e)return null;for(let[n,r]of t)e[n]=r.computeTelemetryFinalData(e[n]);return e}resetModifiedIds(){this.#t=null}updateEditor(e,t){let n=this.#n?.get(e);return n?(n.updateFromAnnotationLayer(t),!0):!1}getEditor(e){return this.#n?.get(e)||null}get modifiedIds(){if(this.#t)return this.#t;let e=[];if(this.#n)for(let t of this.#n.values())t.serialize()&&e.push(t.annotationElementId);let t=``;if(e.length){let n=new lt;n.update(e.join(`,`)),t=n.hexdigest()}return this.#t={ids:new Set(e),hash:t}}[Symbol.iterator](){return this.#r.entries()}},ft=class extends dt{#e=ut;constructor(e){super();let{serializable:t}=e;if(t===ut)return;let{map:n,hash:r,transfer:i}=t,a=structuredClone(n,i?{transfer:i}:null);this.#e={map:a,hash:r,transfer:[]}}get print(){D(`Should not call PrintAnnotationStorage.print`)}get serializable(){return this.#e}get modifiedIds(){return M(this,`modifiedIds`,{ids:new Set,hash:``})}},pt=`__forcedDependency`,{floor:mt,ceil:ht}=Math;function gt(e,t,n,r,i,a){e[t*4+0]=Math.min(e[t*4+0],n),e[t*4+1]=Math.min(e[t*4+1],r),e[t*4+2]=Math.max(e[t*4+2],i),e[t*4+3]=Math.max(e[t*4+3],a)}function _t(e,t,n,r,i){let a;e?(e<0&&(a=i[0],i[0]=i[2],i[2]=a),i[0]*=e,i[2]*=e,t<0&&(a=i[1],i[1]=i[3],i[3]=a),i[1]*=t,i[3]*=t):i.fill(0),i[0]+=n,i[1]+=r,i[2]+=n,i[3]+=r}var vt=new Uint32Array(new Uint8Array([255,255,0,0]).buffer)[0],yt=class{#e;#t;constructor(e,t){this.#e=e,this.#t=t}get length(){return this.#e.length}isEmpty(e){return this.#e[e]===vt}minX(e){return this.#t[e*4+0]/256}minY(e){return this.#t[e*4+1]/256}maxX(e){return(this.#t[e*4+2]+1)/256}maxY(e){return(this.#t[e*4+3]+1)/256}},bt=(e,t)=>e?.getOrInsertComputed(t,()=>({dependencies:new Set,isRenderingOperation:!1})),xt=class{#e=[[1,0,0,1,0,0]];#t=[-1/0,-1/0,1/0,1/0];#n=new Float64Array(n);_pendingBBoxIdx=-1;#r;#i;#a;#o;_savesStack=[];_markedContentStack=[];constructor(e,t){this.#r=e.width,this.#i=e.height,this.#s(t)}growOperationsCount(e){e>=this.#o.length&&this.#s(e,this.#o)}#s(e,t){let n=new ArrayBuffer(e*4);this.#a=new Uint8ClampedArray(n),this.#o=new Uint32Array(n),t&&t.length>0?(this.#o.set(t),this.#o.fill(vt,t.length)):this.#o.fill(vt)}get clipBox(){return this.#t}save(e){return this.#t={__proto__:this.#t},this._savesStack.push(e),this}restore(e,t){let n=Object.getPrototypeOf(this.#t);if(n===null)return this;this.#t=n;let r=this._savesStack.pop();return r!==void 0&&(t?.(r,e),this.#o[e]=this.#o[r]),this}recordOpenMarker(e){return this._savesStack.push(e),this}getOpenMarker(){return this._savesStack.length===0?null:this._savesStack.at(-1)}recordCloseMarker(e,t){let n=this._savesStack.pop();return n!==void 0&&(t?.(n,e),this.#o[e]=this.#o[n]),this}beginMarkedContent(e){return this._markedContentStack.push(e),this}endMarkedContent(e,t){let n=this._markedContentStack.pop();return n!==void 0&&(t?.(n,e),this.#o[e]=this.#o[n]),this}pushBaseTransform(e){return this.#e.push(I.multiplyByDOMMatrix(this.#e.at(-1),e.getTransform())),this}popBaseTransform(){return this.#e.length>1&&this.#e.pop(),this}resetBBox(e){return this._pendingBBoxIdx!==e&&(this._pendingBBoxIdx=e,this.#n.set(n,0)),this}recordClipBox(e,t,r,i,a,o){let s=I.multiplyByDOMMatrix(this.#e.at(-1),t.getTransform()),c=n.slice();I.axialAlignedBoundingBox([r,a,i,o],s,c);let l=I.intersect(this.#t,c);return l?(this.#t[0]=l[0],this.#t[1]=l[1],this.#t[2]=l[2],this.#t[3]=l[3]):(this.#t[0]=this.#t[1]=1/0,this.#t[2]=this.#t[3]=-1/0),this}recordBBox(e,t,r,i,a,o){let s=this.#t;if(s[0]===1/0)return this;let c=I.multiplyByDOMMatrix(this.#e.at(-1),t.getTransform());if(s[0]===-1/0)return I.axialAlignedBoundingBox([r,a,i,o],c,this.#n),this;let l=n.slice();return I.axialAlignedBoundingBox([r,a,i,o],c,l),this.#n[0]=L(l[0],s[0],this.#n[0]),this.#n[1]=L(l[1],s[1],this.#n[1]),this.#n[2]=L(l[2],this.#n[2],s[2]),this.#n[3]=L(l[3],this.#n[3],s[3]),this}recordFullPageBBox(e){return this.#n[0]=Math.max(0,this.#t[0]),this.#n[1]=Math.max(0,this.#t[1]),this.#n[2]=Math.min(this.#r,this.#t[2]),this.#n[3]=Math.min(this.#i,this.#t[3]),this}recordOperation(e,t=!1,n){if(this._pendingBBoxIdx!==e)return this;let r=mt(this.#n[0]*256/this.#r),i=mt(this.#n[1]*256/this.#i),a=ht(this.#n[2]*256/this.#r),o=ht(this.#n[3]*256/this.#i);if(gt(this.#a,e,r,i,a,o),n)for(let t of n)for(let n of t)n!==e&>(this.#a,n,r,i,a,o);return t||(this._pendingBBoxIdx=-1),this}bboxToClipBoxDropOperation(e){return this._pendingBBoxIdx===e&&(this._pendingBBoxIdx=-1,this.#t[0]=Math.max(this.#t[0],this.#n[0]),this.#t[1]=Math.max(this.#t[1],this.#n[1]),this.#t[2]=Math.min(this.#t[2],this.#n[2]),this.#t[3]=Math.min(this.#t[3],this.#n[3])),this}take(){return new yt(this.#o,this.#a)}takeDebugMetadata(){throw Error(`Unreachable`)}recordSimpleData(e,t){return this}recordIncrementalData(e,t){return this}resetIncrementalData(e,t){return this}recordNamedData(e,t){return this}recordSimpleDataFromNamed(e,t,n){return this}recordFutureForcedDependency(e,t){return this}inheritSimpleDataAsFutureForcedDependencies(e){return this}inheritPendingDependenciesAsFutureForcedDependencies(){return this}recordCharacterBBox(e,t,n,r=1,i=0,a=0,o){return this}getSimpleIndex(e){}recordDependencies(e,t){return this}recordNamedDependency(e,t){return this}recordShowTextOperation(e,t=!1){return this}},St=class{#e={__proto__:null};#t={__proto__:null,transform:[],moveText:[],sameLineText:[],[pt]:[]};#n=new Map;#r=new Set;#i=new Map;#a;#o;#s;constructor(e,t=!1){this.#s=e,t&&(this.#a=new Map,this.#o=(e,t)=>{bt(this.#a,t).dependencies.add(e)})}get clipBox(){return this.#s.clipBox}growOperationsCount(e){this.#s.growOperationsCount(e)}save(e){return this.#e={__proto__:this.#e},this.#t={__proto__:this.#t,transform:{__proto__:this.#t.transform},moveText:{__proto__:this.#t.moveText},sameLineText:{__proto__:this.#t.sameLineText},[pt]:{__proto__:this.#t[pt]}},this.#s.save(e),this}restore(e){this.#s.restore(e,this.#o);let t=Object.getPrototypeOf(this.#e);return t===null?this:(this.#e=t,this.#t=Object.getPrototypeOf(this.#t),this)}recordOpenMarker(e){return this.#s.recordOpenMarker(e,this.#o),this}getOpenMarker(){return this.#s.getOpenMarker()}recordCloseMarker(e){return this.#s.recordCloseMarker(e,this.#o),this}beginMarkedContent(e){return this.#s.beginMarkedContent(e),this}endMarkedContent(e){return this.#s.endMarkedContent(e,this.#o),this}pushBaseTransform(e){return this.#s.pushBaseTransform(e),this}popBaseTransform(){return this.#s.popBaseTransform(),this}recordSimpleData(e,t){return this.#e[e]=t,this}recordIncrementalData(e,t){return this.#t[e].push(t),this}resetIncrementalData(e,t){return this.#t[e].length=0,this}recordNamedData(e,t){return this.#n.set(e,t),this}recordSimpleDataFromNamed(e,t,n){this.#e[e]=this.#n.get(t)??n}recordFutureForcedDependency(e,t){return this.recordIncrementalData(pt,t),this}inheritSimpleDataAsFutureForcedDependencies(e){for(let t of e)t in this.#e&&this.recordFutureForcedDependency(t,this.#e[t]);return this}inheritPendingDependenciesAsFutureForcedDependencies(){for(let e of this.#r)this.recordFutureForcedDependency(pt,e);return this}resetBBox(e){return this.#s.resetBBox(e),this}recordClipBox(e,t,n,r,i,a){return this.#s.recordClipBox(e,t,n,r,i,a),this}recordBBox(e,t,n,r,i,a){return this.#s.recordBBox(e,t,n,r,i,a),this}recordCharacterBBox(e,t,n,r=1,i=0,a=0,o){let s=n.bbox,c,l;if(s&&(c=s[2]!==s[0]&&s[3]!==s[1]&&this.#i.get(n),c!==!1&&(l=[0,0,0,0],I.axialAlignedBoundingBox(s,n.fontMatrix,l),(r!==1||i!==0||a!==0)&&_t(r,-r,i,a,l),c)))return this.recordBBox(e,t,l[0],l[2],l[1],l[3]);if(!o)return this.recordFullPageBBox(e);let u=o();return s&&l&&c===void 0&&(c=l[0]<=i-u.actualBoundingBoxLeft&&l[2]>=i+u.actualBoundingBoxRight&&l[1]<=a-u.actualBoundingBoxAscent&&l[3]>=a+u.actualBoundingBoxDescent,this.#i.set(n,c),c)?this.recordBBox(e,t,l[0],l[2],l[1],l[3]):this.recordBBox(e,t,i-u.actualBoundingBoxLeft,i+u.actualBoundingBoxRight,a-u.actualBoundingBoxAscent,a+u.actualBoundingBoxDescent)}recordFullPageBBox(e){return this.#s.recordFullPageBBox(e),this}getSimpleIndex(e){return this.#e[e]}recordDependencies(e,t){let n=this.#r,r=this.#e,i=this.#t;for(let e of t)e in this.#e?n.add(r[e]):e in i&&i[e].forEach(n.add,n);return this}recordNamedDependency(e,t){return this.#n.has(t)&&this.#r.add(this.#n.get(t)),this}recordOperation(e,t=!1){if(this.recordDependencies(e,[pt]),this.#a){let t=bt(this.#a,e),{dependencies:n}=t;this.#r.forEach(n.add,n),this.#s._savesStack.forEach(n.add,n),this.#s._markedContentStack.forEach(n.add,n),n.delete(e),t.isRenderingOperation=!0}let n=!t&&e===this.#s._pendingBBoxIdx;return this.#s.recordOperation(e,t,[this.#r,this.#s._savesStack,this.#s._markedContentStack]),n&&this.#r.clear(),this}recordShowTextOperation(e,t=!1){let n=Array.from(this.#r);this.recordOperation(e,t),this.recordIncrementalData(`sameLineText`,e);for(let e of n)this.recordIncrementalData(`sameLineText`,e);return this}bboxToClipBoxDropOperation(e,t=!1){let n=!t&&e===this.#s._pendingBBoxIdx;return this.#s.bboxToClipBoxDropOperation(e),n&&this.#r.clear(),this}take(){return this.#i.clear(),this.#s.take()}takeDebugMetadata(){return this.#a}},Ct=class e{#e;#t;#n;#r=0;#i=0;constructor(t,n,r){if(t instanceof e&&t.#n===!!r)return t;this.#e=t,this.#t=n,this.#n=!!r}get clipBox(){return this.#e.clipBox}growOperationsCount(){throw Error(`Unreachable`)}save(e){return this.#i++,this.#e.save(this.#t),this}restore(e){return this.#i>0&&(this.#e.restore(this.#t),this.#i--),this}recordOpenMarker(e){return this.#r++,this}getOpenMarker(){return this.#r>0?this.#t:this.#e.getOpenMarker()}recordCloseMarker(e){return this.#r--,this}beginMarkedContent(e){return this}endMarkedContent(e){return this}pushBaseTransform(e){return this.#e.pushBaseTransform(e),this}popBaseTransform(){return this.#e.popBaseTransform(),this}recordSimpleData(e,t){return this.#e.recordSimpleData(e,this.#t),this}recordIncrementalData(e,t){return this.#e.recordIncrementalData(e,this.#t),this}resetIncrementalData(e,t){return this.#e.resetIncrementalData(e,this.#t),this}recordNamedData(e,t){return this}recordSimpleDataFromNamed(e,t,n){return this.#e.recordSimpleDataFromNamed(e,t,this.#t),this}recordFutureForcedDependency(e,t){return this.#e.recordFutureForcedDependency(e,this.#t),this}inheritSimpleDataAsFutureForcedDependencies(e){return this.#e.inheritSimpleDataAsFutureForcedDependencies(e),this}inheritPendingDependenciesAsFutureForcedDependencies(){return this.#e.inheritPendingDependenciesAsFutureForcedDependencies(),this}resetBBox(e){return this.#n||this.#e.resetBBox(this.#t),this}recordClipBox(e,t,n,r,i,a){return this.#n||this.#e.recordClipBox(this.#t,t,n,r,i,a),this}recordBBox(e,t,n,r,i,a){return this.#n||this.#e.recordBBox(this.#t,t,n,r,i,a),this}recordCharacterBBox(e,t,n,r,i,a,o){return this.#n||this.#e.recordCharacterBBox(this.#t,t,n,r,i,a,o),this}recordFullPageBBox(e){return this.#n||this.#e.recordFullPageBBox(this.#t),this}getSimpleIndex(e){return this.#e.getSimpleIndex(e)}recordDependencies(e,t){return this.#e.recordDependencies(this.#t,t),this}recordNamedDependency(e,t){return this.#e.recordNamedDependency(this.#t,t),this}recordOperation(e){return this.#e.recordOperation(this.#t,!0),this}recordShowTextOperation(e){return this.#e.recordShowTextOperation(this.#t,!0),this}bboxToClipBoxDropOperation(e){return this.#n||this.#e.bboxToClipBoxDropOperation(this.#t,!0),this}take(){throw Error(`Unreachable`)}takeDebugMetadata(){throw Error(`Unreachable`)}},G={stroke:[`path`,`transform`,`filter`,`strokeColor`,`strokeAlpha`,`lineWidth`,`lineCap`,`lineJoin`,`miterLimit`,`dash`],fill:[`path`,`transform`,`filter`,`fillColor`,`fillAlpha`,`globalCompositeOperation`,`SMask`],imageXObject:[`transform`,`SMask`,`filter`,`fillAlpha`,`strokeAlpha`,`globalCompositeOperation`],rawFillPath:[`filter`,`fillColor`,`fillAlpha`],showText:[`transform`,`leading`,`charSpacing`,`wordSpacing`,`hScale`,`textRise`,`moveText`,`textMatrix`,`font`,`fontObj`,`filter`,`fillColor`,`textRenderingMode`,`SMask`,`fillAlpha`,`strokeAlpha`,`globalCompositeOperation`,`sameLineText`],transform:[`transform`],transformAndFill:[`transform`,`fillColor`]},wt=class e{#e;#t;#n=4;#r=0;#i=new e.#a(this.#n*6);static#a=F.isFloat16ArraySupported?Float16Array:Float32Array;constructor(e){this.#e=e.width,this.#t=e.height}record(t,r,i,a){if(this.#r===this.#n){this.#n*=2;let t=new e.#a(this.#n*6);t.set(this.#i),this.#i=t}let o=B(t),s;if(a[0]!==1/0){let e=n.slice();I.axialAlignedBoundingBox([0,-i,r,0],o,e);let t=I.intersect(a,e);if(!t)return;let[c,l,u,d]=t;if(c!==e[0]||l!==e[1]||u!==e[2]||d!==e[3]){let e=Math.atan2(o[1],o[0]),t=Math.abs(Math.sin(e)),n=Math.abs(Math.cos(e));if(t<1e-6||n<1e-6||Math.abs(t-n)<1e-6)s=[c,l,c,d,u,l];else{let e=u-c,r=d-l,i=t*t,a=n*n,o=n*t,f=a-i,p=(r*a-e*o)/f;s=[c+(r*o-e*i)/f,l,c,l+p,u,d-p]}}}s||(s=[0,-i,0,0,r,-i],I.applyTransform(s,o,0),I.applyTransform(s,o,2),I.applyTransform(s,o,4)),s[0]/=this.#e,s[1]/=this.#t,s[2]/=this.#e,s[3]/=this.#t,s[4]/=this.#e,s[5]/=this.#t,this.#i.set(s,this.#r*6),this.#r++}take(){return this.#i.subarray(0,this.#r*6)}},Tt=class{#e=new Set;#t=null;constructor({ownerDocument:e=globalThis.document,styleElement:t=null}){this._document=e,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(e){this.nativeFontFaces.add(e),this._document.fonts.add(e)}removeNativeFontFace(e){this.nativeFontFaces.delete(e),this._document.fonts.delete(e)}insertRule(e){let t=this.#n();t.insertRule(e,t.cssRules.length)}#n(){if(this.#t)return this.#t;let e=this._document.defaultView?.CSSStyleSheet||globalThis.CSSStyleSheet;if(!this.styleElement&&e){let{adoptedStyleSheets:t}=this._document;if(t){let n=new e;return t.push(n),this.#t=n}}return this.styleElement||(this.styleElement=this._document.createElement(`style`),this._document.documentElement.getElementsByTagName(`head`)[0].append(this.styleElement)),this.#t=this.styleElement.sheet}clear(){for(let e of this.nativeFontFaces)this._document.fonts.delete(e);if(this.nativeFontFaces.clear(),this.#e.clear(),this.#t){let{adoptedStyleSheets:e}=this._document;e?.includes(this.#t)&&(this._document.adoptedStyleSheets=e.filter(e=>e!==this.#t)),this.#t=null}this.styleElement&&=(this.styleElement.remove(),null)}async loadSystemFont({systemFontInfo:e,disableFontFace:t,_inspectFont:n}){if(!(!e||this.#e.has(e.loadedName))){if(O(!t,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){let{loadedName:t,src:r,style:i}=e,a=new FontFace(t,r,i);this.addNativeFontFace(a);try{await a.load(),this.#e.add(t),n?.(e)}catch{E(`Cannot load system font: ${e.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(a)}return}D(`Not implemented: loadSystemFont without the Font Loading API.`)}}async bind(e){if(e.attached||e.missingFile&&!e.systemFontInfo)return;if(e.attached=!0,e.systemFontInfo){await this.loadSystemFont(e);return}if(this.isFontLoadingAPISupported){let t=e.createNativeFontFace();if(t){this.addNativeFontFace(t);try{await t.loaded}catch(n){throw E(`Failed to load font '${t.family}': '${n}'.`),e.disableFontFace=!0,n}}return}let t=e.createFontFaceRule();if(t){if(this.insertRule(t),this.isSyncFontLoadingSupported)return;await new Promise(t=>{let n=this._queueLoadingCallback(t);this._prepareFontLoadEvent(e,n)})}}get isFontLoadingAPISupported(){let e=!!this._document?.fonts;return M(this,`isFontLoadingAPISupported`,e)}get isSyncFontLoadingSupported(){return M(this,`isSyncFontLoadingSupported`,t||F.platform.isFirefox)}_queueLoadingCallback(e){function t(){for(O(!r.done,`completeRequest() cannot be called twice.`),r.done=!0;n.length>0&&n[0].done;){let e=n.shift();setTimeout(e.callback,0)}}let{loadingRequests:n}=this,r={done:!1,complete:t,callback:e};return n.push(r),r}get _loadTestFont(){let e=atob(`T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==`);return M(this,`_loadTestFont`,e)}_prepareFontLoadEvent(e,t){function n(e,t){return e.charCodeAt(t)<<24|e.charCodeAt(t+1)<<16|e.charCodeAt(t+2)<<8|e.charCodeAt(t+3)&255}function r(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,e&255)}function i(e,t,n,r){let i=e.substring(0,t),a=e.substring(t+n);return i+r+a}let a,o,s=this._document.createElement(`canvas`);s.width=1,s.height=1;let c=s.getContext(`2d`),l=0;function u(e,t){if(++l>30){E(`Load test font never loaded.`),t();return}if(c.font=`30px `+e,c.fillText(`.`,0,20),c.getImageData(0,0,1,1).data[3]>0){t();return}setTimeout(u.bind(null,e,t))}let d=`lt${Date.now()}${this.loadTestFontId++}`,f=this._loadTestFont;f=i(f,976,d.length,d);let p=1482184792,m=n(f,16);for(a=0,o=d.length-3;a{g.remove(),t.complete()})}},Et=class{compiledGlyphs=Object.create(null);#e;constructor(e,t=null,n,r){this.#e=e,this._inspectFont=t,n&&(this.charProcOperatorList=n),r&&Object.assign(this,r)}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let e;if(!this.cssFontInfo)e=new FontFace(this.loadedName,this.data,{});else{let t={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(t.style=`oblique ${this.cssFontInfo.italicAngle}deg`),e=new FontFace(this.cssFontInfo.fontFamily,this.data,t)}return this._inspectFont?.(this),e}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;let e=`url(data:${this.mimetype};base64,${this.data.toBase64()});`,t;if(!this.cssFontInfo)t=`@font-face {font-family:"${this.loadedName}";src:${e}}`;else{let n=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(n+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),t=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${n}src:${e}}`}return this._inspectFont?.(this,e),t}getPathGenerator(e,t){if(this.compiledGlyphs[t]!==void 0)return this.compiledGlyphs[t];let n=this.loadedName+`_path_`+t,r;try{r=e.get(n)}catch(e){E(`getPathGenerator - ignoring character: "${e}".`)}let i=Ke(r?.path);return this.fontExtraProperties||e.delete(n),this.compiledGlyphs[t]=i}get black(){return this.#e.black}get bold(){return this.#e.bold}get disableFontFace(){return this.#e.disableFontFace}set disableFontFace(e){M(this,`disableFontFace`,!!e)}get fontExtraProperties(){return this.#e.fontExtraProperties}get isInvalidPDFjsFont(){return this.#e.isInvalidPDFjsFont}get isType3Font(){return this.#e.isType3Font}get italic(){return this.#e.italic}get missingFile(){return this.#e.missingFile}get remeasure(){return this.#e.remeasure}get vertical(){return this.#e.vertical}get ascent(){return this.#e.ascent}get defaultWidth(){return this.#e.defaultWidth}get descent(){return this.#e.descent}get bbox(){return this.#e.bbox}get fontMatrix(){return this.#e.fontMatrix}get fallbackName(){return this.#e.fallbackName}get loadedName(){return this.#e.loadedName}get mimetype(){return this.#e.mimetype}get name(){return this.#e.name}get data(){return this.#e.data}clearData(){this.#e.clearData()}get cssFontInfo(){return this.#e.cssFontInfo}get systemFontInfo(){return this.#e.systemFontInfo}get defaultVMetrics(){return this.#e.defaultVMetrics}},Dt=class{static strings=[`fontFamily`,`fontWeight`,`italicAngle`]},Ot=class{static strings=[`css`,`loadedName`,`baseFontName`,`src`]},K=class{static bools=[`black`,`bold`,`disableFontFace`,`fontExtraProperties`,`isInvalidPDFjsFont`,`isType3Font`,`italic`,`missingFile`,`remeasure`,`vertical`];static numbers=[`ascent`,`defaultWidth`,`descent`];static strings=[`fallbackName`,`loadedName`,`mimetype`,`name`];static OFFSET_NUMBERS=Math.ceil(this.bools.length*2/8);static OFFSET_BBOX=this.OFFSET_NUMBERS+this.numbers.length*8;static OFFSET_FONT_MATRIX=this.OFFSET_BBOX+1+8;static OFFSET_DEFAULT_VMETRICS=this.OFFSET_FONT_MATRIX+1+48;static OFFSET_STRINGS=this.OFFSET_DEFAULT_VMETRICS+1+6},kt=class{static KIND=0;static HAS_BBOX=1;static HAS_BACKGROUND=2;static SHADING_TYPE=3;static N_COORD=4;static N_COLOR=8;static N_STOP=12;static N_FIGURES=16},At=class{#e;#t=new TextDecoder;#n;constructor(e){this.#e=e,this.#n=new DataView(e)}#r(e){O(e>n&3;return r===0?void 0:r===2}get black(){return this.#r(0)}get bold(){return this.#r(1)}get disableFontFace(){return this.#r(2)}get fontExtraProperties(){return this.#r(3)}get isInvalidPDFjsFont(){return this.#r(4)}get isType3Font(){return this.#r(5)}get italic(){return this.#r(6)}get missingFile(){return this.#r(7)}get remeasure(){return this.#r(8)}get vertical(){return this.#r(9)}#i(e){return O(e0){t=n.slice();for(let e=0,n=l.length;etypeof e==`object`&&Number.isInteger(e?.num)&&e.num>=0&&Number.isInteger(e?.gen)&&e.gen>=0,zt=pe.bind(null,Rt,e=>typeof e==`object`&&typeof e?.name==`string`),Bt=class{#e=new Map;#t=Promise.resolve();postMessage(e,t){let n={data:structuredClone(e,t?{transfer:t}:null)};this.#t.then(()=>{for(let[e]of this.#e)e.call(this,n)})}addEventListener(e,t,n=null){let r=null;if(n?.signal instanceof AbortSignal){let{signal:i}=n;if(i.aborted){E("LoopbackPort - cannot use an `aborted` signal.");return}let a=()=>this.removeEventListener(e,t);r=()=>i.removeEventListener(`abort`,a),i.addEventListener(`abort`,a)}this.#e.set(t,r)}removeEventListener(e,t){this.#e.get(t)?.(),this.#e.delete(t)}terminate(){for(let[,e]of this.#e)e?.();this.#e.clear()}},Vt={DATA:1,ERROR:2},q={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function Ht(){}function J(e){if(e instanceof P||e instanceof re||e instanceof te||e instanceof ie||e instanceof ne)return e;switch(e instanceof Error||typeof e==`object`&&e||D(`wrapReason: Expected "reason" to be a (possibly cloned) Error.`),e.name){case`AbortException`:return new P(e.message);case`InvalidPDFException`:return new re(e.message);case`PasswordException`:return new te(e.message,e.code);case`ResponseException`:return new ie(e.message,e.status,e.missing);case`UnknownErrorException`:return new ne(e.message,e.details)}return new ne(e.message,e.toString())}var Ut=class{#e=new AbortController;constructor(e,t,n){this.sourceName=e,this.targetName=t,this.comObj=n,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),n.addEventListener(`message`,this.#t.bind(this),{signal:this.#e.signal})}#t({data:e}){if(e.targetName!==this.sourceName)return;if(e.stream){this.#r(e);return}if(e.callback){let t=e.callbackId,n=this.callbackCapabilities[t];if(!n)throw Error(`Cannot resolve callback ${t}`);if(delete this.callbackCapabilities[t],e.callback===Vt.DATA)n.resolve(e.data);else if(e.callback===Vt.ERROR)n.reject(J(e.reason));else throw Error(`Unexpected callback case`);return}let t=this.actionHandler[e.action];if(!t)throw Error(`Unknown action from worker: ${e.action}`);if(e.callbackId){let n=this.sourceName,r=e.sourceName,i=this.comObj;Promise.try(t,e.data).then(function(t){i.postMessage({sourceName:n,targetName:r,callback:Vt.DATA,callbackId:e.callbackId,data:t})},function(t){i.postMessage({sourceName:n,targetName:r,callback:Vt.ERROR,callbackId:e.callbackId,reason:J(t)})});return}if(e.streamId){this.#n(e);return}t(e.data)}on(e,t){let n=this.actionHandler;if(n[e])throw Error(`There is already an actionName called "${e}"`);n[e]=t}send(e,t,n){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},n)}sendWithPromise(e,t,n){let r=this.callbackId++,i=Promise.withResolvers();this.callbackCapabilities[r]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:r,data:t},n)}catch(e){i.reject(e)}return i.promise}sendWithStream(e,t,n,r){let i=this.streamId++,a=this.sourceName,o=this.targetName,s=this.comObj;return new ReadableStream({start:n=>{let c=Promise.withResolvers();return this.streamControllers[i]={controller:n,startCall:c,pullCall:null,cancelCall:null,isClosed:!1},s.postMessage({sourceName:a,targetName:o,action:e,streamId:i,data:t,desiredSize:n.desiredSize},r),c.promise},pull:e=>{let t=Promise.withResolvers();return this.streamControllers[i].pullCall=t,s.postMessage({sourceName:a,targetName:o,stream:q.PULL,streamId:i,desiredSize:e.desiredSize}),t.promise},cancel:e=>{O(e instanceof Error,`cancel must have a valid reason`);let t=Promise.withResolvers();return this.streamControllers[i].cancelCall=t,this.streamControllers[i].isClosed=!0,s.postMessage({sourceName:a,targetName:o,stream:q.CANCEL,streamId:i,reason:J(e)}),t.promise}},n)}#n(e){let t=e.streamId,n=this.sourceName,r=e.sourceName,i=this.comObj,a=this,o=this.actionHandler[e.action],s={enqueue(e,a=1,o){if(this.isCancelled)return;let s=this.desiredSize;this.desiredSize-=a,s>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),i.postMessage({sourceName:n,targetName:r,stream:q.ENQUEUE,streamId:t,chunk:e},o)},close(){this.isCancelled||(this.isCancelled=!0,i.postMessage({sourceName:n,targetName:r,stream:q.CLOSE,streamId:t}),delete a.streamSinks[t])},error(e){O(e instanceof Error,`error must have a valid reason`),!this.isCancelled&&(this.isCancelled=!0,i.postMessage({sourceName:n,targetName:r,stream:q.ERROR,streamId:t,reason:J(e)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};s.sinkCapability.resolve(),s.ready=s.sinkCapability.promise,this.streamSinks[t]=s,Promise.try(o,e.data,s).then(function(){i.postMessage({sourceName:n,targetName:r,stream:q.START_COMPLETE,streamId:t,success:!0})},function(e){i.postMessage({sourceName:n,targetName:r,stream:q.START_COMPLETE,streamId:t,reason:J(e)})})}#r(e){let t=e.streamId,n=this.sourceName,r=e.sourceName,i=this.comObj,a=this.streamControllers[t],o=this.streamSinks[t];switch(e.stream){case q.START_COMPLETE:e.success?a.startCall.resolve():a.startCall.reject(J(e.reason));break;case q.PULL_COMPLETE:e.success?a.pullCall.resolve():a.pullCall.reject(J(e.reason));break;case q.PULL:if(!o){i.postMessage({sourceName:n,targetName:r,stream:q.PULL_COMPLETE,streamId:t,success:!0});break}o.desiredSize<=0&&e.desiredSize>0&&o.sinkCapability.resolve(),o.desiredSize=e.desiredSize,Promise.try(o.onPull||Ht).then(function(){i.postMessage({sourceName:n,targetName:r,stream:q.PULL_COMPLETE,streamId:t,success:!0})},function(e){i.postMessage({sourceName:n,targetName:r,stream:q.PULL_COMPLETE,streamId:t,reason:J(e)})});break;case q.ENQUEUE:if(O(a,`enqueue should have stream controller`),a.isClosed)break;a.controller.enqueue(e.chunk);break;case q.CLOSE:if(O(a,`close should have stream controller`),a.isClosed)break;a.isClosed=!0,a.controller.close(),this.#i(a,t);break;case q.ERROR:O(a,`error should have stream controller`),a.controller.error(J(e.reason)),this.#i(a,t);break;case q.CANCEL_COMPLETE:e.success?a.cancelCall.resolve():a.cancelCall.reject(J(e.reason)),this.#i(a,t);break;case q.CANCEL:if(!o)break;let s=J(e.reason);Promise.try(o.onCancel||Ht,s).then(function(){i.postMessage({sourceName:n,targetName:r,stream:q.CANCEL_COMPLETE,streamId:t,success:!0})},function(e){i.postMessage({sourceName:n,targetName:r,stream:q.CANCEL_COMPLETE,streamId:t,reason:J(e)})}),o.sinkCapability.reject(s),o.isCancelled=!0,delete this.streamSinks[t];break;default:throw Error(`Unexpected stream case`)}}async#i(e,t){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]),delete this.streamControllers[t]}destroy(){this.#e?.abort(),this.#e=null}},Wt=class{#e=Object.freeze({cMapUrl:`CMap`,standardFontDataUrl:`font`,wasmUrl:`wasm`});constructor({cMapUrl:e=null,standardFontDataUrl:t=null,wasmUrl:n=null}){this.cMapUrl=e,this.standardFontDataUrl=t,this.wasmUrl=n}async fetch({kind:e,filename:t}){switch(e){case`cMapUrl`:case`standardFontDataUrl`:case`wasmUrl`:break;default:D(`Not implemented: ${e}`)}let n=this[e];if(!n)throw Error(`Ensure that the \`${e}\` API parameter is provided.`);let r=`${n}${t}`;return this._fetch(r,e).catch(t=>{throw Error(`Unable to load ${this.#e[e]} data at: ${r}`)})}async _fetch(e,t){D("Abstract method `_fetch` called.")}},Gt=class extends Wt{async _fetch(e,t){let n=await xe(e,t===`cMapUrl`&&!e.endsWith(`.bcmap`)?`text`:`bytes`);return n instanceof Uint8Array?n:se(n)}},Kt=class{#e=!1;constructor({enableHWA:e=!1}){this.#e=e}create(e,t){if(e<=0||t<=0)throw Error(`Invalid canvas size`);let n=this._createCanvas(e,t);return{canvas:n,context:n.getContext(`2d`,{willReadFrequently:!this.#e})}}reset({canvas:e},t,n){if(!e)throw Error(`Canvas is not specified`);if(t<=0||n<=0)throw Error(`Invalid canvas size`);e.width=t,e.height=n}destroy(e){let{canvas:t}=e;if(!t)throw Error(`Canvas is not specified`);t.width=t.height=0,e.canvas=null,e.context=null}_createCanvas(e,t){D("Abstract method `_createCanvas` called.")}},qt=class extends Kt{constructor({ownerDocument:e=globalThis.document,enableHWA:t=!1}){super({enableHWA:t}),this._document=e}_createCanvas(e,t){let n=this._document.createElement(`canvas`);return n.width=e,n.height=t,n}},Jt=class{addFilter(e){return`none`}addHCMFilter(e,t){return`none`}addAlphaFilter(e){return`none`}addLuminosityFilter(e){return`none`}addKnockoutFilter(e=0){return`none`}addHighlightHCMFilter(e,t,n,r,i){return`none`}addSelectionHCMFilter(e,t){return`none`}addSelectionFilter(){return`none`}createSelectionStyle(e=null){return null}destroy(e=!1){}},Yt=class extends Jt{#e;#t;#n;#r;#i;#a;#o=0;constructor({docId:e,ownerDocument:t=globalThis.document}){super(),this.#r=e,this.#i=t}get#s(){return this.#t||=new Map}get#c(){return this.#a||=new Map}get#l(){if(!this.#n){let e=this.#i.createElement(`div`),{style:t}=e;t.colorScheme=`only light`,t.visibility=`hidden`,t.contain=`strict`,t.width=t.height=0,t.position=`absolute`,t.top=t.left=0,t.zIndex=-1;let n=this.#i.createElementNS(o,`svg`);n.setAttribute(`width`,0),n.setAttribute(`height`,0),this.#n=this.#i.createElementNS(o,`defs`),e.append(n),n.append(this.#n),this.#i.body.append(e)}return this.#n}#u(e){if(e.length===1){let t=e[0],n=Array(256);for(let e=0;e<256;e++)n[e]=t[e]/255;let r=n.join(`,`);return[r,r,r]}let[t,n,r]=e,i=Array(256),a=Array(256),o=Array(256);for(let e=0;e<256;e++)i[e]=t[e]/255,a[e]=n[e]/255,o[e]=r[e]/255;return[i.join(`,`),a.join(`,`),o.join(`,`)]}#d(e){if(this.#e===void 0){this.#e=``;let e=this.#i.URL;e!==this.#i.baseURI&&(Ce(e)?E(`#createUrl: ignore "data:"-URL for performance reasons.`):this.#e=A(e,``))}return`url(${this.#e}#${e})`}addFilter(e){if(!e)return`none`;let t=this.#s.get(e);if(t)return t;let[n,r,i]=this.#u(e),a=e.length===1?n:`${n}${r}${i}`;if(t=this.#s.get(a),t)return this.#s.set(e,t),t;let o=`g_${this.#r}_transfer_map_${this.#o++}`,s=this.#d(o);this.#s.set(e,s),this.#s.set(a,s);let c=this.#m(o);return this.#g(n,r,i,c),s}addHCMFilter(e,t){let n=`${e}-${t}`,r=`base`,i=this.#c.get(r);if(i?.key===n||(i?(i.filter?.remove(),i.key=n,i.url=`none`,i.filter=null):(i={key:n,url:`none`,filter:null},this.#c.set(r,i)),!e||!t))return i.url;let a=this.#v(e);e=I.makeHexColor(...a);let o=this.#v(t);if(t=I.makeHexColor(...o),this.#l.style.color=``,e===`#000000`&&t===`#ffffff`||e===t)return i.url;let s=Array(256);for(let e=0;e<=255;e++){let t=e/255;s[e]=t<=.03928?t/12.92:((t+.055)/1.055)**2.4}let c=s.join(`,`),l=`g_${this.#r}_hcm_filter`,u=i.filter=this.#m(l);this.#g(c,c,c,u),this.#p(u);let d=(e,t)=>{let n=a[e]/255,r=o[e]/255,i=Array(t+1);for(let e=0;e<=t;e++)i[e]=n+e/t*(r-n);return i.join(`,`)};return this.#g(d(0,5),d(1,5),d(2,5),u),i.url=this.#d(l),i.url}addSelectionHCMFilter(e,t){return this.addHighlightHCMFilter(`selection`,e,t,`HighlightText`,`Highlight`)}addSelectionFilter(){return this.addHighlightHCMFilter(`selection_default`,`black`,`white`,`HighlightText`,`Highlight`)}createSelectionStyle(e=null){let t=e?this.addSelectionHCMFilter(e.foreground,e.background):this.addSelectionFilter();return t===`none`||!F.platform.isFirefox?null:{"backdrop-filter":t,"background-color":`transparent`}}addAlphaFilter(e){let t=this.#s.get(e);if(t)return t;let[n]=this.#u([e]),r=`alpha_${n}`;if(t=this.#s.get(r),t)return this.#s.set(e,t),t;let i=`g_${this.#r}_alpha_map_${this.#o++}`,a=this.#d(i);this.#s.set(e,a),this.#s.set(r,a);let o=this.#m(i);return this.#_(n,o),a}addLuminosityFilter(e){let t=this.#s.get(e||`luminosity`);if(t)return t;let n,r;if(e?([n]=this.#u([e]),r=`luminosity_${n}`):r=`luminosity`,t=this.#s.get(r),t)return this.#s.set(e,t),t;let i=`g_${this.#r}_luminosity_map_${this.#o++}`,a=this.#d(i);this.#s.set(e,a),this.#s.set(r,a);let o=this.#m(i);return this.#f(o),e&&this.#_(n,o),a}addKnockoutFilter(e=0){let t=e>0?Math.min(1/e,1e6):1e6,n=`knockout_${t}`,r=this.#s.get(n);if(r)return r;let i=`g_${this.#r}_knockout_filter_${this.#o++}`,a=this.#d(i);this.#s.set(n,a);let s=this.#m(i),c=this.#i.createElementNS(o,`feComponentTransfer`);s.append(c);let l=this.#i.createElementNS(o,`feFuncA`);return l.setAttribute(`type`,`linear`),l.setAttribute(`slope`,`${t}`),l.setAttribute(`intercept`,`0`),c.append(l),a}addHighlightHCMFilter(e,t,n,r,i){let a=`${t}-${n}-${r}-${i}`,o=this.#c.get(e);if(o?.key===a||(o?(o.filter?.remove(),o.key=a,o.url=`none`,o.filter=null):(o={key:a,url:`none`,filter:null},this.#c.set(e,o)),!t||!n))return o.url;let[s,c]=[t,n].map(this.#v.bind(this)),l=Math.round(.2126*s[0]+.7152*s[1]+.0722*s[2]),u=Math.round(.2126*c[0]+.7152*c[1]+.0722*c[2]),[d,f]=[r,i].map(this.#b.bind(this));u{let r=Array(256),i=(u-l)/n,a=e/255,o=(t-e)/(255*n),s=0;for(let e=0;e<=n;e++){let t=Math.round(l+e*i),n=a+e*o;for(let e=s;e<=t;e++)r[e]=n;s=t+1}for(let e=s;e<256;e++)r[e]=r[s-1];return r.join(`,`)},m=`g_${this.#r}_hcm_${e}_filter`,h=o.filter=this.#m(m);return this.#p(h),this.#g(p(d[0],f[0],5),p(d[1],f[1],5),p(d[2],f[2],5),h),o.url=this.#d(m),o.url}destroy(e=!1){e&&this.#a?.size||(this.#n?.parentNode.parentNode.remove(),this.#n=null,this.#t?.clear(),this.#t=null,this.#a?.clear(),this.#a=null,this.#o=0)}#f(e){let t=this.#i.createElementNS(o,`feColorMatrix`);t.setAttribute(`type`,`matrix`),t.setAttribute(`values`,`0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0`),e.append(t)}#p(e){let t=this.#i.createElementNS(o,`feColorMatrix`);t.setAttribute(`type`,`matrix`),t.setAttribute(`values`,`0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0`),e.append(t)}#m(e){let t=this.#i.createElementNS(o,`filter`);return t.setAttribute(`color-interpolation-filters`,`sRGB`),t.setAttribute(`id`,e),this.#l.append(t),t}#h(e,t,n){let r=this.#i.createElementNS(o,t);r.setAttribute(`type`,`discrete`),r.setAttribute(`tableValues`,n),e.append(r)}#g(e,t,n,r){let i=this.#i.createElementNS(o,`feComponentTransfer`);r.append(i),this.#h(i,`feFuncR`,e),this.#h(i,`feFuncG`,t),this.#h(i,`feFuncB`,n)}#_(e,t){let n=this.#i.createElementNS(o,`feComponentTransfer`);t.append(n),this.#h(n,`feFuncA`,e)}#v(e){return this.#l.style.color=e,je(getComputedStyle(this.#l).getPropertyValue(`color`))}#y(e){return this.#l.style.color=e,Ae(getComputedStyle(this.#l).getPropertyValue(`color`))}#b(e){let[t,n,r,i]=this.#y(e);if(i===1)return[t,n,r];let[a,o,s]=this.#v(`Canvas`);return[Xt(t,a,i),Xt(n,o,i),Xt(r,s,i)]}};function Xt(e,t,n){return Math.round(n*e+(1-n)*t)}t&&E("Please use the `legacy` build in Node.js environments.");async function Zt(e){let t=await process.getBuiltinModule(`fs/promises`).readFile(e);return new Uint8Array(t)}var Qt=class extends Jt{},$t=class extends Kt{_createCanvas(e,t){return process.getBuiltinModule(`module`).createRequire(import.meta.url)(`@napi-rs/canvas`).createCanvas(e,t)}},en=class extends Wt{async _fetch(e,t){return Zt(e)}};function tn({src:e,srcPos:t=0,dest:n,width:r,height:i,nonBlackColor:a=4294967295,inverseDecode:o=!1}){let s=F.isLittleEndian?4278190080:255,[c,l]=o?[a,s]:[s,a],u=r>>3,d=r&7,f=c^l,p=e.length;n=new Uint32Array(n.buffer);let m=0;for(let r=0;r>7&1)&f,n[m+1]=c^-(r>>6&1)&f,n[m+2]=c^-(r>>5&1)&f,n[m+3]=c^-(r>>4&1)&f,n[m+4]=c^-(r>>3&1)&f,n[m+5]=c^-(r>>2&1)&f,n[m+6]=c^-(r>>1&1)&f,n[m+7]=c^-(r&1)&f}if(d===0)continue;let r=t>7-e&1)&f}return{srcPos:t,destPos:m}}function nn({src:e,srcPos:t=0,dest:n,destPos:r=0,width:i,height:a}){let o=0,s=i*a*3,c=s>>2,l=new Uint32Array(e.buffer,t,c),u=F.isLittleEndian?4278190080:255;if(F.isLittleEndian){for(;o>>24|t<<8|u,n[r+2]=t>>>16|i<<16|u,n[r+3]=i>>>8|u}for(let i=o*4,a=t+s;i>>8|u,n[r+2]=t<<16|i>>>16|u,n[r+3]=i<<8|u}for(let i=o*4,a=t+s;i u : Uniforms; - -struct VertexInput { - @location(0) position : vec2, - @location(1) color : vec4, -}; - -struct VertexOutput { - @builtin(position) position : vec4, - @location(0) color : vec3, -}; - -@vertex -fn vs_main(in : VertexInput) -> VertexOutput { - var out : VertexOutput; - let cx = (in.position.x + u.offsetX) * u.scaleX; - let cy = (in.position.y + u.offsetY) * u.scaleY; - out.position = vec4( - ((cx + u.borderSize) / u.paddedWidth) * 2.0 - 1.0, - 1.0 - ((cy + u.borderSize) / u.paddedHeight) * 2.0, - 0.0, - 1.0 - ); - out.color = in.color.rgb; - return out; -} - -@fragment -fn fs_main(in : VertexOutput) -> @location(0) vec4 { - return vec4(in.color, 1.0); -} -`,an=new class{#e=null;#t=null;#n=null;#r=null;async#i(){if(!globalThis.navigator?.gpu)return!1;try{let e=await navigator.gpu.requestAdapter();return e?(this.#r=navigator.gpu.getPreferredCanvasFormat(),this.#t=await e.requestDevice(),!0):!1}catch{return!1}}init(){return this.#e||=this.#i()}get isReady(){return this.#t!==null}loadMeshShader(){if(!this.#t||this.#n)return;let e=this.#t.createShaderModule({code:rn});this.#n=this.#t.createRenderPipeline({layout:`auto`,vertex:{module:e,entryPoint:`vs_main`,buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:`float32x2`}]},{arrayStride:4,attributes:[{shaderLocation:1,offset:0,format:`unorm8x4`}]}]},fragment:{module:e,entryPoint:`fs_main`,targets:[{format:this.#r}]},primitive:{topology:`triangle-list`}})}draw(e,t,n,r,i,a,o,s){this.loadMeshShader();let c=this.#t,{offsetX:l,offsetY:u,scaleX:d,scaleY:f}=r,p=c.createBuffer({size:Math.max(e.byteLength,4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});e.byteLength>0&&c.queue.writeBuffer(p,0,e);let m=c.createBuffer({size:Math.max(t.byteLength,4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST});t.byteLength>0&&c.queue.writeBuffer(m,0,t);let h=c.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});c.queue.writeBuffer(h,0,new Float32Array([l,u,d,f,a,o,s,0]));let g=c.createBindGroup({layout:this.#n.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:h}}]}),_=new OffscreenCanvas(a,o),v=_.getContext(`webgpu`);v.configure({device:c,format:this.#r,alphaMode:i?`opaque`:`premultiplied`});let y=i?{r:i[0]/255,g:i[1]/255,b:i[2]/255,a:1}:{r:0,g:0,b:0,a:0},b=c.createCommandEncoder(),x=b.beginRenderPass({colorAttachments:[{view:v.getCurrentTexture().createView(),clearValue:y,loadOp:`clear`,storeOp:`store`}]});return n>0&&(x.setPipeline(this.#n),x.setBindGroup(0,g),x.setVertexBuffer(0,p),x.setVertexBuffer(1,m),x.draw(n)),x.end(),c.queue.submit([b.finish()]),p.destroy(),m.destroy(),h.destroy(),_.transferToImageBitmap()}};function on(){return an.init()}function sn(){return an.isReady}function cn(){an.loadMeshShader()}function ln(e,t,n,r,i,a,o,s){return an.draw(e,t,n,r,i,a,o,s)}var Y={FILL:`Fill`,STROKE:`Stroke`,SHADING:`Shading`};function un(e,t){if(!t)return;let n=t[2]-t[0],r=t[3]-t[1],i=new Path2D;i.rect(t[0],t[1],n,r),e.clip(i)}var dn=class{isModifyingCurrentTransform(){return!1}getPattern(){D("Abstract method `getPattern` called.")}},fn=class extends dn{constructor(e){super(),this._type=e[1],this._bbox=e[2],this._colorStops=e[3],this._p0=e[4],this._p1=e[5],this._r0=e[6],this._r1=e[7],this.matrix=null}isOriginBased(){return this._p0[0]===0&&this._p0[1]===0&&(!this.isRadial()||this._p1[0]===0&&this._p1[1]===0)}isRadial(){return this._type===`radial`}areConic(){if(!this.isRadial())return!1;let e=Math.hypot(this._p0[0]-this._p1[0],this._p0[1]-this._p1[1]);return e+this._r1>this._r0&&e+this._r0>this._r1}_createGradient(e,t=null){let n,r=this._p0,i=this._p1;if(t&&(r=r.slice(),i=i.slice(),I.applyTransform(r,t),I.applyTransform(i,t)),this._type===`axial`)n=e.createLinearGradient(r[0],r[1],i[0],i[1]);else if(this._type===`radial`){let a=this._r0,o=this._r1;if(t){let e=new Float32Array(2);I.singularValueDecompose2dScale(t,e),a*=e[0],o*=e[0]}n=e.createRadialGradient(r[0],r[1],a,i[0],i[1],o)}for(let e of this._colorStops)n.addColorStop(e[0],e[1]);return n}_createReversedGradient(e,t=null){let n=this._p1,r=this._p0;t&&(n=n.slice(),r=r.slice(),I.applyTransform(n,t),I.applyTransform(r,t));let i=this._r1,a=this._r0;if(t){let e=new Float32Array(2);I.singularValueDecompose2dScale(t,e),i*=e[0],a*=e[0]}let o=e.createRadialGradient(n[0],n[1],i,r[0],r[1],a),s=this._colorStops.map(([e,t])=>[1-e,t]).reverse();for(let[e,t]of s)o.addColorStop(e,t);return o}getPattern(e,t,n,r){let i;if(r===Y.STROKE||r===Y.FILL){if(this.isOriginBased()){let r=I.transform(n,t.baseTransform);this.matrix&&(r=I.transform(r,this.matrix));let i=.001,a=Math.hypot(r[0],r[1]),o=Math.hypot(r[2],r[3]),s=(r[0]*r[2]+r[1]*r[3])/(a*o);if(Math.abs(s)c[r*2+1]&&(f=n,n=r,r=f,f=a,a=o,o=f),c[r*2+1]>c[i*2+1]&&(f=r,r=i,i=f,f=o,o=s,s=f),c[n*2+1]>c[r*2+1]&&(f=n,n=r,r=f,f=a,a=o,o=f);let p=(c[n*2]+t.offsetX)*t.scaleX,m=(c[n*2+1]+t.offsetY)*t.scaleY,h=(c[r*2]+t.offsetX)*t.scaleX,g=(c[r*2+1]+t.offsetY)*t.scaleY,_=(c[i*2]+t.offsetX)*t.scaleX,v=(c[i*2+1]+t.offsetY)*t.scaleY;if(m>=v)return;let y=l[a*4],b=l[a*4+1],x=l[a*4+2],S=l[o*4],C=l[o*4+1],w=l[o*4+2],T=l[s*4],E=l[s*4+1],D=l[s*4+2],O=Math.round(m),ee=Math.round(v),k,A,j,M,N,te,ne,re;for(let e=O;e<=ee;e++){if(ev?1:g===v?0:(g-e)/(g-v),k=h-(h-_)*t,A=S-(S-T)*t,j=C-(C-E)*t,M=w-(w-D)*t}let t;t=ev?1:(m-e)/(m-v),N=p-(p-_)*t,te=y-(y-T)*t,ne=b-(b-E)*t,re=x-(x-D)*t;let n=Math.round(Math.min(k,N)),r=Math.round(Math.max(k,N)),i=d*e+n*4;for(let e=n;e<=r;e++)t=(k-e)/(k-N),t<0?t=0:t>1&&(t=1),u[i++]=A-(A-te)*t|0,u[i++]=j-(j-ne)*t|0,u[i++]=M-(M-re)*t|0,u[i++]=255}}var mn=class extends dn{constructor(e){super(),this._posData=e[2],this._colData=e[3],this._vertexCount=e[4],this._bounds=e[5],this._bbox=e[6],this._background=e[7],this.matrix=null,cn()}_createMeshCanvas(e,t,n){let r=1.1,i=3e3,a=Math.floor(this._bounds[0]),o=Math.floor(this._bounds[1]),s=Math.ceil(this._bounds[2])-a,c=Math.ceil(this._bounds[3])-o,l=Math.min(Math.ceil(Math.abs(s*e[0]*r)),i)||1,u=Math.min(Math.ceil(Math.abs(c*e[1]*r)),i)||1,d=s?s/l:1,f=c?c/u:1,p={coords:this._posData,colors:this._colData,offsetX:-a,offsetY:-o,scaleX:1/d,scaleY:1/f},m=l+4,h=u+4,g=n.create(m,h);if(sn()&&this._vertexCount>48)g.context.drawImage(ln(this._posData,this._colData,this._vertexCount,p,t,m,h,2),0,0);else{let e=g.context.createImageData(l,u);if(t){let n=e.data;for(let e=0,r=n.length;ec+1e-6||t>l+1e-6)return null;let u=Math.floor((n-o)/c)+1,d=Math.ceil((n+e-i)/c)-1,f=Math.floor((r-s)/l)+1,p=Math.ceil((r+t-a)/l)-1;return d<=u&&p<=f?[u,f]:null}updatePatternDims(e,t){let n=I.inverseTransform(this.patternBaseMatrix),r=[e[0],e[1]],i=[e[2],e[3]];I.applyTransform(r,n),I.applyTransform(i,n),t[0]=Math.abs(i[0]-r[0]),t[1]=Math.abs(i[1]-r[1]),t[2]=Math.min(r[0],i[0]),t[3]=Math.min(r[1],i[1])}_renderTileCanvas(e,t,n,r){let[i,a,o,s]=this.bbox,c=e.canvasFactory.create(n.size,r.size),l=c.context,u=this.canvasGraphicsFactory.createCanvasGraphics(l,t);return u.groupLevel=e.groupLevel,this.setFillAndStrokeStyleToContext(u,this.paintType,this.color),l.translate(-n.scale*i,-r.scale*a),u.transform(0,n.scale,0,0,r.scale,0,0),l.save(),u.dependencyTracker?.save(),this.clipBbox(u,i,a,o,s),u.baseTransform=B(u.ctx),u.executeOperatorList(this.operatorList),u.endDrawing(),u.dependencyTracker?.restore(),l.restore(),c}_getCombinedScales(){let e=new Float32Array(2);I.singularValueDecompose2dScale(this.matrix,e);let[t,n]=e;return I.singularValueDecompose2dScale(this.baseTransform,e),[t*e[0],n*e[1]]}drawPattern(e,t,n=!1,[r,i],a){let[o,s,c,l]=this.bbox,u=e.dependencyTracker;if(u&&(e.dependencyTracker=new Ct(u,a)),e.save(),n?e.ctx.clip(t,`evenodd`):e.ctx.clip(t),e.ctx.setTransform(...this.patternBaseMatrix),e.ctx.translate(r*this.xstep,i*this.ystep),this.needsIsolation||e.ctx.globalAlpha!==1||e.ctx.globalCompositeOperation!==`source-over`||e.inSMaskMode){let t=c-o,n=l-s,[r,i]=this._getCombinedScales(),u=this.getSizeAndScale(t,this.ctx.canvas.width,r),d=this.getSizeAndScale(n,this.ctx.canvas.height,i),f=this._renderTileCanvas(e,a,u,d);e.ctx.drawImage(f.canvas,o,s,t,n),e.canvasFactory.destroy(f)}else this.setFillAndStrokeStyleToContext(e,this.paintType,this.color),this.clipBbox(e,o,s,c,l),e.baseTransformStack.push(e.baseTransform),e.baseTransform=B(e.ctx),e.executeOperatorList(this.operatorList),e.baseTransform=e.baseTransformStack.pop();e.restore(),u&&(e.dependencyTracker=u)}createPatternCanvas(e,t){let[n,r,i,a]=this.bbox,o=i-n,s=a-r,{xstep:c,ystep:l}=this;c=Math.abs(c),l=Math.abs(l),T(`TilingType: `+this.tilingType);let[u,d]=this._getCombinedScales(),f=o,p=s,m=!1,h=!1;Math.ceil(c*u)>=Math.ceil(o*u)?f=c:m=!0,Math.ceil(l*d)>=Math.ceil(s*d)?p=l:h=!0;let g=this.getSizeAndScale(f,this.ctx.canvas.width,u),_=this.getSizeAndScale(p,this.ctx.canvas.height,d),v=this._renderTileCanvas(e,t,g,_);if(m||h){let t=v.canvas;m&&(f=c),h&&(p=l);let i=this.getSizeAndScale(f,this.ctx.canvas.width,u),a=this.getSizeAndScale(p,this.ctx.canvas.height,d),g=i.size,_=a.size,y=e.canvasFactory.create(g,_),b=y.context,x=m?Math.floor(o/c):0,S=h?Math.floor(s/l):0;for(let e=0;e<=x;e++)for(let n=0;n<=S;n++)b.drawImage(t,g*e,_*n,g,_,0,0,g,_);return e.canvasFactory.destroy(v),{canvas:y.canvas,canvasEntry:y,scaleX:i.scale,scaleY:a.scale,offsetX:n,offsetY:r}}return{canvas:v.canvas,canvasEntry:v,scaleX:g.scale,scaleY:_.scale,offsetX:n,offsetY:r}}getSizeAndScale(t,n,r){let i=Math.max(e.MAX_PATTERN_SIZE,n),a=Math.ceil(t*r);return a>=i?a=i:r=a/t,{scale:r,size:a}}clipBbox(e,t,n,r,i){let a=r-t,o=i-n,s=new Path2D;s.rect(t,n,a,o),I.axialAlignedBoundingBox([t,n,r,i],B(e.ctx),e.current.minMax),e.ctx.clip(s),e.current.updateClipFromPath()}setFillAndStrokeStyleToContext(e,t,n){let r=e.ctx,i=e.current;switch(i.patternFill=i.patternStroke=!1,t){case _n.COLORED:let{fillStyle:e,strokeStyle:a}=this.ctx;r.fillStyle=i.fillColor=e,r.strokeStyle=i.strokeColor=a;break;case _n.UNCOLORED:r.fillStyle=r.strokeStyle=n,i.fillColor=i.strokeColor=n;break;default:throw new ae(`Unsupported paint type: ${t}`)}}isModifyingCurrentTransform(){return!1}getPattern(e,t,n,r,i){let a=r===Y.SHADING?n:I.transform(n,this.patternBaseMatrix),o=this.createPatternCanvas(t,i),s=new DOMMatrix(a);s=s.translate(o.offsetX,o.offsetY),s=s.scale(1/o.scaleX,1/o.scaleY);let c=e.createPattern(o.canvas,`repeat`);return t.canvasFactory.destroy(o.canvasEntry),c.setTransform(s),c}},yn=16,bn=100,xn=15,Sn=10,X=16,Cn=new DOMMatrix,Z=new Float32Array(2);function wn(e,t){if(e._removeMirroring)throw Error(`Context is already forwarding operations.`);let n=new Map;for(let r of[`save`,`restore`,`rotate`,`scale`,`translate`,`transform`,`setTransform`,`resetTransform`,`clip`,`moveTo`,`lineTo`,`bezierCurveTo`,`quadraticCurveTo`,`arc`,`arcTo`,`ellipse`,`rect`,`roundRect`,`closePath`,`beginPath`]){let i=e[r];typeof i!=`function`||typeof t[r]!=`function`||(n.set(r,i),e[r]=function(...e){return t[r](...e),i.apply(this,e)})}e._removeMirroring=()=>{for(let[t,r]of n)e[t]=r;delete e._removeMirroring}}function Tn(e,t,n,r,i,a,o,s,c,l){let[u,d,f,p,m,h]=B(e);if(d===0&&f===0){let g=o*u+m,_=Math.round(g),v=s*p+h,y=Math.round(v),b=(o+c)*u+m,x=Math.abs(Math.round(b)-_)||1,S=(s+l)*p+h,C=Math.abs(Math.round(S)-y)||1;return e.setTransform(Math.sign(u),0,0,Math.sign(p),_,y),e.drawImage(t,n,r,i,a,0,0,x,C),e.setTransform(u,d,f,p,m,h),[x,C]}if(u===0&&p===0){let g=s*f+m,_=Math.round(g),v=o*d+h,y=Math.round(v),b=(s+l)*f+m,x=Math.abs(Math.round(b)-_)||1,S=(o+c)*d+h,C=Math.abs(Math.round(S)-y)||1;return e.setTransform(0,Math.sign(d),Math.sign(f),0,_,y),e.drawImage(t,n,r,i,a,0,0,C,x),e.setTransform(u,d,f,p,m,h),[C,x]}e.drawImage(t,n,r,i,a,o,s,c,l);let g=Math.hypot(u,d),_=Math.hypot(f,p);return[g*c,_*l]}var En=class{alphaIsShape=!1;fontSize=0;fontSizeScale=1;textMatrix=null;textMatrixScale=1;fontMatrix=i;leading=0;x=0;y=0;lineX=0;lineY=0;charSpacing=0;wordSpacing=0;textHScale=1;textRenderingMode=m.FILL;textRise=0;fillColor=`#000000`;strokeColor=`#000000`;tilingPatternDims=null;patternFill=!1;patternStroke=!1;fillAlpha=1;strokeAlpha=1;lineWidth=1;activeSMask=null;transferMaps=`none`;minMax=r.slice();constructor(e,t){this.clipBox=new Float32Array([0,0,e,t])}clone(){let e=Object.create(this);return e.clipBox=this.clipBox.slice(),e.minMax=this.minMax.slice(),e.tilingPatternDims=this.tilingPatternDims?.slice(),e}getPathBoundingBox(e=Y.FILL,t=null){let n=this.minMax.slice();if(e===Y.STROKE){t||D(`Stroke bounding box must include transform.`),I.singularValueDecompose2dScale(t,Z);let e=Z[0]*this.lineWidth/2,r=Z[1]*this.lineWidth/2;n[0]-=e,n[1]-=r,n[2]+=e,n[3]+=r}return n}updateClipFromPath(){let e=I.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(e||[0,0,0,0])}isEmptyClip(){return this.minMax[0]===1/0}startNewPathAndClipBox(e){this.clipBox.set(e,0),this.minMax.set(r,0)}getClippedPathBoundingBox(e=Y.FILL,t=null){return I.intersect(this.clipBox,this.getPathBoundingBox(e,t))}};function Dn(e,t){let{width:n,height:r,kind:i}=t,a=r%X,o=(r-a)/X,s=a===0?o:o+1,c=e.createImageData(n,X),l=0,u=t.data,d=c.data,f;if(i===h.GRAYSCALE_1BPP)for(f=0;fSn&&typeof n==`function`,u=l?Date.now()+xn:0,d=0,f=this.commonObjs,p=this.objs,m,h;for(;;){if(r!==void 0){if(s===r.nextBreakPoint)return r.breakIt(s,n),s;if(r.shouldSkip(s)){if(++s===c)return s;continue}}if(!i||i(s))if(m=o[s],h=a[s]??null,m!==y.dependency)h===null?this[m](s):this[m](s,...h);else for(let e of h){this.dependencyTracker?.recordNamedData(e,s);let t=e.startsWith(`g_`)?f:p;if(!t.has(e))return t.get(e,n),s}if(s++,s===c)return s;if(l&&++d>Sn){if(Date.now()>u)return n(),s;d=0}}}#u(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null,this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.canvasFactory.destroy(this.transparentCanvasEntry),this.transparentCanvas=null,this.transparentCanvasEntry=null)}endDrawing(){this.#u();for(let e of this.smaskGroupCanvases)this.canvasFactory.destroy(e);this.smaskGroupCanvases.length=0,this._clearPreparedSMask(),this.tempSMask=null,this.smaskStack.length=0;for(let e of this.#l)this.#y(e);this.#l.length=0,this.#n=null,this.#r=null,this.#i=null,this.#a=null,this.#o=1,this.#c=null,this.#t=0,this.#e=0,this.cachedPatterns.clear();for(let e of this._cachedBitmapsMap.values()){for(let t of e.values())typeof HTMLCanvasElement<`u`&&t instanceof HTMLCanvasElement&&(t.width=t.height=0);e.clear()}this._cachedBitmapsMap.clear(),this.#d()}#d(){if(this.pageColors){let e=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(e!==`none`){let t=this.ctx.filter;this.ctx.filter=e,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=t}}}_scaleImage(e,t){let n=e.width??e.displayWidth,r=e.height??e.displayHeight,i=Math.max(Math.hypot(t[0],t[1]),1),a=Math.max(Math.hypot(t[2],t[3]),1),o=[],s=i,c=a,l=n,u=r;for(;s>2&&l>1||c>2&&u>1;){let e=l,t=u;s>2&&l>1&&(e=Math.ceil(l/2),s/=l/e),c>2&&u>1&&(t=Math.ceil(u/2),c/=u/t),o.push({newWidth:e,newHeight:t}),l=e,u=t}if(o.length===0)return{img:e,paintWidth:n,paintHeight:r,tmpCanvas:null};if(o.length===1){let{newWidth:t,newHeight:i}=o[0],a=this.canvasFactory.create(t,i);return a.context.drawImage(e,0,0,n,r,0,0,t,i),{img:a.canvas,paintWidth:t,paintHeight:i,tmpCanvas:a}}let d=this.canvasFactory.create(1,1),f=this.canvasFactory.create(1,1),p=n,m=r,h=e;for(let{newWidth:e,newHeight:t}of o)this.canvasFactory.reset(f,e,t),f.context.drawImage(h,0,0,p,m,0,0,e,t),[d,f]=[f,d],h=d.canvas,p=e,m=t;return this.canvasFactory.destroy(f),{img:d.canvas,paintWidth:p,paintHeight:m,tmpCanvas:d}}_createMaskCanvas(e,t){let n=this.ctx,{width:i,height:a}=t,o=this.current.fillColor,s=this.current.patternFill,c=B(n),l,u,d,f;if((t.bitmap||t.data)&&t.count>1){let n=t.bitmap||t.data.buffer;u=JSON.stringify(s?c:[c.slice(0,4),o]),l=this._cachedBitmapsMap.getOrInsertComputed(n,he);let r=l.get(u);if(r&&!s){let t=Math.round(Math.min(c[0],c[2])+c[4]),n=Math.round(Math.min(c[1],c[3])+c[5]);return this.dependencyTracker?.recordDependencies(e,G.transformAndFill),{canvas:r,offsetX:t,offsetY:n}}d=r}d||(f=this.canvasFactory.create(i,a),On(f.context,t));let p=I.transform(c,[1/i,0,0,-1/a,0,0]);p=I.transform(p,[1,0,0,1,0,-a]);let m=r.slice();I.axialAlignedBoundingBox([0,0,i,a],p,m);let[h,g,_,v]=m,y=Math.round(_-h)||1,b=Math.round(v-g)||1,x=this.canvasFactory.create(y,b),S=x.context,C=h,w=g;S.translate(-C,-w),S.transform(...p);let T=null;if(!d){let e=this._scaleImage(f.canvas,V(S));d=e.img,T=e.tmpCanvas,d!==f.canvas&&(this.canvasFactory.destroy(f),f=null),l&&s&&(l.set(u,d),T=null,f=null)}S.imageSmoothingEnabled=jn(B(S),t.interpolate),Tn(S,d,0,0,d.width,d.height,0,0,i,a),T&&this.canvasFactory.destroy(T),f&&this.canvasFactory.destroy(f),S.globalCompositeOperation=`source-in`;let E=I.transform(V(S),[1,0,0,1,-C,-w]);return S.fillStyle=s?o.getPattern(n,this,E,Y.FILL,e):o,S.fillRect(0,0,i,a),l&&!s&&l.set(u,x.canvas),this.dependencyTracker?.recordDependencies(e,G.transformAndFill),{canvas:x.canvas,canvasEntry:l&&!s?null:x,offsetX:Math.round(C),offsetY:Math.round(w)}}setLineWidth(e,t){this.dependencyTracker?.recordSimpleData(`lineWidth`,e),t!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=t,this.ctx.lineWidth=t}setLineCap(e,t){this.dependencyTracker?.recordSimpleData(`lineCap`,e),this.ctx.lineCap=Mn[t]}setLineJoin(e,t){this.dependencyTracker?.recordSimpleData(`lineJoin`,e),this.ctx.lineJoin=Nn[t]}setMiterLimit(e,t){this.dependencyTracker?.recordSimpleData(`miterLimit`,e),this.ctx.miterLimit=t}setDash(e,t,n){this.dependencyTracker?.recordSimpleData(`dash`,e);let r=this.ctx;r.setLineDash!==void 0&&(r.setLineDash(t),r.lineDashOffset=n)}setRenderingIntent(e,t){}setFlatness(e,t){}setGState(e,t){for(let[n,r]of t)switch(n){case`LW`:this.setLineWidth(e,r);break;case`LC`:this.setLineCap(e,r);break;case`LJ`:this.setLineJoin(e,r);break;case`ML`:this.setMiterLimit(e,r);break;case`D`:this.setDash(e,r[0],r[1]);break;case`RI`:this.setRenderingIntent(e,r);break;case`FL`:this.setFlatness(e,r);break;case`Font`:this.setFont(e,r[0],r[1]);break;case`CA`:this.dependencyTracker?.recordSimpleData(`strokeAlpha`,e),this.current.strokeAlpha=r;break;case`ca`:this.dependencyTracker?.recordSimpleData(`fillAlpha`,e),this.ctx.globalAlpha=this.current.fillAlpha=r;break;case`BM`:this.dependencyTracker?.recordSimpleData(`globalCompositeOperation`,e),this.ctx.globalCompositeOperation=r;break;case`SMask`:this.dependencyTracker?.recordSimpleData(`SMask`,e),this.current.activeSMask=r?this.tempSMask:null,this.current.activeSMask&&(this.current.activeSMask.blendMode=this.ctx.globalCompositeOperation),this.tempSMask=null,this.checkSMaskState(e);break;case`TR`:this.dependencyTracker?.recordSimpleData(`filter`,e),this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(r);break}}get inSMaskMode(){return!!this.suspendedCtx}_clearPreparedSMask(){this.smaskPreparedEntry&&=(this.canvasFactory.destroy(this.smaskPreparedEntry),null),this.smaskPreparedFor=null,this.smaskPreparedOffsetX=0,this.smaskPreparedOffsetY=0,this.smaskPreparedOOBAlpha=null}_ensurePreparedSMask(e){e!==this.smaskPreparedFor&&(this._clearPreparedSMask(),this._prepareSMaskCanvas(e))}checkSMaskState(e){let t=this.inSMaskMode;this.current.activeSMask&&!t?this.beginSMaskMode(e):!this.current.activeSMask&&t?this.endSMaskMode():this.current.activeSMask&&t&&this._ensurePreparedSMask(this.current.activeSMask)}_prepareSMaskCanvas(e){let{canvas:t,subtype:n,backdrop:r,transferMap:i}=e,a=n===`Luminosity`||n===`Alpha`&&i;if(!a&&!(n===`Luminosity`&&r)){this.smaskPreparedFor=e;return}let o;if(n===`Luminosity`&&r){let[e,t,n]=Ae(r),a=Math.round(.3*e+.59*t+.11*n);o=i?.[a]??a}else o=i?.[0]??0;let{width:s,height:c}=this.ctx.canvas,l=t.width*t.height,u=s*c<4*l,d=a?{url:n===`Alpha`?this.filterFactory.addAlphaFilter(i):this.filterFactory.addLuminosityFilter(i),subtype:n,transferMap:i}:null,f=n===`Luminosity`?r:null,p,m,h;u?(p=this._bakeSMaskCanvas(t,e.offsetX,e.offsetY,s,c,f,d),m=0,h=0):(p=this._bakeSMaskCanvas(t,0,0,t.width,t.height,f,d),m=e.offsetX,h=e.offsetY),this.smaskPreparedEntry=p,this.smaskPreparedFor=e,this.smaskPreparedOffsetX=m,this.smaskPreparedOffsetY=h,this.smaskPreparedOOBAlpha=!u&&o!==0?o:null}_bakeSMaskCanvas(e,t,n,r,i,a,o){!a&&!o&&D(`_bakeSMaskCanvas with neither backdrop nor filter`);let s=this.canvasFactory.create(r,i),c=s.context;if(c.drawImage(e,t,n),a&&(c.globalCompositeOperation=`destination-atop`,c.fillStyle=a,c.fillRect(0,0,r,i)),!o)return s;let l=this.canvasFactory.create(r,i),u=l.context;u.filter=o.url;let d=F.isCanvasFilterSupported&&u.filter!==`none`&&u.filter!==``;if(u.drawImage(s.canvas,0,0),F.isCanvasFilterSupported&&(u.filter=`none`),!d){let e=u.getImageData(0,0,r,i),{data:t}=e,{transferMap:n}=o;if(o.subtype===`Luminosity`)for(let e=0,r=t.length;ethis.filterFactory.addKnockoutFilter(n))),!s||c!==`none`)return t&&(o.save(),o.setTransform(1,0,0,1,0,0),o.clearRect(0,0,r,i),o.restore()),o.filter=c,o.drawImage(e,0,0),o.filter=`none`,a;let l=e.getContext(`2d`,{willReadFrequently:!0}).getImageData(0,0,r,i),u=o.createImageData(r,i),d=l.data,f=u.data,p=n>0?1/n:1e6;for(let e=3,t=d.length;e0||!this.contentVisible)return!1;this.#t++,this.#o=e;let t=this.#l.at(-1),{canvas:n}=this.ctx,r=this.#p(t,`knockoutTempEntry`,n.width,n.height);this.#n=r;let i=r.context;return i.save(),i.setTransform(this.ctx.getTransform()),kn(this.ctx,i),this.#a=i.globalCompositeOperation,i.globalCompositeOperation=`source-over`,wn(i,this.ctx),this.#c=t,this.#r=this.ctx,this.#i=this.suspendedCtx,this.ctx=i,this.inSMaskMode&&(this.suspendedCtx=i),!0}#g(e){if(!e)return;let t=this.#n,n=this.#r,r=this.#i,i=t.context;this.#n=null,this.#r=null,this.#i=null,this.inSMaskMode&&this.suspendedCtx===i&&this.ctx!==i&&this.endSMaskMode(),this.inSMaskMode&&(this.suspendedCtx=r),this.ctx._removeMirroring(),this.ctx.globalCompositeOperation=this.#a,this.#a=null,kn(this.ctx,n),this.ctx=n;let a=this.#c;this.#c=null;let o=this.#o;this.#o=1;try{this.#m(r??n,t.canvas,{backdropCanvas:a?.backdropCtx?.canvas??null,backdropOffset:a?.backdropCtx?[a.offsetX,a.offsetY]:[0,0],reuseMaskEntry:a?.knockoutMaskEntry??null,poolMeta:a,knockoutAlpha:o})}finally{i.restore(),this.#t--,a||this.canvasFactory.destroy(t)}}compose(e){if(!this.current.activeSMask)return;e=e?[Math.floor(e[0]),Math.floor(e[1]),Math.ceil(e[2]),Math.ceil(e[3])]:[0,0,this.ctx.canvas.width,this.ctx.canvas.height];let t=this.current.activeSMask,n=this.suspendedCtx,r=this.#t>0&&n===this.ctx;this.composeSMask(r?null:n,t,this.ctx,e),!r&&(this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore())}composeSMask(e,t,n,r){let i=r[0],a=r[1],o=r[2]-i,s=r[3]-a;if(o===0||s===0)return;let c=this.smaskPreparedEntry;if(c){let e=i,r=a,l=o,u=s,d=this.smaskPreparedOOBAlpha,f=d!==null;if(f){e=Math.max(i,t.offsetX),r=Math.max(a,t.offsetY);let n=Math.min(i+o,t.offsetX+t.canvas.width),c=Math.min(a+s,t.offsetY+t.canvas.height);l=n-e,u=c-r}if(l>0&&u>0){let t=e-this.smaskPreparedOffsetX,i=r-this.smaskPreparedOffsetY;n.save(),n.globalAlpha=1,n.setTransform(1,0,0,1,0,0);let a=new Path2D;a.rect(e,r,l,u),n.clip(a),n.globalCompositeOperation=`destination-in`,n.drawImage(c.canvas,t,i,l,u,e,r,l,u),n.restore()}f&&d<255&&this._applySMaskOOBAlpha(n,i,a,o,s,e,r,e+l,r+u,d)}else this.genericComposeSMask(t,n,o,s,i,a);e&&(e.save(),e.globalAlpha=1,e.globalCompositeOperation=t.blendMode||`source-over`,e.setTransform(1,0,0,1,0,0),e.drawImage(n.canvas,i,a,o,s,i,a,o,s),e.restore())}_applySMaskOOBAlpha(e,t,n,r,i,a,o,s,c,l){let u=ao.measureText(t))),(d===m.STROKE||d===m.FILL_STROKE)&&(this.dependencyTracker&&this.dependencyTracker?.recordCharacterBBox(e,o,c,u,n,r,()=>o.measureText(t)).recordDependencies(e,G.stroke),o.strokeText(t,n,r));f&&((this.pendingTextPaths||=[]).push({transform:B(o),x:n,y:r,fontSize:u,path:g}),this.dependencyTracker?.recordCharacterBBox(e,o,c,u,n,r))}get isFontSubpixelAAEnabled(){let e=this.canvasFactory.create(10,10),t=e.context;t.scale(1.5,1),t.fillText(`I`,0,10);let n=t.getImageData(0,0,10,10).data;this.canvasFactory.destroy(e);let r=!1;for(let e=3;e0&&n[e]<255){r=!0;break}return M(this,`isFontSubpixelAAEnabled`,r)}showText(e,t){this.dependencyTracker&&(this.dependencyTracker.recordDependencies(e,G.showText).resetBBox(e),this.current.textRenderingMode&m.ADD_TO_PATH_FLAG&&this.dependencyTracker.recordFutureForcedDependency(`textClip`,e).inheritPendingDependenciesAsFutureForcedDependencies());let n=this.current,r=n.font;if(r.isType3Font){let r=this.#h(n.fillAlpha);this.showType3Text(e,t),this.dependencyTracker?.recordShowTextOperation(e),this.#g(r);return}let i=n.fontSize;if(i===0){this.dependencyTracker?.recordOperation(e);return}let a=this.#h(n.fillAlpha),o=this.ctx,s=n.fontSizeScale,c=n.charSpacing,l=n.wordSpacing,u=n.fontDirection,d=n.textHScale*u,f=t.length,p=r.vertical,h=p?1:-1,g=r.defaultVMetrics,_=i*n.fontMatrix[0],v=n.textRenderingMode===m.FILL&&!r.disableFontFace&&!n.patternFill;o.save(),n.textMatrix&&o.transform(...n.textMatrix),o.translate(n.x,n.y+n.textRise),u>0?o.scale(d,-1):o.scale(d,1);let y,b,x=n.textRenderingMode&m.FILL_STROKE_MASK,S=x===m.FILL||x===m.FILL_STROKE,C=x===m.STROKE||x===m.FILL_STROKE,w=n.lineWidth,T=n.textMatrixScale;if(T===0||w===0?C&&(w=this.getSinglePixelWidth()):w/=T,s!==1&&(o.scale(s,s),w/=s),o.lineWidth=w,S&&n.patternFill){o.save();let t=n.fillColor.getPattern(o,this,V(o),Y.FILL,e);y=B(o),o.restore(),o.fillStyle=t}if(C&&n.patternStroke){o.save();let t=n.strokeColor.getPattern(o,this,V(o),Y.STROKE,e);b=B(o),o.restore(),o.strokeStyle=t}if(r.isInvalidPDFjsFont){let r=[],i=0;for(let e of t)r.push(e.unicode),i+=e.width;let s=r.join(``);if(o.fillText(s,0,0),this.dependencyTracker!==null){let t=o.measureText(s);this.dependencyTracker.recordBBox(e,this.ctx,-t.actualBoundingBoxLeft,t.actualBoundingBoxRight,-t.actualBoundingBoxAscent,t.actualBoundingBoxDescent).recordShowTextOperation(e)}n.x+=i*_*d,o.restore(),this.compose(),this.#g(a);return}let E=0,D;for(D=0;D0){w=o.measureText(f);let e=w.width*1e3/i*s;if(Cw??o.measureText(f));else if(this.paintChar(e,f,x,S,y,b),m){let t=x+i*m.offset.x/s,n=S-i*m.offset.y/s;this.paintChar(e,m.fontChar,t,n,y,b)}}let T=p?C*_-d*u:C*_+d*u;E+=T,a&&o.restore()}p?n.y-=E:n.x+=E*d,o.restore(),this.compose(),this.dependencyTracker?.recordShowTextOperation(e),this.#g(a)}showType3Text(e,t){let n=this.ctx,r=this.current,a=r.font,o=r.fontSize,s=r.fontDirection,c=a.vertical?1:-1,l=r.charSpacing,u=r.wordSpacing,d=r.textHScale*s,f=r.fontMatrix||i,p=t.length,h=r.textRenderingMode===m.INVISIBLE,g,_,v,b;if(h||o===0)return;this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,n.save(),r.textMatrix&&n.transform(...r.textMatrix),n.translate(r.x,r.y+r.textRise),n.scale(d,s);let x=this.dependencyTracker;for(this.dependencyTracker=x?new Ct(x,e):null,g=0;gnew e(t,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack},void 0,void 0,this.dependencyTracker?new Ct(this.dependencyTracker,n,!0):null)},t)}else r=this._getPattern(t,n[1],n[2]);return r}setStrokeColorN(e,...t){this.dependencyTracker?.recordSimpleData(`strokeColor`,e),this.current.strokeColor=this.getColorN_Pattern(e,t),this.current.patternStroke=!0}setFillColorN(e,...t){this.dependencyTracker?.recordSimpleData(`fillColor`,e);let n=this.current.fillColor=this.getColorN_Pattern(e,t);this.current.patternFill=!0,this.current.tilingPatternDims=n instanceof vn?[0,0,0,0]:null}setStrokeRGBColor(e,t){this.dependencyTracker?.recordSimpleData(`strokeColor`,e),this.ctx.strokeStyle=this.current.strokeColor=t,this.current.patternStroke=!1}setStrokeTransparent(e){this.dependencyTracker?.recordSimpleData(`strokeColor`,e),this.ctx.strokeStyle=this.current.strokeColor=`transparent`,this.current.patternStroke=!1}setFillRGBColor(e,t){this.dependencyTracker?.recordSimpleData(`fillColor`,e),this.ctx.fillStyle=this.current.fillColor=t,this.current.patternFill=!1,this.current.tilingPatternDims=null}setFillTransparent(e){this.dependencyTracker?.recordSimpleData(`fillColor`,e),this.ctx.fillStyle=this.current.fillColor=`transparent`,this.current.patternFill=!1,this.current.tilingPatternDims=null}_getPattern(e,t,n=null){let r;return this.cachedPatterns.has(t)?r=this.cachedPatterns.get(t):(r=gn(this.getObject(e,t)),this.cachedPatterns.set(t,r)),n&&(r.matrix=n),r}shadingFill(e,t){if(!this.contentVisible)return;let n=this.#h(this.current.fillAlpha),i=this.ctx;this.save(e),i.fillStyle=this._getPattern(e,t).getPattern(i,this,V(i),Y.SHADING,e);let a=V(i);if(a){let{width:e,height:t}=i.canvas,n=r.slice();I.axialAlignedBoundingBox([0,0,e,t],a,n);let[o,s,c,l]=n;this.ctx.fillRect(o,s,c-o,l-s)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.dependencyTracker?.resetBBox(e).recordFullPageBBox(e).recordDependencies(e,G.transform).recordDependencies(e,G.fill).recordOperation(e),this.compose(this.current.getClippedPathBoundingBox()),this.restore(e),this.#g(n)}beginInlineImage(){D(`Should not call beginInlineImage`)}beginImageData(){D(`Should not call beginImageData`)}paintFormXObjectBegin(e,t,n){if(this.contentVisible&&(this.save(e),this.baseTransformStack.push(this.baseTransform),t&&this.transform(e,...t),this.baseTransform=B(this.ctx),n)){I.axialAlignedBoundingBox(n,this.baseTransform,this.current.minMax);let[t,r,i,a]=n,o=new Path2D;o.rect(t,r,i-t,a-r),this.ctx.clip(o),this.dependencyTracker?.recordClipBox(e,this.ctx,t,i,r,a),this.endPath(e)}}paintFormXObjectEnd(e){this.contentVisible&&(this.restore(e),this.baseTransform=this.baseTransformStack.pop())}beginGroup(e,t){if(!this.contentVisible)return;this.save(e);let{inSMaskMode:n}=this;n&&(this.endSMaskMode(),this.current.activeSMask=null);let i=this.ctx;if((!t.needsIsolation||!t.isolated&&!t.hasSoftMask)&&!t.knockout&&!t.isGray&&this.#e===0&&i.globalAlpha===1&&i.globalCompositeOperation===`source-over`&&!n){if(t.bbox){let e=new Path2D,[n,r,a,o]=t.bbox;if(e.rect(n,r,a-n,o-r),t.matrix){let n=new Path2D;n.addPath(e,new DOMMatrix(t.matrix)),e=n}i.clip(e)}this.groupStack.push(null),this.#l.push(null),this.groupLevel++;return}!t.isolated&&!t.knockout&&this.#e===0&&T(`TODO: Fully support non-isolated non-knockout groups.`);let a=B(i);t.matrix&&i.transform(...t.matrix);let o=[0,0,i.canvas.width,i.canvas.height],s;t.bbox?(s=r.slice(),I.axialAlignedBoundingBox(t.bbox,B(i),s),s=I.intersect(s,o)||[0,0,0,0]):s=o;let c=Math.floor(s[0]),l=Math.floor(s[1]),u=Math.max(Math.ceil(s[2])-c,1),d=Math.max(Math.ceil(s[3])-l,1);this.current.startNewPathAndClipBox([0,0,u,d]);let f=this.canvasFactory.create(u,d);t.smask&&this.smaskGroupCanvases.push(f);let p=f.context,m=t.knockout&&!t.isolated?i:null,h=!t.isolated&&!t.knockout&&!t.smask&&t.needsIsolation&&this.#e>0,g=t.knockout?this.canvasFactory.create(u,d):null,_=this.#e;if(t.knockout?this.#e++:this.#e=0,p.translate(-c,-l),p.transform(...a),!t.isolated&&!t.smask&&n&&t.needsIsolation&&(p.save(),p.setTransform(1,0,0,1,0,0),p.drawImage(i.canvas,-c,-l),p.restore()),t.bbox){let e=new Path2D,[n,r,i,a]=t.bbox;if(e.rect(n,r,i-n,a-r),t.matrix){let n=new Path2D;n.addPath(e,new DOMMatrix(t.matrix)),e=n}p.clip(e)}t.smask&&this.smaskStack.push({canvas:f.canvas,context:p,offsetX:c,offsetY:l,subtype:t.smask.subtype,backdrop:t.smask.backdrop,transferMap:t.smask.transferMap||null}),(!t.smask||this.dependencyTracker)&&(i.setTransform(1,0,0,1,0,0),i.translate(c,l),i.save()),kn(i,p),this.ctx=p,this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies([`fillAlpha`,`strokeAlpha`,`globalCompositeOperation`]).pushBaseTransform(i),this.setGState(e,[[`BM`,`source-over`],[`ca`,1],[`CA`,1],[`TR`,null]]),this.groupStack.push(i),this.#l.push({backdropCtx:m,savedKnockoutLevel:_,offsetX:c,offsetY:l,hasInnerBackdrop:h,knockoutMaskEntry:g,knockoutTempEntry:null,knockoutBackdropEntry:null}),this.groupLevel++}endGroup(e,t){if(!this.contentVisible)return;this.groupLevel--;let n=this.ctx,i=this.groupStack.pop(),a=this.#l.pop();if(a&&(this.#e=a.savedKnockoutLevel),i===null){this.restore(e);return}if(t.isGray&&this.#v(n),this.ctx=i,this.ctx.imageSmoothingEnabled=!1,this.dependencyTracker?.popBaseTransform(),t.smask)this.tempSMask=this.smaskStack.pop(),this.restore(e),this.dependencyTracker&&(this.ctx.restore(),this.inSMaskMode&&this.ctx.setTransform(this.suspendedCtx.getTransform())),this.#y(a);else{this.ctx.restore();let t=B(this.ctx);this.restore(e),this.ctx.save(),this.ctx.setTransform(...t);let o=r.slice();I.axialAlignedBoundingBox([0,0,n.canvas.width,n.canvas.height],t,o);let s=this.#l.at(-1);if(this.#e>0)if(a.hasInnerBackdrop){let{width:e,height:r}=n.canvas,o=this.canvasFactory.create(e,r),s=o.context;s.drawImage(i.canvas,a.offsetX,a.offsetY,e,r,0,0,e,r),s.globalCompositeOperation=`source-over`,s.drawImage(n.canvas,0,0);let c=this.#f(n.canvas);s.globalCompositeOperation=`destination-in`,s.drawImage(c.canvas,0,0);let l=this.ctx.globalCompositeOperation,u=this.ctx.globalAlpha,d=this.ctx.filter;this.ctx.save(),this.ctx.setTransform(...t),this.ctx.globalAlpha=1,F.isCanvasFilterSupported&&(this.ctx.filter=`none`),this.ctx.globalCompositeOperation=`destination-out`,this.ctx.drawImage(c.canvas,0,0),this.ctx.globalCompositeOperation=l,this.ctx.globalAlpha=u,F.isCanvasFilterSupported&&(this.ctx.filter=d??`none`),this.ctx.drawImage(o.canvas,0,0),this.ctx.restore(),this.canvasFactory.destroy(c),this.canvasFactory.destroy(o)}else{let e=s?.backdropCtx??null;this.#m(this.ctx,n.canvas,{backdropCanvas:e?.canvas??null,destTransform:t,backdropOffset:e?[s.offsetX+a.offsetX,s.offsetY+a.offsetY]:[0,0],sourceAlpha:this.ctx.globalAlpha,sourceFilter:this.ctx.filter})}else this.ctx.drawImage(n.canvas,0,0);this.ctx.restore(),this.canvasFactory.destroy({canvas:n.canvas,context:n}),this.#y(a),this.compose(o)}}#v(e){let{canvas:t}=e,{width:n,height:r}=t;if(F.isCanvasFilterSupported){e.save(),e.setTransform(1,0,0,1,0,0),e.filter=`grayscale(1)`,e.globalAlpha=1,e.globalCompositeOperation=`copy`,e.drawImage(t,0,0),e.restore();return}let i=e.getImageData(0,0,n,r),{data:a}=i;for(let e=0,t=a.length;ee.getAttribute(`data-canvas-name`)===o);n===-1?e.push(l):e[n]=l}else this.annotationCanvasMap.set(t,l);this.annotationCanvas.savedCtx=this.ctx,this.ctx=u,this.ctx.save(),this.ctx.setTransform(Z[0],0,0,-Z[1],0,s*Z[1]),An(this.ctx)}else{An(this.ctx),this.endPath(e);let t=new Path2D;t.rect(n[0],n[1],i,s),this.ctx.clip(t)}}this.current=new En(this.ctx.canvas.width,this.ctx.canvas.height),this.baseTransformStack.push(this.baseTransform),this.transform(e,...r),this.transform(e,...i),this.baseTransform=B(this.ctx)}endAnnotation(e){this.annotationCanvas&&(this.ctx.restore(),this.#d(),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas),this.baseTransform=this.baseTransformStack.pop()}paintImageMaskXObject(e,t){if(!this.contentVisible)return;let n=t.count;t=this.getObject(e,t.data,t),t.count=n;let r=this.#h(this.current.fillAlpha),i=this.ctx,a=this._createMaskCanvas(e,t),o=a.canvas;i.save(),i.setTransform(1,0,0,1,0,0),i.drawImage(o,a.offsetX,a.offsetY),this.dependencyTracker?.resetBBox(e).recordBBox(e,this.ctx,a.offsetX,a.offsetX+o.width,a.offsetY,a.offsetY+o.height).recordOperation(e),i.restore(),a.canvasEntry&&this.canvasFactory.destroy(a.canvasEntry),this.compose(),this.#g(r)}paintImageMaskXObjectRepeat(e,t,n,r=0,i=0,a,o){if(!this.contentVisible)return;t=this.getObject(e,t.data,t);let s=this.#h(this.current.fillAlpha),c=this.ctx;c.save();let l=B(c);c.transform(n,r,i,a,0,0);let u=this._createMaskCanvas(e,t);c.setTransform(1,0,0,1,u.offsetX-l[4],u.offsetY-l[5]),this.dependencyTracker?.resetBBox(e);for(let t=0,s=o.length;tt?l/t:1,o=c>t?c/t:1}}this._cachedScaleForStroking[0]=a,this._cachedScaleForStroking[1]=o}return this._cachedScaleForStroking}rescaleAndStroke(e,t){let{ctx:n,current:{lineWidth:r}}=this,[i,a]=this.getScaleForStroking();if(i===a){n.lineWidth=(r||1)*i,n.stroke(e);return}let o=n.getLineDash();t&&n.save(),n.scale(i,a),Cn.a=1/i,Cn.d=1/a;let s=new Path2D;if(s.addPath(e,Cn),o.length>0){let e=Math.max(i,a);n.setLineDash(o.map(t=>t/e)),n.lineDashOffset/=e}n.lineWidth=r||1,n.stroke(s),t&&n.restore()}isContentVisible(){for(let e=this.markedContentStack.length-1;e>=0;e--)if(!this.markedContentStack[e].visible)return!1;return!0}};for(let e in y)In.prototype[e]!==void 0&&(In.prototype[y[e]]=In.prototype[e]);var Ln=class{#e=null;#t=null;_fullReader=null;_rangeReaders=new Set;_source=null;constructor(e,t,n){this._source=e,this.#e=t,this.#t=n}get _progressiveDataLength(){return this._fullReader?._loaded??0}getFullReader(){return O(!this._fullReader,`BasePDFStream.getFullReader can only be called once.`),this._fullReader=new this.#e(this)}getRangeReader(e,t){if(t<=this._progressiveDataLength)return null;let n=new this.#t(this,e,t);return this._rangeReaders.add(n),n}cancelAllRequests(e){this._fullReader?.cancel(e);for(let t of new Set(this._rangeReaders))t.cancel(e)}},Rn=class{onProgress=null;_contentLength=0;_filename=null;_headersCapability=Promise.withResolvers();_isRangeSupported=!1;_isStreamingSupported=!1;_loaded=0;_stream=null;constructor(e){this._stream=e}_callOnProgress(){this.onProgress?.({loaded:this._loaded,total:this._contentLength})}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){D("Abstract method `read` called")}cancel(e){D("Abstract method `cancel` called")}},zn=class{_stream=null;constructor(e,t,n){this._stream=e}async read(){D("Abstract method `read` called")}cancel(e){D("Abstract method `cancel` called")}};function Bn(e){let t=!0,n=r(`filename\\*`,`i`).exec(e);if(n){n=n[1];let e=s(n);return e=unescape(e),e=c(e),e=l(e),a(e)}if(n=o(e),n)return a(l(n));if(n=r(`filename`,`i`).exec(e),n){n=n[1];let e=s(n);return e=l(e),a(e)}function r(e,t){return RegExp(`(?:^|;)\\s*`+e+`\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)`,t)}function i(e,n){if(e){if(!/^[\x00-\xFF]+$/.test(n))return n;try{let r=new TextDecoder(e,{fatal:!0}),i=se(n);n=r.decode(i),t=!1}catch{}}return n}function a(e){return t&&/[\x80-\xff]/.test(e)&&(e=i(`utf-8`,e),t&&(e=i(`iso-8859-1`,e))),e}function o(e){let t=[],n,i=r(`filename\\*((?!0\\d)\\d+)(\\*?)`,`ig`);for(;(n=i.exec(e))!==null;){let[,e,r,i]=n;if(e=parseInt(e,10),e in t){if(e===0)break;continue}t[e]=[r,i]}let a=[];for(let e=0;e{e._responseOrigin=Hn(n.url),Jn(n.status,i),this._reader=n.body.getReader();let a=n.headers,{contentLength:o,isRangeSupported:s}=Un({responseHeaders:a,isHttp:!0,rangeChunkSize:r,disableRange:t});this._contentLength=o,this._isRangeSupported=s,this._filename=Wn(a),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new P(`Streaming is disabled.`)),this._headersCapability.resolve()}).catch(this._headersCapability.reject)}async read(){await this._headersCapability.promise;let{value:e,done:t}=await this._reader.read();return t?{value:e,done:t}:(this._loaded+=e.byteLength,this._callOnProgress(),{value:Yn(e),done:!1})}cancel(e){this._reader?.cancel(e),this._abortController.abort()}},Qn=class extends zn{_abortController=new AbortController;_readCapability=Promise.withResolvers();_reader=null;constructor(e,t,n){super(e,t,n);let{url:r,withCredentials:i}=e._source,a=new Headers(e.headers);a.append(`Range`,`bytes=${t}-${n-1}`),qn(r,a,i,this._abortController).then(t=>{Kn(Hn(t.url),e._responseOrigin),Jn(t.status,r),this._reader=t.body.getReader(),this._readCapability.resolve()}).catch(this._readCapability.reject)}async read(){await this._readCapability.promise;let{value:e,done:t}=await this._reader.read();return t?{value:e,done:t}:{value:Yn(e),done:!1}}cancel(e){this._reader?.cancel(e),this._abortController.abort()}};function $n(e){return e instanceof Uint8Array&&e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer}function er(){for(let e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}var tr=class extends Ln{_progressiveDone=!1;_queuedChunks=[];constructor(e){super(e,nr,rr);let{pdfDataRangeTransport:t}=e,{initialData:n,progressiveDone:r}=t;if(n?.length>0){let e=$n(n);this._queuedChunks.push(e)}this._progressiveDone=r,t.transportReady(e=>{switch(e.type){case`range`:case`progressiveRead`:this.#e(e.begin,e.chunk);break;case`progressiveDone`:this._fullReader?.progressiveDone(),this._progressiveDone=!0;break}})}#e(e,t){let n=$n(t);if(e===void 0)this._fullReader?this._fullReader._enqueue(n):this._queuedChunks.push(n);else{let t=this._rangeReaders.keys().find(t=>t._begin===e);O(t,"#onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."),t._enqueue(n)}}getFullReader(){let e=super.getFullReader();return this._queuedChunks=null,e}getRangeReader(e,t){let n=super.getRangeReader(e,t);return n&&(n.onDone=()=>this._rangeReaders.delete(n),this._source.pdfDataRangeTransport.requestDataRange(e,t)),n}cancelAllRequests(e){super.cancelAllRequests(e),this._source.pdfDataRangeTransport.abort()}},nr=class extends Rn{#e=er.bind(this);_done=!1;_queuedChunks=null;_requests=[];constructor(e){super(e);let{pdfDataRangeTransport:t,disableRange:n,disableStream:r}=e._source,{length:i,contentDispositionFilename:a}=t;this._queuedChunks=e._queuedChunks||[];for(let e of this._queuedChunks)this._loaded+=e.byteLength;this._done=e._progressiveDone,this._contentLength=i,this._isStreamingSupported=!r,this._isRangeSupported=!n,we(a)&&(this._filename=a),this._headersCapability.resolve();let o=this._loaded;Promise.resolve().then(()=>{o>0&&this._loaded===o&&this._callOnProgress()})}_enqueue(e){this._done||(this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunks.push(e),this._loaded+=e.byteLength,this._callOnProgress())}async read(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};let e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0,this.#e()}progressiveDone(){this._done||=!0,this._queuedChunks.length===0&&this.#e()}},rr=class extends zn{#e=er.bind(this);onDone=null;_begin=-1;_done=!1;_queuedChunk=null;_requests=[];constructor(e,t,n){super(e,t,n),this._begin=t}_enqueue(e){this._done||(this._requests.length===0?this._queuedChunk=e:(this._requests.shift().resolve({value:e,done:!1}),this.#e()),this._done=!0,this.onDone?.())}async read(){if(this._queuedChunk){let e=this._queuedChunk;return this._queuedChunk=null,{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};let e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0,this.#e(),this.onDone?.()}},ir=200,ar=206;function or(e){return typeof e==`string`?se(e).buffer:e}var sr=class extends Ln{#e=new WeakMap;_responseOrigin=null;constructor(e){super(e,cr,lr);let{httpHeaders:t,url:n}=e;this.url=n,this.isHttp=/https?:/.test(n.protocol),this.headers=Vn(this.isHttp,t)}_request(e){let t=new XMLHttpRequest,n={validateStatus:null,onHeadersReceived:e.onHeadersReceived,onDone:e.onDone,onError:e.onError,onProgress:e.onProgress};this.#e.set(t,n),t.open(`GET`,this.url),t.withCredentials=this._source.withCredentials;for(let[e,n]of this.headers)t.setRequestHeader(e,n);return this.isHttp&&`begin`in e&&`end`in e?(t.setRequestHeader(`Range`,`bytes=${e.begin}-${e.end-1}`),n.validateStatus=e=>e===ar||e===ir):n.validateStatus=e=>e===ir,t.responseType=`arraybuffer`,O(e.onError,"Expected `onError` callback to be provided."),t.onerror=()=>e.onError(t.status),t.onreadystatechange=this.#n.bind(this,t),t.onprogress=this.#t.bind(this,t),t.send(null),t}#t(e,t){this.#e.get(e)?.onProgress?.(t)}#n(e,t){let n=this.#e.get(e);if(!n||(e.readyState>=2&&n.onHeadersReceived&&(n.onHeadersReceived(),delete n.onHeadersReceived),e.readyState!==4)||!this.#e.has(e))return;if(this.#e.delete(e),e.status===0&&this.isHttp){n.onError(e.status);return}let r=e.status||ir;if(!n.validateStatus(r)){n.onError(e.status);return}let i=or(e.response);if(r===ar){let t=e.getResponseHeader(`Content-Range`);/bytes \d+-\d+\/\d+/.test(t)?n.onDone(i):(E(`Missing or invalid "Content-Range" header.`),n.onError(0))}else i?n.onDone(i):n.onError(e.status)}_abortRequest(e){this.#e.has(e)&&(this.#e.delete(e),e.abort())}getRangeReader(e,t){let n=super.getRangeReader(e,t);return n&&(n.onClosed=()=>this._rangeReaders.delete(n)),n}},cr=class extends Rn{#e=er.bind(this);_cachedChunks=[];_done=!1;_requests=[];_storedError=null;constructor(e){super(e),this._fullRequestXhr=e._request({onHeadersReceived:this.#t.bind(this),onDone:this.#n.bind(this),onError:this.#r.bind(this),onProgress:this.#i.bind(this)})}#t(){let e=this._stream,{disableRange:t,rangeChunkSize:n}=e._source,r=this._fullRequestXhr;e._responseOrigin=Hn(r.responseURL);let i=r.getAllResponseHeaders(),a=new Headers(i?i.trimStart().replace(/[^\S ]+$/,``).split(/[\r\n]+/).map(e=>{let[t,...n]=e.split(`: `);return[t,n.join(`: `)]}):[]),{contentLength:o,isRangeSupported:s}=Un({responseHeaders:a,isHttp:e.isHttp,rangeChunkSize:n,disableRange:t});this._contentLength=o,this._isRangeSupported=s,this._filename=Wn(a),this._isRangeSupported&&e._abortRequest(r),this._headersCapability.resolve()}#n(e){this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._cachedChunks.push(e),this._done=!0,this._cachedChunks.length===0&&this.#e()}#r(e){this._storedError=Gn(e,this._stream.url),this._headersCapability.reject(this._storedError);for(let e of this._requests)e.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}#i(e){this.onProgress?.({loaded:e.loaded,total:e.lengthComputable?e.total:this._contentLength})}async read(){if(await this._headersCapability.promise,this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};let e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0,this._headersCapability.reject(e),this.#e(),this._stream._abortRequest(this._fullRequestXhr),this._fullRequestXhr=null}},lr=class extends zn{#e=er.bind(this);onClosed=null;_done=!1;_queuedChunk=null;_requests=[];_storedError=null;constructor(e,t,n){super(e,t,n),this._requestXhr=e._request({begin:t,end:n,onHeadersReceived:this.#t.bind(this),onDone:this.#n.bind(this),onError:this.#r.bind(this),onProgress:null})}#t(){let e=Hn(this._requestXhr?.responseURL);try{Kn(e,this._stream._responseOrigin)}catch(e){this._storedError=e,this.#r(0)}}#n(e){this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunk=e,this._done=!0,this.#e(),this.onClosed?.()}#r(e){this._storedError??=Gn(e,this._stream.url);for(let e of this._requests)e.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}async read(){if(this._storedError)throw this._storedError;if(this._queuedChunk!==null){let e=this._queuedChunk;return this._queuedChunk=null,{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};let e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0,this.#e(),this._stream._abortRequest(this._requestXhr),this.onClosed?.()}};function ur(e,t=null){let n=process.getBuiltinModule(`fs`),{Readable:r}=process.getBuiltinModule(`stream`),i=n.createReadStream(e,t);return r.toWeb(i)}var dr=class extends Ln{constructor(e){super(e,fr,pr);let{url:t}=e;O(t.protocol===`file:`,`PDFNodeStream only supports file:// URLs.`)}},fr=class extends Rn{_reader=null;constructor(e){super(e);let{disableRange:t,disableStream:n,rangeChunkSize:r,url:i}=e._source;this._isStreamingSupported=!n,process.getBuiltinModule(`fs/promises`).lstat(i).then(e=>{let n=ur(i);this._reader=n.getReader();let{size:a}=e;this._contentLength=a,this._isRangeSupported=!t&&a>2*r,!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new P(`Streaming is disabled.`)),this._headersCapability.resolve()}).catch(e=>{e.code===`ENOENT`&&(e=Gn(0,i)),this._headersCapability.reject(e)})}async read(){await this._headersCapability.promise;let{value:e,done:t}=await this._reader.read();return t?{value:e,done:t}:(this._loaded+=e.byteLength,this._callOnProgress(),{value:Yn(e),done:!1})}cancel(e){this._reader?.cancel(e)}},pr=class extends zn{_readCapability=Promise.withResolvers();_reader=null;constructor(e,t,n){super(e,t,n);let{url:r}=e._source;try{let e=ur(r,{start:t,end:n-1});this._reader=e.getReader(),this._readCapability.resolve()}catch(e){this._readCapability.reject(e)}}async read(){await this._readCapability.promise;let{value:e,done:t}=await this._reader.read();return t?{value:e,done:t}:{value:Yn(e),done:!1}}cancel(e){this._reader?.cancel(e)}};function mr(e){return Oe(e)?Xn:t?dr:sr}var hr=class{static#e=null;static#t=``;static get workerPort(){return this.#e}static set workerPort(e){if(!(typeof Worker<`u`&&e instanceof Worker)&&e!==null)throw Error("Invalid `workerPort` type.");this.#e=e}static get workerSrc(){return this.#t}static set workerSrc(e){if(typeof e!=`string`)throw Error("Invalid `workerSrc` type.");this.#t=e}},gr=class{#e;#t;constructor({parsedData:e,rawData:t}){this.#e=e,this.#t=t}getRaw(){return this.#t}get(e){return this.#e.get(e)??null}[Symbol.iterator](){return this.#e.entries()}},_r=Symbol(`INTERNAL`),vr=class{#e=!1;#t=!1;#n=!1;#r=!0;constructor(e,{name:t,intent:n,usage:r,rbGroups:i}){this.#e=!!(e&s.DISPLAY),this.#t=!!(e&s.PRINT),this.name=t,this.intent=n,this.usage=r,this.rbGroups=i}get visible(){if(this.#n)return this.#r;if(!this.#r)return!1;let{print:e,view:t}=this.usage;return this.#e?t?.viewState!==`OFF`:!this.#t||e?.printState!==`OFF`}_setVisible(e,t,n=!1){e!==_r&&D("Internal method `_setVisible` called."),this.#n=n,this.#r=t}get serializable(){return{userSet:this.#n,visible:this.#r}}},yr=class e{#e=null;#t=new Map;#n=null;#r=null;#i;creator=null;name=null;constructor(e,t=s.DISPLAY,n=null){if(this.#i=e,this.renderingIntent=t,e!==null){this.name=e.name,this.creator=e.creator,this.#r=e.order;for(let n of e.groups)this.#t.set(n.id,new vr(t,n));if(n){n.size!==this.#t.size&&D(`Incorrect serialized groupState.`);for(let[e,t]of n)this.#t.get(e)._setVisible(_r,t.visible,t.userSet)}else{if(e.baseState===`OFF`)for(let e of this.#t.values())e._setVisible(_r,!1);for(let t of e.on)this.#t.get(t)._setVisible(_r,!0);for(let t of e.off)this.#t.get(t)._setVisible(_r,!1)}this.#n=this.getHash()}}#a(e){let t=e.length;if(t<2)return!0;let n=e[0];for(let r=1;re===t+1)&&(this.#e=null)}deletePages(e){this.#a();let t=this.#e,n=this.#o();this.#i={pageNumberToId:t.slice(),pagesNumber:this.#n,prevPageNumbers:this.#t.slice()};let r=this.#n-e.length;this.#n=r;let i=this.#e=new Uint32Array(r);this.#t=new Int32Array(r);let a=0,o=0;for(let n of e){let e=n-1;e!==a&&(i.set(t.subarray(a,e),o),o+=e-a),a=e+1}athis.#e[e-1])}}cancelCopy(){this.#r=null}pastePages(e){this.#a();let t=this.#e,n=this.#o(),{pageNumbers:r,pageIds:i}=this.#r,a=this.#n+r.length;this.#n=a;let o=this.#e=new Uint32Array(a);this.#t=new Int32Array(a),o.set(t.subarray(0,e),0),o.set(i,e),o.set(t.subarray(e),e+r.length),this.#s(n,null,e,r),this.#r=null}#s(e,t=null,n=-1,r=null){let i=this.#t,a=this.#e,o=n+(r?.length??0),s=new Map;for(let c=0,l=this.#n;c=n&&ce[0]-t[0]);for(let n=0,r=e.length;ne-t);let t=new Map;for(let n=0,r=e.length;n({...Promise.withResolvers(),data:xr}),Cr=class{#e=new Map;get(e,t=null){if(t){let n=this.#e.getOrInsertComputed(e,Sr);return n.promise.then(()=>t(n.data)),null}let n=this.#e.get(e);if(!n||n.data===xr)throw Error(`Requesting object that isn't resolved yet ${e}.`);return n.data}has(e){let t=this.#e.get(e);return!!t&&t.data!==xr}delete(e){let t=this.#e.get(e);return!t||t.data===xr?!1:(this.#e.delete(e),!0)}resolve(e,t=null){let n=this.#e.getOrInsertComputed(e,Sr);if(n.data!==xr)throw Error(`Object already resolved ${e}.`);n.data=t,n.resolve()}clear(){for(let{data:e}of this.#e.values())e?.bitmap?.close();this.#e.clear()}*[Symbol.iterator](){for(let[e,{data:t}]of this.#e)t!==xr&&(yield[e,t])}},wr=1e5,Tr=30,Er=class e{#e=Promise.withResolvers();#t=null;#n=!1;#r=!!globalThis.FontInspector?.enabled;#i=null;#a=null;#o=null;#s=0;#c=0;#l=null;#u=null;#d=0;#f=0;#p=Object.create(null);#m=[];#h=null;#g=[];#_=new WeakMap;#v=null;static#y=new Map;static#b=new Map;static#x=new WeakMap;static#S=null;static#C=new Set;constructor({textContentSource:t,images:n,container:r,viewport:i}){if(t instanceof ReadableStream)this.#h=t;else if(typeof t==`object`)this.#h=new ReadableStream({start(e){e.enqueue(t),e.close()}});else throw Error(`No "textContentSource" parameter specified.`);this.#t=this.#u=r,this.#i=n,this.#f=i.scale*Pe.pixelRatio,this.#d=i.rotation,this.#o={div:null,properties:null,ctx:null};let{pageWidth:a,pageHeight:o,pageX:s,pageY:c}=i.rawDims;this.#v=[1,0,0,-1,-s,c+o],this.#c=a,this.#s=o,e.#k(),r.style.setProperty(`--min-font-size`,e.#S),Ne(r,i),this.#e.promise.finally(()=>{e.#C.delete(this),this.#o=null,this.#p=null}).catch(()=>{})}static get fontFamilyMap(){let{isWindows:e,isFirefox:t}=F.platform;return M(this,`fontFamilyMap`,new Map([[`sans-serif`,`${e&&t?`Calibri, `:``}sans-serif`],[`monospace`,`${e&&t?`Lucida Console, `:``}monospace`]]))}render(){this.#i&&this.#t.append(this.#i.render());let t=()=>{this.#l.read().then(({value:e,done:n})=>{if(n){this.#e.resolve();return}this.#a??=e.lang,Object.assign(this.#p,e.styles),this.#w(e.items),t()},this.#e.reject)};return this.#l=this.#h.getReader(),e.#C.add(this),t(),this.#e.promise}update({viewport:t,onBefore:n=null}){let r=t.scale*Pe.pixelRatio,i=t.rotation;if(i!==this.#d&&(n?.(),this.#d=i,Ne(this.#u,{rotation:i})),r!==this.#f){n?.(),this.#f=r;let t={div:null,properties:null,ctx:e.#D(this.#a)};for(let e of this.#g)t.properties=this.#_.get(e),t.div=e,this.#E(t)}}cancel(){let e=new P(`TextLayer task cancelled.`);this.#l?.cancel(e).catch(()=>{}),this.#l=null,this.#e.reject(e)}get textDivs(){return this.#g}get textContentItemsStr(){return this.#m}#w(t){if(this.#n)return;this.#o.ctx??=e.#D(this.#a);let n=this.#g,r=this.#m;for(let e of t){if(n.length>wr){E(`Ignoring additional textDivs for performance reasons.`),this.#n=!0;return}if(e.str===void 0){if(e.type===`beginMarkedContentProps`||e.type===`beginMarkedContent`){let t=this.#t;this.#t=document.createElement(`span`),this.#t.classList.add(`markedContent`),e.id&&this.#t.setAttribute(`id`,`${e.id}`),e.tag===`Artifact`&&(this.#t.ariaHidden=!0),t.append(this.#t)}else e.type===`endMarkedContent`&&(this.#t=this.#t.parentNode);continue}r.push(e.str),this.#T(e)}}#T(t){let n=document.createElement(`span`),r={angle:0,canvasWidth:0,hasText:t.str!==``,hasEOL:t.hasEOL,fontSize:0};this.#g.push(n);let i=I.transform(this.#v,t.transform),a=Math.atan2(i[1],i[0]),o=this.#p[t.fontName];o.vertical&&(a+=Math.PI/2);let s=this.#r&&o.fontSubstitution||o.fontFamily;s=e.fontFamilyMap.get(s)||s;let c=Math.hypot(i[2],i[3]),l=c*e.#A(s,o,this.#a),u,d;a===0?(u=i[4],d=i[5]-l):(u=i[4]+l*Math.sin(a),d=i[5]-l*Math.cos(a));let f=n.style;f.left=`${(100*u/this.#c).toFixed(2)}%`,f.top=`${(100*d/this.#s).toFixed(2)}%`,f.setProperty(`--font-height`,`${c.toFixed(2)}px`),f.fontFamily=s,r.fontSize=c,n.setAttribute(`role`,`presentation`),n.textContent=t.str,n.dir=t.dir,this.#r&&(n.dataset.fontName=o.fontSubstitutionLoadedName||t.fontName),a!==0&&(r.angle=180/Math.PI*a);let p=!1;if(t.str.length>1)p=!0;else if(t.str!==` `&&t.transform[0]!==t.transform[3]){let e=Math.abs(t.transform[0]),n=Math.abs(t.transform[3]);e!==n&&Math.max(e,n)/Math.min(e,n)>1.5&&(p=!0)}if(p&&(r.canvasWidth=o.vertical?t.height:t.width),this.#_.set(n,r),this.#o.div=n,this.#o.properties=r,this.#E(this.#o),r.hasText&&this.#t.append(n),r.hasEOL){let e=document.createElement(`br`);e.setAttribute(`role`,`presentation`),this.#t.append(e)}}#E(t){let{div:n,properties:r,ctx:i}=t,{style:a}=n;if(r.canvasWidth!==0&&r.hasText){let{fontFamily:t}=a,{canvasWidth:o,fontSize:s}=r;e.#O(i,s*this.#f,t);let{width:c}=i.measureText(n.textContent);c>0&&a.setProperty(`--scale-x`,o*this.#f/c)}r.angle!==0&&a.setProperty(`--rotate`,`${r.angle}deg`)}static cleanup(){if(!(this.#C.size>0)){this.#y.clear();for(let{canvas:e}of this.#b.values())e.remove();this.#b.clear()}}static#D(e=null){let t=this.#b.get(e||=``);if(!t){let n=document.createElement(`canvas`);n.style.cssText=`position:absolute;top:0;left:0;width:0;height:0;display:none;letter-spacing:normal;word-spacing:normal`,n.lang=e,document.body.append(n),t=n.getContext(`2d`,{alpha:!1,willReadFrequently:!0}),this.#b.set(e,t),this.#x.set(t,{size:0,family:``})}return t}static#O(e,t,n){let r=this.#x.get(e);t===r.size&&n===r.family||(e.font=`${t}px ${n}`,r.size=t,r.family=n)}static#k(){if(this.#S!==null)return;let e=document.createElement(`div`);e.style.opacity=0,e.style.lineHeight=1,e.style.fontSize=`1px`,e.style.position=`absolute`,e.textContent=`X`,document.body.append(e),this.#S=e.getBoundingClientRect().height,e.remove()}static#A(e,t,n){let r=this.#y.get(e);if(r)return r;let i=this.#D(n);i.canvas.width=i.canvas.height=Tr,this.#O(i,Tr,e);let a=i.measureText(``),o=a.fontBoundingBoxAscent,s=Math.abs(a.fontBoundingBoxDescent);i.canvas.width=i.canvas.height=0;let c=.8;return o?c=o/(o+s):(F.platform.isFirefox&&E("Enable the `dom.textMetrics.fontBoundingBox.enabled` preference in `about:config` to improve TextLayer rendering."),t.ascent?c=t.ascent:t.descent&&(c=1+t.descent)),this.#y.set(e,c),c}},Dr=100;function Or(e={}){let n=new kr,{docId:r}=n,i=e.url?Ft(e.url):null,a=e.data?It(e.data):null,o=e.httpHeaders||null,s=e.withCredentials===!0,c=e.password??null,l=e.range instanceof Ar?e.range:null,u=Number.isInteger(e.rangeChunkSize)&&e.rangeChunkSize>0?e.rangeChunkSize:2**16,d=e.worker instanceof Nr?e.worker:null,f=e.verbosity,p=typeof e.docBaseUrl==`string`&&!Ce(e.docBaseUrl)?e.docBaseUrl:null,m=Lt(e.cMapUrl),h=e.cMapPacked!==!1,g=Lt(e.iccUrl),_=Lt(e.standardFontDataUrl),v=Lt(e.wasmUrl),y=e.stopAtErrors!==!0,b=Number.isInteger(e.maxImageSize)&&e.maxImageSize>-1?e.maxImageSize:-1,x=typeof e.isOffscreenCanvasSupported==`boolean`?e.isOffscreenCanvasSupported:!t,S=typeof e.isImageDecoderSupported==`boolean`?e.isImageDecoderSupported:!t,w=Number.isInteger(e.canvasMaxAreaInBytes)?e.canvasMaxAreaInBytes:-1,T=typeof e.disableFontFace==`boolean`?e.disableFontFace:t,E=e.fontExtraProperties===!0,D=e.enableXfa===!0,O=e.ownerDocument||globalThis.document,ee=e.disableRange===!0,k=e.disableStream===!0,A=e.disableAutoFetch===!0,j=e.pdfBug===!0,M=e.CanvasFactory||(t?$t:qt),N=e.FilterFactory||(t?Qt:Yt),te=e.BinaryDataFactory||(t?en:Gt),ne=e.enableHWA===!0,re=e.enableWebGPU===!0?on():Promise.resolve(!1),ie=e.useWasm!==!1,ae=e.pagesMapper||new br,P=typeof e.useSystemFonts==`boolean`?e.useSystemFonts:!t&&!T,oe=typeof e.useWorkerFetch==`boolean`?e.useWorkerFetch:!!(te===Gt&&m&&h&&_&&v&&Oe(m,document.baseURI)&&Oe(_,document.baseURI)&&Oe(v,document.baseURI));C(f);let se={canvasFactory:new M({ownerDocument:O,enableHWA:ne}),filterFactory:new N({docId:r,ownerDocument:O}),binaryDataFactory:oe?null:new te({cMapUrl:m,standardFontDataUrl:_,wasmUrl:v})};d||(d=Nr.create({verbosity:f,port:hr.workerPort}),n._worker=d);let F={docId:r,apiVersion:`6.1.200`,data:a,password:c,disableAutoFetch:A,rangeChunkSize:u,docBaseUrl:p,enableXfa:D,evaluatorOptions:{maxImageSize:b,disableFontFace:T,ignoreErrors:y,isOffscreenCanvasSupported:x,isImageDecoderSupported:S,canvasMaxAreaInBytes:w,fontExtraProperties:E,useSystemFonts:P,useWasm:ie,useWorkerFetch:oe,cMapUrl:m,cMapPacked:h,iccUrl:g,standardFontDataUrl:_,wasmUrl:v,hasGPU:!1}},I={ownerDocument:O,pdfBug:j,styleElement:null,enableHWA:ne,loadingParams:{disableAutoFetch:A,enableXfa:D}};return Promise.all([d.promise,re]).then(function([,e]){if(d.destroyed)throw Error(`Worker was destroyed`);F.evaluatorOptions.hasGPU=e;let t=d.messageHandler.sendWithPromise(`GetDocRequest`,F,a?[a.buffer]:null),c;if(!a)if(l)c=new tr({pdfDataRangeTransport:l,disableRange:ee,disableStream:k});else if(i)c=new(mr(i))({url:i,httpHeaders:o,withCredentials:s,rangeChunkSize:u,disableRange:ee,disableStream:k});else throw Error("getDocument - expected either `data`, `range`, or `url` parameter.");return t.then(e=>{if(d.destroyed)throw Error(`Worker was destroyed`);let t=new Ut(r,e,d.port),i=new Pr(t,n,c,I,se,ae);if(n._transport=i,n.destroyed)throw Error(`Loading aborted`);t.send(`Ready`,null)})}).catch(n._capability.reject).finally(n._setupCapability.resolve),n}var kr=class e{static#e=0;_capability=Promise.withResolvers();_setupCapability=Promise.withResolvers();_transport=null;_worker=null;docId=`d${e.#e++}`;destroyed=!1;onPassword=null;onProgress=null;get promise(){return this._capability.promise}async destroy(){this.destroyed=!0,this._capability.promise.catch(()=>{});try{this._worker?.port&&(this._worker._pendingDestroy=!0),await this._setupCapability.promise,await this._transport?.destroy()}catch(e){throw this._worker?.port&&delete this._worker._pendingDestroy,e}this._transport=null,this._worker?.destroy(),this._worker=null}async getData(){return this._transport.getData()}},Ar=class{#e=Promise.withResolvers();#t=null;constructor(e,t,n=!1,r=null){this.length=e,this.initialData=t,this.progressiveDone=n,this.contentDispositionFilename=r}onDataRange(e,t){this.#t({type:`range`,begin:e,chunk:t})}onDataProgressiveRead(e){this.#e.promise.then(()=>{this.#t({type:`progressiveRead`,chunk:e})})}onDataProgressiveDone(){this.#e.promise.then(()=>{this.#t({type:`progressiveDone`})})}transportReady(e){this.#t=e,this.#e.resolve()}requestDataRange(e,t){D(`Abstract method PDFDataRangeTransport.requestDataRange`)}abort(){}},jr=class{constructor(e,t){this._pdfInfo=e,this._transport=t}get pagesMapper(){return this._transport.pagesMapper}get annotationStorage(){return this._transport.annotationStorage}get canvasFactory(){return this._transport.canvasFactory}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return M(this,`isPureXfa`,!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(e){return this._transport.getPage(e)}getPageIndex(e){return this._transport.getPageIndex(e)}getDestinations(){return this._transport.getDestinations()}getDestination(e){return this._transport.getDestination(e)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getAttachmentContent(e){return this._transport.getAttachmentContent(e)}getAnnotationsByType(e,t){return this._transport.getAnnotationsByType(e,t)}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:e=`display`}={}){let{renderingIntent:t}=this._transport.getRenderingIntent(e);return this._transport.getOptionalContentConfig(t)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}extractPages(e){return this._transport.extractPages(e)}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}getRawData(e){return this._transport.getRawData(e)}cleanup(e=!1){return this._transport.startCleanup(e||this.isPureXfa)}cachedPageNumber(e){return this._transport.cachedPageNumber(e)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}},Mr=class e{#e=!1;#t=null;constructor(e,t,n,r,i=!1){this._pageIndex=e,this._pageInfo=t,this._transport=n,this._stats=i?new De:null,this._pdfBug=i,this.commonObjs=n.commonObjs,this.objs=new Cr,this._intentStates=new Map,this.destroyed=!1,this.recordedBBoxes=null,this.#t=r,this.imageCoordinates=null}clone(t){let n=new e(t,this._pageInfo,this._transport,this.#t,this._pdfBug);return n.clonedFromIndex=this.clonedFromIndex??this._pageIndex,this._transport.updatePage(n),n}get pageNumber(){return this._pageIndex+1}set pageNumber(e){this._pageIndex=e-1,this._transport.updatePage(this)}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:e,rotation:t=this.rotate,offsetX:n=0,offsetY:r=0,dontFlip:i=!1}={}){return new _e({viewBox:this.view,userUnit:this.userUnit,scale:e,rotation:t,offsetX:n,offsetY:r,dontFlip:i})}getAnnotations({intent:e=`display`}={}){let{renderingIntent:t}=this._transport.getRenderingIntent(e);return this._transport.getAnnotations(this._pageIndex,t)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return M(this,`isPureXfa`,!!this._transport._htmlForXfa)}async getXfa(){return this._transport._htmlForXfa?.children[this._pageIndex]||null}render({canvasContext:e,canvas:t=e.canvas,viewport:n,intent:r=`display`,annotationMode:i=c.ENABLE,transform:a=null,background:o=null,optionalContentConfigPromise:l=null,annotationCanvasMap:u=null,pageColors:d=null,printAnnotationStorage:f=null,isEditing:p=!1,recordImages:m=!1,recordOperations:h=!1,operationsFilter:g=null}){this._stats?.time(`Overall`);let _=this._transport.getRenderingIntent(r,i,f,p),{renderingIntent:v,cacheKey:y}=_;this.#e=!1,l||=this._transport.getOptionalContentConfig(v);let b=this._intentStates.getOrInsertComputed(y,ge);b.streamReaderCancelTimeout&&=(clearTimeout(b.streamReaderCancelTimeout),null);let x=!!(v&s.PRINT);b.displayReadyCapability||(b.displayReadyCapability=Promise.withResolvers(),b.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time(`Page Request`),this._pumpOperatorList(_));let S=!!(this._pdfBug&&globalThis.StepperManager?.enabled),C=!!t&&!this.recordedBBoxes&&(h||S),w=!!t&&!this.imageCoordinates&&m,T=e=>{if(b.renderTasks.delete(O),C){let e=O.gfx?.dependencyTracker.take();e&&(O.stepper?.setOperatorBBoxes(e,O.gfx.dependencyTracker.takeDebugMetadata()),h&&(this.recordedBBoxes=e))}w&&!e&&(this.imageCoordinates=O.gfx?.imagesTracker.take()),x&&(this.#e=!0),this.#n(),e?(O.capability.reject(e),this._abortOperatorList({intentState:b,reason:e instanceof Error?e:Error(e)})):O.capability.resolve(),this._stats&&(this._stats.timeEnd(`Rendering`),this._stats.timeEnd(`Overall`),globalThis.Stats?.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))},E=null,D=null;(C||w)&&(D=new xt(t,b.operatorList.length)),C&&(E=new St(D,S));let O=new Ir({callback:T,params:{canvas:t,canvasContext:e,dependencyTracker:E??D,imagesTracker:w?new wt(t):null,viewport:n,transform:a,background:o},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:u,operatorList:b.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!x,pdfBug:this._pdfBug,pageColors:d,enableHWA:this._transport.enableHWA,operationsFilter:g});(b.renderTasks||=new Set).add(O);let ee=O.task;return Promise.all([b.displayReadyCapability.promise,l]).then(([e,t])=>{if(this.destroyed){T();return}if(this._stats?.time(`Rendering`),!(t.renderingIntent&v))throw Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");O.initializeGraphics({transparency:e,optionalContentConfig:t}),O.operatorListChanged()}).catch(T),ee}getOperatorList({intent:e=`display`,annotationMode:t=c.ENABLE,printAnnotationStorage:n=null,isEditing:r=!1}={}){function i(){o.operatorList.lastChunk&&(o.opListReadCapability.resolve(o.operatorList),o.renderTasks.delete(s))}let a=this._transport.getRenderingIntent(e,t,n,r,!0),o=this._intentStates.getOrInsertComputed(a.cacheKey,ge),s;return o.opListReadCapability||(s=Object.create(null),s.operatorListChanged=i,o.opListReadCapability=Promise.withResolvers(),(o.renderTasks||=new Set).add(s),o.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time(`Page Request`),this._pumpOperatorList(a)),o.opListReadCapability.promise}streamTextContent({includeMarkedContent:e=!1,disableNormalization:t=!1}={}){return this._transport.messageHandler.sendWithStream(`GetTextContent`,{pageId:this.#t.getPageId(this._pageIndex+1)-1,pageIndex:this._pageIndex,includeMarkedContent:e===!0,disableNormalization:t===!0},{highWaterMark:100,size(e){return e.items.length}})}async getTextContent(e={}){if(this._transport._htmlForXfa)return this.getXfa().then(e=>ve.textContent(e));let t=this.streamTextContent(e),n={items:[],styles:Object.create(null),lang:null};for await(let e of t)n.lang??=e.lang,Object.assign(n.styles,e.styles),n.items.push(...e.items);return n}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;let e=[];for(let t of this._intentStates.values())if(this._abortOperatorList({intentState:t,reason:Error(`Page was destroyed.`),force:!0}),!t.opListReadCapability)for(let n of t.renderTasks)e.push(n.completed),n.cancel();return this.objs.clear(),this.#e=!1,Promise.all(e)}cleanup(e=!1){this.#e=!0;let t=this.#n();return e&&t&&(this._stats&&=new De),t}#n(){if(!this.#e||this.destroyed)return!1;for(let{renderTasks:e,operatorList:t}of this._intentStates.values())if(e.size>0||!t.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),this.#e=!1,!0}_startRenderPage(e,t){let n=this._intentStates.get(t);n&&(this._stats?.timeEnd(`Page Request`),n.displayReadyCapability?.resolve(e))}_renderPageChunk(e,t){for(let n=0,r=e.length;n{o.read().then(({value:e,done:t})=>{if(t){s.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(e,s),c())},e=>{if(s.streamReader=null,!this._transport.destroyed){if(s.operatorList){s.operatorList.lastChunk=!0;for(let e of s.renderTasks)e.operatorListChanged();this.#n()}if(s.displayReadyCapability)s.displayReadyCapability.reject(e);else if(s.opListReadCapability)s.opListReadCapability.reject(e);else throw e}})};c()}_abortOperatorList({intentState:e,reason:t,force:n=!1}){if(e.streamReader){if(e.streamReaderCancelTimeout&&=(clearTimeout(e.streamReaderCancelTimeout),null),!n){if(e.renderTasks.size>0)return;if(t instanceof Se){let n=Dr;t.extraDelay>0&&t.extraDelay<1e3&&(n+=t.extraDelay),e.streamReaderCancelTimeout=setTimeout(()=>{e.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:e,reason:t,force:!0})},n);return}}if(e.streamReader.cancel(new P(t.message)).catch(()=>{}),e.streamReader=null,!this._transport.destroyed){for(let[t,n]of this._intentStates)if(n===e){this._intentStates.delete(t);break}this.cleanup()}}}get stats(){return this._stats}},Nr=class n{#e=Promise.withResolvers();#t=null;#n=null;#r=null;static#i=0;static#a=!1;static#o=new WeakMap;static{t&&(this.#a=!0,hr.workerSrc||=`./pdf.worker.mjs`),this._isSameOrigin=(e,t)=>{let n=URL.parse(e);if(!n?.origin||n.origin===`null`)return!1;let r=new URL(t,n);return n.origin===r.origin},this._createCDNWrapper=e=>{let t=`await import("${e}");`;return URL.createObjectURL(new Blob([t],{type:`text/javascript`}))}}constructor({name:e=null,port:t=null,verbosity:r=w()}={}){if(this.name=e,this.destroyed=!1,this.verbosity=r,t){if(n.#o.has(t))throw Error(`Cannot use more than one PDFWorker per port.`);n.#o.set(t,this),this.#c(t)}else this.#l()}get promise(){return this.#e.promise}#s(){this.#e.resolve(),this.#t.send(`configure`,{verbosity:this.verbosity})}get port(){return this.#n}get messageHandler(){return this.#t}#c(e){this.#n=e,this.#t=new Ut(`main`,`worker`,e),this.#t.on(`ready`,()=>{}),this.#s()}#l(){if(n.#a||n.#d){this.#u();return}let{workerSrc:e}=n;try{n._isSameOrigin(window.location,e)||(e=n._createCDNWrapper(new URL(e,window.location).href));let t=new Worker(e,{type:`module`}),r=new Ut(`main`,`worker`,t),i=()=>{a.abort(),r.destroy(),t.terminate(),this.destroyed?this.#e.reject(Error(`Worker was destroyed`)):this.#u()},a=new AbortController;t.addEventListener(`error`,()=>{this.#r||i()},{signal:a.signal}),r.on(`test`,e=>{if(a.abort(),this.destroyed||!e){i();return}this.#t=r,this.#n=t,this.#r=t,this.#s()}),r.on(`ready`,e=>{if(a.abort(),this.destroyed){i();return}try{o()}catch{this.#u()}});let o=()=>{let e=new Uint8Array;r.send(`test`,e,[e.buffer])};o();return}catch{T(`The worker has been disabled.`)}this.#u()}#u(){n.#a||=(E(`Setting up fake worker.`),!0),n._setupFakeWorkerGlobal.then(e=>{if(this.destroyed){this.#e.reject(Error(`Worker was destroyed`));return}let t=new Bt;this.#n=t;let r=`fake${n.#i++}`,i=new Ut(r+`_worker`,r,t);e.setup(i,t),this.#t=new Ut(r,r+`_worker`,t),this.#s()}).catch(e=>{this.#e.reject(Error(`Setting up fake worker failed: "${e.message}".`))})}destroy(){this.destroyed=!0,this.#r?.terminate(),this.#r=null,n.#o.delete(this.#n),this.#n=null,this.#t?.destroy(),this.#t=null}static create(e){let t=this.#o.get(e?.port);if(t){if(t._pendingDestroy)throw Error("PDFWorker.create - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return t}return new n(e)}static get workerSrc(){if(hr.workerSrc)return hr.workerSrc;throw Error(`No "GlobalWorkerOptions.workerSrc" specified.`)}static get#d(){try{return globalThis.pdfjsWorker?.WorkerMessageHandler||null}catch{return null}}static get _setupFakeWorkerGlobal(){return M(this,`_setupFakeWorkerGlobal`,(async()=>this.#d?this.#d:(await e(()=>import(this.workerSrc),[],import.meta.url)).WorkerMessageHandler)())}},Pr=class{downloadInfoCapability=Promise.withResolvers();#e=null;#t=new Map;#n=null;#r=new Map;#i=new Map;#a=new Map;#o=null;constructor(e,t,n,r,i,a){this.messageHandler=e,this.loadingTask=t,this.#n=n,this.commonObjs=new Cr,this.fontLoader=new Tt({ownerDocument:r.ownerDocument,styleElement:r.styleElement}),this.enableHWA=r.enableHWA,this.loadingParams=r.loadingParams,this._params=r,this.canvasFactory=i.canvasFactory,this.filterFactory=i.filterFactory,this.binaryDataFactory=i.binaryDataFactory,this.pagesMapper=a,this.destroyed=!1,this.destroyCapability=null,this.setupMessageHandler()}updatePage(e){let{_pageIndex:t}=e;this.#r.set(t,e),this.#i.set(t,Promise.resolve(e))}#s(e,t=null){return this.#t.getOrInsertComputed(e,()=>this.messageHandler.sendWithPromise(e,t))}#c({loaded:e,total:t}){this.loadingTask.onProgress?.({loaded:e,total:t,percent:t?L(Math.round(e/t*100),0,100):NaN})}get annotationStorage(){return M(this,`annotationStorage`,new dt)}getRenderingIntent(e,t=c.ENABLE,n=null,r=!1,i=!1){let a=s.DISPLAY,o=ut;switch(e){case`any`:a=s.ANY;break;case`display`:break;case`print`:a=s.PRINT;break;default:E(`getRenderingIntent - invalid intent: ${e}`)}let l=a&s.PRINT&&n instanceof ft?n:this.annotationStorage;switch(t){case c.DISABLE:a+=s.ANNOTATIONS_DISABLE;break;case c.ENABLE:break;case c.ENABLE_FORMS:a+=s.ANNOTATIONS_FORMS;break;case c.ENABLE_STORAGE:a+=s.ANNOTATIONS_STORAGE,o=l.serializable;break;default:E(`getRenderingIntent - invalid annotationMode: ${t}`)}r&&(a+=s.IS_EDITING),i&&(a+=s.OPLIST);let{ids:u,hash:d}=l.modifiedIds,f=[a,o.hash,d];return{renderingIntent:a,cacheKey:f.join(`_`),annotationStorageSerializable:o,modifiedIds:u}}destroy(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),this.#o?.reject(Error(`Worker was destroyed during onPassword callback`));let e=[];for(let t of this.#r.values())e.push(t._destroy());this.#r.clear(),this.#i.clear(),this.#a.clear(),Object.hasOwn(this,`annotationStorage`)&&this.annotationStorage.resetModified();let t=this.messageHandler.sendWithPromise(`Terminate`,null);return e.push(t),Promise.all(e).then(()=>{this.commonObjs.clear(),this.fontLoader.clear(),this.#t.clear(),this.filterFactory.destroy(),Er.cleanup(),this.#n?.cancelAllRequests(new P(`Worker was terminated.`)),this.messageHandler?.destroy(),this.messageHandler=null,this.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){let{messageHandler:e,loadingTask:t}=this;e.on(`GetReader`,(e,t)=>{O(this.#n,"GetReader - no `BasePDFStream` instance available."),this.#e=this.#n.getFullReader(),this.#e.onProgress=e=>this.#c(e),t.onPull=()=>{this.#e.read().then(function({value:e,done:n}){if(n){t.close();return}O(e instanceof ArrayBuffer,`GetReader - expected an ArrayBuffer.`),t.enqueue(new Uint8Array(e),1,[e])}).catch(e=>{t.error(e)})},t.onCancel=e=>{this.#e.cancel(e),t.ready.catch(e=>{if(!this.destroyed)throw e})}}),e.on(`ReaderHeadersReady`,async e=>{await this.#e.headersReady;let{isStreamingSupported:t,isRangeSupported:n,contentLength:r}=this.#e;return t&&n&&(this.#e.onProgress=null),{isStreamingSupported:t,isRangeSupported:n,contentLength:r}}),e.on(`GetRangeReader`,(e,t)=>{O(this.#n,"GetRangeReader - no `BasePDFStream` instance available.");let n=this.#n.getRangeReader(e.begin,e.end);if(!n){t.close();return}t.onPull=()=>{n.read().then(function({value:e,done:n}){if(n){t.close();return}O(e instanceof ArrayBuffer,`GetRangeReader - expected an ArrayBuffer.`),t.enqueue(new Uint8Array(e),1,[e])}).catch(e=>{t.error(e)})},t.onCancel=e=>{n.cancel(e),t.ready.catch(e=>{if(!this.destroyed)throw e})}}),e.on(`GetDoc`,({pdfInfo:e})=>{this.pagesMapper.pagesNumber=e.numPages,this._numPages=e.numPages,this._htmlForXfa=e.htmlForXfa,delete e.htmlForXfa,t._capability.resolve(new jr(e,this))}),e.on(`DocException`,e=>{t._capability.reject(J(e))}),e.on(`PasswordRequest`,e=>{this.#o=Promise.withResolvers();try{if(!t.onPassword)throw J(e);t.onPassword(e=>{e instanceof Error?this.#o.reject(e):this.#o.resolve({password:e})},e.code)}catch(e){this.#o.reject(e)}return this.#o.promise}),e.on(`DataLoaded`,e=>{this.#c({loaded:e.length,total:e.length}),this.downloadInfoCapability.resolve(e)}),e.on(`StartRenderPage`,e=>{this.destroyed||this.#r.get(e.pageIndex)._startRenderPage(e.transparency,e.cacheKey)}),e.on(`commonobj`,([t,n,r])=>{if(this.destroyed||this.commonObjs.has(t))return null;switch(n){case`Font`:if(`error`in r){let e=r.error;E(`Error during font loading: ${e}`),this.commonObjs.resolve(t,e);break}let i=new Et(new Mt(r),this._params.pdfBug&&globalThis.FontInspector?.enabled?(e,t)=>globalThis.FontInspector.fontAdded(e,t):null,r.charProcOperatorList,r.extra);this.fontLoader.bind(i).catch(()=>e.sendWithPromise(`FontFallback`,{id:t})).finally(()=>{i.fontExtraProperties||i.clearData(),this.commonObjs.resolve(t,i)});break;case`CopyLocalImage`:let{imageRef:a}=r;O(a,`The imageRef must be defined.`);for(let e of this.#r.values())for(let[,n]of e.objs){if(n?.ref!==a)continue;if(!n.dataLen)return null;let e=structuredClone(n);return this.commonObjs.resolve(t,e),n.dataLen}break;case`FontPath`:this.commonObjs.resolve(t,new Pt(r));break;case`Image`:this.commonObjs.resolve(t,r);break;case`Pattern`:let o=new Nt(r);this.commonObjs.resolve(t,o.getIR());break;default:throw Error(`Got unknown common object type ${n}`)}return null}),e.on(`obj`,([e,t,n,r])=>{if(this.destroyed)return;let i=this.#r.get(t);if(!i.objs.has(e)){if(i._intentStates.size===0){r?.bitmap?.close();return}switch(n){case`Image`:case`Pattern`:i.objs.resolve(e,r);break;default:throw Error(`Got unknown object type ${n}`)}}}),e.on(`DocProgress`,e=>{this.destroyed||this.#c(e)}),e.on(`FetchBinaryData`,async e=>{if(this.destroyed)throw Error(`Worker was destroyed.`);if(!this.binaryDataFactory)throw Error("`BinaryDataFactory` not initialized, see the `useWorkerFetch` parameter.");return this.binaryDataFactory.fetch(e)})}getData(){return this.messageHandler.sendWithPromise(`GetData`,null)}saveDocument(){this.annotationStorage.size<=0&&E("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");let{map:e,transfer:t}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise(`SaveDocument`,{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:e,filename:this.#e?.filename??null},t).finally(()=>{this.annotationStorage.resetModified()})}extractPages(e){let t={pageInfos:e},n,r=globalThis.ImageBitmap;if(typeof r==`function`){let t=Array.isArray(e)?e:[e];for(let e of t)e?.image instanceof r&&(n||=[]).push(e.image)}if(this.annotationStorage.size>0){let e=this.annotationStorage.serializable,{map:r}=e;e.transfer?.length&&(n?n.push(...e.transfer):n=e.transfer);let i=this.pagesMapper.getMapping();if(i){let e=new Map;for(let[t,n]of r){if(n?.pageIndex!==void 0&&n.pageIndex>=0&&n.pageIndex{this.annotationStorage.resetModified()})}getPage(e){if(!Number.isInteger(e)||e<=0||e>this.pagesMapper.pagesNumber)return Promise.reject(Error(`Invalid page request.`));let t=e-1,n=this.pagesMapper.getPageId(e)-1,r=this.#i.get(t);if(r)return r;let i=this.messageHandler.sendWithPromise(`GetPage`,{pageIndex:n}).then(e=>{if(this.destroyed)throw Error(`Transport destroyed`);e.refStr&&this.#a.set(e.refStr,n);let r=new Mr(t,e,this,this.pagesMapper,this._params.pdfBug);return this.#r.set(t,r),r});return this.#i.set(t,i),i}async getPageIndex(e){if(!Rt(e))throw Error(`Invalid pageIndex request.`);let t=await this.messageHandler.sendWithPromise(`GetPageIndex`,{num:e.num,gen:e.gen}),n=this.pagesMapper.getPageNumber(t+1);if(n===0)throw Error(`GetPageIndex: page has been removed.`);return n-1}getAnnotations(e,t){return this.messageHandler.sendWithPromise(`GetAnnotations`,{pageIndex:this.pagesMapper.getPageId(e+1)-1,intent:t})}getFieldObjects(){return this.#s(`GetFieldObjects`)}hasJSActions(){return this.#s(`HasJSActions`)}getCalculationOrderIds(){return this.messageHandler.sendWithPromise(`GetCalculationOrderIds`,null)}getDestinations(){return this.messageHandler.sendWithPromise(`GetDestinations`,null)}getDestination(e){return typeof e==`string`?this.messageHandler.sendWithPromise(`GetDestination`,{id:e}):Promise.reject(Error(`Invalid destination request.`))}getPageLabels(){return this.messageHandler.sendWithPromise(`GetPageLabels`,null)}getPageLayout(){return this.messageHandler.sendWithPromise(`GetPageLayout`,null)}getPageMode(){return this.messageHandler.sendWithPromise(`GetPageMode`,null)}getViewerPreferences(){return this.messageHandler.sendWithPromise(`GetViewerPreferences`,null)}getOpenAction(){return this.messageHandler.sendWithPromise(`GetOpenAction`,null)}getAttachments(){return this.messageHandler.sendWithPromise(`GetAttachments`,null)}getAttachmentContent(e){return this.messageHandler.sendWithPromise(`GetAttachmentContent`,e)}getAnnotationsByType(e,t){return this.messageHandler.sendWithPromise(`GetAnnotationsByType`,{types:e,pageIndexesToSkip:t})}getDocJSActions(){return this.#s(`GetDocJSActions`)}getPageJSActions(e){return this.messageHandler.sendWithPromise(`GetPageJSActions`,{pageIndex:this.pagesMapper.getPageId(e+1)-1})}getStructTree(e){return this.messageHandler.sendWithPromise(`GetStructTree`,{pageIndex:this.pagesMapper.getPageId(e+1)-1})}getOutline(){return this.messageHandler.sendWithPromise(`GetOutline`,null)}getOptionalContentConfig(e){return this.#s(`GetOptionalContentConfig`).then(t=>new yr(t,e))}getPermissions(){return this.messageHandler.sendWithPromise(`GetPermissions`,null)}getMetadata(){let e=`GetMetadata`;return this.#t.getOrInsertComputed(e,()=>this.messageHandler.sendWithPromise(e,null).then(e=>({info:e[0],metadata:e[1]?new gr(e[1]):null,contentDispositionFilename:this.#e?.filename??null,contentLength:this.#e?.contentLength??null,hasStructTree:e[2]})))}getMarkInfo(){return this.messageHandler.sendWithPromise(`GetMarkInfo`,null)}getRawData(e){return this.messageHandler.sendWithPromise(`GetRawData`,e)}async startCleanup(e=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise(`Cleanup`,null);for(let e of this.#r.values())if(!e.cleanup())throw Error(`startCleanup: Page ${e.pageNumber} is currently rendering.`);this.commonObjs.clear(),e||this.fontLoader.clear(),this.#t.clear(),this.filterFactory.destroy(!0),Er.cleanup()}}cachedPageNumber(e){if(!Rt(e))return null;let t=e.gen===0?`${e.num}R`:`${e.num}R${e.gen}`,n=this.#a.get(t);if(n>=0){let e=this.pagesMapper.getPageNumber(n+1);if(e!==0)return e}return null}},Fr=class{_internalRenderTask=null;onContinue=null;onError=null;constructor(e){this._internalRenderTask=e}get promise(){return this._internalRenderTask.capability.promise}cancel(e=0){this._internalRenderTask.cancel(null,e)}get separateAnnots(){let{separateAnnots:e}=this._internalRenderTask.operatorList;if(!e)return!1;let{annotationCanvasMap:t}=this._internalRenderTask;return e.form||e.canvas&&t?.size>0}get imageCoordinates(){return this._internalRenderTask.imageCoordinates||null}},Ir=class e{#e=null;static#t=new WeakSet;constructor({callback:e,params:t,objs:n,commonObjs:r,annotationCanvasMap:i,operatorList:a,pageIndex:o,canvasFactory:s,filterFactory:c,useRequestAnimationFrame:l=!1,pdfBug:u=!1,pageColors:d=null,enableHWA:f=!1,operationsFilter:p=null}){this.callback=e,this.params=t,this.objs=n,this.commonObjs=r,this.annotationCanvasMap=i,this.operatorListIdx=null,this.operatorList=a,this._pageIndex=o,this.canvasFactory=s,this.filterFactory=c,this._pdfBug=u,this.pageColors=d,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=l===!0&&typeof window<`u`,this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new Fr(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=t.canvas,this._canvasContext=t.canvas?null:t.canvasContext,this._enableHWA=f,this._dependencyTracker=t.dependencyTracker,this._imagesTracker=t.imagesTracker,this._operationsFilter=p}get completed(){return this.capability.promise.catch(function(){})}initializeGraphics({transparency:t=!1,optionalContentConfig:n}){if(this.cancelled)return;if(this._canvas){if(e.#t.has(this._canvas))throw Error(`Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.`);e.#t.add(this._canvas)}this._pdfBug&&globalThis.StepperManager?.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());let{viewport:r,transform:i,background:a,dependencyTracker:o,imagesTracker:s}=this.params,c=this._canvasContext||this._canvas.getContext(`2d`,{alpha:!1,willReadFrequently:!this._enableHWA});this.gfx=new In(c,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:n},this.annotationCanvasMap,this.pageColors,o,s),this.gfx.beginDrawing({transform:i,viewport:r,transparency:t,background:a}),this.operatorListIdx=0,this.graphicsReady=!0,this.graphicsReadyCallback?.()}cancel(t=null,n=0){this.running=!1,this.cancelled=!0,this.gfx?.endDrawing(),this.#e&&=(window.cancelAnimationFrame(this.#e),null),e.#t.delete(this._canvas),t||=new Se(`Rendering cancelled, page ${this._pageIndex+1}`,n),this.callback(t),this.task.onError?.(t)}operatorListChanged(){if(!this.graphicsReady){this.graphicsReadyCallback||=this._continueBound;return}this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length),this.stepper?.updateOperatorList(this.operatorList),!this.running&&this._continue()}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?this.#e=window.requestAnimationFrame(()=>{this.#e=null,this._nextBound().catch(this._cancelBound)}):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper,this._operationsFilter),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),e.#t.delete(this._canvas),this.callback())))}},Lr=`6.1.200`,Rr=`6353acefe`,zr=class e{#e=null;#t=null;#n;#r=null;#i=!1;#a=!1;#o=null;#s;#c=null;#l=null;static#u=null;static get _keyboardManager(){return M(this,`_keyboardManager`,new et([[[`Escape`],e.prototype._hideDropdownFromKeyboard],[[`Space`],e.prototype._colorSelectFromKeyboard],[[`ArrowDown`,`ArrowRight`],e.prototype._moveToNext],[[`ArrowUp`,`ArrowLeft`],e.prototype._moveToPrevious],[[`Home`],e.prototype._moveToBeginning],[[`End`],e.prototype._moveToEnd]]))}constructor({editor:t=null,uiManager:n=null}){t?(this.#a=!1,this.#o=t):this.#a=!0,this.#l=t?._uiManager||n,this.#s=this.#l._eventBus,this.#n=t?.color?.toUpperCase()||this.#l?.highlightColors.values().next().value||`#FFFF98`,e.#u||=Object.freeze({blue:`pdfjs-editor-colorpicker-blue`,green:`pdfjs-editor-colorpicker-green`,pink:`pdfjs-editor-colorpicker-pink`,red:`pdfjs-editor-colorpicker-red`,yellow:`pdfjs-editor-colorpicker-yellow`})}renderButton(){let e=this.#e=document.createElement(`button`);e.className=`colorPicker`,e.tabIndex=`0`,e.setAttribute(`data-l10n-id`,`pdfjs-editor-colorpicker-button`),e.ariaHasPopup=`true`,this.#o&&(e.ariaControls=`${this.#o.id}_colorpicker_dropdown`);let t=this.#l._signal;e.addEventListener(`click`,this.#m.bind(this),{signal:t}),e.addEventListener(`keydown`,this.#p.bind(this),{signal:t});let n=this.#t=document.createElement(`span`);return n.className=`swatch`,n.ariaHidden=`true`,n.style.backgroundColor=this.#n,e.append(n),e}renderMainDropdown(){let e=this.#r=this.#d();return e.ariaOrientation=`horizontal`,e.ariaLabelledBy=`highlightColorPickerLabel`,e}#d(){let t=document.createElement(`div`),n=this.#l._signal;t.addEventListener(`contextmenu`,R,{signal:n}),t.className=`dropdown`,t.role=`listbox`,t.ariaMultiSelectable=`false`,t.ariaOrientation=`vertical`,t.setAttribute(`data-l10n-id`,`pdfjs-editor-colorpicker-dropdown`),this.#o&&(t.id=`${this.#o.id}_colorpicker_dropdown`);for(let[r,i]of this.#l.highlightColors){let a=document.createElement(`button`);a.tabIndex=`0`,a.role=`option`,a.setAttribute(`data-color`,i),a.title=r,a.setAttribute(`data-l10n-id`,e.#u[r]);let o=document.createElement(`span`);a.append(o),o.className=`swatch`,o.style.backgroundColor=i,a.ariaSelected=i===this.#n,a.addEventListener(`click`,this.#f.bind(this,i),{signal:n}),t.append(a)}return t.addEventListener(`keydown`,this.#p.bind(this),{signal:n}),t}#f(e,t){t.stopPropagation(),this.#s.dispatch(`switchannotationeditorparams`,{source:this,type:f.HIGHLIGHT_COLOR,value:e}),this.updateColor(e)}_colorSelectFromKeyboard(e){if(e.target===this.#e){this.#m(e);return}let t=e.target.getAttribute(`data-color`);t&&this.#f(t,e)}_moveToNext(e){if(!this.#g){this.#m(e);return}if(e.target===this.#e){this.#r.firstElementChild?.focus();return}e.target.nextSibling?.focus()}_moveToPrevious(e){if(e.target===this.#r?.firstElementChild||e.target===this.#e){this.#g&&this._hideDropdownFromKeyboard();return}this.#g||this.#m(e),e.target.previousSibling?.focus()}_moveToBeginning(e){if(!this.#g){this.#m(e);return}this.#r.firstElementChild?.focus()}_moveToEnd(e){if(!this.#g){this.#m(e);return}this.#r.lastElementChild?.focus()}#p(t){e._keyboardManager.exec(this,t)}#m(e){if(this.#g){this.hideDropdown();return}if(this.#i=e.detail===0,this.#c||(this.#c=new AbortController,window.addEventListener(`pointerdown`,this.#h.bind(this),{signal:this.#l.combinedSignal(this.#c)})),this.#e.ariaExpanded=`true`,this.#r){this.#r.classList.remove(`hidden`);return}let t=this.#r=this.#d();this.#e.append(t)}#h(e){this.#r?.contains(e.target)||this.hideDropdown()}hideDropdown(){this.#r?.classList.add(`hidden`),this.#e.ariaExpanded=`false`,this.#c?.abort(),this.#c=null}get#g(){return this.#r&&!this.#r.classList.contains(`hidden`)}_hideDropdownFromKeyboard(){if(!this.#a){if(!this.#g){this.#o?.unselect();return}this.hideDropdown(),this.#e.focus({preventScroll:!0,focusVisible:this.#i})}}updateColor(e){if(this.#t&&(this.#t.style.backgroundColor=e),!this.#r)return;let t=this.#l.highlightColors.values();for(let n of this.#r.children)n.ariaSelected=t.next().value===e.toUpperCase()}destroy(){this.#e?.remove(),this.#e=null,this.#t=null,this.#r?.remove(),this.#r=null}},Br=class e{#e=null;#t=!1;#n=null;#r=null;static#i=null;constructor(t){this.#n=t,this.#r=t._uiManager,e.#i||=Object.freeze({freetext:`pdfjs-editor-color-picker-free-text-input`,ink:`pdfjs-editor-color-picker-ink-input`})}renderButton(){if(this.#e)return this.#e;let{editorType:t,colorType:n,colorAndOpacityType:r,opacityType:i,color:a,opacity:o}=this.#n,s=this.#t=F.isAlphaColorInputSupported&&i!==void 0,c=this.#e=document.createElement(`input`);if(c.type=`color`,s){c.setAttribute(`alpha`,``);let e=I.hexNums[Math.round((o??1)*255)];c.value=(a||`#000000`)+e}else c.value=a||`#000000`;return c.className=`basicColorPicker`,c.tabIndex=0,c.setAttribute(`data-l10n-id`,e.#i[t]),c.addEventListener(`input`,()=>{if(s){let e=Ae(c.value);if(!e)return;let[t,a,o,s]=e,l=I.makeHexColor(t,a,o);r===void 0?(this.#r.updateParams(n,l),this.#r.updateParams(i,s)):this.#r.updateParams(r,{color:l,opacity:s})}else this.#r.updateParams(n,c.value)},{signal:this.#r._signal}),c}update(e){if(this.#e)if(this.#t){let t=I.hexNums[Math.round(this.#n.opacity*255)];this.#e.value=e+t}else this.#e.value=e}updateOpacity(e){if(!this.#e||!this.#t)return;let t=I.hexNums[Math.round(e*255)];this.#e.value=this.#n.color+t}destroy(){this.#e?.remove(),this.#e=null}hideDropdown(){}};function Vr(e){return Math.floor(L(e,0,1)*255).toString(16).padStart(2,`0`)}function Hr(e){return L(e,0,1)*255}var Ur=class{static CMYK_G([e,t,n,r]){return[`G`,1-Math.min(1,.3*e+.59*n+.11*t+r)]}static G_CMYK([e]){return[`CMYK`,0,0,0,1-e]}static G_RGB([e]){return[`RGB`,e,e,e]}static G_rgb([e]){return e=Hr(e),[e,e,e]}static G_HTML([e]){let t=Vr(e);return`#${t}${t}${t}`}static RGB_G([e,t,n]){return[`G`,.3*e+.59*t+.11*n]}static RGB_rgb(e){return e.map(Hr)}static RGB_HTML(e){return`#${e.map(Vr).join(``)}`}static T_HTML(){return`#00000000`}static T_rgb(){return[null]}static CMYK_RGB([e,t,n,r]){return[`RGB`,1-Math.min(1,e+r),1-Math.min(1,n+r),1-Math.min(1,t+r)]}static CMYK_rgb([e,t,n,r]){return[Hr(1-Math.min(1,e+r)),Hr(1-Math.min(1,n+r)),Hr(1-Math.min(1,t+r))]}static CMYK_HTML(e){let t=this.CMYK_RGB(e).slice(1);return this.RGB_HTML(t)}static RGB_CMYK([e,t,n]){let r=1-e,i=1-t,a=1-n;return[`CMYK`,r,i,a,Math.min(r,i,a)]}},Wr=class{create(e,t,n=!1){if(e<=0||t<=0)throw Error(`Invalid SVG dimensions`);let r=this._createSVG(`svg:svg`);return r.setAttribute(`version`,`1.1`),n||(r.setAttribute(`width`,`${e}px`),r.setAttribute(`height`,`${t}px`)),r.setAttribute(`preserveAspectRatio`,`none`),r.setAttribute(`viewBox`,`0 0 ${e} ${t}`),r}createElement(e){if(typeof e!=`string`)throw Error(`Invalid SVG element type`);return this._createSVG(e)}_createSVG(e){D("Abstract method `_createSVG` called.")}},Gr=class extends Wr{_createSVG(e){return document.createElementNS(o,e)}},Kr=9,qr=new WeakSet,Jr=new Date().getTimezoneOffset()*60*1e3,Yr=class{static create(e){switch(e.data.annotationType){case g.LINK:return new Zr(e);case g.TEXT:return new Qr(e);case g.WIDGET:switch(e.data.fieldType){case`Tx`:return new ei(e);case`Btn`:return e.data.radioButton?new ri(e):e.data.checkBox?new ni(e):new ii(e);case`Ch`:return new ai(e);case`Sig`:return new ti(e)}return new $r(e);case g.POPUP:return new oi(e);case g.FREETEXT:return new ci(e);case g.LINE:return new li(e);case g.SQUARE:return new ui(e);case g.CIRCLE:return new di(e);case g.POLYLINE:return new fi(e);case g.CARET:return new mi(e);case g.INK:return new hi(e);case g.POLYGON:return new pi(e);case g.HIGHLIGHT:return new gi(e);case g.UNDERLINE:return new _i(e);case g.SQUIGGLY:return new vi(e);case g.STRIKEOUT:return new yi(e);case g.STAMP:return new bi(e);case g.FILEATTACHMENT:return new xi(e);case g.RICHMEDIA:case g.SCREEN:return new Si(e);default:return new Q(e)}}},Q=class e{#e=null;#t=!1;#n=null;constructor(e,{isRenderable:t=!1,ignoreBorder:n=!1,createQuadrilaterals:r=!1}={}){this.isRenderable=t,this.data=e.data,this.layer=e.layer,this.linkService=e.linkService,this.downloadManager=e.downloadManager,this.imageResourcesPath=e.imageResourcesPath,this.renderForms=e.renderForms,this.svgFactory=e.svgFactory,this.annotationStorage=e.annotationStorage,this.enableComment=e.enableComment,this.enableScripting=e.enableScripting,this.hasJSActions=e.hasJSActions,this._fieldObjects=e.fieldObjects,this.parent=e.parent,this.hasOwnCommentButton=!1,t&&(this.contentElement=this.container=this._createContainer(n)),r&&this._createQuadrilaterals()}static _hasPopupData({contentsObj:e,richText:t}){return!!(e?.str||t?.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return e._hasPopupData(this.data)||this.enableComment&&!!this.commentText}get commentData(){let{data:e}=this,t=this.annotationStorage?.getEditor(e.id);return t?t.getData():e}get hasCommentButton(){return this.enableComment&&this.hasPopupElement}get commentButtonPosition(){let e=this.annotationStorage?.getEditor(this.data.id);if(e)return e.commentButtonPositionInPage;let{quadPoints:t,inkLists:n,rect:r}=this.data,i=-1/0,a=-1/0;if(t?.length>=8){for(let e=0;ea?(a=t[e+1],i=t[e+2]):t[e+1]===a&&(i=Math.max(i,t[e+2]));return[i,a]}if(n?.length>=1){for(let e of n)for(let t=0,n=e.length;ta?(a=e[t+1],i=e[t]):e[t+1]===a&&(i=Math.max(i,e[t]));if(i!==1/0)return[i,a]}return r?[r[2],r[3]]:null}_normalizePoint(e){let{page:{view:t},viewport:{rawDims:{pageWidth:n,pageHeight:r,pageX:i,pageY:a}}}=this.parent;return e[1]=t[3]-e[1]+t[1],e[0]=100*(e[0]-i)/n,e[1]=100*(e[1]-a)/r,e}get commentText(){let{data:e}=this;return this.annotationStorage.getRawValue(`${u}${e.id}`)?.popup?.contents||e.contentsObj?.str||``}set commentText(e){let{data:t}=this,n={deleted:!e,contents:e||``};this.annotationStorage.updateEditor(t.id,{popup:n})||this.annotationStorage.setValue(`${u}${t.id}`,{id:t.id,annotationType:t.annotationType,page:this.parent.page,popup:n,popupRef:t.popupRef,modificationDate:new Date}),e||this.removePopup()}removePopup(){(this.#n?.popup||this.popup)?.remove(),this.#n=this.popup=null}updateEdited(e){if(!this.container)return;e.rect&&(this.#e||={rect:this.data.rect.slice(0)});let{rect:t,popup:n}=e;t&&this.#r(t);let r=this.#n?.popup||this.popup;!r&&n?.text&&(this._createPopup(n),r=this.#n.popup),r&&(r.updateEdited(e),n?.deleted&&(r.remove(),this.#n=null,this.popup=null))}resetEdited(){this.#e&&=(this.#r(this.#e.rect),this.#n?.popup.resetEdited(),null)}#r(e){let{container:{style:t},data:{rect:n,rotation:r},parent:{viewport:{rawDims:{pageWidth:i,pageHeight:a,pageX:o,pageY:s}}}}=this;n?.splice(0,4,...e),t.left=`${100*(e[0]-o)/i}%`,t.top=`${100*(a-e[3]+s)/a}%`,r===0?(t.width=`${100*(e[2]-e[0])/i}%`,t.height=`${100*(e[3]-e[1])/a}%`):this.setRotation(r)}_createContainer(e){let{data:t,parent:{page:n,viewport:r}}=this,i=document.createElement(`section`);i.setAttribute(`data-annotation-id`,t.id),!(this instanceof $r)&&!(this instanceof Zr)&&!(this instanceof Si)&&(i.tabIndex=0);let{style:a}=i;if(a.zIndex=this.parent.zIndex,this.parent.zIndex+=2,t.alternativeText&&(i.title=t.alternativeText),t.noRotate&&i.classList.add(`norotate`),!t.rect||this instanceof oi){let{rotation:e}=t;return!t.hasOwnCanvas&&e!==0&&this.setRotation(e,i),i}let{width:o,height:s}=this;if(!e&&t.borderStyle.width>0){a.borderWidth=`${t.borderStyle.width}px`;let e=t.borderStyle.horizontalCornerRadius,n=t.borderStyle.verticalCornerRadius;switch((e>0||n>0)&&(a.borderRadius=`calc(${e}px * var(--total-scale-factor)) / calc(${n}px * var(--total-scale-factor))`),t.borderStyle.style){case _.SOLID:a.borderStyle=`solid`;break;case _.DASHED:a.borderStyle=`dashed`;break;case _.BEVELED:E(`Unimplemented border style: beveled`);break;case _.INSET:E(`Unimplemented border style: inset`);break;case _.UNDERLINE:a.borderBottomStyle=`solid`;break;default:break}let r=t.borderColor||null;r?(this.#t=!0,a.borderColor=I.makeHexColor(...r)):a.borderWidth=0}let c=I.normalizeRect([t.rect[0],n.view[3]-t.rect[1]+n.view[1],t.rect[2],n.view[3]-t.rect[3]+n.view[1]]),{pageWidth:l,pageHeight:u,pageX:d,pageY:f}=r.rawDims;a.left=`${100*(c[0]-d)/l}%`,a.top=`${100*(c[1]-f)/u}%`;let{rotation:p}=t;return t.hasOwnCanvas||p===0?(a.width=`${100*o/l}%`,a.height=`${100*s/u}%`):this.setRotation(p,i),i}setRotation(e,t=this.container){if(!this.data.rect)return;let{pageWidth:n,pageHeight:r}=this.parent.viewport.rawDims,{width:i,height:a}=this;e%180!=0&&([i,a]=[a,i]),t.style.width=`${100*i/n}%`,t.style.height=`${100*a/r}%`,t.setAttribute(`data-main-rotation`,(360-e)%360)}get _commonActions(){let e=(e,t,n)=>{let r=n.detail[e],i=r[0],a=r.slice(1);n.target.style[t]=Ur[`${i}_HTML`](a),this.annotationStorage.setValue(this.data.id,{[t]:Ur[`${i}_rgb`](a)})};return M(this,`_commonActions`,{display:e=>{let{display:t}=e.detail,n=t%2==1;this.container.style.visibility=n?`hidden`:`visible`,this.annotationStorage.setValue(this.data.id,{noView:n,noPrint:t===1||t===2})},print:e=>{this.annotationStorage.setValue(this.data.id,{noPrint:!e.detail.print})},hidden:e=>{let{hidden:t}=e.detail;this.container.style.visibility=t?`hidden`:`visible`,this.annotationStorage.setValue(this.data.id,{noPrint:t,noView:t})},focus:e=>{setTimeout(()=>e.target.focus({preventScroll:!1}),0)},userName:e=>{e.target.title=e.detail.userName},readonly:e=>{e.target.disabled=e.detail.readonly},required:e=>{this._setRequired(e.target,e.detail.required)},bgColor:t=>{e(`bgColor`,`backgroundColor`,t)},fillColor:t=>{e(`fillColor`,`backgroundColor`,t)},fgColor:t=>{e(`fgColor`,`color`,t)},textColor:t=>{e(`textColor`,`color`,t)},borderColor:t=>{e(`borderColor`,`borderColor`,t)},strokeColor:t=>{e(`strokeColor`,`borderColor`,t)},rotation:e=>{let t=e.detail.rotation;this.setRotation(t),this.annotationStorage.setValue(this.data.id,{rotation:t})}})}_dispatchEventFromSandbox(e,t){let n=this._commonActions;for(let r of Object.keys(t.detail))(e[r]||n[r])?.(t)}_setDefaultPropertiesFromJS(e){if(!this.enableScripting)return;let t=this.annotationStorage.getRawValue(this.data.id);if(!t)return;let n=this._commonActions;for(let[r,i]of Object.entries(t)){let a=n[r];a&&(a({detail:{[r]:i},target:e}),delete t[r])}}_createQuadrilaterals(){if(!this.container)return;let{quadPoints:e}=this.data;if(!e)return;let[t,n,r,i]=this.data.rect.map(e=>Math.fround(e));if(e.length===8){let[a,o,s,c]=e.subarray(2,6);if(r===a&&i===o&&t===s&&n===c)return}let{style:a}=this.container,s;if(this.#t){let{borderColor:e,borderWidth:t}=a;a.borderWidth=0,s=[`url('data:image/svg+xml;utf8,`,``,``],this.container.classList.add(`hasBorder`)}let c=r-t,l=i-n,{svgFactory:u}=this,d=u.createElement(`svg`);d.classList.add(`quadrilateralsContainer`),d.setAttribute(`width`,0),d.setAttribute(`height`,0),d.role=`none`;let f=u.createElement(`defs`);d.append(f);let p=u.createElement(`clipPath`),m=`clippath_${this.data.id}`;p.setAttribute(`id`,m),p.setAttribute(`clipPathUnits`,`objectBoundingBox`),f.append(p);for(let n=2,r=e.length;n`)}this.#t&&(s.push(`')`),a.backgroundImage=s.join(``)),this.container.append(d),this.container.style.clipPath=`url(#${m})`}_createPopup(e=null){let{data:t}=this,n,r;e?(n={str:e.text},r=e.date):(n=t.contentsObj,r=t.modificationDate),this.#n=new oi({data:{color:t.color,titleObj:t.titleObj,modificationDate:r,contentsObj:n,richText:t.richText,parentRect:t.rect,borderStyle:0,id:`popup_${t.id}`,rotation:t.rotation,noRotate:!0},linkService:this.linkService,parent:this.parent,elements:[this]})}get hasPopupElement(){return!!(this.#n||this.popup||this.data.popupRef)}get extraPopupElement(){return this.#n}render(){D("Abstract method `AnnotationElement.render` called")}_getElementsByName(e,t=null){let n=[];if(this._fieldObjects){let r=this._fieldObjects[e];if(r)for(let{page:e,id:i,exportValues:a}of r){if(e===-1||i===t)continue;let r=typeof a==`string`?a:null,o=document.querySelector(`[data-element-id="${i}"]`);if(o&&!qr.has(o)){E(`_getElementsByName - element not allowed: ${i}`);continue}n.push({id:i,exportValue:r,domElement:o})}return n}for(let r of document.getElementsByName(e)){let{exportValue:e}=r,i=r.getAttribute(`data-element-id`);i!==t&&qr.has(r)&&n.push({id:i,exportValue:e,domElement:r})}return n}show(){this.container&&(this.container.hidden=!1),this.popup?.maybeShow()}hide(){this.container&&(this.container.hidden=!0),this.popup?.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){let e=this.getElementsToTriggerPopup();if(Array.isArray(e))for(let t of e)t.classList.add(`highlightArea`);else e.classList.add(`highlightArea`)}_editOnDoubleClick(){if(!this._isEditable)return;let{annotationEditorType:e,data:{id:t}}=this;this.container.addEventListener(`dblclick`,()=>{this.linkService.eventBus?.dispatch(`switchannotationeditormode`,{source:this,mode:e,editId:t,mustEnterInEditMode:!0})})}updateOC(e){!this.data.oc||!e||(e.isVisible(this.data.oc)?this.show():this.hide())}get width(){return this.data.rect[2]-this.data.rect[0]}get height(){return this.data.rect[3]-this.data.rect[1]}_setBackgroundColor(e){let t=this.data.backgroundColor||null;e.style.backgroundColor=t===null?`transparent`:I.makeHexColor(...t)}},Xr=class extends Q{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.editor=e.editor}render(){return this.container.className=`editorAnnotation`,this.container}createOrUpdatePopup(){let{editor:e}=this;e.hasComment&&this._createPopup(e.comment)}get hasCommentButton(){return this.enableComment&&this.editor.hasComment}get commentButtonPosition(){return this.editor.commentButtonPositionInPage}get commentText(){return this.editor.comment.text}set commentText(e){this.editor.comment=e,e||this.removePopup()}get commentData(){return this.editor.getData()}remove(){this.parent.removeAnnotation(this.data.id),this.container.remove(),this.container=null,this.removePopup()}},Zr=class extends Q{constructor(e,t=null){super(e,{isRenderable:!0,ignoreBorder:!!t?.ignoreBorder,createQuadrilaterals:!0}),this.isTooltipOnly=e.data.isTooltipOnly}render(){let{data:e,linkService:t}=this,n=document.createElement(`a`);n.setAttribute(`data-element-id`,e.id);let r=!1;return e.url?(t.addLinkAttributes(n,e.url,e.newWindow),r=!0):e.action?(this._bindNamedAction(n,e.action,e.overlaidText),r=!0):e.attachment?(this.#t(n,e.attachmentId,e.attachment,e.overlaidText,e.attachmentDest),r=!0):e.setOCGState?(this.#n(n,e.setOCGState,e.overlaidText),r=!0):e.dest?(this._bindLink(n,e.dest,e.overlaidText),r=!0):(e.actions&&(e.actions.Action||e.actions[`Mouse Up`]||e.actions[`Mouse Down`])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(n,e),r=!0),e.resetForm?(this._bindResetFormAction(n,e.resetForm),r=!0):this.isTooltipOnly&&!r&&(this._bindLink(n,``),r=!0)),this.container.classList.add(`linkAnnotation`),r&&(this.contentElement=n,this.container.append(n)),this.container}#e(){this.container.setAttribute(`data-internal-link`,``)}_bindLink(e,t,n=``){e.href=this.linkService.getDestinationHash(t),e.onclick=()=>(t&&this.linkService.goToDestination(t),!1),(t||t===``)&&this.#e(),n&&(e.title=n)}_bindNamedAction(e,t,n=``){e.href=this.linkService.getAnchorUrl(``),e.onclick=()=>(this.linkService.executeNamedAction(t),!1),n&&(e.title=n),this.#e()}#t(e,t,n,r=``,i=null){e.href=this.linkService.getAnchorUrl(``),n.description?e.title=n.description:r&&(e.title=r);let a=async()=>{let e=await this.linkService.getAttachmentContent(t);e&&this.downloadManager?.openOrDownloadData(e,n.filename,i)};e.onclick=()=>(a(),!1),this.#e()}#n(e,t,n=``){e.href=this.linkService.getAnchorUrl(``),e.onclick=()=>(this.linkService.executeSetOCGState(t),!1),n&&(e.title=n),this.#e()}_bindJSAction(e,t){e.href=this.linkService.getAnchorUrl(``);let n=new Map([[`Action`,`onclick`],[`Mouse Up`,`onmouseup`],[`Mouse Down`,`onmousedown`]]);for(let r of Object.keys(t.actions)){let i=n.get(r);i&&(e[i]=()=>(this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t.id,name:r}}),!1))}t.overlaidText&&(e.title=t.overlaidText),e.onclick||=()=>!1,this.#e()}_bindResetFormAction(e,t){let n=e.onclick;if(n||(e.href=this.linkService.getAnchorUrl(``)),this.#e(),!this._fieldObjects){E('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),n||(e.onclick=()=>!1);return}e.onclick=()=>{n?.();let{fields:e,refs:r,include:i}=t,a=[];if(e.length!==0||r.length!==0){let t=new Set(r);for(let n of e){let e=this._fieldObjects[n]||[];for(let{id:n}of e)t.add(n)}for(let e of Object.values(this._fieldObjects))for(let n of e)t.has(n.id)===i&&a.push(n)}else for(let e of Object.values(this._fieldObjects))a.push(...e);let o=this.annotationStorage,s=[];for(let e of a){let{id:t}=e;switch(s.push(t),e.type){case`text`:{let n=e.defaultValue||``;o.setValue(t,{value:n});break}case`checkbox`:case`radiobutton`:{let n=e.defaultValue===e.exportValues;o.setValue(t,{value:n});break}case`combobox`:case`listbox`:{let n=e.defaultValue||``;o.setValue(t,{value:n});break}default:continue}let n=document.querySelector(`[data-element-id="${t}"]`);if(n){if(!qr.has(n)){E(`_bindResetFormAction - element not allowed: ${t}`);continue}n.dispatchEvent(new Event(`resetform`))}}return this.enableScripting&&this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:`app`,ids:s,name:`ResetForm`}}),!1}}},Qr=class extends Q{constructor(e){super(e,{isRenderable:!0})}render(){this.container.classList.add(`textAnnotation`);let e=document.createElement(`img`);return e.src=this.imageResourcesPath+`annotation-`+this.data.name.toLowerCase()+`.svg`,e.setAttribute(`data-l10n-id`,`pdfjs-text-annotation-type`),e.setAttribute(`data-l10n-args`,JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container.append(e),this.container}},$r=class extends Q{render(){return this.container}_getKeyModifier(e){return F.platform.isMac?e.metaKey:e.ctrlKey}_setEventListener(e,t,n,r,i){n.includes(`mouse`)?e.addEventListener(n,e=>{this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:this.data.id,name:r,value:i(e),shift:e.shiftKey,modifier:this._getKeyModifier(e)}})}):e.addEventListener(n,e=>{if(n===`blur`){if(!t.focused||!e.relatedTarget)return;t.focused=!1}else if(n===`focus`){if(t.focused)return;t.focused=!0}i&&this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:this.data.id,name:r,value:i(e)}})})}_setEventListeners(e,t,n,r){for(let[i,a]of n)(a===`Action`||this.data.actions?.[a])&&((a===`Focus`||a===`Blur`)&&(t||={focused:!1}),this._setEventListener(e,t,i,a,r),a===`Focus`&&!this.data.actions?.Blur?this._setEventListener(e,t,`blur`,`Blur`,null):a===`Blur`&&!this.data.actions?.Focus&&this._setEventListener(e,t,`focus`,`Focus`,null))}_setTextStyle(e){let t=[`left`,`center`,`right`],{fontColor:n}=this.data.defaultAppearanceData,r=this.data.defaultAppearanceData.fontSize||Kr,i=e.style,o,s=e=>Math.round(10*e)/10;if(this.data.multiLine){let e=Math.abs(this.data.rect[3]-this.data.rect[1]-2),t=e/(Math.round(e/(a*r))||1);o=Math.min(r,s(t/a))}else{let e=Math.abs(this.data.rect[3]-this.data.rect[1]-2);o=Math.min(r,s(e/a))}i.fontSize=`calc(${o}px * var(--total-scale-factor))`,i.color=I.makeHexColor(...n),this.data.textAlignment!==null&&!this.data.comb&&(i.textAlign=t[this.data.textAlignment])}_setRequired(e,t){t?e.setAttribute(`required`,!0):e.removeAttribute(`required`),e.setAttribute(`aria-required`,t)}},ei=class extends $r{constructor(e){let t=e.renderForms||e.data.hasOwnCanvas||!e.data.hasAppearance&&!!e.data.fieldValue;super(e,{isRenderable:t})}setPropertyOnSiblings(e,t,n,r){let i=this.annotationStorage;for(let a of this._getElementsByName(e.name,e.id))a.domElement&&(a.domElement[t]=n),i.setValue(a.id,{[r]:n})}render(){let e=this.annotationStorage,t=this.data.id;this.container.classList.add(`textWidgetAnnotation`);let n=null;if(this.renderForms){let r=e.getValue(t,{value:this.data.fieldValue}),i=r.value||``,a=e.getValue(t,{charLimit:this.data.maxLen}).charLimit;a&&i.length>a&&(i=i.slice(0,a));let o=r.formattedValue||this.data.textContent?.join(` -`)||null;o&&this.data.comb&&(o=o.replaceAll(/\s+/g,``));let s={userValue:i,formattedValue:o,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(n=document.createElement(`textarea`),n.textContent=o??i,this.data.doNotScroll&&(n.style.overflowY=`hidden`)):(n=document.createElement(`input`),n.type=this.data.password?`password`:`text`,n.setAttribute(`value`,o??i),this.data.doNotScroll&&(n.style.overflowX=`hidden`)),this.data.hasOwnCanvas&&(this.container.classList.add(`hasOwnCanvas`),e.has(t)&&this.container.classList.add(`sandboxModified`)),qr.add(n),this.contentElement=n,n.setAttribute(`data-element-id`,t),n.disabled=this.data.readOnly,n.name=this.data.fieldName,n.tabIndex=0;let{datetimeFormat:c,datetimeType:l,timeStep:u}=this.data,d=!!l&&this.enableScripting;c&&(n.title=c),this._setRequired(n,this.data.required),a&&(n.maxLength=a),n.addEventListener(`input`,r=>{e.setValue(t,{value:r.target.value}),this.setPropertyOnSiblings(n,`value`,r.target.value,`value`),s.formattedValue=null}),n.addEventListener(`resetform`,e=>{let t=this.data.defaultFieldValue??``;n.value=s.userValue=t,s.formattedValue=null});let f=e=>{let{formattedValue:t}=s;t!=null&&(e.target.value=t),e.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){n.addEventListener(`focus`,e=>{if(s.focused)return;let{target:t}=e;if(d&&(t.type=l,u&&(t.step=u)),s.userValue){let e=s.userValue;if(d)if(l===`time`){let n=new Date(e);t.value=[n.getHours(),n.getMinutes(),n.getSeconds()].map(e=>e.toString().padStart(2,`0`)).join(`:`)}else t.value=new Date(e-Jr).toISOString().split(l===`date`?`T`:`.`,1)[0];else t.value=e}s.lastCommittedValue=t.value,s.commitKey=1,this.data.actions?.Focus||(s.focused=!0)}),n.addEventListener(`updatefromsandbox`,n=>{this.container.classList.add(`sandboxModified`),this._dispatchEventFromSandbox({value(n){s.userValue=n.detail.value??``,d||e.setValue(t,{value:s.userValue.toString()}),n.target.value=s.userValue},formattedValue(n){let{formattedValue:r}=n.detail;s.formattedValue=r,r!=null&&n.target!==document.activeElement&&(n.target.value=r);let i={formattedValue:r};d&&(i.value=r),e.setValue(t,i)},selRange(e){e.target.setSelectionRange(...e.detail.selRange)},charLimit:n=>{let{charLimit:r}=n.detail,{target:i}=n;if(r===0){i.removeAttribute(`maxLength`);return}i.setAttribute(`maxLength`,r);let a=s.userValue;!a||a.length<=r||(a=a.slice(0,r),i.value=s.userValue=a,e.setValue(t,{value:a}),this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t,name:`Keystroke`,value:a,willCommit:!0,commitKey:1,selStart:i.selectionStart,selEnd:i.selectionEnd}}))}},n)}),n.addEventListener(`keydown`,e=>{s.commitKey=1;let n=-1;if(e.key===`Escape`?n=0:e.key===`Enter`&&!this.data.multiLine?n=2:e.key===`Tab`&&(s.commitKey=3),n===-1)return;let{value:r}=e.target;s.lastCommittedValue!==r&&(s.lastCommittedValue=r,s.userValue=r,this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t,name:`Keystroke`,value:r,willCommit:!0,commitKey:n,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}}))});let r=f;f=null,n.addEventListener(`blur`,e=>{if(!s.focused||!e.relatedTarget)return;this.data.actions?.Blur||(s.focused=!1);let{target:n}=e,{value:i}=n;if(d){if(i&&l===`time`){let e=i.split(`:`).map(e=>parseInt(e,10));i=new Date(2e3,0,1,e[0],e[1],e[2]||0).valueOf(),n.step=``}else i.includes(`T`)||(i=`${i}T00:00`),i=new Date(i).valueOf();n.type=`text`}s.userValue=i,s.lastCommittedValue!==i&&this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t,name:`Keystroke`,value:i,willCommit:!0,commitKey:s.commitKey,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}}),r(e)}),this.data.actions?.Keystroke&&n.addEventListener(`beforeinput`,e=>{s.lastCommittedValue=null;let{data:n,target:r}=e,{value:i,selectionStart:a,selectionEnd:o}=r,c=a,l=o;switch(e.inputType){case`deleteWordBackward`:{let e=i.substring(0,a).match(/\w*\W*$/);e&&(c-=e[0].length);break}case`deleteWordForward`:{let e=i.substring(a).match(/^\W*\w*/);e&&(l+=e[0].length);break}case`deleteContentBackward`:a===o&&--c;break;case`deleteContentForward`:a===o&&(l+=1);break}e.preventDefault(),this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t,name:`Keystroke`,value:i,change:n||``,willCommit:!1,selStart:c,selEnd:l}})}),this._setEventListeners(n,s,[[`focus`,`Focus`],[`blur`,`Blur`],[`mousedown`,`Mouse Down`],[`mouseenter`,`Mouse Enter`],[`mouseleave`,`Mouse Exit`],[`mouseup`,`Mouse Up`]],e=>e.target.value)}if(f&&n.addEventListener(`blur`,f),this.data.comb){let e=(this.data.rect[2]-this.data.rect[0])/a;n.classList.add(`comb`),n.style.setProperty(`--comb-width`,`calc(${e}px * var(--total-scale-factor))`);let t=this.data.textAlignment;if(t===1||t===2){let e=()=>{let e=a-n.value.length;n.style.setProperty(`--comb-offset`,`${t===1?e>>1:e}`)};e();for(let t of[`input`,`blur`,`resetform`,`updatefromsandbox`])n.addEventListener(t,e)}}}else n=document.createElement(`div`),n.textContent=this.data.fieldValue,n.style.verticalAlign=`middle`,n.style.display=`table-cell`,this.data.hasOwnCanvas&&(n.hidden=!0);return this._setTextStyle(n),this._setBackgroundColor(n),this._setDefaultPropertiesFromJS(n),this.container.append(n),this.container}},ti=class extends $r{constructor(e){super(e,{isRenderable:!!e.data.hasOwnCanvas})}},ni=class extends $r{constructor(e){super(e,{isRenderable:e.renderForms})}render(){let e=this.annotationStorage,t=this.data,n=t.id,r=e.getValue(n,{value:t.exportValue===t.fieldValue}).value;typeof r==`string`&&(r=r!==`Off`,e.setValue(n,{value:r})),this.container.classList.add(`buttonWidgetAnnotation`,`checkBox`);let i=document.createElement(`input`);return qr.add(i),i.setAttribute(`data-element-id`,n),i.disabled=t.readOnly,this._setRequired(i,this.data.required),i.type=`checkbox`,i.name=t.fieldName,r&&i.setAttribute(`checked`,!0),i.setAttribute(`exportValue`,t.exportValue),i.tabIndex=0,i.addEventListener(`change`,r=>{let{name:i,checked:a}=r.target;for(let r of this._getElementsByName(i,n)){let n=a&&r.exportValue===t.exportValue;r.domElement&&(r.domElement.checked=n),e.setValue(r.id,{value:n})}e.setValue(n,{value:a})}),i.addEventListener(`resetform`,e=>{let n=t.defaultFieldValue||`Off`;e.target.checked=n===t.exportValue}),this.enableScripting&&this.hasJSActions&&(i.addEventListener(`updatefromsandbox`,t=>{this._dispatchEventFromSandbox({value(t){t.target.checked=t.detail.value!==`Off`,e.setValue(n,{value:t.target.checked})}},t)}),this._setEventListeners(i,null,[[`change`,`Validate`],[`change`,`Action`],[`focus`,`Focus`],[`blur`,`Blur`],[`mousedown`,`Mouse Down`],[`mouseenter`,`Mouse Enter`],[`mouseleave`,`Mouse Exit`],[`mouseup`,`Mouse Up`]],e=>e.target.checked)),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}},ri=class extends $r{constructor(e){super(e,{isRenderable:e.renderForms})}render(){this.container.classList.add(`buttonWidgetAnnotation`,`radioButton`);let e=this.annotationStorage,t=this.data,n=t.id,r=e.getValue(n,{value:t.buttonValue!==null&&t.fieldValue===t.buttonValue}).value;if(typeof r==`string`&&(r=r!==t.buttonValue,e.setValue(n,{value:r})),r)for(let r of this._getElementsByName(t.fieldName,n))e.setValue(r.id,{value:!1});let i=document.createElement(`input`);if(qr.add(i),i.setAttribute(`data-element-id`,n),i.disabled=t.readOnly,this._setRequired(i,this.data.required),i.type=`radio`,i.name=t.fieldName,r&&i.setAttribute(`checked`,!0),i.tabIndex=0,i.addEventListener(`change`,t=>{let{name:r,checked:i}=t.target;for(let t of this._getElementsByName(r,n))e.setValue(t.id,{value:!1});e.setValue(n,{value:i})}),i.addEventListener(`resetform`,e=>{let n=t.defaultFieldValue;e.target.checked=n!=null&&n===t.buttonValue}),this.enableScripting&&this.hasJSActions){let r=t.buttonValue;i.addEventListener(`updatefromsandbox`,t=>{this._dispatchEventFromSandbox({value:t=>{let i=r===t.detail.value;for(let r of this._getElementsByName(t.target.name)){let t=i&&r.id===n;r.domElement&&(r.domElement.checked=t),e.setValue(r.id,{value:t})}}},t)}),this._setEventListeners(i,null,[[`change`,`Validate`],[`change`,`Action`],[`focus`,`Focus`],[`blur`,`Blur`],[`mousedown`,`Mouse Down`],[`mouseenter`,`Mouse Enter`],[`mouseleave`,`Mouse Exit`],[`mouseup`,`Mouse Up`]],e=>e.target.checked)}return this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}},ii=class extends Zr{constructor(e){super(e,{ignoreBorder:e.data.hasAppearance})}render(){let e=super.render();e.classList.add(`buttonWidgetAnnotation`,`pushButton`);let t=e.lastChild;return this.enableScripting&&this.hasJSActions&&t&&(this._setDefaultPropertiesFromJS(t),t.addEventListener(`updatefromsandbox`,e=>{this._dispatchEventFromSandbox({},e)})),e}},ai=class extends $r{constructor(e){super(e,{isRenderable:e.renderForms})}render(){this.container.classList.add(`choiceWidgetAnnotation`);let e=this.annotationStorage,t=this.data.id,n=e.getValue(t,{value:this.data.fieldValue}),r=document.createElement(`select`);qr.add(r),r.setAttribute(`data-element-id`,t),r.disabled=this.data.readOnly,this._setRequired(r,this.data.required),r.name=this.data.fieldName,r.tabIndex=0;let i=this.data.combo&&this.data.options.length>0;this.data.combo||(r.size=this.data.options.length,this.data.multiSelect&&(r.multiple=!0)),r.addEventListener(`resetform`,e=>{let t=this.data.defaultFieldValue;for(let e of r.options)e.selected=e.value===t});let a=(e,t)=>{let n=t.replaceAll(` `,`\xA0`);e.textContent=n,n!==t&&e.setAttribute(`display-value`,t)};for(let e of this.data.options){let t=document.createElement(`option`);a(t,e.displayValue),t.value=e.exportValue,n.value.includes(e.exportValue)&&(t.setAttribute(`selected`,!0),i=!1),r.append(t)}let o=null;if(i){let e=document.createElement(`option`);e.value=` `,e.setAttribute(`hidden`,!0),e.setAttribute(`selected`,!0),r.prepend(e),o=()=>{e.remove(),r.removeEventListener(`input`,o),o=null},r.addEventListener(`input`,o)}let s=e=>{let t=e?`value`:`textContent`,{options:n,multiple:i}=r;return i?Array.prototype.filter.call(n,e=>e.selected).map(e=>e[t]):n.selectedIndex===-1?null:n[n.selectedIndex][t]},c=s(!1),l=e=>{let t=e.target.options;return Array.prototype.map.call(t,e=>({displayValue:e.getAttribute(`display-value`)||e.textContent,exportValue:e.value}))};return this.enableScripting&&this.hasJSActions?(r.addEventListener(`updatefromsandbox`,n=>{this._dispatchEventFromSandbox({value(n){o?.();let i=n.detail.value,a=new Set(Array.isArray(i)?i:[i]);for(let e of r.options)e.selected=a.has(e.value);e.setValue(t,{value:s(!0)}),c=s(!1)},multipleSelection(e){r.multiple=!0},remove(n){let i=r.options,a=n.detail.remove;i[a].selected=!1,r.remove(a),i.length>0&&Array.prototype.findIndex.call(i,e=>e.selected)===-1&&(i[0].selected=!0),e.setValue(t,{value:s(!0),items:l(n)}),c=s(!1)},clear(n){for(;r.length!==0;)r.remove(0);e.setValue(t,{value:null,items:[]}),c=s(!1)},insert(n){let{index:i,displayValue:o,exportValue:u}=n.detail.insert,d=r.children[i],f=document.createElement(`option`);a(f,o),f.value=u,d?d.before(f):r.append(f),e.setValue(t,{value:s(!0),items:l(n)}),c=s(!1)},items(n){let{items:i}=n.detail;for(;r.length!==0;)r.remove(0);for(let e of i){let{displayValue:t,exportValue:n}=e,i=document.createElement(`option`);a(i,t),i.value=n,r.append(i)}r.options.length>0&&(r.options[0].selected=!0),e.setValue(t,{value:s(!0),items:l(n)}),c=s(!1)},indices(n){let r=new Set(n.detail.indices);for(let e of n.target.options)e.selected=r.has(e.index);e.setValue(t,{value:s(!0)}),c=s(!1)},editable(e){e.target.disabled=!e.detail.editable}},n)}),r.addEventListener(`input`,n=>{let r=s(!0),i=s(!1);e.setValue(t,{value:r}),n.preventDefault(),this.linkService.eventBus?.dispatch(`dispatcheventinsandbox`,{source:this,detail:{id:t,name:`Keystroke`,value:c,change:i,changeEx:r,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(r,null,[[`focus`,`Focus`],[`blur`,`Blur`],[`mousedown`,`Mouse Down`],[`mouseenter`,`Mouse Enter`],[`mouseleave`,`Mouse Exit`],[`mouseup`,`Mouse Up`],[`input`,`Action`],[`input`,`Validate`]],e=>e.target.value)):r.addEventListener(`input`,function(n){e.setValue(t,{value:s(!0)})}),this.data.combo&&this._setTextStyle(r),this._setBackgroundColor(r),this._setDefaultPropertiesFromJS(r),this.container.append(r),this.container}},oi=class extends Q{constructor(e){let{data:t,elements:n,parent:r}=e,i=!!r._commentManager;if(super(e,{isRenderable:!i&&Q._hasPopupData(t)}),this.elements=n,i&&Q._hasPopupData(t)){let e=this.popup=this.#e();for(let t of n)t.popup=e}else this.popup=null}#e(){return new si({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate||this.data.creationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open,commentManager:this.parent._commentManager})}render(){let{container:e}=this;e.classList.add(`popupAnnotation`),e.role=`comment`;let t=this.popup=this.#e(),n=[];for(let e of this.elements)e.popup=t,e.container.ariaHasPopup=`dialog`,n.push(e.data.id),e.addHighlightArea();return this.container.setAttribute(`aria-controls`,n.map(e=>`${l}${e}`).join(`,`)),this.container}},si=class{#e=null;#t=this.#P.bind(this);#n=this.#R.bind(this);#r=this.#L.bind(this);#i=this.#I.bind(this);#a=null;#o=null;#s=null;#c=null;#l=null;#u=null;#d=null;#f=!1;#p=null;#m=null;#h=null;#g=null;#_=null;#v=null;#y=null;#b=null;#x=null;#S=null;#C=!1;#w=null;#T=null;constructor({container:e,color:t,elements:n,titleObj:r,modificationDate:i,contentsObj:a,richText:o,parent:s,rect:c,parentRect:l,open:u,commentManager:d=null}){this.#o=e,this.#x=r,this.#s=a,this.#b=o,this.#u=s,this.#a=t,this.#y=c,this.#d=l,this.#l=n,this.#e=d,this.#w=n[0],this.#c=ke.toDateObject(i),this.trigger=n.flatMap(e=>e.getElementsToTriggerPopup()),d||(this.#E(),this.#o.hidden=!0,u&&this.#I())}#E(){if(this.#m)return;this.#m=new AbortController;let{signal:e}=this.#m;for(let t of this.trigger)t.addEventListener(`click`,this.#i,{signal:e}),t.addEventListener(`pointerenter`,this.#r,{signal:e}),t.addEventListener(`pointerleave`,this.#n,{signal:e}),t.classList.add(`popupTriggerArea`);for(let t of this.#l)t.container?.addEventListener(`keydown`,this.#t,{signal:e})}#D(){let e=this.#l.find(e=>e.hasCommentButton);e&&(this.#_=e._normalizePoint(e.commentButtonPosition))}renderCommentButton(){if(this.#g){this.#g.parentNode||this.#w.container.after(this.#g);return}if(this.#_||this.#D(),!this.#_)return;let{signal:e}=this.#m=new AbortController,t=this.#w.hasOwnCommentButton,n=()=>{this.#e.toggleCommentPopup(this,!0,void 0,!t)},r=()=>{this.#e.toggleCommentPopup(this,!1,!0,!t)},i=()=>{this.#e.toggleCommentPopup(this,!1,!1)};if(t){this.#g=this.#w.container;for(let t of this.trigger)t.ariaHasPopup=`dialog`,t.ariaControls=`commentPopup`,t.addEventListener(`keydown`,this.#t,{signal:e}),t.addEventListener(`click`,n,{signal:e}),t.addEventListener(`pointerenter`,r,{signal:e}),t.addEventListener(`pointerleave`,i,{signal:e}),t.classList.add(`popupTriggerArea`)}else{let t=this.#g=document.createElement(`button`);t.className=`annotationCommentButton`;let a=this.#w.container;t.style.zIndex=parseInt(a.style.zIndex,10)+1,t.tabIndex=0,t.ariaHasPopup=`dialog`,t.ariaControls=`commentPopup`,t.setAttribute(`data-l10n-id`,`pdfjs-show-comment-button`),this.#k(),this.#O(),t.addEventListener(`keydown`,this.#t,{signal:e}),t.addEventListener(`click`,n,{signal:e}),t.addEventListener(`pointerenter`,r,{signal:e}),t.addEventListener(`pointerleave`,i,{signal:e}),a.after(t)}}#O(){if(this.#w.extraPopupElement&&!this.#w.editor)return;this.#g||this.renderCommentButton();let[e,t]=this.#_,{style:n}=this.#g;n.left=`calc(${e}%)`,n.top=`calc(${t}% - var(--comment-button-dim))`}#k(){this.#w.extraPopupElement||(this.#g||this.renderCommentButton(),this.#g.style.backgroundColor=this.commentButtonColor||``)}get commentButtonColor(){let{color:e,opacity:t}=this.#w.commentData;return e?this.#u._commentManager.makeCommentColor(e,t):null}focusCommentButton(){setTimeout(()=>{this.#g?.focus()},0)}getData(){let{richText:e,color:t,opacity:n,creationDate:r,modificationDate:i}=this.#w.commentData;return{contentsObj:{str:this.comment},richText:e,color:t,opacity:n,creationDate:r,modificationDate:i}}get elementBeforePopup(){return this.#g}get comment(){return this.#T||=this.#w.commentText,this.#T}set comment(e){e!==this.comment&&(this.#w.commentText=this.#T=e)}focus(){this.#w.container?.focus()}get parentBoundingClientRect(){return this.#w.layer.getBoundingClientRect()}setCommentButtonStates({selected:e,hasPopup:t}){this.#g&&(this.#g.classList.toggle(`selected`,e),this.#g.ariaExpanded=t)}setSelectedCommentButton(e){this.#g.classList.toggle(`selected`,e)}get commentPopupPosition(){if(this.#v)return this.#v;let{x:e,y:t,height:n}=this.#g.getBoundingClientRect(),{x:r,y:i,width:a,height:o}=this.#w.layer.getBoundingClientRect();return[(e-r)/a,(t+n-i)/o]}set commentPopupPosition(e){this.#v=e}hasDefaultPopupPosition(){return this.#v===null}get commentButtonPosition(){return this.#_}get commentButtonWidth(){return this.#g.getBoundingClientRect().width/this.parentBoundingClientRect.width}editComment(e){let[t,n]=this.#v||this.commentButtonPosition.map(e=>e/100),r=this.parentBoundingClientRect,{x:i,y:a,width:o,height:s}=r;this.#e.showDialog(null,this,i+t*o,a+n*s,{...e,parentDimensions:r})}render(){if(this.#p)return;let e=this.#p=document.createElement(`div`);if(e.className=`popup`,this.#a){let t=e.style.outlineColor=I.makeHexColor(...this.#a);e.style.backgroundColor=`color-mix(in srgb, ${t} 30%, white)`}let t=document.createElement(`span`);if(t.className=`header`,this.#x?.str){let e=document.createElement(`span`);e.className=`title`,t.append(e),{dir:e.dir,str:e.textContent}=this.#x}if(e.append(t),this.#c){let e=document.createElement(`time`);e.className=`popupDate`,e.setAttribute(`data-l10n-id`,`pdfjs-annotation-date-time-string`),e.setAttribute(`data-l10n-args`,JSON.stringify({dateObj:this.#c.valueOf()})),e.dateTime=this.#c.toISOString(),t.append(e)}Ge({html:this.#A||this.#s.str,dir:this.#s?.dir,className:`popupContent`},e),this.#o.append(e)}get#A(){let e=this.#b,t=this.#s;return e?.str&&(!t?.str||t.str===e.str)&&this.#b.html||null}get#j(){return this.#A?.attributes?.style?.fontSize||0}get#M(){return this.#A?.attributes?.style?.color||null}#N(e){let t=[],n={str:e,html:{name:`div`,attributes:{dir:`auto`},children:[{name:`p`,children:t}]}},r={style:{color:this.#M,fontSize:this.#j?`calc(${this.#j}px * var(--total-scale-factor))`:``}};for(let n of e.split(` -`))t.push({name:`span`,value:n,attributes:r});return n}#P(e){e.altKey||e.shiftKey||e.ctrlKey||e.metaKey||(e.key===`Enter`||e.key===`Escape`&&this.#f)&&this.#I()}updateEdited({rect:e,popup:t,deleted:n}){if(this.#e){n?(this.remove(),this.#T=null):t&&(t.deleted?this.remove():(this.#k(),this.#T=t.text)),e&&(this.#_=null,this.#D(),this.#O());return}if(n||t?.deleted){this.remove();return}this.#E(),this.#S||={contentsObj:this.#s,richText:this.#b},e&&(this.#h=null),t&&t.text&&(this.#b=this.#N(t.text),this.#c=ke.toDateObject(t.date),this.#s=null),this.#p?.remove(),this.#p=null}resetEdited(){this.#S&&({contentsObj:this.#s,richText:this.#b}=this.#S,this.#S=null,this.#p?.remove(),this.#p=null,this.#h=null)}remove(){if(this.#m?.abort(),this.#m=null,this.#p?.remove(),this.#p=null,this.#C=!1,this.#f=!1,this.#g?.remove(),this.#g=null,this.trigger)for(let e of this.trigger)e.classList.remove(`popupTriggerArea`)}#F(){if(this.#h!==null)return;let{page:{view:e},viewport:{rawDims:{pageWidth:t,pageHeight:n,pageX:r,pageY:i}}}=this.#u,a=!!this.#d,o=a?this.#d:this.#y;for(let e of this.#l)if(!o||I.intersect(e.data.rect,o)!==null){o=e.data.rect,a=!0;break}let s=I.normalizeRect([o[0],e[3]-o[1]+e[1],o[2],e[3]-o[3]+e[1]]),c=a?o[2]-o[0]+5:0,l=s[0]+c,u=s[1];this.#h=[100*(l-r)/t,100*(u-i)/n];let{style:d}=this.#o;d.left=`${this.#h[0]}%`,d.top=`${this.#h[1]}%`}#I(){if(this.#e){this.#e.toggleCommentPopup(this,!1);return}this.#f=!this.#f,this.#f?(this.#L(),this.#o.addEventListener(`click`,this.#i),this.#o.addEventListener(`keydown`,this.#t)):(this.#R(),this.#o.removeEventListener(`click`,this.#i),this.#o.removeEventListener(`keydown`,this.#t))}#L(){this.#p||this.render(),this.isVisible?this.#f&&this.#o.classList.add(`focused`):(this.#F(),this.#o.hidden=!1,this.#o.style.zIndex=parseInt(this.#o.style.zIndex,10)+1e3)}#R(){this.#o.classList.remove(`focused`),!(this.#f||!this.isVisible)&&(this.#o.hidden=!0,this.#o.style.zIndex=parseInt(this.#o.style.zIndex,10)-1e3)}forceHide(){this.#C=this.isVisible,this.#C&&(this.#o.hidden=!0)}maybeShow(){this.#e||(this.#E(),this.#C&&(this.#p||this.#L(),this.#C=!1,this.#o.hidden=!1))}get isVisible(){return!this.#e&&this.#o.hidden===!1}},ci=class extends Q{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.textContent=e.data.textContent,this.textPosition=e.data.textPosition,this.annotationEditorType=d.FREETEXT}render(){if(this.container.classList.add(`freeTextAnnotation`),this.textContent){let e=this.contentElement=document.createElement(`div`);e.classList.add(`annotationTextContent`),e.setAttribute(`role`,`comment`);for(let t of this.textContent){let n=document.createElement(`span`);n.textContent=t,e.append(n)}this.container.append(e)}return!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this._editOnDoubleClick(),this.container}},li=class extends Q{#e=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add(`lineAnnotation`);let{data:e,width:t,height:n}=this,r=this.svgFactory.create(t,n,!0),i=this.#e=this.svgFactory.createElement(`svg:line`);return i.setAttribute(`x1`,e.rect[2]-e.lineCoordinates[0]),i.setAttribute(`y1`,e.rect[3]-e.lineCoordinates[1]),i.setAttribute(`x2`,e.rect[2]-e.lineCoordinates[2]),i.setAttribute(`y2`,e.rect[3]-e.lineCoordinates[3]),i.setAttribute(`stroke-width`,e.borderStyle.width||1),i.setAttribute(`stroke`,`transparent`),i.setAttribute(`fill`,`transparent`),r.append(i),this.container.append(r),!e.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#e}addHighlightArea(){this.container.classList.add(`highlightArea`)}},ui=class extends Q{#e=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add(`squareAnnotation`);let{data:e,width:t,height:n}=this,r=this.svgFactory.create(t,n,!0),i=e.borderStyle.width,a=this.#e=this.svgFactory.createElement(`svg:rect`);return a.setAttribute(`x`,i/2),a.setAttribute(`y`,i/2),a.setAttribute(`width`,t-i),a.setAttribute(`height`,n-i),a.setAttribute(`stroke-width`,i||1),a.setAttribute(`stroke`,`transparent`),a.setAttribute(`fill`,`transparent`),r.append(a),this.container.append(r),!e.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#e}addHighlightArea(){this.container.classList.add(`highlightArea`)}},di=class extends Q{#e=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add(`circleAnnotation`);let{data:e,width:t,height:n}=this,r=this.svgFactory.create(t,n,!0),i=e.borderStyle.width,a=this.#e=this.svgFactory.createElement(`svg:ellipse`);return a.setAttribute(`cx`,t/2),a.setAttribute(`cy`,n/2),a.setAttribute(`rx`,t/2-i/2),a.setAttribute(`ry`,n/2-i/2),a.setAttribute(`stroke-width`,i||1),a.setAttribute(`stroke`,`transparent`),a.setAttribute(`fill`,`transparent`),r.append(a),this.container.append(r),!e.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return this.#e}addHighlightArea(){this.container.classList.add(`highlightArea`)}},fi=class extends Q{#e=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.containerClassName=`polylineAnnotation`,this.svgElementName=`svg:polyline`}render(){this.container.classList.add(this.containerClassName);let{data:{rect:e,vertices:t,borderStyle:n,popupRef:r},width:i,height:a}=this;if(!t)return this.container;let o=this.svgFactory.create(i,a,!0),s=[];for(let n=0,r=t.length;n=0&&i.setAttribute(`stroke-width`,t||1),n)for(let e=0,t=this.#t.length;e{e.key===`Enter`&&(r?e.metaKey:e.ctrlKey)&&this.#t()}),!t.popupRef&&this.hasPopupData?(this.hasOwnCommentButton=!0,this._createPopup()):n.classList.add(`popupTriggerArea`),e.append(n),e}getElementsToTriggerPopup(){return this.#e}addHighlightArea(){this.container.classList.add(`highlightArea`)}async#t(){let{fileId:e,filename:t,content:n}=this,r=await this.linkService.getAttachmentContent(e)||n;r&&this.downloadManager?.openOrDownloadData(r,t)}},Si=class extends Q{#e=new AbortController;#t=null;#n=null;constructor(e){super(e,{isRenderable:!!e.data.richMedia})}render(){this.container.classList.add(`mediaAnnotation`);let{filename:e}=this.data.richMedia,t=document.createElement(`button`);return t.className=`mediaPlayButton`,t.type=`button`,t.title=t.ariaLabel=e,t.addEventListener(`click`,()=>this.#r(t),{signal:this.#e.signal}),this.container.append(t),this.container}async#r(e){let{fileId:t,filename:n,contentType:r}=this.data.richMedia;e.disabled=!0;let i;try{i=await this.linkService.getAttachmentContent(t)}catch{return}finally{e.disabled=!1}if(!i||!e.isConnected)return;let{signal:a}=this.#e,o=URL.createObjectURL(new Blob([i],{type:r}));this.#t=o;let s=r.startsWith(`audio/`),c=document.createElement(s?`audio`:`video`);if(this.#n=c,c.className=`mediaContent`,this._setBackgroundColor(c),c.src=o,c.title=n,c.controls=!0,c.autoplay=!0,c.tabIndex=0,s){let e=!1,t=!1,n=()=>{c.controls=e||t};this.container.addEventListener(`pointerenter`,()=>{e=!0,n()},{signal:a}),this.container.addEventListener(`pointerleave`,()=>{e=!1,n()},{signal:a}),this.container.addEventListener(`focusin`,()=>{t=!0,n()},{signal:a}),this.container.addEventListener(`focusout`,()=>{t=!1,n()},{signal:a})}c.addEventListener(`emptied`,()=>this.#i(o),{once:!0,signal:a}),e.replaceWith(c),c.play().catch(()=>{})}#i(e=this.#t){e&&e===this.#t&&(URL.revokeObjectURL(e),this.#t=null)}destroy(){this.#e.abort(),this.#n&&=(this.#n.pause(),this.#n.removeAttribute(`src`),this.#n.load(),null),this.#i()}},Ci=class e{#e=null;#t=null;#n=null;#r=new Map;#i=null;#a=null;#o=[];#s=!1;zIndex=0;constructor({div:e,accessibilityManager:t,annotationCanvasMap:n,annotationEditorUIManager:r,page:i,viewport:a,structTreeLayer:o,commentManager:s,linkService:c,annotationStorage:l}){this.div=e,this.#e=t,this.#t=n,this.#i=o||null,this.#a=c||null,this.#n=l||new dt,this.page=i,this.viewport=a,this._annotationEditorUIManager=r,this._commentManager=s||null}hasEditableAnnotations(){return this.#r.size>0}async render(e){let{annotations:t,optionalContentConfig:n}=e,r=this.div;Ne(r,this.viewport);let i=new Map,a=[],o={data:null,layer:r,linkService:this.#a,downloadManager:e.downloadManager,imageResourcesPath:e.imageResourcesPath||``,renderForms:e.renderForms!==!1,svgFactory:new Gr,annotationStorage:this.#n,enableComment:e.enableComment===!0,enableScripting:e.enableScripting===!0,hasJSActions:e.hasJSActions,fieldObjects:e.fieldObjects,parent:this,elements:null};for(let e of t){if(e.noHTML)continue;let t=e.annotationType===g.POPUP;if(t){let t=i.get(e.id);if(!t)continue;if(!this._commentManager){a.push(e);continue}o.elements=t}else if(e.rect[2]===e.rect[0]||e.rect[3]===e.rect[1])continue;o.data=e;let r=Yr.create(o);if(!r.isRenderable)continue;t||(this.#o.push(r),e.popupRef&&i.getOrInsertComputed(e.popupRef,me).push(r));let s=r.render();e.hidden&&(s.style.visibility=`hidden`),r.updateOC(n),r._isEditable&&(this.#r.set(r.data.id,r),this._annotationEditorUIManager?.renderAnnotationElement(r))}await this.#c();for(let e of a){let t=o.elements=i.get(e.id);o.data=e;let n=Yr.create(o);if(!n.isRenderable)continue;let r=n.render();n.contentElement.id=`${l}${e.id}`,e.hidden&&(r.style.visibility=`hidden`),t.at(-1).container.after(r)}this.#l()}async#c(){if(this.#o.length===0)return;this.div.replaceChildren();let e=[];if(!this.#s){this.#s=!0;for(let{contentElement:t,data:{id:n}}of this.#o){let r=t.id=`${l}${n}`;e.push(this.#i?.getAriaAttributes(r).then(e=>{if(e)for(let[n,r]of e)t.setAttribute(n,r)}))}}this.#o.sort(({data:{rect:[e,t,n,r]}},{data:{rect:[i,a,o,s]}})=>{if(e===n&&t===r)return 1;if(i===o&&a===s)return-1;let c=r,l=t,u=(t+r)/2,d=s,f=a,p=(a+s)/2;return u>=d&&p<=l?-1:p>=c&&u<=f?1:(e+n)/2-(i+o)/2});let t=document.createDocumentFragment();for(let e of this.#o)t.append(e.container),this._commentManager?(e.extraPopupElement?.popup||e.popup)?.renderCommentButton():e.extraPopupElement&&t.append(e.extraPopupElement.render());if(this.div.append(t),await Promise.all(e),this.#e)for(let e of this.#o)this.#e.addPointerInTextLayer(e.contentElement,!1)}async addLinkAnnotations(t){let n={data:null,layer:this.div,linkService:this.#a,svgFactory:new Gr,parent:this};for(let r of t){r.borderStyle||=e._defaultBorderStyle,n.data=r;let t=Yr.create(n);t.isRenderable&&(t.render(),t.contentElement.id=`${l}${r.id}`,this.#o.push(t))}await this.#c()}update({viewport:e,optionalContentConfig:t}){let n=this.div;this.viewport=e,Ne(n,{rotation:e.rotation});for(let e of this.#o)e.updateOC(t);this.#l(),n.hidden=!1}destroy(){for(let e of this.#o)e.destroy?.(),this.#e?.removePointerInTextLayer(e.contentElement);this.#o.length=0,this.#r.clear(),this.div.replaceChildren()}#l(){if(!this.#t)return;let e=this.div;for(let[t,n]of this.#t){let r=e.querySelector(`[data-annotation-id="${t}"]`);if(!r)continue;if(Array.isArray(n))for(let e of n)e.className=`annotationContent`,e.ariaHidden=!0;else n.className=`annotationContent`,n.ariaHidden=!0;let i=[];for(let e of r.children)e.nodeName===`CANVAS`&&i.push(e);for(let e of i)e.remove();let a=Array.isArray(n)?n[0]:n,{firstChild:o}=r;if(o?o.classList.contains(`annotationContent`)?o.after(a):o.before(a):r.append(a),Array.isArray(n)){let e=a;for(let t=1,r=n.length;tt.data.id===e);if(t<0)return;let[n]=this.#o.splice(t,1);this.#e?.removePointerInTextLayer(n.contentElement)}updateFakeAnnotations(e){if(e.length!==0){for(let t of e)t.updateFakeAnnotationElement(this);this.#c()}}togglePointerEvents(e=!1){this.div.classList.toggle(`disabled`,!e)}static get _defaultBorderStyle(){return M(this,`_defaultBorderStyle`,Object.freeze({width:1,rawWidth:1,style:_.SOLID,dashArray:[3],horizontalCornerRadius:0,verticalCornerRadius:0}))}},wi=/\r\n?|\n/g,Ti=class e extends U{#e=``;#t=`${this.id}-editor`;#n=null;#r;_colorPicker=null;static _freeTextDefaultContent=``;static _internalPadding=0;static _defaultColor=null;static _defaultFontSize=10;static get _keyboardManager(){let t=e.prototype,n=e=>e.isEmpty(),r=nt.TRANSLATE_SMALL,i=nt.TRANSLATE_BIG;return M(this,`_keyboardManager`,new et([[[`ctrl+s`,`mac+meta+s`,`ctrl+p`,`mac+meta+p`],t.commitOrRemove,{bubbles:!0}],[[`ctrl+Enter`,`mac+meta+Enter`],t.commitOrRemove],[[`Escape`],t.commitOrRemove],[[`ArrowLeft`],t._translateEmpty,{args:[-r,0],checker:n}],[[`ctrl+ArrowLeft`,`mac+shift+ArrowLeft`],t._translateEmpty,{args:[-i,0],checker:n}],[[`ArrowRight`],t._translateEmpty,{args:[r,0],checker:n}],[[`ctrl+ArrowRight`,`mac+shift+ArrowRight`],t._translateEmpty,{args:[i,0],checker:n}],[[`ArrowUp`],t._translateEmpty,{args:[0,-r],checker:n}],[[`ctrl+ArrowUp`,`mac+shift+ArrowUp`],t._translateEmpty,{args:[0,-i],checker:n}],[[`ArrowDown`],t._translateEmpty,{args:[0,r],checker:n}],[[`ctrl+ArrowDown`,`mac+shift+ArrowDown`],t._translateEmpty,{args:[0,i],checker:n}]]))}static _type=`freetext`;static _editorType=d.FREETEXT;constructor(t){super({...t,name:`freeTextEditor`}),this.color=t.color||e._defaultColor||U._defaultLineColor,this.#r=t.fontSize||e._defaultFontSize,this.annotationElementId||this._uiManager.a11yAlert(U._l10nAlert.freetext),this.canAddComment=!1}static initialize(e,t){U.initialize(e,t);let n=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(n.getPropertyValue(`--freetext-padding`))}static updateDefaultParams(t,n){switch(t){case f.FREETEXT_SIZE:e._defaultFontSize=n;break;case f.FREETEXT_COLOR:e._defaultColor=n;break}}updateParams(e,t){switch(e){case f.FREETEXT_SIZE:this.#i(t);break;case f.FREETEXT_COLOR:this.#a(t);break}}static get defaultPropertiesToUpdate(){return[[f.FREETEXT_SIZE,e._defaultFontSize],[f.FREETEXT_COLOR,e._defaultColor||U._defaultLineColor]]}get propertiesToUpdate(){return[[f.FREETEXT_SIZE,this.#r],[f.FREETEXT_COLOR,this.color]]}get toolbarButtons(){return this._colorPicker||=new Br(this),[[`colorPicker`,this._colorPicker]]}get colorType(){return f.FREETEXT_COLOR}#i(e){let t=e=>{this.editorDiv.style.fontSize=`calc(${e}px * var(--total-scale-factor))`,this.translate(0,-(e-this.#r)*this.parentScale),this.#r=e,this.#s()},n=this.#r;this.addCommands({cmd:t.bind(this,e),undo:t.bind(this,n),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:f.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})}onUpdatedColor(){this.editorDiv.style.color=this.color,this._colorPicker?.update(this.color),super.onUpdatedColor()}#a(e){let t=e=>{this.color=e,this.onUpdatedColor()},n=this.color;this.addCommands({cmd:t.bind(this,e),undo:t.bind(this,n),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:f.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})}_translateEmpty(e,t){this._uiManager.translateSelectedEditors(e,t,!0)}getInitialTranslation(){let t=this.parentScale;return[-e._internalPadding*t,-(e._internalPadding+this.#r)*t]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(!super.enableEditMode())return!1;this.overlayDiv.classList.remove(`enabled`),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute(`aria-activedescendant`),this.#n=new AbortController;let e=this._uiManager.combinedSignal(this.#n);return this.editorDiv.addEventListener(`keydown`,this.editorDivKeydown.bind(this),{signal:e}),this.editorDiv.addEventListener(`focus`,this.editorDivFocus.bind(this),{signal:e}),this.editorDiv.addEventListener(`blur`,this.editorDivBlur.bind(this),{signal:e}),this.editorDiv.addEventListener(`input`,this.editorDivInput.bind(this),{signal:e}),this.editorDiv.addEventListener(`paste`,this.editorDivPaste.bind(this),{signal:e}),!0}disableEditMode(){return super.disableEditMode()?(this.overlayDiv.classList.add(`enabled`),this.editorDiv.contentEditable=!1,this.div.setAttribute(`aria-activedescendant`,this.#t),this._isDraggable=!0,this.#n?.abort(),this.#n=null,this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add(`freetextEditing`),!0):!1}focusin(e){this._focusEventsAllowed&&(super.focusin(e),e.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(e){this.width||(this.enableEditMode(),e&&this.editorDiv.focus(),this._initialOptions?.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||this.editorDiv.innerText.trim()===``}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add(`freetextEditing`)),super.remove()}#o(){let t=[];this.editorDiv.normalize();let n=null;for(let r of this.editorDiv.childNodes)n?.nodeType===Node.TEXT_NODE&&r.nodeName===`BR`||(t.push(e.#c(r)),n=r);return t.join(` -`)}#s(){let[e,t]=this.parentDimensions,n;if(this.isAttachedToDOM)n=this.div.getBoundingClientRect();else{let{currentLayer:e,div:t}=this,r=t.style.display,i=t.classList.contains(`hidden`);t.classList.remove(`hidden`),t.style.display=`hidden`,e.div.append(this.div),n=t.getBoundingClientRect(),t.remove(),t.style.display=r,t.classList.toggle(`hidden`,i)}this.rotation%180==this.parentRotation%180?(this.width=n.width/e,this.height=n.height/t):(this.width=n.height/e,this.height=n.width/t),this.fixAndSetPosition()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();let e=this.#e,t=this.#e=this.#o().trimEnd();if(e===t)return;let n=e=>{if(this.#e=e,!e){this.remove();return}this.#l(),this._uiManager.rebuild(this),this.#s()};this.addCommands({cmd:()=>{n(t)},undo:()=>{n(e)},mustExec:!1}),this.#s()}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}keydown(e){e.target===this.div&&e.key===`Enter`&&(this.enterInEditMode(),e.preventDefault())}editorDivKeydown(t){e._keyboardManager.exec(this,t)}editorDivFocus(e){this.isEditing=!0}editorDivBlur(e){this.isEditing=!1}editorDivInput(e){this.parent.div.classList.toggle(`freetextEditing`,this.isEmpty())}disableEditing(){this.editorDiv.setAttribute(`role`,`comment`),this.editorDiv.removeAttribute(`aria-multiline`)}enableEditing(){this.editorDiv.setAttribute(`role`,`textbox`),this.editorDiv.setAttribute(`aria-multiline`,!0)}get canChangeContent(){return!0}render(){if(this.div)return this.div;let e,t;(this._isCopy||this.annotationElementId)&&(e=this.x,t=this.y),super.render(),this.editorDiv=document.createElement(`div`),this.editorDiv.className=`internal`,this.editorDiv.setAttribute(`id`,this.#t),this.editorDiv.setAttribute(`data-l10n-id`,`pdfjs-free-text2`),this.editorDiv.setAttribute(`data-l10n-attrs`,`default-content`),this.enableEditing(),this.editorDiv.contentEditable=!0;let{style:n}=this.editorDiv;if(n.fontSize=`calc(${this.#r}px * var(--total-scale-factor))`,n.color=this.color,this.div.append(this.editorDiv),this.overlayDiv=document.createElement(`div`),this.overlayDiv.classList.add(`overlay`,`enabled`),this.div.append(this.overlayDiv),this._isCopy||this.annotationElementId){let[n,r]=this.parentDimensions;if(this.annotationElementId){let{position:i}=this._initialData,[a,o]=this.getInitialTranslation();[a,o]=this.pageTranslationToScreen(a,o);let[s,c]=this.pageDimensions,[l,u]=this.pageTranslation,d,f;switch(this.rotation){case 0:d=e+(i[0]-l)/s,f=t+this.height-(i[1]-u)/c;break;case 90:d=e+(i[0]-l)/s,f=t-(i[1]-u)/c,[a,o]=[o,-a];break;case 180:d=e-this.width+(i[0]-l)/s,f=t-(i[1]-u)/c,[a,o]=[-a,-o];break;case 270:d=e+(i[0]-l-this.height*c)/s,f=t+(i[1]-u-this.width*s)/c,[a,o]=[-o,a];break}this.setAt(d*n,f*r,a,o)}else this._moveAfterPaste(e,t);this.#l(),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}static#c(e){return(e.nodeType===Node.TEXT_NODE?e.nodeValue:e.innerText).replaceAll(wi,``)}editorDivPaste(t){let n=t.clipboardData||window.clipboardData,{types:r}=n;if(r.length===1&&r[0]===`text/plain`)return;t.preventDefault();let i=e.#d(n.getData(`text`)||``).replaceAll(wi,` -`);if(!i)return;let a=window.getSelection();if(!a.rangeCount)return;this.editorDiv.normalize(),a.deleteFromDocument();let o=a.getRangeAt(0);if(!i.includes(` -`)){o.insertNode(document.createTextNode(i)),this.editorDiv.normalize(),a.collapseToStart();return}let{startContainer:s,startOffset:c}=o,l=[],u=[];if(s.nodeType===Node.TEXT_NODE){let t=s.parentElement;if(u.push(s.nodeValue.slice(c).replaceAll(wi,``)),t!==this.editorDiv){let n=l;for(let r of this.editorDiv.childNodes){if(r===t){n=u;continue}n.push(e.#c(r))}}l.push(s.nodeValue.slice(0,c).replaceAll(wi,``))}else if(s===this.editorDiv){let t=l,n=0;for(let r of this.editorDiv.childNodes)n++===c&&(t=u),t.push(e.#c(r))}this.#e=`${l.join(` -`)}${i}${u.join(` -`)}`,this.#l();let d=new Range,f=Math.sumPrecise(l.map(e=>e.length));for(let{firstChild:e}of this.editorDiv.childNodes)if(e.nodeType===Node.TEXT_NODE){let t=e.nodeValue.length;if(f<=t){d.setStart(e,f),d.setEnd(e,f);break}f-=t}a.removeAllRanges(),a.addRange(d)}#l(){if(this.editorDiv.replaceChildren(),this.#e)for(let e of this.#e.split(` -`)){let t=document.createElement(`div`);t.append(e?document.createTextNode(e):document.createElement(`br`)),this.editorDiv.append(t)}}#u(){return this.#e.replaceAll(`\xA0`,` `)}static#d(e){return e.replaceAll(` `,`\xA0`)}get contentDiv(){return this.editorDiv}getPDFRect(){let t=e._internalPadding*this.parentScale;return this.getRect(t,t)}static async deserialize(t,n,r){let i=null;if(t instanceof ci){let{data:{defaultAppearanceData:{fontSize:e,fontColor:n},rect:r,rotation:a,id:o,popupRef:s,richText:c,contentsObj:l,creationDate:u,modificationDate:f},textContent:p,textPosition:m,parent:{page:{pageNumber:h}}}=t;if(!p?.length)return null;i=t={annotationType:d.FREETEXT,color:Array.from(n),fontSize:e,value:p.join(` -`),position:m,pageIndex:h-1,rect:r.slice(0),rotation:a,annotationElementId:o,id:o,deleted:!1,popupRef:s,comment:l?.str||null,richText:c,creationDate:u,modificationDate:f}}let a=await super.deserialize(t,n,r);return a.#r=t.fontSize,a.color=I.makeHexColor(...t.color),a.#e=e.#d(t.value),a._initialData=i,t.comment&&a.setCommentData(t),a}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();let t=U._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.color),n=Object.assign(super.serialize(e),{color:t,fontSize:this.#r,value:this.#u()});return this.addComment(n),e?(n.isCopy=!0,n):this.annotationElementId&&!this.#f(n)?null:(n.id=this.annotationElementId,n)}#f(e){let{value:t,fontSize:n,color:r,pageIndex:i}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||e.value!==t||e.fontSize!==n||e.color.some((e,t)=>e!==r[t])||e.pageIndex!==i}renderAnnotationElement(e){let t=super.renderAnnotationElement(e);if(!t)return null;let{style:n}=t;n.fontSize=`calc(${this.#r}px * var(--total-scale-factor))`,n.color=this.color,t.replaceChildren();for(let e of this.#e.split(` -`)){let n=document.createElement(`div`);n.append(e?document.createTextNode(e):document.createElement(`br`)),t.append(n)}return e.updateEdited({rect:this.getPDFRect(),popup:this._uiManager.hasCommentManager()||this.hasEditedComment?this.comment:{text:this.#e}}),t}resetAnnotationElement(e){super.resetAnnotationElement(e),e.resetEdited()}},$=class{static PRECISION=1e-4;toSVGPath(){D("Abstract method `toSVGPath` must be implemented.")}get box(){D("Abstract getter `box` must be implemented.")}serialize(e,t){D("Abstract method `serialize` must be implemented.")}static _rescale(e,t,n,r,i,a){a||=new Float32Array(e.length);for(let o=0,s=e.length;o=6;e-=6)isNaN(t[e])?n.push(`L${t[e+4]} ${t[e+5]}`):n.push(`C${t[e]} ${t[e+1]} ${t[e+2]} ${t[e+3]} ${t[e+4]} ${t[e+5]}`);return this.#v(n),n.join(` `)}#_(){let[e,t,n,r]=this.#e,[i,a,o,s]=this.#g();return`M${(this.#a[2]-e)/n} ${(this.#a[3]-t)/r} L${(this.#a[4]-e)/n} ${(this.#a[5]-t)/r} L${i} ${a} L${o} ${s} L${(this.#a[16]-e)/n} ${(this.#a[17]-t)/r} L${(this.#a[14]-e)/n} ${(this.#a[15]-t)/r} Z`}#v(e){let t=this.#t;e.push(`L${t[4]} ${t[5]} Z`)}#y(e){let[t,n,r,i]=this.#e,a=this.#a.subarray(4,6),o=this.#a.subarray(16,18),[s,c,l,u]=this.#g();e.push(`L${(a[0]-t)/r} ${(a[1]-n)/i} L${s} ${c} L${l} ${u} L${(o[0]-t)/r} ${(o[1]-n)/i}`)}newFreeDrawOutline(e,t,n,r,i,a){return new Di(e,t,n,r,i,a)}getOutlines(){let e=this.#i,t=this.#t,n=this.#a,[r,i,a,o]=this.#e,s=new Float32Array((this.#f?.length??0)+2);for(let e=0,t=s.length-2;e=6;e-=6)for(let n=0;n<6;n+=2){if(isNaN(t[e+n])){c[l]=c[l+1]=NaN,l+=2;continue}c[l]=t[e+n],c[l+1]=t[e+n+1],l+=2}return this.#x(c,l),this.newFreeDrawOutline(c,s,this.#e,this.#u,this.#n,this.#r)}#b(e){let t=this.#a,[n,r,i,a]=this.#e,[o,s,c,l]=this.#g(),u=new Float32Array(36);return u.set([NaN,NaN,NaN,NaN,(t[2]-n)/i,(t[3]-r)/a,NaN,NaN,NaN,NaN,(t[4]-n)/i,(t[5]-r)/a,NaN,NaN,NaN,NaN,o,s,NaN,NaN,NaN,NaN,c,l,NaN,NaN,NaN,NaN,(t[16]-n)/i,(t[17]-r)/a,NaN,NaN,NaN,NaN,(t[14]-n)/i,(t[15]-r)/a],0),this.newFreeDrawOutline(u,e,this.#e,this.#u,this.#n,this.#r)}#x(e,t){let n=this.#t;return e.set([NaN,NaN,NaN,NaN,n[4],n[5]],t),t+=6}#S(e,t){let n=this.#a.subarray(4,6),r=this.#a.subarray(16,18),[i,a,o,s]=this.#e,[c,l,u,d]=this.#g();return e.set([NaN,NaN,NaN,NaN,(n[0]-i)/o,(n[1]-a)/s,NaN,NaN,NaN,NaN,c,l,NaN,NaN,NaN,NaN,u,d,NaN,NaN,NaN,NaN,(r[0]-i)/o,(r[1]-a)/s],t),t+=24}},Di=class extends ${#e;#t=new Float32Array(4);#n;#r;#i;#a;#o;constructor(e,t,n,r,i,a){super(),this.#o=e,this.#i=t,this.#e=n,this.#a=r,this.#n=i,this.#r=a,this.firstPoint=[NaN,NaN],this.lastPoint=[NaN,NaN],this.#s(a);let[o,s,c,l]=this.#t;for(let t=0,n=e.length;tp?(o=f,s=p):s===p&&(o=u(o,f)),ld[1]?(o=d[0],s=d[1]):s===d[1]&&(o=u(o,d[0])),le[0]-t[0]||e[1]-t[1]||e[2]-t[2]);let e=[];for(let t of this.#r)t[3]?(e.push(...this.#l(t)),this.#s(t)):(this.#c(t),e.push(...this.#l(t)));return this.#a(e)}#a(e){let t=[],n=new Set;for(let n of e){let[e,r,i]=n;t.push([e,r,n],[e,i,n])}t.sort((e,t)=>e[1]-t[1]||e[0]-t[0]);for(let e=0,r=t.length;e0;){let e=n.values().next().value,[t,a,o,s,c]=e;n.delete(e);let l=t,u=a;for(i=[t,o],r.push(i);;){let e;if(n.has(s))e=s;else if(n.has(c))e=c;else break;n.delete(e),[t,a,o,s,c]=e,l!==t&&(i.push(l,u,t,u===a?a:o),l=t),u=u===a?o:a}i.push(l,u)}return new ki(r,this.#e,this.#t,this.#n)}#o(e){let t=this.#i,n=0,r=t.length-1;for(;n<=r;){let i=n+r>>1,a=t[i][0];if(a===e)return i;a=0;r--){let[n,i]=this.#i[r];if(n!==e)break;if(n===e&&i===t){this.#i.splice(r,1);return}}}#l(e){let[t,n,r]=e,i=[[t,n,r]],a=this.#o(r);for(let e=0;e=n){if(s>r)i[e][1]=r;else{if(a===1)return[];i.splice(e,1),e--,a--}continue}i[e][2]=n,s>r&&i.push([t,r,s])}}}return i}},ki=class extends ${#e;#t;constructor(e,t,n,r){super(),this.#t=e,this.#e=t,this.firstPoint=n,this.lastPoint=r}toSVGPath(){let e=[];for(let t of this.#t){let[n,r]=t;e.push(`M${n} ${r}`);for(let i=2;i-1?(this.#d=!0,this.#y(t),this.#w()):this.#n&&(this.#e=t.anchorNode,this.#t=t.anchorOffset,this.#o=t.focusNode,this.#s=t.focusOffset,this.#v(),this.#w(),this.rotate(this.rotation)),this.annotationElementId||this._uiManager.a11yAlert(U._l10nAlert.highlight)}get telemetryInitialData(){return{action:`added`,type:this.#d?`free_highlight`:`highlight`,color:this._uiManager.getNonHCMColorName(this.color),thickness:this.#g,methodOfCreation:this.#_}}get telemetryFinalData(){return{type:`highlight`,color:this._uiManager.getNonHCMColorName(this.color)}}static computeTelemetryFinalData(e){return{numberOfColors:e.get(`color`).size}}#v(){let e=new Oi(this.#n,.001);this.#l=e.getOutlines(),[this.x,this.y,this.width,this.height]=this.#l.box;let t=new Oi(this.#n,.0025,.001,this._uiManager.direction===`ltr`);this.#a=t.getOutlines();let{firstPoint:n}=this.#l;this.#f=[(n[0]-this.x)/this.width,(n[1]-this.y)/this.height];let{lastPoint:r}=this.#a;this.#p=[(r[0]-this.x)/this.width,(r[1]-this.y)/this.height]}#y({highlightOutlines:t,highlightId:n,clipPathId:r}){if(this.#l=t,this.#a=t.getNewOutline(this.#g/2+1.5,.0025),n>=0)this.#u=n,this.#r=r,this.parent.drawLayer.finalizeDraw(n,{bbox:t.box,path:{d:t.toSVGPath()}}),this.#m=this.parent.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:!0},bbox:this.#a.box,path:{d:this.#a.toSVGPath()}},!0);else if(this.parent){let n=this.parent.viewport.rotation;this.parent.drawLayer.updateProperties(this.#u,{bbox:e.#T(this.#l.box,(n-this.rotation+360)%360),path:{d:t.toSVGPath()}}),this.parent.drawLayer.updateProperties(this.#m,{bbox:e.#T(this.#a.box,n),path:{d:this.#a.toSVGPath()}})}let[i,a,o,s]=t.box;switch(this.rotation){case 0:this.x=i,this.y=a,this.width=o,this.height=s;break;case 90:{let[e,t]=this.parentDimensions;this.x=a,this.y=1-i,this.width=o*t/e,this.height=s*e/t;break}case 180:this.x=1-i,this.y=1-a,this.width=o,this.height=s;break;case 270:{let[e,t]=this.parentDimensions;this.x=1-a,this.y=i,this.width=o*t/e,this.height=s*e/t;break}}let{firstPoint:c}=t;this.#f=[(c[0]-i)/o,(c[1]-a)/s];let{lastPoint:l}=this.#a;this.#p=[(l[0]-i)/o,(l[1]-a)/s]}static initialize(t,n){U.initialize(t,n),e._defaultColor||=n.highlightColors?.values().next().value||`#fff066`}static updateDefaultParams(t,n){switch(t){case f.HIGHLIGHT_COLOR:e._defaultColor=n;break;case f.HIGHLIGHT_THICKNESS:e._defaultThickness=n;break}}translateInPage(e,t){}get toolbarPosition(){return this.#p}get commentButtonPosition(){return this.#f}updateParams(e,t){switch(e){case f.HIGHLIGHT_COLOR:this.#b(t);break;case f.HIGHLIGHT_THICKNESS:this.#x(t);break}}static get defaultPropertiesToUpdate(){return[[f.HIGHLIGHT_COLOR,e._defaultColor],[f.HIGHLIGHT_THICKNESS,e._defaultThickness]]}get propertiesToUpdate(){return[[f.HIGHLIGHT_COLOR,this.color||e._defaultColor],[f.HIGHLIGHT_THICKNESS,this.#g||e._defaultThickness],[f.HIGHLIGHT_FREE,this.#d]]}onUpdatedColor(){this.parent?.drawLayer.updateProperties(this.#u,{root:{fill:this.color,"fill-opacity":this.opacity}}),this.#i?.updateColor(this.color),super.onUpdatedColor()}#b(t){let n=(e,t)=>{this.color=e,this.opacity=t,this.onUpdatedColor()},r=this.color,i=this.opacity;this.addCommands({cmd:n.bind(this,t,e._defaultOpacity),undo:n.bind(this,r,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:f.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:`color_changed`,color:this._uiManager.getNonHCMColorName(t)},!0)}#x(e){let t=this.#g,n=e=>{this.#g=e,this.#S(e)};this.addCommands({cmd:n.bind(this,e),undo:n.bind(this,t),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:f.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:`thickness_changed`,thickness:e},!0)}get toolbarButtons(){return this._uiManager.highlightColors?[[`colorPicker`,this.#i=new zr({editor:this})]]:super.toolbarButtons}disableEditing(){super.disableEditing(),this.div.classList.toggle(`disabled`,!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle(`disabled`,!1)}fixAndSetPosition(){return super.fixAndSetPosition(this.#O())}getBaseTranslation(){return[0,0]}getRect(e,t){return super.getRect(e,t,this.#O())}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),e&&this.div.focus()}remove(){this.#C(),this._reportTelemetry({action:`deleted`}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#w(),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){let t=!1;this.parent&&!e?this.#C():e&&(this.#w(e),t=!this.parent&&this.div?.classList.contains(`selectedEditor`)),super.setParent(e),this.show(this._isVisible),t&&this.select()}#S(e){this.#d&&(this.#y({highlightOutlines:this.#l.getNewOutline(e/2)}),this.fixAndSetPosition(),this.setDims())}#C(){this.#u===null||!this.parent||(this.parent.drawLayer.remove(this.#u),this.#u=null,this.parent.drawLayer.remove(this.#m),this.#m=null)}#w(e=this.parent){this.#u===null&&({id:this.#u,clipPathId:this.#r}=e.drawLayer.draw({bbox:this.#l.box,root:{viewBox:`0 0 1 1`,fill:this.color,"fill-opacity":this.opacity},rootClass:{highlight:!0,free:this.#d},path:{d:this.#l.toSVGPath()}},!1,!0),this.#m=e.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:this.#d},bbox:this.#a.box,path:{d:this.#a.toSVGPath()}},this.#d),this.#c&&(this.#c.style.clipPath=this.#r))}static#T([e,t,n,r],i){switch(i){case 90:return[1-t-r,e,r,n];case 180:return[1-e-n,1-t-r,n,r];case 270:return[t,1-e-n,r,n]}return[e,t,n,r]}rotate(t){let{drawLayer:n}=this.parent,r;this.#d?(t=(t-this.rotation+360)%360,r=e.#T(this.#l.box,t)):r=e.#T([this.x,this.y,this.width,this.height],t),n.updateProperties(this.#u,{bbox:r,root:{"data-main-rotation":t}}),n.updateProperties(this.#m,{bbox:e.#T(this.#a.box,t),root:{"data-main-rotation":t}})}render(){if(this.div)return this.div;let e=super.render();this.#h&&(e.setAttribute(`aria-label`,this.#h),e.setAttribute(`role`,`mark`)),this.#d?e.classList.add(`free`):this.div.addEventListener(`keydown`,this.#E.bind(this),{signal:this._uiManager._signal});let t=this.#c=document.createElement(`div`);return e.append(t),t.setAttribute(`aria-hidden`,`true`),t.className=`internal`,t.style.clipPath=this.#r,this.setDims(),Xe(this,this.#c,[`pointerover`,`pointerleave`]),this.enableEditing(),e}pointerover(){this.isSelected||this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!0}})}pointerleave(){this.isSelected||this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!1}})}#E(t){e._keyboardManager.exec(this,t)}_moveCaret(e){switch(this.parent.unselect(this),e){case 0:case 2:this.#D(!0);break;case 1:case 3:this.#D(!1);break}}#D(e){if(!this.#e)return;let t=window.getSelection();e?t.setPosition(this.#e,this.#t):t.setPosition(this.#o,this.#s)}select(){super.select(),this.#m&&this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!1,selected:!0}})}unselect(){super.unselect(),this.#m&&(this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{selected:!1}}),this.#d||this.#D(!1))}get _mustFixPosition(){return!this.#d}show(e=this._isVisible){super.show(e),this.parent&&(this.parent.drawLayer.updateProperties(this.#u,{rootClass:{hidden:!e}}),this.parent.drawLayer.updateProperties(this.#m,{rootClass:{hidden:!e}}))}#O(){return this.#d?this.rotation:0}#k(){if(this.#d)return null;let[e,t]=this.pageDimensions,[n,r]=this.pageTranslation,i=this.#n,a=new Float32Array(i.length*8),o=0;for(let{x:s,y:c,width:l,height:u}of i){let i=s*e+n,d=(1-c)*t+r;a[o]=a[o+4]=i,a[o+1]=a[o+3]=d,a[o+2]=a[o+6]=i+l*e,a[o+5]=a[o+7]=d-u*t,o+=8}return a}#A(e){return this.#l.serialize(e,this.#O())}static startHighlighting(e,t,{target:n,x:r,y:i}){let{x:a,y:o,width:s,height:c}=n.getBoundingClientRect(),l=new AbortController,u=e.combinedSignal(l),d=t=>{l.abort(),this.#M(e,t)};window.addEventListener(`blur`,d,{signal:u}),window.addEventListener(`pointerup`,d,{signal:u}),window.addEventListener(`pointerdown`,z,{capture:!0,passive:!1,signal:u}),window.addEventListener(`contextmenu`,R,{signal:u}),n.addEventListener(`pointermove`,this.#j.bind(this,e),{signal:u}),this._freeHighlight=new Ai({x:r,y:i},[a,o,s,c],e.scale,this._defaultThickness/2,t,.001),{id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=e.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:`0 0 1 1`,fill:this._defaultColor,"fill-opacity":this._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:this._freeHighlight.toSVGPath()}},!0,!0)}static#j(e,t){this._freeHighlight.add(t)&&e.drawLayer.updateProperties(this._freeHighlightId,{path:{d:this._freeHighlight.toSVGPath()}})}static#M(e,t){this._freeHighlight.isEmpty()?e.drawLayer.remove(this._freeHighlightId):e.createAndAddNewEditor(t,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:`main_toolbar`}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=``}static async deserialize(e,t,n){let r=null;if(e instanceof gi){let{data:{quadPoints:t,rect:n,rotation:i,id:a,color:o,opacity:s,popupRef:c,richText:l,contentsObj:u,creationDate:f,modificationDate:p},parent:{page:{pageNumber:m}}}=e;r=e={annotationType:d.HIGHLIGHT,color:Array.from(o),opacity:s,quadPoints:t,boxes:null,pageIndex:m-1,rect:n.slice(0),rotation:i,annotationElementId:a,id:a,deleted:!1,popupRef:c,richText:l,comment:u?.str||null,creationDate:f,modificationDate:p}}else if(e instanceof hi){let{data:{inkLists:t,rect:n,rotation:i,id:a,color:o,borderStyle:{rawWidth:s},popupRef:c,richText:l,contentsObj:u,creationDate:f,modificationDate:p},parent:{page:{pageNumber:m}}}=e;r=e={annotationType:d.HIGHLIGHT,color:Array.from(o),thickness:s,inkLists:t,boxes:null,pageIndex:m-1,rect:n.slice(0),rotation:i,annotationElementId:a,id:a,deleted:!1,popupRef:c,richText:l,comment:u?.str||null,creationDate:f,modificationDate:p}}let{color:i,quadPoints:a,inkLists:o,outlines:s,opacity:c}=e,l=await super.deserialize(e,t,n);l.color=I.makeHexColor(...i),l.opacity=c||1,o&&(l.#g=e.thickness),l._initialData=r,e.comment&&l.setCommentData(e);let[u,f]=l.pageDimensions,[p,m]=l.pageTranslation;if(a){let e=l.#n=[];for(let t=0;te!==t[n])}renderAnnotationElement(e){return this.deleted?(e.hide(),null):(e.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}static canCreateNewEmptyEditor(){return!1}},Ni=class{#e=Object.create(null);updateProperty(e,t){this[e]=t,this.updateSVGProperty(e,t)}updateProperties(e){if(e)for(let[t,n]of Object.entries(e))t.startsWith(`_`)||this.updateProperty(t,n)}updateSVGProperty(e,t){this.#e[e]=t}toSVGProperties(){let e=this.#e;return this.#e=Object.create(null),{root:e}}reset(){this.#e=Object.create(null)}updateAll(e=this){this.updateProperties(e)}clone(){D(`Not implemented`)}},Pi=class e extends U{#e=null;#t;_colorPicker=null;_drawId=null;static _currentDrawId=-1;static _currentParent=null;static#n=null;static#r=null;static#i=null;static _INNER_MARGIN=3;constructor(e){super(e),this.#t=e.mustBeCommitted||!1,this._addOutlines(e)}onUpdatedColor(){this._colorPicker?.update(this.color),super.onUpdatedColor()}onUpdatedOpacity(){this._colorPicker?.updateOpacity?.(this.opacity)}_addOutlines(e){e.drawOutlines&&(this.#a(e),this.#c())}#a({drawOutlines:e,drawId:t,drawingOptions:n}){this.#e=e,this._drawingOptions||=n,this.annotationElementId||this._uiManager.a11yAlert(U._l10nAlert[this.editorType]),t>=0?(this._drawId=t,this.parent.drawLayer.finalizeDraw(t,e.defaultProperties)):this._drawId=this.#o(e,this.parent),this.#d(e.box)}#o(t,n){let{id:r}=n.drawLayer.draw(e._mergeSVGProperties(this._drawingOptions.toSVGProperties(),t.defaultSVGProperties),!1,!1);return r}static _mergeSVGProperties(e,t){let n=new Set(Object.keys(e));for(let[r,i]of Object.entries(t))n.has(r)?Object.assign(e[r],i):e[r]=i;return e}static getDefaultDrawingOptions(e){D(`Not implemented`)}static get typesMap(){D(`Not implemented`)}static get isDrawer(){return!0}static get supportMultipleDrawings(){return!1}static updateDefaultParams(t,n){let r=this.typesMap.get(t);r&&this._defaultDrawingOptions.updateProperty(r,n),this._currentParent&&(e.#n.updateProperty(r,n),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(e,t){let n=this.constructor.typesMap.get(e);n&&this._updateProperty(e,n,t)}static get defaultPropertiesToUpdate(){let e=[],t=this._defaultDrawingOptions;for(let[n,r]of this.typesMap)e.push([n,t[r]]);return e}get propertiesToUpdate(){let e=[],{_drawingOptions:t}=this;for(let[n,r]of this.constructor.typesMap)e.push([n,t[r]]);return e}_updateProperty(e,t,n){let r=this._drawingOptions,i=r[t],a=n=>{r.updateProperty(t,n);let i=this.#e.updateProperty(t,n);i&&this.#d(i),this.parent?.drawLayer.updateProperties(this._drawId,r.toSVGProperties()),e===this.colorType?this.onUpdatedColor():e===this.opacityType&&this.onUpdatedOpacity()};this.addCommands({cmd:a.bind(this,n),undo:a.bind(this,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:e,overwriteIfSameType:!0,keepUndo:!0})}_updateColorAndOpacity(e,t){let n=this.constructor.typesMap.get(this.colorType),r=this.constructor.typesMap.get(this.opacityType),i=this._drawingOptions,a=i[n],o=i[r],s=(e,t)=>{i.updateProperty(n,e),i.updateProperty(r,t),this.#e.updateProperty(n,e),this.#e.updateProperty(r,t),this.parent?.drawLayer.updateProperties(this._drawId,i.toSVGProperties()),this.onUpdatedColor(),this.onUpdatedOpacity()};this.addCommands({cmd:s.bind(this,e,t),undo:s.bind(this,a,o),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:f.INK_COLOR_AND_OPACITY,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathResizingSVGProperties(this.#u()),{bbox:this.#f()}))}_onResized(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathResizedSVGProperties(this.#u()),{bbox:this.#f()}))}_onTranslating(e,t){this.parent?.drawLayer.updateProperties(this._drawId,{bbox:this.#f()})}_onTranslated(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathTranslatedSVGProperties(this.#u(),this.parentDimensions),{bbox:this.#f()}))}_onStartDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}commit(){super.commit(),this.disableEditMode(),this.disableEditing()}disableEditing(){super.disableEditing(),this.div.classList.toggle(`disabled`,!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle(`disabled`,!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,this.#t&&(this.#t=!1,this.commit(),this.parent.setSelected(this),e&&this.isOnScreen&&this.div.focus())}remove(){this.#s(),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#c(),this.#d(this.#e.box),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){let t=!1;this.parent&&!e?(this._uiManager.removeShouldRescale(this),this.#s()):e&&(this._uiManager.addShouldRescale(this),this.#c(e),t=!this.parent&&this.div?.classList.contains(`selectedEditor`)),super.setParent(e),t&&this.select()}#s(){this._drawId===null||!this.parent||(this.parent.drawLayer.remove(this._drawId),this._drawId=null,this._drawingOptions.reset())}#c(e=this.parent){if(!(this._drawId!==null&&this.parent===e)){if(this._drawId!==null){this.parent.drawLayer.updateParent(this._drawId,e.drawLayer);return}this._drawingOptions.updateAll(),this._drawId=this.#o(this.#e,e)}}#l([e,t,n,r]){let{parentDimensions:[i,a],rotation:o}=this;switch(o){case 90:return[t,1-e,a/i*n,i/a*r];case 180:return[1-e,1-t,n,r];case 270:return[1-t,e,a/i*n,i/a*r];default:return[e,t,n,r]}}#u(){let{x:e,y:t,width:n,height:r,parentDimensions:[i,a],rotation:o}=this;switch(o){case 90:return[1-t,e,i/a*n,a/i*r];case 180:return[1-e,1-t,n,r];case 270:return[t,1-e,i/a*n,a/i*r];default:return[e,t,n,r]}}#d(e){[this.x,this.y,this.width,this.height]=this.#l(e),this.div&&(this.fixAndSetPosition(),this.setDims()),this._onResized()}#f(){let{x:e,y:t,width:n,height:r,rotation:i,parentRotation:a,parentDimensions:[o,s]}=this;switch((i*4+a)/90){case 1:return[1-t-r,e,r,n];case 2:return[1-e-n,1-t-r,n,r];case 3:return[t,1-e-n,r,n];case 4:return[e,t-o/s*n,s/o*r,o/s*n];case 5:return[1-t,e,o/s*n,s/o*r];case 6:return[1-e-s/o*r,1-t,s/o*r,o/s*n];case 7:return[t-o/s*n,1-e-s/o*r,o/s*n,s/o*r];case 8:return[e-n,t-r,n,r];case 9:return[1-t,e-n,r,n];case 10:return[1-e,1-t,n,r];case 11:return[t-r,1-e,r,n];case 12:return[e-s/o*r,t,s/o*r,o/s*n];case 13:return[1-t-o/s*n,e-s/o*r,o/s*n,s/o*r];case 14:return[1-e,1-t-o/s*n,s/o*r,o/s*n];case 15:return[t,1-e,o/s*n,s/o*r];default:return[e,t,n,r]}}rotate(){this.parent&&this.parent.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties({bbox:this.#f()},this.#e.updateRotation((this.parentRotation-this.rotation+360)%360)))}onScaleChanging(){this.parent&&this.#d(this.#e.updateParentDimensions(this.parentDimensions,this.parent.scale))}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;let e,t;this._isCopy&&(e=this.x,t=this.y);let n=super.render();n.classList.add(`draw`);let r=document.createElement(`div`);return n.append(r),r.setAttribute(`aria-hidden`,`true`),r.className=`internal`,this.setDims(),this._uiManager.addShouldRescale(this),this.disableEditing(),this._isCopy&&this._moveAfterPaste(e,t),n}static createDrawerInstance(e,t,n,r,i){D(`Not implemented`)}static startDrawing(t,n,r,i){let{target:a,offsetX:o,offsetY:s,pointerId:c,pointerType:l}=i;if(H.isInitializedAndDifferentPointerType(l))return;let{viewport:{rotation:u}}=t,{width:d,height:f}=a.getBoundingClientRect(),p=e.#r=new AbortController,m=t.combinedSignal(p);if(H.setPointer(l,c),window.addEventListener(`pointerup`,e=>{H.isSamePointerIdOrRemove(e.pointerId)&&this._endDraw(e)},{signal:m}),window.addEventListener(`pointercancel`,e=>{H.isSamePointerIdOrRemove(e.pointerId)&&this._currentParent.endDrawingSession()},{signal:m}),window.addEventListener(`pointerdown`,t=>{H.isSamePointerType(t.pointerType)&&(H.initializeAndAddPointerId(t.pointerId),e.#n.isCancellable()&&(e.#n.removeLastElement(),e.#n.isEmpty()?this._currentParent.endDrawingSession(!0):this._endDraw(null)))},{capture:!0,passive:!1,signal:m}),window.addEventListener(`contextmenu`,R,{signal:m}),a.addEventListener(`pointermove`,this._drawMove.bind(this),{signal:m}),a.addEventListener(`touchmove`,e=>{H.isSameTimeStamp(e.timeStamp)&&z(e)},{signal:m}),t.toggleDrawing(),n._editorUndoBar?.hide(),e.#n){t.drawLayer.updateProperties(this._currentDrawId,e.#n.startNew(o,s,d,f,u));return}n.updateUIForDefaultProperties(this),e.#n=this.createDrawerInstance(o,s,d,f,u),e.#i=this.getDefaultDrawingOptions(),this._currentParent=t,{id:this._currentDrawId}=t.drawLayer.draw(this._mergeSVGProperties(e.#i.toSVGProperties(),e.#n.defaultSVGProperties),!0,!1)}static _drawMove(t){if(H.isSameTimeStamp(t.timeStamp),!e.#n)return;let{offsetX:n,offsetY:r,pointerId:i}=t;if(H.isSamePointerId(i)){if(H.isUsingMultiplePointers()){this._endDraw(t);return}this._currentParent.drawLayer.updateProperties(this._currentDrawId,e.#n.add(n,r)),H.setTimeStamp(t.timeStamp),z(t)}}static _cleanup(t){t&&(this._currentDrawId=-1,this._currentParent=null,e.#n=null,e.#i=null,H.clearTimeStamp()),e.#r&&(e.#r.abort(),e.#r=null,H.clearPointerIds())}static _endDraw(t){let n=this._currentParent;if(n){if(n.toggleDrawing(!0),this._cleanup(!1),t?.target===n.div&&n.drawLayer.updateProperties(this._currentDrawId,e.#n.end(t.offsetX,t.offsetY)),this.supportMultipleDrawings){let t=e.#n,r=this._currentDrawId,i=t.getLastElement();n.addCommands({cmd:()=>{n.drawLayer.updateProperties(r,t.setLastElement(i))},undo:()=>{n.drawLayer.updateProperties(r,t.removeLastElement())},mustExec:!1,type:f.DRAW_STEP});return}this.endDrawing(!1)}}static endDrawing(t){let n=this._currentParent;if(!n)return null;if(n.toggleDrawing(!0),n.cleanUndoStack(f.DRAW_STEP),!e.#n.isEmpty()){let{pageDimensions:[r,i],scale:a}=n,o=n.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,drawOutlines:e.#n.getOutlines(r*a,i*a,a,this._INNER_MARGIN),drawingOptions:e.#i,mustBeCommitted:!t});return this._cleanup(!0),o}return n.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(e){}static deserializeDraw(e,t,n,r,i,a){D(`Not implemented`)}static async deserialize(e,t,n){let{rawDims:{pageWidth:r,pageHeight:i,pageX:a,pageY:o}}=t.viewport,s=this.deserializeDraw(a,o,r,i,this._INNER_MARGIN,e),c=await super.deserialize(e,t,n);return c.createDrawingOptions(e),c.#a({drawOutlines:s}),c.#c(),c.onScaleChanging(),c.rotate(),c}serializeDraw(e){let[t,n]=this.pageTranslation,[r,i]=this.pageDimensions;return this.#e.serialize([t,n,r,i],e)}renderAnnotationElement(e){return e.updateEdited({rect:this.getPDFRect()}),null}static canCreateNewEmptyEditor(){return!1}},Fi=class{#e=new Float64Array(6);#t;#n;#r;#i;#a;#o=``;#s=0;#c=new Ii;#l;#u;constructor(e,t,n,r,i,a){this.#l=n,this.#u=r,this.#r=i,this.#i=a,[e,t]=this.#d(e,t);let o=this.#t=[NaN,NaN,NaN,NaN,e,t];this.#a=[e,t],this.#n=[{line:o,points:this.#a}],this.#e.set(o,0)}updateProperty(e,t){e===`stroke-width`&&(this.#i=t)}#d(e,t){return $._normalizePoint(e,t,this.#l,this.#u,this.#r)}isEmpty(){return!this.#n?.length}isCancellable(){return this.#a.length<=10}add(e,t){[e,t]=this.#d(e,t);let[n,r,i,a]=this.#e.subarray(2,6),o=e-i,s=t-a;return Math.hypot(this.#l*o,this.#u*s)<=2?null:(this.#a.push(e,t),isNaN(n)?(this.#e.set([i,a,e,t],2),this.#t.push(NaN,NaN,NaN,NaN,e,t),{path:{d:this.toSVGPath()}}):(isNaN(this.#e[0])&&this.#t.splice(6,6),this.#e.set([n,r,i,a,e,t],0),this.#t.push(...$.createBezierPoints(n,r,i,a,e,t)),{path:{d:this.toSVGPath()}}))}end(e,t){return this.add(e,t)||(this.#a.length===2?{path:{d:this.toSVGPath()}}:null)}startNew(e,t,n,r,i){this.#l=n,this.#u=r,this.#r=i,[e,t]=this.#d(e,t);let a=this.#t=[NaN,NaN,NaN,NaN,e,t];this.#a=[e,t];let o=this.#n.at(-1);return o&&(o.line=new Float32Array(o.line),o.points=new Float32Array(o.points)),this.#n.push({line:a,points:this.#a}),this.#e.set(a,0),this.#s=0,this.toSVGPath(),null}getLastElement(){return this.#n.at(-1)}setLastElement(e){return this.#n?(this.#n.push(e),this.#t=e.line,this.#a=e.points,this.#s=0,{path:{d:this.toSVGPath()}}):this.#c.setLastElement(e)}removeLastElement(){if(!this.#n)return this.#c.removeLastElement();this.#n.pop(),this.#o=``;for(let e=0,t=this.#n.length;ee??NaN),u,d,f,p),points:m(o[e].map(e=>e??NaN),u,d,f,p)});let h=new this.prototype.constructor;return h.build(l,n,r,1,s,c,i),h}#l(e=this.#c){let t=this.#n+e/2*this.#o;return this.#s%180==0?[t/this.#i,t/this.#a]:[t/this.#a,t/this.#i]}#u(){let[e,t,n,r]=this.#e,[i,a]=this.#l(0);return[e+i,t+a,n-2*i,r-2*a]}#d(){let e=this.#e=r.slice();for(let{line:t}of this.#r){if(t.length<=12){for(let n=4,r=t.length;ne!==t[n])||e.thickness!==n||e.opacity!==r||e.pageIndex!==i}renderAnnotationElement(e){if(this.deleted)return e.hide(),null;let{points:t,rect:n}=this.serializeDraw(!1);return e.updateEdited({rect:n,thickness:this._drawingOptions[`stroke-width`],points:t,popup:this.comment}),null}},zi=class extends Ii{toSVGPath(){let e=super.toSVGPath();return e.endsWith(`Z`)||(e+=`Z`),e}},Bi=8,Vi=3,Hi=class{static#e={maxDim:512,sigmaSFactor:.02,sigmaR:25,kernelSize:16};static#t(e,t,n,r){return n-=e,r-=t,n===0?r>0?0:4:n===1?r+6:2-r}static#n=new Int32Array([0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1]);static#r(e,t,n,r,i,a,o){let s=this.#t(n,r,i,a);for(let i=0;i<8;i++){let a=(-i+s-o+16)%8,c=this.#n[2*a],l=this.#n[2*a+1];if(e[(n+c)*t+(r+l)]!==0)return a}return-1}static#i(e,t,n,r,i,a,o){let s=this.#t(n,r,i,a);for(let i=0;i<8;i++){let a=(i+s+o+16)%8,c=this.#n[2*a],l=this.#n[2*a+1];if(e[(n+c)*t+(r+l)]!==0)return a}return-1}static#a(e,t,n,r){let i=e.length,a=new Int32Array(i);for(let t=0;t=1&&a[r+1]===0)o+=1,u+=1,i>1&&(s=i);else{i!==1&&(s=Math.abs(i));continue}let d=[n,e],f=u===n+1,p={isHole:f,points:d,id:o,parent:0};c.push(p);let m;for(let e of c)if(e.id===s){m=e;break}m?m.isHole?p.parent=f?m.parent:s:p.parent=f?s:m.parent:p.parent=f?s:0;let h=this.#r(a,t,e,n,l,u,0);if(h===-1){a[r]=-o,a[r]!==1&&(s=Math.abs(a[r]));continue}let g=this.#n[2*h],_=this.#n[2*h+1],v=e+g,y=n+_;l=v,u=y;let b=e,x=n;for(;;){let i=this.#i(a,t,b,x,l,u,1);g=this.#n[2*i],_=this.#n[2*i+1];let c=b+g,f=x+_;d.push(f,c);let p=b*t+x;if(a[p+1]===0?a[p]=-o:a[p]===1&&(a[p]=o),c===e&&f===n&&b===v&&x===y){a[r]!==1&&(s=Math.abs(a[r]));break}else l=b,u=x,b=c,x=f}}}return c}static#o(e,t,n,r){if(n-t<=4){for(let i=t;ib&&(x=r,b=t)}b>(c*y)**2?(this.#o(e,t,x+2,r),this.#o(e,x,n,r)):r.push(i,a)}static#s(e){let t=[],n=e.length;return this.#o(e,0,n,t),t.push(e[n-2],e[n-1]),t.length<=4?null:t}static#c(e,t,n,r,i,a){let o=new Float32Array(a**2),s=-2*r**2,c=a>>1;for(let e=0;e=n))for(let n=0;n=t)continue;let p=e[f*t+r],h=o[s*a+n]*l[Math.abs(p-u)];d+=p*h,m+=h}}let h=f[s]=Math.round(d/m);p[h]++}return[f,p]}static#l(e){let t=new Uint32Array(256);for(let n of e)t[n]++;return t}static#u(e){let t=e.length,n=new Uint8ClampedArray(t>>2),r=-1/0,i=1/0;for(let t=0,a=n.length;te!==0),a=i,o=i;for(t=i;t<256;t++){let i=e[t];i>n&&(t-a>r&&(r=t-a,o=t-1),n=i,a=t)}for(t=o-1;t>=0&&!(e[t]>e[t+1]);t--);return t}static#f(e){let t=e,{width:n,height:r}=e,{maxDim:i}=this.#e,a=n,o=r;if(n>i||r>i){let s=n,c=r,l=Math.log2(Math.max(n,r)/i),u=Math.floor(l);l=l===u?u-1:u;for(let n=0;n=-128&&o<=127?Int8Array:a>=-32768&&o<=32767?Int16Array:Int32Array;let l=e.length,u=Bi+Vi*l,d=new Uint32Array(u),f=0;d[f++]=u*Uint32Array.BYTES_PER_ELEMENT+(s-2*l)*c.BYTES_PER_ELEMENT,d[f++]=0,d[f++]=r,d[f++]=i,d[f++]=+!t,d[f++]=Math.max(0,Math.floor(n??0)),d[f++]=l,d[f++]=c.BYTES_PER_ELEMENT;for(let t of e)d[f++]=t.length-2,d[f++]=t[0],d[f++]=t[1];let p=new CompressionStream(`deflate-raw`),m=p.writable.getWriter();await m.ready,m.write(d);let h=c.prototype.constructor;for(let t of e){let e=new h(t.length-2);for(let n=2,r=t.length;n{await i.ready,await i.close()}).catch(()=>{});let a=null,o=0;for await(let e of n)a||=new Uint8Array(new Uint32Array(e.buffer,0,4)[0]),a.set(e,o),o+=e.length;let s=new Uint32Array(a.buffer,0,a.length>>2),c=s[1];if(c!==0)throw Error(`Invalid version: ${c}`);let l=s[2],u=s[3],d=s[4]===0,f=s[5],p=s[6],m=s[7],h=[],g=(Bi+Vi*p)*Uint32Array.BYTES_PER_ELEMENT,_;switch(m){case Int8Array.BYTES_PER_ELEMENT:_=new Int8Array(a.buffer,g);break;case Int16Array.BYTES_PER_ELEMENT:_=new Int16Array(a.buffer,g);break;case Int32Array.BYTES_PER_ELEMENT:_=new Int32Array(a.buffer,g);break}o=0;for(let e=0;e{t?.updateEditSignatureButton(e)}))}getSignaturePreview(){let{newCurves:e,areContours:t,thickness:n,width:r,height:i}=this.#n,a=Math.max(r,i);return{areContours:t,outline:Hi.processDrawnLines({lines:{curves:e.map(e=>({points:e})),thickness:n,width:r,height:i},pageWidth:a,pageHeight:a,rotation:0,innerMargin:0,mustSmooth:!1,areContours:t}).outline}}get toolbarButtons(){return this._uiManager.signatureManager?[[`editSignature`,this._uiManager.signatureManager]]:super.toolbarButtons}addSignature(t,n,r,i){let{x:a,y:o}=this,{outline:s}=this.#n=t;this.#e=s instanceof zi,this.description=r;let c;this.#e?c=e.getDefaultDrawingOptions():(c=e._defaultDrawnSignatureOptions.clone(),c.updateProperties({"stroke-width":s.thickness})),this._addOutlines({drawOutlines:s,drawingOptions:c});let[,l]=this.pageDimensions,u=n/l;u=u>=1?.5:u,this.width*=u/this.height,this.width>=1&&(u*=.9/this.width,this.width=.9),this.height=u,this.setDims(),this.x=a,this.y=o,this.center(),this._onResized(),this.onScaleChanging(),this.rotate(),this._uiManager.addToAnnotationStorage(this),this.setUuid(i),this._reportTelemetry({action:`pdfjs.signature.inserted`,data:{hasBeenSaved:!!i,hasDescription:!!r}}),this.div.hidden=!1}getFromImage(t){let{rawDims:{pageWidth:n,pageHeight:r},rotation:i}=this.parent.viewport;return Hi.process(t,n,r,i,e._INNER_MARGIN)}getFromText(t,n){let{rawDims:{pageWidth:r,pageHeight:i},rotation:a}=this.parent.viewport;return Hi.extractContoursFromText(t,n,r,i,a,e._INNER_MARGIN)}getDrawnSignature(t){let{rawDims:{pageWidth:n,pageHeight:r},rotation:i}=this.parent.viewport;return Hi.processDrawnLines({lines:t,pageWidth:n,pageHeight:r,rotation:i,innerMargin:e._INNER_MARGIN,mustSmooth:!1,areContours:!1})}createDrawingOptions({areContours:t,thickness:n}){t?this._drawingOptions=e.getDefaultDrawingOptions():(this._drawingOptions=e._defaultDrawnSignatureOptions.clone(),this._drawingOptions.updateProperties({"stroke-width":n}))}serialize(e=!1){if(this.isEmpty())return null;let{lines:t,points:n}=this.serializeDraw(e),{_drawingOptions:{"stroke-width":r}}=this,i=Object.assign(super.serialize(e),{isSignature:!0,areContours:this.#e,color:[0,0,0],thickness:this.#e?0:r});return this.addComment(i),e?(i.paths={lines:t,points:n},i.uuid=this.#r,i.isCopy=!0):i.lines=t,this.#t&&(i.accessibilityData={type:`Figure`,alt:this.#t}),i}static deserializeDraw(e,t,n,r,i,a){return a.areContours?zi.deserialize(e,t,n,r,i,a):Ii.deserialize(e,t,n,r,i,a)}static async deserialize(e,t,n){let r=await super.deserialize(e,t,n);return r.#e=e.areContours,r.description=e.accessibilityData?.alt||``,r.#r=e.uuid,r}},Ki=class extends U{#e=null;#t=null;#n=null;#r=null;#i=null;#a=``;#o=null;#s=!1;#c=null;#l=!1;#u=!1;static _type=`stamp`;static _editorType=d.STAMP;constructor(e){super({...e,name:`stampEditor`}),this.#r=e.bitmapUrl,this.#i=e.bitmapFile,this.defaultL10nId=`pdfjs-editor-stamp-editor`}static initialize(e,t){U.initialize(e,t)}static isHandlingMimeForPasting(e){return Fe.includes(e)}static paste(e,t){t.pasteEditor({mode:d.STAMP},{bitmapFile:e.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){return{type:`stamp`,hasAltText:!!this.altTextData?.altText}}static computeTelemetryFinalData(e){let t=e.get(`hasAltText`);return{hasAltText:t.get(!0)??0,hasNoAltText:t.get(!1)??0}}#d(e,t=!1){if(!e){this.remove();return}this.#e=e.bitmap,t||(this.#t=e.id,this.#l=e.isSvg),e.file&&(this.#a=e.file.name),this.#m()}#f(){if(this.#n=null,this._uiManager.enableWaiting(!1),this.#o){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#e){this.addEditToolbar().then(()=>{this._editToolbar.hide(),this._uiManager.editAltText(this,!0)});return}if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#e){this._reportTelemetry({action:`pdfjs.image.image_added`,data:{alt_text_modal:!1,alt_text_type:`empty`}});try{this.mlGuessAltText()}catch{}}this.div.focus()}}async mlGuessAltText(e=null,t=!0){if(this.hasAltTextData())return null;let{mlManager:n}=this._uiManager;if(!n)throw Error(`No ML.`);if(!await n.isEnabledFor(`altText`))throw Error(`ML isn't enabled for alt text.`);let{data:r,width:i,height:a}=e||this.copyCanvas(null,null,!0).imageData,o=await n.guess({name:`altText`,request:{data:r,width:i,height:a,channels:r.length/(i*a)}});if(!o)throw Error(`No response from the AI service.`);if(o.error)throw Error(`Error from the AI service.`);if(o.cancel)return null;if(!o.output)throw Error(`No valid response from the AI service.`);let s=o.output;return await this.setGuessedAltText(s),t&&!this.hasAltTextData()&&(this.altTextData={alt:s,decorative:!1}),s}#p(){if(this.#t){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(this.#t).then(e=>this.#d(e,!0)).finally(()=>this.#f());return}if(this.#r){let e=this.#r;this.#r=null,this._uiManager.enableWaiting(!0),this.#n=this._uiManager.imageManager.getFromUrl(e).then(e=>this.#d(e)).finally(()=>this.#f());return}if(this.#i){let e=this.#i;this.#i=null,this._uiManager.enableWaiting(!0),this.#n=this._uiManager.imageManager.getFromFile(e).then(e=>this.#d(e)).finally(()=>this.#f());return}let e=document.createElement(`input`);e.type=`file`,e.accept=Fe.join(`,`);let t=this._uiManager._signal;this.#n=new Promise(n=>{e.addEventListener(`change`,async()=>{if(!e.files||e.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);let t=await this._uiManager.imageManager.getFromFile(e.files[0]);this._reportTelemetry({action:`pdfjs.image.image_selected`,data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),this.#d(t)}n()},{signal:t}),e.addEventListener(`cancel`,()=>{this.remove(),n()},{signal:t})}).finally(()=>this.#f()),e.click()}remove(){this.#t&&(this.#e=null,this._uiManager.imageManager.deleteId(this.#t),this.#o?.remove(),this.#o=null,this.#c&&=(clearTimeout(this.#c),null)),super.remove()}rebuild(){if(!this.parent){this.#t&&this.#p();return}super.rebuild(),this.div!==null&&(this.#t&&this.#o===null&&this.#p(),this.isAttachedToDOM||this.parent.add(this))}onceAdded(e){this._isDraggable=!0,e&&this.div.focus()}isEmpty(){return!(this.#n||this.#e||this.#r||this.#i||this.#t||this.#s)}get toolbarButtons(){return[[`altText`,this.createAltText()]]}get isResizable(){return!0}render(){if(this.div)return this.div;let e,t;return this._isCopy&&(e=this.x,t=this.y),super.render(),this.div.hidden=!0,this.createAltText(),this.#s||(this.#e?this.#m():this.#p()),this._isCopy&&this._moveAfterPaste(e,t),this._uiManager.addShouldRescale(this),this.div}setCanvas(e,t){let{id:n,bitmap:r}=this._uiManager.imageManager.getFromCanvas(e,t);t.remove(),n&&this._uiManager.imageManager.isValidId(n)&&(this.#t=n,r&&(this.#e=r),this.#s=!1,this.#m())}_onResized(){this.onScaleChanging()}onScaleChanging(){this.parent&&(this.#c!==null&&clearTimeout(this.#c),this.#c=setTimeout(()=>{this.#c=null,this.#g()},200))}#m(){let{div:e}=this,{width:t,height:n}=this.#e,[r,i]=this.pageDimensions,a=.75;if(this.width)t=this.width*r,n=this.height*i;else if(t>a*r||n>a*i){let e=Math.min(a*r/t,a*i/n);t*=e,n*=e}this._uiManager.enableWaiting(!1);let o=this.#o=document.createElement(`canvas`);o.setAttribute(`role`,`img`),this.addContainer(o),this.width=t/r,this.height=n/i,this.setDims(),this._initialOptions?.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(e.hidden=!1),this.#g(),this.#u||=(this.parent.addUndoableEditor(this),!0),this._reportTelemetry({action:`inserted_image`}),this.#a&&this.div.setAttribute(`aria-description`,this.#a),this.annotationElementId||this._uiManager.a11yAlert(U._l10nAlert.stamp)}copyCanvas(e,t,n=!1){e||=224;let{width:r,height:i}=this.#e,a=new Pe,o=this.#e,s=r,c=i,l=null;if(t){if(r>t||i>t){let e=Math.min(t/r,t/i);s=Math.floor(r*e),c=Math.floor(i*e)}l=document.createElement(`canvas`);let e=l.width=Math.ceil(s*a.sx),n=l.height=Math.ceil(c*a.sy);this.#l||(o=this.#h(e,n));let u=l.getContext(`2d`);u.filter=this._uiManager.hcmFilter;let d=`white`,f=`#cfcfd8`;this._uiManager.hcmFilter===`none`?Ie.isDarkMode&&(d=`#8f8f9d`,f=`#42414d`):f=`black`;let p=15*a.sx,m=15*a.sy,h=new OffscreenCanvas(p*2,m*2),g=h.getContext(`2d`);g.fillStyle=d,g.fillRect(0,0,p*2,m*2),g.fillStyle=f,g.fillRect(0,0,p,m),g.fillRect(p,m,p,m),u.fillStyle=u.createPattern(h,`repeat`),u.fillRect(0,0,e,n),u.drawImage(o,0,0,o.width,o.height,0,0,e,n)}let u=null;if(n){let t,n;if(a.symmetric&&o.widthe||i>e){let a=Math.min(e/r,e/i);t=Math.floor(r*a),n=Math.floor(i*a),this.#l||(o=this.#h(t,n))}let s=new OffscreenCanvas(t,n).getContext(`2d`,{willReadFrequently:!0});s.drawImage(o,0,0,o.width,o.height,0,0,t,n),u={width:t,height:n,data:s.getImageData(0,0,t,n).data}}return{canvas:l,width:s,height:c,imageData:u}}#h(e,t){let{width:n,height:r}=this.#e,i=n,a=r,o=this.#e;for(;i>2*e||a>2*t;){let n=i,r=a;i>2*e&&(i=Math.ceil(i/2)),a>2*t&&(a=Math.ceil(a/2));let s=new OffscreenCanvas(i,a);s.getContext(`2d`).drawImage(o,0,0,n,r,0,0,i,a),o=s.transferToImageBitmap()}return o}#g(){let[e,t]=this.parentDimensions,{width:n,height:r}=this,i=new Pe,a=Math.ceil(n*e*i.sx),o=Math.ceil(r*t*i.sy),s=this.#o;if(!s||s.width===a&&s.height===o)return;s.width=a,s.height=o;let c=this.#l?this.#e:this.#h(a,o),l=s.getContext(`2d`);l.filter=this._uiManager.hcmFilter,l.drawImage(c,0,0,c.width,c.height,0,0,a,o)}#_(e){if(e){if(this.#l){let e=this._uiManager.imageManager.getSvgUrl(this.#t);if(e)return e}let e=document.createElement(`canvas`);return{width:e.width,height:e.height}=this.#e,e.getContext(`2d`).drawImage(this.#e,0,0),e.toDataURL()}if(this.#l){let[e,t]=this.pageDimensions,n=Math.round(this.width*e*be.PDF_TO_CSS_UNITS),r=Math.round(this.height*t*be.PDF_TO_CSS_UNITS),i=new OffscreenCanvas(n,r);return i.getContext(`2d`).drawImage(this.#e,0,0,this.#e.width,this.#e.height,0,0,n,r),i.transferToImageBitmap()}return structuredClone(this.#e)}static async deserialize(e,t,n){let r=null,i=!1;if(e instanceof bi){let{data:{rect:a,rotation:o,id:s,structParent:c,popupRef:u,richText:f,contentsObj:p,creationDate:m,modificationDate:h},container:g,parent:{page:{pageNumber:_}},canvas:v}=e,y,b;v?(delete e.canvas,{id:y,bitmap:b}=n.imageManager.getFromCanvas(g.id,v),v.remove()):(i=!0,e._hasNoCanvas=!0);let x=(await t._structTree.getAriaAttributes(`${l}${s}`))?.get(`aria-label`)||``;r=e={annotationType:d.STAMP,bitmapId:y,bitmap:b,pageIndex:_-1,rect:a.slice(0),rotation:o,annotationElementId:s,id:s,deleted:!1,accessibilityData:{decorative:!1,altText:x},isSvg:!1,structParent:c,popupRef:u,richText:f,comment:p?.str||null,creationDate:m,modificationDate:h}}let a=await super.deserialize(e,t,n),{rect:o,bitmap:s,bitmapUrl:c,bitmapId:u,isSvg:f,accessibilityData:p}=e;i?(n.addMissingCanvas(e.id,a),a.#s=!0):u&&n.imageManager.isValidId(u)?(a.#t=u,s&&(a.#e=s)):a.#r=c,a.#l=f;let[m,h]=a.pageDimensions;return a.width=(o[2]-o[0])/m,a.height=(o[3]-o[1])/h,p&&(a.altTextData=p),a._initialData=r,e.comment&&a.setCommentData(e),a.#u=!!r,a}serialize(e=!1,t=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();let n=Object.assign(super.serialize(e),{bitmapId:this.#t,isSvg:this.#l});if(this.addComment(n),e)return n.bitmapUrl=this.#_(!0),n.accessibilityData=this.serializeAltText(!0),n.isCopy=!0,n;let{decorative:r,altText:i}=this.serializeAltText(!1);if(!r&&i&&(n.accessibilityData={type:`Figure`,alt:i}),this.annotationElementId){let e=this.#v(n);return e.isSame?null:(e.isSameAltText?delete n.accessibilityData:n.accessibilityData.structParent=this._initialData.structParent??-1,n.id=this.annotationElementId,delete n.bitmapId,n)}if(t===null)return n;t.stamps||=new Map;let a=this.#l?(n.rect[2]-n.rect[0])*(n.rect[3]-n.rect[1]):null;if(!t.stamps.has(this.#t))t.stamps.set(this.#t,{area:a,serialized:n}),n.bitmap=this.#_(!1);else if(this.#l){let e=t.stamps.get(this.#t);a>e.area&&(e.area=a,e.serialized.bitmap.close(),e.serialized.bitmap=this.#_(!1))}return n}#v(e){let{pageIndex:t,accessibilityData:{altText:n}}=this._initialData,r=e.pageIndex===t,i=(e.accessibilityData?.alt||``)===n;return{isSame:!this.hasEditedComment&&!this._hasBeenMoved&&!this._hasBeenResized&&r&&i,isSameAltText:i}}renderAnnotationElement(e){return this.deleted?(e.hide(),null):(e.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}},qi=class e{#e;#t=!1;#n=null;#r=null;#i=null;#a=new Map;#o=!1;#s=!1;#c=!1;#l=null;#u=null;#d=null;#f=null;#p=null;#m=-1;#h;static _initialized=!1;static#g=new Map([Ti,Ri,Ki,Mi,Gi].map(e=>[e._editorType,e]));constructor({uiManager:t,pageIndex:n,div:r,structTreeLayer:i,accessibilityManager:a,annotationLayer:o,drawLayer:s,textLayer:c,viewport:l,l10n:u}){let d=[...e.#g.values()];if(!e._initialized){e._initialized=!0;for(let e of d)e.initialize(u,t)}t.registerEditorTypes(d),this.#h=t,this.pageIndex=n,this.div=r,this.#e=a,this.#n=o,this.viewport=l,this.#d=c,this.drawLayer=s,this._structTree=i,this.#h.addLayer(this)}get isEmpty(){return this.#a.size===0}get isInvisible(){return this.isEmpty&&this.#h.getMode()===d.NONE}updateToolbar(e){this.#h.updateToolbar(e)}updateMode(t=this.#h.getMode()){switch(this.#S(),t){case d.NONE:this.div.classList.toggle(`nonEditing`,!0),this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case d.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case d.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);let{classList:n}=this.div;if(n.toggle(`nonEditing`,!1),t===d.POPUP)n.toggle(`commentEditing`,!0);else{n.toggle(`commentEditing`,!1);for(let r of e.#g.values())n.toggle(`${r._type}Editing`,t===r._editorType)}this.div.hidden=!1}hasTextLayer(e){return e===this.#d?.div}setEditingState(e){this.#h.setEditingState(e)}addCommands(e){this.#h.addCommands(e)}cleanUndoStack(e){this.#h.cleanUndoStack(e)}toggleDrawing(e=!1){this.div.classList.toggle(`drawing`,!e)}togglePointerEvents(e=!1){this.div.classList.toggle(`disabled`,!e)}toggleAnnotationLayerPointerEvents(e=!1){this.#n?.togglePointerEvents(e)}get#_(){return this.#a.size===0?this.#h.getEditors(this.pageIndex):this.#a.values()}async enable(){this.#c=!0,this.div.tabIndex=0,this.togglePointerEvents(!0),this.div.classList.toggle(`nonEditing`,!1),this.#p?.abort(),this.#p=null;let e=new Set;for(let t of this.#_)t.enableEditing(),t.show(!0),t.annotationElementId&&(this.#h.removeChangedExistingAnnotation(t),e.add(t.annotationElementId));let t=this.#n;if(t)for(let n of t.getEditableAnnotations()){if(n.hide(),this.#h.isDeletedAnnotationElement(n.data.id)||e.has(n.data.id))continue;let t=await this.deserialize(n);t&&(this.addOrRebuild(t),t.enableEditing())}this.#c=!1,this.#h._eventBus.dispatch(`editorsrendered`,{source:this,pageNumber:this.pageIndex+1})}disable(){if(this.#s=!0,this.div.tabIndex=-1,this.togglePointerEvents(!1),this.div.classList.toggle(`nonEditing`,!0),this.#d&&!this.#p){this.#p=new AbortController;let e=this.#h.combinedSignal(this.#p);this.#d.div.addEventListener(`pointerdown`,e=>{let{clientX:t,clientY:n,timeStamp:r}=e;if(r-this.#m>500){this.#m=r;return}this.#m=-1;let{classList:i}=this.div;i.toggle(`getElements`,!0);let a=document.elementsFromPoint(t,n);if(i.toggle(`getElements`,!1),!this.div.contains(a[0]))return;let o,s=RegExp(`^${u}[0-9]+$`);for(let e of a)if(s.test(e.id)){o=e.id;break}if(!o)return;let c=this.#a.get(o);c?.annotationElementId===null&&(z(e),c.dblclick(e))},{signal:e,capture:!0})}let t=this.#n,n=[];if(t){let e=new Map,r=new Map;for(let t of this.#_){if(t.disableEditing(),!t.annotationElementId){n.push(t);continue}if(t.serialize()!==null){e.set(t.annotationElementId,t);continue}else r.set(t.annotationElementId,t);this.getEditableAnnotation(t.annotationElementId)?.show(),t.remove()}for(let n of t.getEditableAnnotations()){let{id:t}=n.data;if(this.#h.isDeletedAnnotationElement(t)){n.updateEdited({deleted:!0});continue}let i=r.get(t);if(i){i.resetAnnotationElement(n),i.show(!1),n.show();continue}i=e.get(t),i&&(this.#h.addChangedExistingAnnotation(i),i.renderAnnotationElement(n)&&i.show(!1)),n.show()}}this.#S(),this.isEmpty&&(this.div.hidden=!0);let{classList:r}=this.div;for(let t of e.#g.values())r.remove(`${t._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),t?.updateFakeAnnotations(n),this.#s=!1}getEditableAnnotation(e){return this.#n?.getEditableAnnotation(e)||null}setActiveEditor(e){this.#h.getActive()!==e&&this.#h.setActiveEditor(e)}enableTextSelection(){if(this.div.tabIndex=-1,this.#d?.div&&!this.#f){this.#f=new AbortController;let e=this.#h.combinedSignal(this.#f);this.#d.div.addEventListener(`pointerdown`,this.#v.bind(this),{signal:e}),this.#d.div.classList.add(`highlighting`)}}disableTextSelection(){this.div.tabIndex=0,this.#d?.div&&this.#f&&(this.#f.abort(),this.#f=null,this.#d.div.classList.remove(`highlighting`))}#v(e){this.#h.unselectAll();let{target:t}=e;if(t===this.#d.div||(t.getAttribute(`role`)===`img`||t.classList.contains(`endOfContent`)||t.classList.contains(`textLayerImages`)||t.classList.contains(`textLayerImagePlaceholder`))&&this.#d.div.contains(t)){let{isMac:t}=F.platform;if(e.button!==0||e.ctrlKey&&t)return;this.#h.showAllEditors(`highlight`,!0,!0),this.#d.div.classList.add(`free`),this.toggleDrawing(),Mi.startHighlighting(this,this.#h.direction===`ltr`,{target:this.#d.div,x:e.x,y:e.y}),this.#d.div.addEventListener(`pointerup`,()=>{this.#d.div.classList.remove(`free`),this.toggleDrawing(!0)},{once:!0,signal:this.#h._signal}),e.preventDefault()}}enableClick(){if(this.#r)return;this.#r=new AbortController;let e=this.#h.combinedSignal(this.#r);this.div.addEventListener(`pointerdown`,this.pointerdown.bind(this),{signal:e});let t=this.pointerup.bind(this);this.div.addEventListener(`pointerup`,t,{signal:e}),this.div.addEventListener(`pointercancel`,t,{signal:e})}disableClick(){this.#r?.abort(),this.#r=null}attach(e){this.#a.set(e.id,e);let{annotationElementId:t}=e;t&&this.#h.isDeletedAnnotationElement(t)&&this.#h.removeDeletedAnnotationElement(e)}detach(e){this.#a.delete(e.id),this.#e?.removePointerInTextLayer(e.contentDiv),!this.#s&&e.annotationElementId&&this.#h.addDeletedAnnotationElement(e)}remove(e){this.detach(e),this.#h.removeEditor(e),e.div.remove(),e.isAttachedToDOM=!1}changeParent(e){e.parent!==this&&(e.parent&&e.annotationElementId&&(this.#h.addDeletedAnnotationElement(e),U.deleteAnnotationElement(e),e.annotationElementId=null),this.attach(e),e.parent?.detach(e),e.setParent(this),e.div&&e.isAttachedToDOM&&(e.div.remove(),this.div.append(e.div)))}add(e){if(!(e.parent===this&&e.isAttachedToDOM)){if(this.changeParent(e),this.#h.addEditor(e),this.attach(e),!e.isAttachedToDOM){let t=e.render();this.div.append(t),e.isAttachedToDOM=!0}e.fixAndSetPosition(),e.onceAdded(!this.#c),this.#h.addToAnnotationStorage(e),e._reportTelemetry(e.telemetryInitialData)}}moveEditorInDOM(e){if(!e.isAttachedToDOM)return;let{activeElement:t}=document;e.div.contains(t)&&!this.#i&&(e._focusEventsAllowed=!1,this.#i=setTimeout(()=>{this.#i=null,e.div.contains(document.activeElement)?e._focusEventsAllowed=!0:(e.div.addEventListener(`focusin`,()=>{e._focusEventsAllowed=!0},{once:!0,signal:this.#h._signal}),t.focus())},0)),e._structTreeParentId=this.#e?.moveElementInDOM(this.div,e.div,e.contentDiv,!0)}addOrRebuild(e){e.needsToBeRebuilt()?(e.parent||=this,e.rebuild(),e.show()):this.add(e)}addUndoableEditor(e){this.addCommands({cmd:()=>e._uiManager.rebuild(e),undo:()=>{e.remove()},mustExec:!1})}getEditorByUID(e){for(let t of this.#a.values())if(t.uid===e)return t;return null}get#y(){return e.#g.get(this.#h.getMode())}combinedSignal(e){return this.#h.combinedSignal(e)}#b(e){let t=this.#y;return t?new t.prototype.constructor(e):null}canCreateNewEmptyEditor(){return this.#y?.canCreateNewEmptyEditor()}async pasteEditor(e,t){this.updateToolbar(e),await this.#h.updateMode(e.mode);let{offsetX:n,offsetY:r}=this.#x(),i=this.#h.getId(),a=this.#b({parent:this,id:i,x:n,y:r,uiManager:this.#h,isCentered:!0,...t});a&&this.add(a)}async deserialize(t){return await e.#g.get(t.annotationType??t.annotationEditorType)?.deserialize(t,this,this.#h)||null}createAndAddNewEditor(e,t,n={}){let r=this.#h.getId(),i=this.#b({parent:this,id:r,x:e.offsetX,y:e.offsetY,uiManager:this.#h,isCentered:t,...n});return i&&this.add(i),i}get boundingClientRect(){return this.div.getBoundingClientRect()}#x(){let{x:e,y:t,width:n,height:r}=this.boundingClientRect,i=Math.max(0,e),a=Math.max(0,t),o=Math.min(window.innerWidth,e+n),s=Math.min(window.innerHeight,t+r),c=(i+o)/2-e,l=(a+s)/2-t,[u,d]=this.viewport.rotation%180==0?[c,l]:[l,c];return{offsetX:u,offsetY:d}}addNewEditor(e={}){this.createAndAddNewEditor(this.#x(),!0,e)}setSelected(e){this.#h.setSelected(e)}toggleSelected(e){this.#h.toggleSelected(e)}unselect(e){this.#h.unselect(e)}pointerup(e){let{isMac:t}=F.platform;if(e.button!==0||e.ctrlKey&&t||e.target!==this.div||!this.#o||(this.#o=!1,this.#y?.isDrawer&&this.#y.supportMultipleDrawings))return;if(!this.#t){this.#t=!0;return}let n=this.#h.getMode();if(n===d.STAMP||n===d.POPUP||n===d.SIGNATURE){this.#h.unselectAll();return}this.createAndAddNewEditor(e,!1)}pointerdown(e){if(this.#h.getMode()===d.HIGHLIGHT&&this.enableTextSelection(),this.#o){this.#o=!1;return}let{isMac:t}=F.platform;if(e.button!==0||e.ctrlKey&&t||e.target!==this.div)return;if(this.#o=!0,this.#y?.isDrawer){this.startDrawingSession(e);return}let n=this.#h.getActive();this.#t=!n||n.isEmpty()}startDrawingSession(e){if(this.div.focus({preventScroll:!0}),this.#l){this.#y.startDrawing(this,this.#h,!1,e);return}this.#h.setCurrentDrawingSession(this),this.#l=new AbortController;let t=this.#h.combinedSignal(this.#l);this.div.addEventListener(`blur`,({relatedTarget:e})=>{e&&!this.div.contains(e)&&(this.#u=null,this.commitOrRemove())},{signal:t}),this.#y.startDrawing(this,this.#h,!1,e)}pause(e){if(e){let{activeElement:e}=document;this.div.contains(e)&&(this.#u=e);return}this.#u&&setTimeout(()=>{this.#u?.focus(),this.#u=null},0)}endDrawingSession(e=!1){return this.#l?(this.#h.setCurrentDrawingSession(null),this.#l.abort(),this.#l=null,this.#u=null,this.#y.endDrawing(e)):null}findNewParent(e,t,n){let r=this.#h.findParent(t,n);return r===null||r===this?!1:(r.changeParent(e),!0)}commitOrRemove(){return this.#l?(this.endDrawingSession(),!0):!1}onScaleChanging(){this.#l&&this.#y.onScaleChangingWhenDrawing(this)}destroy(){this.commitOrRemove(),this.#h.getActive()?.parent===this&&(this.#h.commitOrRemove(),this.#h.setActiveEditor(null)),this.#i&&=(clearTimeout(this.#i),null);for(let e of this.#a.values())this.#e?.removePointerInTextLayer(e.contentDiv),e.setParent(null),e.isAttachedToDOM=!1,e.div.remove();this.div=null,this.#a.clear(),this.#h.removeLayer(this)}#S(){for(let e of this.#a.values())e.isEmpty()&&e.remove()}async render({viewport:e}){this.viewport=e,Ne(this.div,e);for(let e of this.#h.getEditors(this.pageIndex))this.add(e),e.rebuild();await this.#h.findClonesForPage(this),this.div.hidden=this.isEmpty,this.updateMode()}update({viewport:e}){this.#h.commitOrRemove(),this.#S();let t=this.viewport.rotation,n=e.rotation;if(this.viewport=e,Ne(this.div,{rotation:n}),t!==n)for(let e of this.#a.values())e.rotate(n)}get pageDimensions(){let{pageWidth:e,pageHeight:t}=this.viewport.rawDims;return[e,t]}get scale(){return this.#h.viewParameters.realScale}};function Ji(e,t){return e===t?0:e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function Yi(e){return e?e.nodeType===Node.ELEMENT_NODE?e.closest(`.textLayer`):e.parentElement?.closest(`.textLayer`)||null:null}function Xi(e,t,n,r){if(e===n)return t<=r;let i=e.compareDocumentPosition(n);return i&Node.DOCUMENT_POSITION_FOLLOWING?!0:i&Node.DOCUMENT_POSITION_PRECEDING?!1:null}function Zi(e,t,n){if(e.nodeType!==Node.ELEMENT_NODE||!e.classList.contains(`textLayer`)||t!==e.childNodes.length)return{container:e,offset:t};let r=e.lastChild;return r?.nodeType===Node.ELEMENT_NODE&&r.classList.contains(`endOfContent`)&&(r=r.previousSibling),!r||!n.contains(r)?null:r.nodeType===Node.TEXT_NODE?{container:r,offset:r.textContent.length}:{container:r,offset:r.childNodes.length}}var Qi=class e{#e=null;#t=new Map;#n=null;#r=null;#i=null;#a=null;#o=new Map;static#s=0;static#c=0;static#l=null;static#u=new Set;static#d=!1;static#f=new Set;static#p=new WeakMap;constructor({filterFactory:t=null,pageColors:n=null,pageIndex:r,textLayer:i=null}){if(this.pageIndex=r,this.#r=t,this.#i=n,i){let t=e.#p.get(i);if(t?.selectionDiv&&(t.selectionDiv.remove(),e.#u.delete(t.selectionDiv)),e.#p.set(i,{drawLayer:this}),e.#f.add(i),this.#n=i,this.#a=new MutationObserver(t=>{if(!(!this.#e||!this.#n?.isConnected||!e.#h())){for(let{addedNodes:n}of t)for(let t of n)if(t.nodeType===Node.ELEMENT_NODE&&t.classList.contains(`endOfContent`)){e.#_();return}}}),this.#a.observe(i,{childList:!0}),e.#l===null){e.#l=new AbortController;let{signal:t}=e.#l;document.addEventListener(`selectionchange`,e.#_.bind(e),{signal:t}),document.addEventListener(`pointerdown`,()=>{e.#d=!0},{signal:t}),document.addEventListener(`pointerup`,()=>{e.#d=!1},{signal:t}),window.addEventListener(`blur`,()=>{e.#d=!1},{signal:t})}}}setParent(t){if(!this.#e){this.#e=t,this.#n?.isConnected&&e.#h()&&e.#_();return}if(this.#e!==t){if(this.#t.size>0)for(let e of this.#t.values())e.remove(),t.append(e);this.#e=t}}static#m(e){let t=this.#p.get(e);t?.selectionDiv&&(t.selectionDiv.remove(),this.#u.delete(t.selectionDiv),t.selectionDiv=null,t.path=null)}static#h(){let e=document.getSelection();return!!e&&!e.isCollapsed}static#g(){return[...this.#f].filter(e=>e.isConnected).sort(Ji)}static#_(){let t=document.getSelection();if(!t||t.isCollapsed){for(let e of this.#u)e.remove();this.#u.clear();return}let n=new WeakMap,r=this.#g(),i=[];for(let e=0,n=t.rangeCount;en.intersectsNode(e));if(p.length===0)continue;let m=!1;if(l||(l=p[0],a=l,o=0,m=!0),u||(u=p.at(-1),s=u,c=u.childNodes.length,m=!0),s.nodeType===Node.ELEMENT_NODE){if(s.classList.contains(`endOfContent`)){let e=s.previousSibling;if(!e)continue;s=e,c=e.nodeType===Node.TEXT_NODE?e.textContent.length:e.childNodes.length}else if(s.classList.contains(`textLayer`)&&s.childNodes.length===c){let e=Zi(s,c,u);if(!e)continue;s=e.container,c=e.offset}}if(a.nodeType===Node.ELEMENT_NODE){let e=Zi(a,o,l);if(!e)continue;a=e.container,o=e.offset}if(l===u&&!m&&p.includes(l)){i.push([n,l]);continue}for(let e of p){let t=e.firstChild;if(!t)continue;let n=document.createRange();if(e===l?n.setStart(a,o):n.setStartBefore(t),e===u)n.setEnd(s,c);else{let t=e.lastChild;if(!t)continue;if(t.nodeType===Node.ELEMENT_NODE&&t.classList.contains(`endOfContent`)){let e=t.previousSibling;if(!e)continue;n.setEndAfter(e)}else n.setEndAfter(t)}n.collapsed||i.push([n,e])}}let a=new Set(i.map(e=>e[1]));for(let e of this.#f)a.has(e)||this.#m(e);for(let[t,r]of i){let i=e.#p.get(r);if(!i)continue;let a=n.get(r);if(!a){let e=r.getBoundingClientRect();a=(t,n,r,i)=>({x:(t-e.x)/e.width,y:(n-e.y)/e.height,width:r/e.width,height:i/e.height}),n.set(r,a)}let o=[];for(let{x:e,y:n,width:r,height:i}of t.getClientRects())r===0||i===0||({x:e,y:n,width:r,height:i}=a(e,n,r,i),!(r===1&&i===1)&&o.push(`M${e} ${n} h${r} v${i} h-${r} Z`));if(o.length===0)continue;let s=i.drawLayer,c=i.selectionDiv,l=i.path;if(!c){let t=`clip_selection_${e.#c++}`;c=document.createElement(`div`),c.className=`selection`,c.style.clipPath=`url(#${t})`;let n=s.#r?.createSelectionStyle(s.#i);if(n)for(let[e,t]of Object.entries(n))c.style.setProperty(e,t);let r=e._svgFactory.create(1,1,!0);r.setAttribute(`aria-hidden`,`true`),r.setAttribute(`width`,`100%`),r.setAttribute(`height`,`100%`);let a=e._svgFactory.createElement(`clipPath`);a.setAttribute(`id`,t),a.setAttribute(`clipPathUnits`,`objectBoundingBox`),l=e._svgFactory.createElement(`path`),a.append(l),r.append(a),c.append(r),i.path=l,i.selectionDiv=c}!c.parentNode&&s.#e&&(s.#e.append(c),this.#u.add(c)),l.setAttribute(`d`,o.join(` `))}}static get _svgFactory(){return M(this,`_svgFactory`,new Gr)}static#v(e,[t,n,r,i]){let{style:a}=e;a.top=`${100*n}%`,a.left=`${100*t}%`,a.width=`${100*r}%`,a.height=`${100*i}%`}#y(){let t=e._svgFactory.create(1,1,!0);return this.#e.append(t),t.setAttribute(`aria-hidden`,`true`),t}#b(t,n){let r=e._svgFactory.createElement(`clipPath`);t.append(r);let i=`clip_${n}`;r.setAttribute(`id`,i),r.setAttribute(`clipPathUnits`,`objectBoundingBox`);let a=e._svgFactory.createElement(`use`);return r.append(a),a.setAttribute(`href`,`#${n}`),a.classList.add(`clip`),i}#x(e,t){for(let[n,r]of Object.entries(t))r===null?e.removeAttribute(n):e.setAttribute(n,r)}draw(t,n=!1,r=!1){let i=e.#s++,a=this.#y(),o=e._svgFactory.createElement(`defs`);a.append(o);let s=e._svgFactory.createElement(`path`);o.append(s);let c=`path_${i}`;s.setAttribute(`id`,c),s.setAttribute(`vector-effect`,`non-scaling-stroke`),n&&this.#o.set(i,s);let l=r?this.#b(o,c):null,u=e._svgFactory.createElement(`use`);return a.append(u),u.setAttribute(`href`,`#${c}`),this.updateProperties(a,t),this.#t.set(i,a),{id:i,clipPathId:`url(#${l})`}}drawOutline(t,n){let r=e.#s++,i=this.#y(),a=e._svgFactory.createElement(`defs`);i.append(a);let o=e._svgFactory.createElement(`path`);a.append(o);let s=`path_${r}`;o.setAttribute(`id`,s),o.setAttribute(`vector-effect`,`non-scaling-stroke`);let c;if(n){let t=e._svgFactory.createElement(`mask`);a.append(t),c=`mask_${r}`,t.setAttribute(`id`,c),t.setAttribute(`maskUnits`,`objectBoundingBox`);let n=e._svgFactory.createElement(`rect`);t.append(n),n.setAttribute(`width`,`1`),n.setAttribute(`height`,`1`),n.setAttribute(`fill`,`white`);let i=e._svgFactory.createElement(`use`);t.append(i),i.setAttribute(`href`,`#${s}`),i.setAttribute(`stroke`,`none`),i.setAttribute(`fill`,`black`),i.setAttribute(`fill-rule`,`nonzero`),i.classList.add(`mask`)}let l=e._svgFactory.createElement(`use`);i.append(l),l.setAttribute(`href`,`#${s}`),c&&l.setAttribute(`mask`,`url(#${c})`);let u=l.cloneNode();return i.append(u),l.classList.add(`mainOutline`),u.classList.add(`secondaryOutline`),this.updateProperties(i,t),this.#t.set(r,i),r}finalizeDraw(e,t){this.#o.delete(e),this.updateProperties(e,t)}updateProperties(t,n){if(!n)return;let{root:r,bbox:i,rootClass:a,path:o}=n,s=typeof t==`number`?this.#t.get(t):t;if(s){if(r&&this.#x(s,r),i&&e.#v(s,i),a){let{classList:e}=s;for(let[t,n]of Object.entries(a))e.toggle(t,n)}if(o){let e=s.firstElementChild.firstElementChild;this.#x(e,o)}}}updateParent(e,t){if(t===this)return;let n=this.#t.get(e);n&&(t.#e.append(n),this.#t.delete(e),t.#t.set(e,n))}remove(e){this.#o.delete(e),this.#e!==null&&(this.#t.get(e).remove(),this.#t.delete(e))}destroy(){this.#e=null;for(let e of this.#t.values())e.remove();this.#t.clear(),this.#o.clear(),this.#a?.disconnect(),this.#a=null,this.#n&&=(e.#p.get(this.#n)?.drawLayer===this&&(e.#m(this.#n),e.#p.delete(this.#n),e.#f.delete(this.#n),e.#f.size===0&&(e.#l?.abort(),e.#l=null,e.#d=!1)),null)}};function $i(e){return`${(e*100).toFixed(2)}%`}var ea=class e{#e=[];#t=new Map;#n=null;#r=0;#i=0;#a=0;static#o=null;constructor(e,t,n,r){this.#r=e,this.#e=t,this.#i=n.rawDims.pageWidth,this.#a=n.rawDims.pageHeight,this.#n=r}render(){let t=document.createElement(`div`);t.className=`textLayerImages`;for(let e=0;e{if(!(t.target instanceof HTMLCanvasElement))return;let n=t.target,r=this.#t.get(n);if(!r)return;let i=e.#o?.deref();if(i===n)return;i&&(i.width=0,i.height=0),e.#o=new WeakRef(n);let{inverseTransform:a,x1:o,y1:s,width:c,height:l}=r,u=this.#n(),d=Math.ceil(o*u.width),f=Math.ceil(s*u.height),p=Math.floor((o+c/this.#i)*u.width),m=Math.floor((s+l/this.#a)*u.height);n.width=p-d,n.height=m-f;let h=n.getContext(`2d`);h.setTransform(...a),h.translate(-d,-f),h.drawImage(u,0,0)}),t}#s([e,t,n,r,i,a]){let o=Math.hypot((i-e)*this.#i,(a-t)*this.#a),s=Math.hypot((n-e)*this.#i,(r-t)*this.#a);if(o(n(t),e[r](t,...i));t();let i=Reflect.get(e,r);return typeof i==`function`?i.bind(e):i}}),enumerable:!0,configurable:!0});let a=[`href`,`pathname`,`search`,`toString`,`toJSON`];r&&a.push(`hash`);for(let n of a)Object.defineProperty(i,n,{get(){return t(),e[n]},enumerable:!0,configurable:!0});return i}function g(){}function _(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}var te=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&v.delete(b(e)),te(e,t));var v=new Map;function y(e,t){let n=b(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=d(e));let i=r.getAttribute(`data-ttl`);return i&&v.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function ne(e,t,n){if(v.size>0){let t=b(e,n),r=v.get(t);if(r){if(performance.now(){let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return le(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return le(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=re.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return le(e)}).join(``)}).join(``)}/?$`),params:t}}function oe(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function se(e){return e.slice(1).split(`/`).filter(oe)}function ce(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;ee).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function le(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function ue({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=ae(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return ce(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function de(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function fe(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var x=globalThis.__sveltekit_375u9e?.base??``,pe=globalThis.__sveltekit_375u9e?.assets??x??``,me=`sveltekit:snapshot`,he=`sveltekit:scroll`,ge=`sveltekit:states`,S=`sveltekit:history`,C=`sveltekit:navigation`,w={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},_e=location.origin;function ve(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function T(){return{x:pageXOffset,y:pageYOffset}}function E(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ye={...w,"":w.hover};function be(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function xe(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=be(e)}}function Se(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||O(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===_e&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function D(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=E(s,`preload-code`)),i===null&&(i=E(s,`preload-data`)),t===null&&(t=E(s,`keepfocus`)),n===null&&(n=E(s,`noscroll`)),a===null&&(a=E(s,`reload`)),o===null&&(o=E(s,`replacestate`)),s=be(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ye[r??`off`],preload_data:ye[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Ce(e){let t=a(e),n=!0;function r(){n=!0,t.update(e=>e)}function i(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:i,subscribe:o}}var we={v:g};function Te(){let{set:e,subscribe:t}=a(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${pe}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==`dev`;return n&&(e(!0),we.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function O(e,t,n){return e.origin!==_e||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Ee(e){}var De=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...De],[...new Set([...De])];function Oe(e){return e.filter(e=>e!=null)}function k(e,t){return e+`/`+t}function ke(e){return e instanceof l||e instanceof c?e.status:500}function Ae(e){return e instanceof c?e.text:`Internal Error`}var A,j,je,Me=o.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(o.toString()),Ne=`a:`;Me?(A={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ne)},j={current:null},je={current:!1}):(A=new class{#e=i({});get data(){return n(this.#e)}set data(e){r(this.#e,e)}#t=i(null);get form(){return n(this.#t)}set form(e){r(this.#t,e)}#n=i(null);get error(){return n(this.#n)}set error(e){r(this.#n,e)}#r=i({});get params(){return n(this.#r)}set params(e){r(this.#r,e)}#i=i({id:null});get route(){return n(this.#i)}set route(e){r(this.#i,e)}#a=i({});get state(){return n(this.#a)}set state(e){r(this.#a,e)}#o=i(-1);get status(){return n(this.#o)}set status(e){r(this.#o,e)}#s=i(new URL(Ne));get url(){return n(this.#s)}set url(e){r(this.#s,e)}},j=new class{#e=i(null);get current(){return n(this.#e)}set current(e){r(this.#e,e)}},je=new class{#e=i(!1);get current(){return n(this.#e)}set current(e){r(this.#e,e)}},we.v=()=>je.current=!0);function Pe(e){Object.assign(A,e)}var Fe={spanContext(){return Ie},setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording(){return!1},recordException(){return this},addLink(){return this},addLinks(){return this}},Ie={traceId:``,spanId:``,traceFlags:0},{onMount:Le,tick:Re}=s,ze=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),M=null,N=de(`sveltekit:scroll`)??{},P=de(`sveltekit:snapshot`)??{},F={url:Ce({}),page:Ce({}),navigating:a(null),updated:Te()};function Be(e){N[e]=T()}function Ve(e,t){let n=e+1;for(;N[n];)delete N[n],n+=1;for(n=t+1;P[n];)delete P[n],n+=1}function I(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(g)}async function He(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(x||`/`);e&&await e.update()}}var Ue,We,L,R,Ge,z,Ke={},qe={},Je=[],Ye=[],B=null;function V(){B?.fork?.then(e=>e?.discard()),B=null,Q={element:void 0,href:void 0}}var Xe=new Map,Ze=new Set,Qe=new Set,H=new Set,U={branch:[],error:null,url:null,nav:null},$e=!1,et=!1,tt=!0,W=!1,G=!1,nt=!1,K=!1,rt,q,J,Y,it=new Set,at,ot=new Map,st=new Map;async function ct(e,t,n){if(globalThis.__sveltekit_375u9e.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_375u9e.data;for(let t in e)Ke[t]=e[t];for(let e in n)Ke[e]=n[e];for(let e in r)Ke[e]=r[e];for(let e in t)qe[e]=t[e]}document.URL!==location.href&&(location.href=location.href),z=e,await e.hooks.init?.(),Ue=ue(e),R=document.documentElement,Ge=t,We=e.nodes[0],L=e.nodes[1],We(),L(),q=history.state?.[S],J=history.state?.[C],q||(q=J=Date.now(),history.replaceState({...history.state,[S]:q,[C]:J},``));let r=N[q];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Bt(Ge,n)):(await Z({type:`enter`,url:ve(z.hash?Kt(new URL(location.href)):location.href),replace_state:!0}),i()),zt()}async function lt(e=!0,t=!0){if(await(at||=Promise.resolve()),!at)return;at=null;let n=Y={},r=await X(U.url,!0);V();let i=new Map;if(K){for(let e of ot.values())for(let{resource:t}of e.values())t.refresh();for(let[e,t]of st)for(let[n,{resource:r}]of t){let t=k(e,n),a=r.reconnect();a.catch(g),i.set(t,a)}}if(e){let e=A.state,i=r&&await Tt(r);if(!i||n!==Y)return;if(i.type===`redirect`)return mt(new URL(i.location,U.url).href,{replaceState:!0},1,n);t||(i.props.page.state=e),Pe(i.props.page),U={...i.state,nav:U.nav},ut(),rt.$set(i.props)}else ut();let a=[];for(let e of ot.values())for(let{resource:t}of e.values())a.push(t);for(let[e,t]of st)for(let n of t.keys()){let t=k(e,n),r=i.get(t);r&&a.push(r)}await Promise.all(a).catch(g)}function ut(){Je.length=0,K=!1}function dt(e){Ye.some(e=>e?.snapshot)&&(P[e]=Ye.map(e=>e?.snapshot?.capture()))}function ft(e){P[e]?.forEach((e,t)=>{Ye[t]?.snapshot?.restore(e)})}function pt(){Be(q),fe(he,N),dt(J),fe(me,P)}async function mt(e,n,r,i){let a,o;n.invalidateAll&&V(),await Z({type:`goto`,url:ve(e),keepfocus:n.keepFocus,noscroll:n.noScroll,replace_state:n.replaceState,state:n.state,redirect_count:r,nav_token:i,accept:()=>{if(n.invalidateAll){K=!0,a=new Set;for(let[e,t]of ot)for(let[n,r]of t)r.resource?.reset(),a.add(k(e,n));o=new Set;for(let[e,t]of st)for(let n of t.keys())o.add(k(e,n))}n.invalidate&&n.invalidate.forEach(Lt)}}),n.invalidateAll&&t().then(t).then(()=>{for(let[e,t]of ot)for(let[n,{resource:r}]of t)a?.has(k(e,n))&&r.start();for(let[e,t]of st)for(let[n,{resource:r}]of t)o?.has(k(e,n))&&r.reconnect()})}async function ht(e){if(e.id!==B?.id){V();let t={};it.add(t),B={id:e.id,token:t,promise:Tt({...e,preload:t}).then(e=>(it.delete(t),e.type===`loaded`&&e.state.error&&V(),e)),fork:null}}return B.promise}async function gt(e){let t=(await X(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function _t(e,t,n){let r={params:U.params,route:{id:U.route?.id??null},url:new URL(location.href)};if(U={...e.state,nav:r},Pe(e.props.page),rt=new z.root({target:t,props:{...e.props,stores:F,components:Ye},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:N[q]??T()},willUnload:!1,type:`enter`,complete:Promise.resolve()};H.forEach(t=>t(e))}ft(J),et=!0}async function vt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(x&&(e.pathname===x||e.pathname===x+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=f(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Oe(n).map(e=>e.node.component),page:Gt(A)}};s!==void 0&&(l.props.form=s);let u={},d=!A,p=0;for(let e=0;e(s&&(c.route=!0),e[t])}),params:new Proxy(r,{get:(e,t)=>(s&&c.params.add(t),e[t])}),data:a?.data??null,url:h(n,()=>{s&&(c.url=!0)},e=>{s&&c.search_params.add(e)},z.hash),async fetch(t,r){t instanceof Request&&(r={body:t.method===`GET`||t.method===`HEAD`?void 0:await t.blob(),cache:t.cache,credentials:t.credentials,headers:[...t.headers].length>0?t?.headers:void 0,integrity:t.integrity,keepalive:t.keepalive,method:t.method,mode:t.mode,redirect:t.redirect,referrer:t.referrer,referrerPolicy:t.referrerPolicy,signal:t.signal,...r});let{resolved:i,promise:a}=bt(t,r,n);return s&&e(i.href),a},setHeaders:g,depends:e,parent(){return s&&(c.parent=!0),t()},untrack(e){s=!1;try{return e()}finally{s=!0}}};o=await l.universal.load.call(null,u)??null}return{node:l,loader:e,server:a,universal:l.universal?.load?{type:`data`,data:o,uses:c}:null,data:o??a?.data??null,slash:l.universal?.trailingSlash??a?.slash}}function bt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:et?ne(r,i.href,t):y(r,t)}}function xt(e,t,n,r,i,a){if(K)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==U.params[e])return!0;for(let e of i.dependencies)if(Je.some(t=>t(new URL(e))))return!0;return!1}function St(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function Ct(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function wt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Gt(A),constructors:[]}}}async function Tt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(B?.id===e)return it.delete(B.token),B.promise;let{errors:o,layouts:s,leaf:c}=i,d=[...s,c];o.forEach(e=>e?.().catch(g)),d.forEach(e=>e?.[1]().catch(g));let f=U.url?e!==At(U.url):!1,p=U.route?i.id!==U.route.id:!1,ee=Ct(U.url,n),m=!1,h=d.map(async(e,t)=>{if(!e)return;let a=U.branch[t];return e[1]===a?.loader&&!xt(m,p,f,ee,a.universal?.uses,r)?a:(m=!0,yt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;nPromise.resolve({}),server_data_node:St(null)}),{node:await L(),loader:L,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof u){await mt(new URL(t.location,location.href),{},0);return}let a=await z.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&`).replace(//g,`>`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Ot(e){let t=e.href;if(Xe.has(t))return Xe.get(t);let n;try{let r=(async()=>{let t=await z.hooks.reroute({url:new URL(e),fetch:async(t,n)=>bt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);z.hash?n.hash=t:n.pathname=t,t=n}return t})();Xe.set(t,r),n=await r}catch{Xe.delete(t);return}return n}async function X(e,t){if(e&&!O(e,x,z.hash)){let n=await Ot(e);if(!n)return;let r=kt(n);for(let n of Ue){let i=n.exec(r);if(i)return{id:At(e),invalidating:t,route:n,params:ee(i),url:e}}}}function kt(e){return p(z.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(x.length))||`/`}function At(e){return(z.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function jt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Wt(U,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return W||Ze.forEach(e=>e(c)),o?null:s}async function Z({type:n,url:r,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:l={},redirect_count:u=0,nav_token:d={},accept:f=g,block:p=g,event:ee}){let m=Y;Y=d;let h=await X(r,!1),_=n===`enter`?Wt(U,h,r,n):jt({url:r,type:n,delta:i?.delta,intent:h,scroll:i?.scroll,event:ee});if(!_){p(),Y===d&&(Y=m);return}let te=q,v=J;f(),W=!0,et&&_.navigation.type!==`enter`&&F.navigating.set(j.current=_.navigation);let y=h&&await Tt(h);if(!y){if(O(r,x,z.hash))return await I(r,s);y=await Mt(r,{id:null},await $(new c(404,`Not Found`,`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404,s)}if(r=h?.url||r,Y!==d){_.reject(Error(`navigation aborted`));return}if(!y)return;if(y.type===`redirect`){if(u<20){await Z({type:n,url:new URL(y.location,r),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:l,redirect_count:u+1,nav_token:d}),_.fulfil(void 0);return}if(y=await Dt({status:500,error:await $(Error(`Redirect loop`),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}}),!y)return}else if(y.props.page.status>=400&&await F.updated.check())return await He(),await I(r,s);if(ut(),Be(te),dt(v),y.props.page.url.pathname!==r.pathname&&(r.pathname=y.props.page.url.pathname),l=i?i.state:l,!i){let e=+!s,t={[S]:q+=e,[C]:J+=e,[ge]:l};(s?history.replaceState:history.pushState).call(history,t,``,r),s||Ve(q,J)}let ne=h&&B?.id===h.id?B.fork:null;B?.fork&&!ne?V():(B=null,Q={element:void 0,href:void 0}),y.props.page.state=l;let b;if(et){let t=(await Promise.all(Array.from(Qe,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(t.length>0){function e(){t.forEach(e=>{H.delete(e)})}t.push(e),t.forEach(e=>{H.add(e)})}let n=_.navigation.to;U={...y.state,nav:{params:n.params,route:n.route,url:n.url}},y.props.page&&(y.props.page.url=r),!a&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let i=ne&&await ne;i?b=i.commit():(M=null,rt.$set(y.props),M&&Object.assign(y.props.page,M),Pe(y.props.page),b=e?.()),nt=!0}else await _t(y,Ge,!1);let{activeElement:re}=document;if(await b,await t(),await t(),Y!==d){_.reject(Error(`navigation aborted`));return}y.props.page&&M&&Object.assign(y.props.page,M);let ie=null;if(tt){let e=i?i.scroll:o?T():null;e?scrollTo(e.x,e.y):(ie=r.hash&&document.getElementById(qt(r)))?ie.scrollIntoView():scrollTo(0,0)}let ae=document.activeElement!==re&&document.activeElement!==document.body;!a&&!ae&&Ut(r,!ie),tt=!0,W=!1,_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=T()),H.forEach(e=>e(_.navigation)),n===`popstate`&&ft(J),F.navigating.set(j.current=null)}async function Mt(e,t,n,r,i){return e.origin===_e&&e.pathname===location.pathname&&!$e?await Dt({status:r,error:n,url:e,route:t}):await I(e,i)}var Q={element:void 0,href:void 0};function Nt(){let e,t;R.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,w.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],w.tap)}R.addEventListener(`mousedown`,n),R.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(gt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=xe(e,R),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=Se(r,x,z.hash);if(o||s)return;let c=D(r),l=a&&At(U.url)===At(a);if(!(c.reload||l))if(n<=c.preload_data){Q={element:r,href:r.href},t=w.tap;let e=await X(a,!1);if(!e)return;ht(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,gt(a))}function a(){r.disconnect();for(let e of R.querySelectorAll(`a`)){let{url:t,external:n,download:i}=Se(e,x,z.hash);if(n||i)continue;let a=D(e);a.reload||(a.preload_code===w.viewport&&r.observe(e),a.preload_code===w.eager&>(t))}}H.add(a),a()}function $(e,t){if(e instanceof l)return e.body;let n=ke(e),r=Ae(e);return z.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Pt(e,t){Le(()=>(e.add(t),()=>{e.delete(t)}))}function Ft(e){Pt(H,e)}function It(e,t={}){return e=new URL(ve(e)),e.origin===_e?mt(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function Lt(e){if(typeof e==`function`)Je.push(e);else{let{href:t}=new URL(e,location.href);Je.push(e=>e.href===t)}}function Rt(){return K=!0,lt()}function zt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(pt(),!W){let e=Wt(U,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};Ze.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&pt()}),navigator.connection?.saveData||Nt(),R.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=xe(t.composedPath()[0],R);if(!n)return;let{url:r,external:i,target:a,download:o}=Se(n,x,z.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=D(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(z.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){jt({url:r,type:`link`,event:t})?W=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=U.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(G=!0,Be(q),e(r),!s.replace_state)return;G=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),R.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(O(r,x,!1))return;let i=e.target,a=D(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Ht)if(t.state?.[`sveltekit:history`]){let n=t.state[S];if(Y={},n===q)return;let r=N[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[C],s=U.url?m(location)===m(U.url):!1;if(o===J&&(nt||s)){i!==A.state&&(A.state=i),e(a),N[q]=T(),r&&scrollTo(r.x,r.y),q=n;return}let c=n-q;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{q=n,J=o},block:()=>{history.go(-c)},nav_token:Y,event:t})}else G||(e(new URL(location.href)),z.hash&&location.reload())}),addEventListener(`hashchange`,()=>{G&&(G=!1,history.replaceState({...history.state,[S]:++q,[C]:J},``,location.href))});for(let e of document.querySelectorAll(`link`))ze.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&F.navigating.set(j.current=null)});function e(e){U.url=A.url=e,F.page.set(Gt(A)),F.page.notify()}}async function Bt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){$e=!0;let l=new URL(location.href),d;({params:i={},route:a={id:null}}=await X(l,!1)||{}),d=Ue.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Vt(r.uses)),yt({loader:z.nodes[t],url:l,params:i,route:a,parent:async()=>{let t={};for(let r=0;r{let a=history.state;Ht=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Ht=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t{if(r.rangeCount===e.length){for(let t=0;t{a=e,o=t});return s.catch(g),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:T()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Gt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Kt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function qt(e){let t;if(z.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{F as a,je as c,ct as i,Ee as l,It as n,j as o,Rt as r,A as s,Ft as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/DwaZ0FH6.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/DHjIYvi9.js similarity index 80% rename from apps/api/internal/webassets/dist/_app/immutable/chunks/DwaZ0FH6.js rename to apps/api/internal/webassets/dist/_app/immutable/chunks/DHjIYvi9.js index 283b4db7..bf845e43 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/DwaZ0FH6.js +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/DHjIYvi9.js @@ -1 +1 @@ -import"./CySd1wef.js";import{a as e,s as t}from"./DGQW1sK7.js";var n={get data(){return t.data},get error(){return t.error},get form(){return t.form},get params(){return t.params},get route(){return t.route},get state(){return t.state},get status(){return t.status},get url(){return t.url}};e.updated.check;var r=n;export{r as t}; \ No newline at end of file +import"./-xOSXMZB.js";import{a as e,s as t}from"./9dGTdiTk.js";var n={get data(){return t.data},get error(){return t.error},get form(){return t.form},get params(){return t.params},get route(){return t.route},get state(){return t.state},get status(){return t.status},get url(){return t.url}};e.updated.check;var r=n;export{r as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/D_KmntYi.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/D_KmntYi.js new file mode 100644 index 00000000..db58a790 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/D_KmntYi.js @@ -0,0 +1 @@ +import{yt as e}from"./-xOSXMZB.js";e(); \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/DhjMpuoL.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/DhjMpuoL.js new file mode 100644 index 00000000..7d302b5c --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/DhjMpuoL.js @@ -0,0 +1 @@ +import"./9dGTdiTk.js"; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/Dt-HX3Vu.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/Dt-HX3Vu.js new file mode 100644 index 00000000..a9ff7675 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/Dt-HX3Vu.js @@ -0,0 +1 @@ +var e=class{constructor(e,t){this.status=e,this.body=typeof t==`string`?{message:t}:t||{message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},t=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},n=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new TextEncoder;function r(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;ei.map(i=>d[i]); -import{t as e}from"./DK3Fl9T5.js";import{$ as t,B as n,C as r,D as i,F as a,I as o,K as s,N as c,O as l,P as u,Q as d,R as f,St as p,U as m,V as h,W as g,X as _,Z as v,_ as y,_t as b,a as x,at as S,b as C,bt as w,c as T,ct as E,dt as D,f as O,ft as k,gt as ee,h as A,it as j,j as M,k as N,lt as P,m as F,n as te,nt as ne,o as re,ot as ie,p as I,q as L,r as ae,rt as R,s as oe,st as z,u as se,v as ce,xt as B,y as le,z as V}from"./CySd1wef.js";import{n as ue}from"./DGQW1sK7.js";import{t as de}from"./HclGiUj8.js";import"./xihTtKlq.js";import"./M3UdkkP6.js";import{a as fe,i as pe,n as H,t as me}from"./BEqsQr3A.js";import{c as he,d as ge,f as _e,h as ve,i as ye,l as be,m as xe,n as Se,p as Ce,r as we,s as U,t as Te,u as Ee}from"./DiELhALK.js";import{a as De,i as Oe,n as W,t as G}from"./Qo16U5GS.js";import{t as K}from"./OQjxVT6U.js";import"./amAOfu1G.js";import{A as ke,C as q,D as Ae,E as je,F as J,I as Y,L as Me,M as Ne,N as X,O as Pe,P as Fe,T as Ie,_ as Le,d as Re,f as ze,g as Be,h as Ve,j as He,k as Ue,l as Z,m as We,p as Ge,u as Ke,v as qe,w as Je,z as Ye}from"./C5AMwlHa.js";import{n as Xe,t as Ze}from"./DlGnnCJo.js";import{t as Qe}from"./CEzVcVFQ.js";import{p as $e,r as et}from"./DFObNPU2.js";import{t as tt}from"./B_KT8vL7.js";var nt=typeof window>`u`?void 0:window.clickclackDesktop;async function rt(e){return e.type.startsWith(`image/`)?it(e):e.type.startsWith(`video/`)?at(e):{width:0,height:0,durationMS:0}}function it(e){return new Promise(t=>{let n=URL.createObjectURL(e),r=new Image;r.onload=()=>{let e={width:r.naturalWidth,height:r.naturalHeight,durationMS:0};URL.revokeObjectURL(n),t(e)},r.onerror=()=>{URL.revokeObjectURL(n),t({width:0,height:0,durationMS:0})},r.src=n})}function at(e){return new Promise(t=>{let n=URL.createObjectURL(e),r=document.createElement(`video`);r.preload=`metadata`,r.muted=!0;let i=()=>{URL.revokeObjectURL(n),r.src=``};r.onloadedmetadata=()=>{let e=Number.isFinite(r.duration)&&r.duration>0?Math.round(r.duration*1e3):0,n={width:r.videoWidth,height:r.videoHeight,durationMS:e};i(),t(n)},r.onerror=()=>{i(),t({width:0,height:0,durationMS:0})},r.src=n})}var ot=[{title:`Ship it`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYjJ1bm1meHE4N2x3bnN0djJkMWtjNGc5bXYzZDFiOHBsbG16M3F0ZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/l0HlHFRbmaZtBRhXG/giphy.gif`,tags:[`ship`,`launch`,`done`]},{title:`Approved`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExazBpbzJ6ODZ3bXQ3OHBvNGJidWZoajc0cHV6YnVub3MzZ3c1a2Z2dSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/111ebonMs90YLu/giphy.gif`,tags:[`yes`,`approved`,`nice`]},{title:`Deploy dance`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExY3NkaTVmZW9ydWNnZnl0ZWQ5aHQyeGNrd2k3NG4wZWNqYzNmd3k1ZCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/GeimqsH0TLDt4tScGw/giphy.gif`,tags:[`deploy`,`dance`,`celebrate`]},{title:`Looking`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYWZ3emE0dm5mN2h0bGVsY2w0OXBodGd2cGJlNDRiZXo1YWNtdWRmZyZlcD12MV9naWZzX3NlYXJjaCZjdD1n/26n6WywJyh39n1pBu/giphy.gif`,tags:[`search`,`looking`,`debug`]},{title:`Typing faster`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExOWFlbnJnbnIzbHYxcDIzdXZ3NGF3N2FocHNvMmR5enU3bHpycHBlZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/13HgwGsXF0aiGY/giphy.gif`,tags:[`typing`,`code`,`work`]},{title:`Tiny victory`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExdjJ2b2tqNmF4dG16NjE0eXhuc3h5bTlvamgwNTR0Zmd6ZjhtM2JuaSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/3o7abKhOpu0NwenH3O/giphy.gif`,tags:[`win`,`victory`,`celebrate`]}],st=new Set([`agent_commentary`,`agent_tool`]),ct=180*1e3;function lt(e){return e.kind!==void 0&&st.has(e.kind)}function ut(e){return e.kind===void 0||e.kind===`message`}function dt(e){return e.author?.id||e.author_id||``}function ft(e){return`${e.channel_id?`channel:${e.channel_id}`:`direct:${e.direct_conversation_id||``}`}\u0000${dt(e)}\u0000${e.turn_id||e.id}`}function pt(e){let t=e.trim(),n=``,r=``,i=t.match(/^\*\*([^*]+)\*\*\s*\n+([\s\S]+)$/),a=t.match(/^\*\*([^*]+)\*\*$/);if(i)n=i[1].trim(),r=ht(i[2]);else if(a)n=a[1].trim();else return mt(t.replace(/\*\*/g,``).trim(),``);return mt(n,r)}function mt(e,t){let n=ht(e),r=n.indexOf(` `),i,a;r===-1?(i=n,a=``):(i=n.slice(0,r),a=n.slice(r+1).trim());let o=[a,t].filter(e=>e.length>0).join(` · `);return{name:i,detail:o||void 0}}function ht(e){return e.replace(/\s+/g,` `).trim()}function gt(e,t,n,r){let i=[];for(let e of t)if(e.kind===`agent_tool`){if(r.hideToolCalls)continue;let t=pt(e.body);i.push({type:`tool`,id:e.id,name:t.name,detail:t.detail,full:e.body.trim()})}else{if(r.hideCommentary)continue;let t=e.body.trim();t&&i.push({type:`commentary`,id:e.id,body:t})}return i.length===0?null:{turnId:e,items:i,final:n}}function _t(e,t,n=Date.now()){let r=new Map,i=new Map;for(let t=0;to.firstIndex;if(!r){let e=Date.parse(o.rows[o.rows.length-1].created_at);Number.isFinite(e)&&n-e>ct&&(r=!0)}a.set(t,r)}let o=[];for(let n=0;n=kt)&&(Q.active=!0,Q.lastPingAt=t,Mt(e,`typing.started`)),Q.idleTimer&&window.clearTimeout(Q.idleTimer),Q.idleTimer=window.setTimeout(()=>{Q&&=(Pt(Q),null)},Ot)}async function Pt(e){e.idleTimer&&window.clearTimeout(e.idleTimer),e.active&&await Mt(e.scope,`typing.stopped`)}function Ft(){Q&&=(Pt(Q),null)}var It=2e3,Lt=2*1024*1024;function Rt(e){let t=document.createElement(`span`);return t.textContent=e,t.innerHTML}function zt(e,t,n){return!t||e.length>262144?Promise.resolve(Rt(e)):new Promise((r,i)=>{let a=new Worker(new URL(``+new URL(`../workers/highlight.worker-DQwR42_5.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),o=!1,s=e=>{o||(o=!0,clearTimeout(l),n.removeEventListener(`abort`,c),a.terminate(),e())},c=()=>s(()=>i(new DOMException(`Syntax highlighting was aborted.`,`AbortError`))),l=window.setTimeout(()=>s(()=>r(Rt(e))),It);if(a.onmessage=t=>{let n=t.data;`error`in n?s(()=>r(Rt(e))):s(()=>r(n.html))},a.onerror=()=>s(()=>r(Rt(e))),n.addEventListener(`abort`,c,{once:!0}),n.aborted){c();return}a.postMessage({source:e,language:t,outputLimit:Lt})})}var Bt=5e3;function Vt(e,t,n){return new Promise((r,i)=>{let a=new Worker(new URL(``+new URL(`../workers/office.worker-Dh-Qjtqs.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),o=!1,s=e=>{o||(o=!0,clearTimeout(l),n.removeEventListener(`abort`,c),a.terminate(),e())},c=()=>s(()=>i(new DOMException(`Office preview was aborted.`,`AbortError`))),l=window.setTimeout(()=>s(()=>i(Error(`Office preview took too long and was stopped.`))),Bt);if(a.onmessage=t=>{let n=t.data;if(`error`in n){s(()=>i(Error(n.error)));return}if(n.kind!==e){s(()=>i(Error(`Office preview returned an unexpected result.`)));return}s(()=>r(n.preview))},a.onerror=()=>s(()=>i(Error(`Could not parse this Office file safely.`))),n.addEventListener(`abort`,c,{once:!0}),n.aborted){c();return}let u=t.byteOffset===0&&t.buffer instanceof ArrayBuffer&&t.byteLength===t.buffer.byteLength?t:t.slice(),d={kind:e,bytes:u};a.postMessage(d,[u.buffer])})}var Ht=16*1024*1024,Ut=1e4,Wt=1e4,Gt=`This PDF page is too large to preview safely. Download the original to open it locally.`;function Kt(e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<1||t<1||e>8192||t>8192||e*t>16777216)throw Error(Gt)}var qt=``+new URL(`../assets/pdf.worker.CPbhI6B3.mjs`,import.meta.url).href,Jt=o(`
        `),Yt=o(`

        Preparing a safe preview.

        `),Xt=o(``),Zt=o(`
        No preview for this file type

        You can still download the original file.

        Download original
        `),Qt=o(`
        `,1),$t=o(` `),en=o(` `),tn=o(` `),nn=o(` `),rn=o(`

        Preview is limited to 10,000 cells, the first 1,000 rows, and the first 100 columns. Download the original to inspect omitted cells.

        `),an=o(``),on=o(`
        Raw cached values; number and date formatting omitted
        `,1),sn=o(`

        `),cn=o(`

        `),ln=o(`

        `),un=o(`

        Some slide content was omitted by preview limits.

        `),dn=o(`

        Text outline only. Visuals, layout, animations, and speaker notes are omitted.

        `,1),fn=o(`
        `),pn=o(`
        `),mn=o(`
        `),hn=o(`
         
        `),gn=o(`
        `,1);function _n(e,r){b(r,!0);let o=P(null),s=k(()=>Be(r.upload)),f=P(`preview`),p=P(`idle`),m=P(``),h=P(``),_=P(``),v=P(!1),y=P(``),x=P(null),T=P(1),D=P(1),O=P(!1),A=P(``),F=null,ne=!1,re=P(null),ie=P(0),L=P(null),ae=P(0),z=1e4,se=64*1024,ce=5e3;class le extends Error{}let V=k(()=>Ge(g(s))),ue=k(()=>Je(r.upload)),fe=k(()=>(g(s)===`markdown`||g(s)===`html`)&&g(p)===`ready`&&g(v));function pe(e){return`This ${g(V).toLowerCase()} is ${q(r.upload.byte_size)}. Preview is limited to ${q(e)}.`}function H(e){he(e);let t=document.createElement(`template`);t.innerHTML=e;let n=Le.sanitize(t.content,{RETURN_DOM_FRAGMENT:!0,USE_PROFILES:{html:!0},FORBID_TAGS:[`base`,`embed`,`form`,`iframe`,`link`,`meta`,`object`,`script`,`style`],FORBID_ATTR:[`action`,`formaction`,`srcset`,`style`,`xlink:href`]});for(let e of n.querySelectorAll(`*`))for(let t of Array.from(e.attributes))e.removeAttribute(t.name);let r=document.createElement(`div`);r.append(n);let i=r.innerHTML;return ge(i),`${i}`}function me(e){he(e);let t=Re(e);return ge(t),Le.sanitize(t,{ALLOWED_TAGS:[`blockquote`,`br`,`code`,`del`,`em`,`h1`,`h2`,`h3`,`h4`,`h5`,`h6`,`hr`,`li`,`ol`,`p`,`pre`,`strong`,`table`,`tbody`,`td`,`th`,`thead`,`tr`,`ul`],ALLOWED_ATTR:[]})}function he(e){if(e.length>65536)throw new le(`Structured preview exceeded the safe source limit.`);let t=0;for(let n of e)if("<[]>*_`-+.!#>|~".includes(n)&&(t+=1,t>z))throw new le(`Structured preview exceeded the safe complexity limit.`)}function ge(e){if(e.length>4194304)throw new le(`Rendered preview exceeded the safe output limit.`);let t=0;for(let n of e)if(n===`<`&&++t>z*2)throw new le(`Rendered preview exceeded the safe element limit.`)}function _e(e){return`Preview data exceeded the ${q(e)} safety limit.`}async function ve(e,t){let n=await fetch(g(ue),{credentials:`include`,signal:e});if(!n.ok)throw n.status===401||n.status===403?Error(`You no longer have access to this artifact.`):n.status===404?Error(`This artifact is no longer available.`):Error(`Could not load this artifact (${n.status}).`);let r=Number(n.headers.get(`Content-Length`));if(Number.isFinite(r)&&r>t)throw Error(_e(t));if(!n.body){let e=new Uint8Array(await n.arrayBuffer());if(e.byteLength>t)throw Error(_e(t));return e}let i=n.body.getReader(),a=[],o=0;try{for(;;){let{done:e,value:n}=await i.read();if(e)break;if(o+=n.byteLength,o>t)throw await i.cancel(),Error(_e(t));a.push(n)}}finally{i.releaseLock()}let s=new Uint8Array(o),c=0;for(let e of a)s.set(e,c),c+=e.byteLength;return s}async function ye(e,t){return new TextDecoder(`utf-8`,{fatal:!1}).decode(await ve(e,t))}async function be(e){F?.(),F=null,E(x,null),E(h,``),E(_,``),E(v,!1),E(y,``),E(T,1),E(D,1),E(A,``),ne=!1,E(re,null),E(ie,0),E(L,null),E(ae,0),E(f,`preview`),E(m,``);let t=Ve(g(s));if(t!==void 0&&r.upload.byte_size>t){E(p,`error`),E(m,pe(t),!0);return}if(g(s)===`unsupported`){E(p,`ready`);return}E(p,`loading`);try{if(g(s)===`pdf`){let n=await de(()=>import(`./DGD3aKTU.js`),__vite__mapDeps([0,1]),import.meta.url);if(e.aborted)return;n.GlobalWorkerOptions.workerSrc=qt;let r=new AbortController,i=()=>r.abort();e.addEventListener(`abort`,i,{once:!0});let a=null,o=0,s=new Promise((e,t)=>{o=window.setTimeout(()=>{r.abort(),a?.destroy(),t(Error(`PDF preview took too long and was stopped.`))},Ut)}),c;try{if(c=await Promise.race([ve(r.signal,t),s]),e.aborted)throw new DOMException(`Aborted`,`AbortError`);a=new n.PDFWorker,await Promise.race([a.promise,s])}catch(t){throw clearTimeout(o),e.removeEventListener(`abort`,i),t}if(e.aborted||!a){clearTimeout(o),e.removeEventListener(`abort`,i),a?.destroy();return}let l=a.port,u=e=>{let t=e.data;typeof t==`object`&&t&&`reason`in t&&typeof t.reason==`object`&&t.reason!==null&&`message`in t.reason&&t.reason.message===`Image exceeded maximum allowed size and was removed.`&&(ne=!0,F?.(),E(p,`error`),E(m,`PDF page content could not be rendered completely within safety limits.`))};l.addEventListener(`message`,u);let d=null,f=!1;F=()=>{f||(f=!0,l.removeEventListener(`message`,u),d&&d.destroy(),a.destroy(),E(x,null))};let h=n.getDocument({data:c,maxImageSize:Ht,canvasMaxAreaInBytes:Ht*4,stopAtErrors:!0,worker:a});d=h;try{E(x,await Promise.race([h.promise,s]),!0)}finally{clearTimeout(o),e.removeEventListener(`abort`,i)}}else if(g(s)===`spreadsheet`||g(s)===`presentation`){let n=await ve(e,t);if(e.aborted)return;if(g(s)===`spreadsheet`){let t=await Vt(g(s),n,e);if(e.aborted)return;E(re,t,!0)}else{let t=await Vt(g(s),n,e);if(e.aborted)return;E(L,t,!0)}}else{if(E(h,await ye(e,t),!0),e.aborted)return;g(s)===`code`&&E(y,await zt(g(h),We(r.upload),e),!0);try{g(s)===`markdown`&&(E(_,me(g(h)),!0),E(v,!0)),g(s)===`html`&&(E(_,H(g(h)),!0),E(v,!0))}catch(e){if(!(e instanceof le))throw e;E(_,``),E(f,`source`)}}e.aborted||E(p,`ready`)}catch(t){if(e.aborted||t instanceof Error&&t.name===`AbortError`)return;F?.(),F=null,E(p,`error`),E(m,t instanceof Error?t.message:`Could not preview this artifact.`,!0)}}t(()=>{let e=new AbortController;return be(e.signal),()=>e.abort()}),t(()=>{if(g(s)!==`pdf`||!g(x)||!g(o)||g(p)!==`ready`)return;let e=g(x),t=g(T),n=g(D),r=!1,i=null,a=null,c=null,l=0;return E(O,!0),E(A,``),(async()=>{try{if(l=window.setTimeout(()=>{r||(i?.cancel(),c?.cancel(),F?.(),E(p,`error`),E(m,`PDF page rendering took too long and was stopped.`))},Wt),a=await e.getPage(t),r||!g(o))return;let s=``,u=0;c=a.streamTextContent().getReader();try{for(;!r;){let{done:e,value:t}=await c.read();if(e)break;for(let e of t.items){if(u+=1,u>ce){await c.cancel(),s=`${s}…`;break}if(!(`str`in e)||!e.str)continue;let t=`${s}${s?` `:``}${e.str}`;if(t.length>se){await c.cancel(),s=`${t.slice(0,se)}…`;break}s=t}if(u>ce||s.endsWith(`…`))break}}finally{c.releaseLock(),c=null}if(r)return;E(A,s||`This page has no extractable text.`,!0);let d=a.getViewport({scale:n}),f=Math.min(window.devicePixelRatio||1,2),h=Math.max(1,Math.floor(d.width*f)),_=Math.max(1,Math.floor(d.height*f));Kt(h,_);let v=g(o).getContext(`2d`);if(!v)throw Error(`PDF canvas is unavailable.`);if(g(o).width=h,g(o).height=_,g(o).style.width=`${d.width}px`,g(o).style.height=`${d.height}px`,v.setTransform(f,0,0,f,0,0),i=a.render({canvasContext:v,viewport:d}),await i.promise,ne)throw Error(`PDF page content could not be rendered completely within safety limits.`)}catch(e){!r&&!(e instanceof Error&&e.name===`RenderingCancelledException`)&&(F?.(),E(p,`error`),E(m,e instanceof Error?e.message:`Could not render this PDF page.`,!0))}finally{clearTimeout(l),a?.cleanup(),a=null,r||E(O,!1)}})(),()=>{r=!0,clearTimeout(l),i?.cancel(),c?.cancel()}}),te(()=>F?.());function xe(e){let t=e.match(/^[A-Z]+/i)?.[0]?.toUpperCase()||`A`,n=0;for(let e of t)n=n*26+e.charCodeAt(0)-64;return n}function Se(e){return Number(e.match(/\d+$/)?.[0]||1)}function Ce(e){let t=``;for(let n=e;n>0;n=Math.floor((n-1)/26))t=String.fromCharCode(65+(n-1)%26)+t;return t}let we=k(()=>{let e=g(re)?.sheets[g(ie)];if(!e)return{columns:[],rows:[],clipped:!1};let t=Math.max(1,...e.cells.map(e=>xe(e.reference))),n=Math.max(1,...e.cells.map(e=>Se(e.reference))),r=Math.min(100,t),i=Math.min(1e3,Math.floor(1e4/r),n),a=new Map(e.cells.map(e=>[e.reference.toUpperCase(),e.value])),o=Array.from({length:r},(e,t)=>Ce(t+1));return{columns:o,rows:Array.from({length:i},(e,t)=>({number:t+1,values:o.map(e=>a.get(`${e}${t+1}`)||``)})),clipped:t>r||n>i}});var U=gn(),Te=j(U),Ee=R(Te),De=R(Ee),Oe=R(De,!0);B(De);var W=S(De,2),G=R(W,!0);B(W);var K=S(W,2),ke=R(K,!0);B(K),B(Ee);var Ae=S(Ee,2),je=R(Ae),J=e=>{var t=Jt(),r=R(t);let i;var a=S(r,2);let o;B(t),d(()=>{I(t,`aria-label`,`${g(V)} view`),I(r,`aria-pressed`,g(f)===`preview`),i=C(r,1,``,null,i,{active:g(f)===`preview`}),I(a,`aria-pressed`,g(f)===`source`),o=C(a,1,``,null,o,{active:g(f)===`source`})}),n(`click`,r,()=>E(f,`preview`)),n(`click`,a,()=>E(f,`source`)),u(e,t)};M(je,e=>{g(fe)&&e(J)});var Y=S(je,2),Me=S(Y,2);B(Ae),B(Te);var Ne=S(Te,2);let X;var Pe=R(Ne),Fe=e=>{var t=Yt(),n=S(R(t),2),r=R(n);B(n),w(2),B(t),d(e=>c(r,`Opening ${e??``}`),[()=>g(V).toLowerCase()]),u(e,t)},Ie=e=>{var t=Xt(),n=S(R(t),4),i=R(n,!0);B(n);var a=S(n,2);B(t),d(()=>{c(i,g(m)),I(a,`href`,g(ue)),I(a,`download`,r.upload.filename)}),u(e,t)},ze=e=>{var t=Zt(),n=S(R(t),6);B(t),d(()=>{I(n,`href`,g(ue)),I(n,`download`,r.upload.filename)}),u(e,t)},He=e=>{var t=Qt(),r=j(t),i=R(r),a=S(i,2),s=R(a);B(a);var l=S(a,2),f=S(l,4),p=S(f,2),m=R(p);B(p);var h=S(p,2);B(r);var _=S(r,2);let v;var y=R(_);oe(y,e=>E(o,e),()=>g(o));var b=S(y,2),w=R(b,!0);B(b),B(_),d(e=>{i.disabled=g(T)<=1||g(O),c(s,`Page ${g(T)??``} of ${g(x).numPages??``}`),l.disabled=g(T)>=g(x).numPages||g(O),f.disabled=g(D)<=.6||g(O),c(m,`${e??``}%`),h.disabled=g(D)>=2||g(O),v=C(_,1,`artifact-viewer__pdf-stage`,null,v,{"is-rendering":g(O)}),I(_,`aria-label`,`PDF page ${g(T)} visual preview`),I(b,`aria-label`,`PDF page ${g(T)} text`),c(w,g(A))},[()=>Math.round(g(D)*100)]),n(`click`,i,()=>E(T,g(T)-1)),n(`click`,l,()=>E(T,g(T)+1)),n(`click`,f,()=>E(D,Math.max(.6,g(D)-.2),!0)),n(`click`,h,()=>E(D,Math.min(2,g(D)+.2),!0)),u(e,t)},Ue=e=>{var t=on(),r=j(t),i=R(r),a=R(i);B(i);var o=S(i,4),s=e=>{var t=$t(),n=R(t);B(t),d(()=>c(n,`${g(re).hiddenSheets??``} hidden ${g(re).hiddenSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};M(o,e=>{g(re).hiddenSheets>0&&e(s)});var f=S(o,2),p=e=>{var t=$t(),n=R(t);B(t),d(()=>c(n,`${g(re).unsupportedSheets??``} non-worksheet ${g(re).unsupportedSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};M(f,e=>{g(re).unsupportedSheets>0&&e(p)}),B(r);var m=S(r,2),h=R(m),_=R(h),v=R(_);l(S(R(v)),17,()=>g(we).columns,N,(e,t)=>{var n=en(),r=R(n,!0);B(n),d(()=>c(r,g(t))),u(e,n)}),B(v),B(_);var y=S(_);l(y,21,()=>g(we).rows,N,(e,t)=>{var n=nn(),r=R(n),i=R(r,!0);B(r),l(S(r),17,()=>g(t).values,N,(e,t)=>{var n=tn(),r=R(n,!0);B(n),d(()=>c(r,g(t))),u(e,n)}),B(n),d(()=>c(i,g(t).number)),u(e,n)}),B(y),B(h);var b=S(h,2),x=e=>{u(e,rn())};M(b,e=>{(g(we).clipped||g(re).sheets[g(ie)].truncated)&&e(x)}),B(m);var w=S(m,2);l(w,21,()=>g(re).sheets,N,(e,t,r)=>{var i=an();let a;var o=R(i,!0);B(i),d(()=>{I(i,`aria-selected`,g(ie)===r),a=C(i,1,``,null,a,{active:g(ie)===r}),c(o,g(t).name)}),n(`click`,i,()=>E(ie,r,!0)),u(e,i)}),B(w),d(()=>{c(a,`${g(re).sheets.length??``} ${g(re).sheets.length===1?`sheet`:`sheets`}`),I(m,`aria-label`,`${g(re).sheets[g(ie)].name} worksheet`)}),u(e,t)},Z=e=>{var t=dn(),r=j(t),i=R(r),o=S(i,2),s=R(o);B(o);var f=S(o,2);B(r);var p=S(r,2),m=R(p);l(m,21,()=>g(L).slides[g(ae)].paragraphs,N,(e,t,n)=>{var r=a(),i=j(r),o=e=>{var n=sn(),r=R(n,!0);B(n),d(()=>c(r,g(t))),u(e,n)},s=e=>{var n=cn(),r=R(n,!0);B(n),d(()=>c(r,g(t))),u(e,n)};M(i,e=>{n===0?e(o):e(s,-1)}),u(e,r)}),B(m);var h=S(m,4),_=e=>{var t=ln(),n=R(t);B(t),d(()=>c(n,`${g(L).hiddenSlides??``} hidden ${g(L).hiddenSlides===1?`slide`:`slides`} omitted.`)),u(e,t)};M(h,e=>{g(L).hiddenSlides>0&&e(_)});var v=S(h,2),y=e=>{u(e,un())};M(v,e=>{g(L).truncated&&e(y)}),B(p),d(()=>{i.disabled=g(ae)===0,c(s,`Slide ${g(ae)+1} of ${g(L).slides.length??``}`),f.disabled=g(ae)>=g(L).slides.length-1,I(m,`aria-label`,`Slide ${g(ae)+1}: ${g(L).slides[g(ae)].title}`)}),n(`click`,i,()=>E(ae,g(ae)-1)),n(`click`,f,()=>E(ae,g(ae)+1)),u(e,t)},Ke=e=>{var t=fn();i(t,()=>g(_),!0),B(t),u(e,t)},qe=e=>{var t=pn();i(t,()=>g(_),!0),B(t),u(e,t)},Ye=e=>{var t=mn(),n=R(t);i(n,()=>g(y),!0),B(n),B(t),u(e,t)},Xe=e=>{var t=hn(),n=R(t),r=R(n,!0);B(n),B(t),d(()=>c(r,g(h))),u(e,t)};M(Pe,e=>{g(p)===`loading`?e(Fe):g(p)===`error`?e(Ie,1):g(s)===`unsupported`?e(ze,2):g(s)===`pdf`&&g(x)?e(He,3):g(s)===`spreadsheet`&&g(re)?e(Ue,4):g(s)===`presentation`&&g(L)?e(Z,5):g(s)===`html`&&g(f)===`preview`&&g(_)?e(Ke,6):g(s)===`markdown`&&g(f)===`preview`?e(qe,7):g(s)===`code`?e(Ye,8):e(Xe,-1)}),B(Ne),d(e=>{c(Oe,g(V)),I(W,`title`,r.upload.filename),c(G,r.upload.filename),c(ke,e),I(Y,`href`,g(ue)),I(Y,`download`,r.upload.filename),I(Y,`aria-label`,`Download ${r.upload.filename}`),X=C(Ne,1,`artifact-viewer__body`,null,X,{"is-pdf":g(s)===`pdf`,"is-office":g(s)===`spreadsheet`||g(s)===`presentation`})},[()=>q(r.upload.byte_size)]),n(`click`,Me,function(...e){r.onClose?.apply(this,e)}),u(e,U),ee()}V([`click`]);var vn=o(``),yn=o(``);function bn(e,t){b(t,!0);let r=x(t,`deleting`,3,!1),i=x(t,`error`,3,``),a=k(()=>t.message.author?.display_name||`Local User`);function o(){r()||t.onClose()}var s=yn(),l=R(s),f=S(l,2),p=R(f),m=S(R(p),2);B(p);var h=S(p,2),_=S(R(h),2),v=R(_);{let e=k(()=>t.message.author?.id||t.message.author_id),n=k(()=>t.message.author?.avatar_url);Z(v,{class:`avatar`,get id(){return g(e)},get name(){return g(a)},get src(){return g(n)},size:36,loading:`eager`,fetchPriority:`auto`})}var y=S(v,2),C=R(y),w=R(C),T=R(w,!0);B(w);var E=S(w,2),D=R(E,!0);B(E),B(C);var O=S(C,2),A=R(O,!0);B(O),B(y),B(_);var j=S(_,2),N=e=>{var t=vn(),n=R(t,!0);B(t),d(()=>c(n,i())),u(e,t)};M(j,e=>{i()&&e(N)});var P=S(j,2),F=R(P),te=S(F,2),ne=R(te,!0);B(te),B(P),B(h),B(f),B(s),d(e=>{l.disabled=r(),m.disabled=r(),c(T,g(a)),I(E,`datetime`,t.message.created_at),c(D,e),c(A,t.message.body),F.disabled=r(),te.disabled=r(),c(ne,r()?`Deleting...`:`Delete`)},[()=>ze(t.message.created_at)]),n(`click`,l,o),n(`click`,m,o),n(`click`,F,o),n(`click`,te,function(...e){t.onConfirm?.apply(this,e)}),u(e,s),ee()}V([`click`]);var xn=6500,Sn=o(`
        `);function Cn(e,t){b(t,!0);let n=k(()=>t.entries.filter(e=>e.userID!==t.currentUserID));function r(e,t=`Someone`){return e?.display_name?.trim()||(e?.handle?`@${e.handle}`:t)}let i=k(()=>g(n).length===0?``:g(n).length===1?`${r(g(n)[0].user)} is typing…`:g(n).length===2?`${r(g(n)[0].user)} and ${r(g(n)[1].user)} are typing…`:g(n).length===3?`${r(g(n)[0].user)}, ${r(g(n)[1].user)}, and ${r(g(n)[2].user)} are typing…`:`Several people are typing…`);var a=Sn();let o;var s=S(R(a),2),l=R(s,!0);B(s),B(a),d(()=>{o=C(a,1,`typing-indicator`,null,o,{visible:g(n).length>0}),c(l,g(i))}),u(e,a),ee()}var wn=45e3,Tn=o(`
        `),En=o(`
        `),Dn=o(`
        `);function On(e,t){b(t,!0);function n(e){return e.kind===`tool`&&e.toolName?!e.text||e.text===e.toolName?e.toolName:`${e.toolName}: ${e.text}`:e.text}function r(e){switch(e){case`tool`:return`⚙`;case`thinking`:case`commentary`:return`✦`;case`plan`:return`☰`;case`patch`:return`±`;case`command_output`:return`›`;case`error`:return`✕`;default:return`·`}}var i=a(),o=j(i),s=e=>{var i=Dn();l(i,21,()=>t.turns,e=>e.turnId,(e,t)=>{var i=En();l(i,21,()=>g(t).lines,e=>e.id,(e,t)=>{var i=Tn();let a;var o=R(i),s=R(o,!0);B(o);var l=S(o,2),f=R(l,!0);B(l),B(i),d((e,n)=>{a=C(i,1,`agent-progress__line svelte-6vwkyv`,null,a,{"agent-progress__line--done":g(t).finalized}),I(i,`data-kind`,g(t).kind),c(s,e),c(f,n)},[()=>r(g(t).kind),()=>n(g(t))]),u(e,i)}),B(i),u(e,i)}),B(i),u(e,i)};M(o,e=>{t.turns.length>0&&e(s)}),u(e,i),ee()}var kn=o(`
        Agent is responding…
        `);function An(e,t){var n=kn();let r;d(()=>r=C(n,1,`typing-indicator agent-responding`,null,r,{visible:t.active})),u(e,n)}var jn=o(`

        `),Mn=o(``);function Nn(e,t){b(t,!0);var r=Mn(),i=R(r),a=S(i,2),o=R(a),s=S(R(o),2);B(o);var l=S(o,2),f=R(l),p=S(R(f),2);O(p),B(f);var m=S(f,2),g=e=>{var n=jn(),r=R(n,!0);B(n),d(()=>c(r,t.status)),u(e,n)};M(m,e=>{t.status&&e(g)});var _=S(m,2),v=R(_);w(2),B(_),B(l),B(a),B(r),d(()=>A(p,t.channelName)),n(`click`,i,function(...e){t.onClose?.apply(this,e)}),n(`click`,s,function(...e){t.onClose?.apply(this,e)}),h(`submit`,l,e=>{e.preventDefault(),t.onCreate()}),n(`input`,p,e=>t.onChannelName(e.currentTarget.value)),n(`click`,v,function(...e){t.onClose?.apply(this,e)}),u(e,r),ee()}V([`click`,`input`]);var Pn=o(``),Fn=o(`
        No matching people yet
        `),In=o(``);function Ln(e,t){b(t,!0);let r=k(()=>t.memberID.trim().toLowerCase()),i=k(()=>t.people.filter(e=>e.id!==t.currentUserID).filter(e=>!g(r)||e.display_name.toLowerCase().includes(g(r))||e.handle?.toLowerCase().includes(g(r))||e.id.toLowerCase().includes(g(r))));var a=In(),o=R(a),s=S(o,2),f=R(s),p=S(R(f),2);B(f);var m=S(f,2),_=R(m),v=S(R(_),2);O(v),B(_);var y=S(_,2),x=R(y);l(x,17,()=>g(i),e=>e.id,(e,r)=>{var i=Pn(),a=R(i);Z(a,{class:`dm-avatar`,get id(){return g(r).id},get name(){return g(r).display_name},get src(){return g(r).avatar_url},size:32});var o=S(a,2),s=R(o),l=R(s,!0);B(s);var f=S(s,2),p=R(f,!0);B(f),B(o),B(i),d(e=>{c(l,g(r).display_name),c(p,e)},[()=>X(g(r).handle)||g(r).id]),n(`click`,i,()=>t.onStart(g(r).id)),u(e,i)});var C=S(x,2),T=e=>{u(e,Fn())};M(C,e=>{g(i).length===0&&e(T)}),B(y);var E=S(y,2),D=R(E);w(2),B(E),B(m),B(s),B(a),d(()=>A(v,t.memberID)),n(`click`,o,function(...e){t.onClose?.apply(this,e)}),n(`click`,p,function(...e){t.onClose?.apply(this,e)}),h(`submit`,m,e=>{e.preventDefault(),t.onStart(t.memberID)}),n(`input`,v,e=>t.onMemberID(e.currentTarget.value)),n(`click`,D,function(...e){t.onClose?.apply(this,e)}),u(e,a),ee()}V([`click`,`input`]);var Rn=o(``),zn=o(` `),Bn=o(`
        `),Vn=o(`
        `),Hn=o(``);function Un(e,t){b(t,!0);let r=x(t,`homeHref`,3,`/`);function i(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}var a=Hn(),o=R(a),s=S(o,4),f=R(s);l(f,17,()=>t.workspaces,e=>e.id,(e,r)=>{var a=Bn();let o;var s=R(a),l=R(s),f=e=>{var t=Rn();d(e=>I(t,`src`,e),[()=>pe(g(r).icon_url)]),u(e,t)},p=e=>{var t=zn(),n=R(t,!0);B(t),d(e=>c(n,e),[()=>Y(g(r).name)]),u(e,t)};M(l,e=>{g(r).icon_url?e(f):e(p,-1)}),B(s),B(a),d(e=>{o=C(a,1,`guild-wrap`,null,o,{active:g(r).id===t.selectedWorkspaceID}),I(s,`title`,g(r).name),I(s,`aria-label`,g(r).name),I(s,`href`,e)},[()=>t.hrefForWorkspace(g(r).id)]),n(`click`,s,e=>{i(e)&&(e.preventDefault(),t.onSelectWorkspace(g(r).id))}),u(e,a)});var p=S(f,2);B(s);var m=S(s,2),_=e=>{var r=Vn(),i=R(r);O(i),B(r),d(()=>A(i,t.workspaceName)),h(`submit`,r,e=>{e.preventDefault(),t.onCreateWorkspace()}),n(`input`,i,e=>t.onWorkspaceName(e.currentTarget.value)),u(e,r)};M(m,e=>{t.showWorkspaceCreate&&e(_)}),B(a),d(()=>I(o,`href`,r())),n(`click`,p,function(...e){t.onToggleWorkspaceCreate?.apply(this,e)}),u(e,a),ee()}V([`click`,`input`]);var Wn=o(``),Gn=o(` `,1),Kn=o(``),qn=o(` `),Jn=o(``),Yn=o(`
        `),Xn=o(``),Zn=o(`Drag with a pointer, use Arrow Up and Arrow Down while focused, or open the move menu. Moves stay within the current channel section. `,1),Qn=o(`
        `);function $n(e,r){b(r,!0);let i=(e,t=p,i=p,a=p,o=p,s=p)=>{let l=k(()=>t().unread_count||0),f=k(()=>i().findIndex(e=>e.id===t().id));var b=Jn();let x;var D=R(b),O=e=>{var r=Gn(),o=j(r),s=S(o,2),c=e=>{var r=Wn(),a=R(r),o=S(a,2);B(r),oe(r,e=>E(T,e),()=>g(T)),d(e=>{I(r,`aria-label`,e),a.disabled=g(f)<=0,o.disabled=g(f)<0||g(f)>=i().length-1},[()=>`Move #${Ze(t())}`]),n(`keydown`,r,e=>{e.key===`Escape`&&(e.preventDefault(),ve(!0))}),n(`click`,a,()=>ye(t().id,-1,i())),n(`click`,o,()=>ye(t().id,1,i())),u(e,r)};M(s,e=>{g(w)===t().id&&e(c)}),d(e=>{I(o,`aria-label`,e),I(o,`aria-expanded`,g(w)===t().id)},[()=>`Move #${Ze(t())}`]),n(`click`,o,e=>void _e(t().id,e.currentTarget)),h(`dragstart`,o,e=>H(e,t().id,a())),h(`dragend`,o,ge),n(`keydown`,o,e=>{e.key===`ArrowUp`||e.key===`ArrowDown`?(e.preventDefault(),E(w,``),pe(t().id,e.key===`ArrowUp`?-1:1,i())):e.key===`Escape`&&E(w,``)}),u(e,r)};M(D,e=>{s()&&e(O)});var ee=S(D,2);let A;var N=S(R(ee),2),P=R(N,!0);B(N);var F=S(N,2),te=e=>{u(e,Kn())};M(F,e=>{t().external_managed&&e(te)});var ne=S(F,2),re=e=>{var t=qn(),n=R(t,!0);B(t),d(()=>{I(t,`aria-label`,`${g(l)} unread`),c(n,g(l)>99?`99+`:g(l))}),u(e,t)};M(ne,e=>{g(l)>0&&!(t().id===r.selectedChannelID&&!r.selectedDirectID)&&e(re)}),B(ee),B(b),d((e,n)=>{x=C(b,1,`channel-row`,null,x,{reorderable:s(),subdued:o(),dragging:g(m)===t().id,"drop-before":g(v)===t().id&&g(y),"drop-after":g(v)===t().id&&!g(y)}),I(ee,`href`,e),A=C(ee,1,`nav-item channel`,null,A,{active:t().id===r.selectedChannelID&&!r.selectedDirectID,"has-unread":g(l)>0&&!(t().id===r.selectedChannelID&&!r.selectedDirectID)}),c(P,n)},[()=>r.hrefForChannel(t().id),()=>Ze(t())]),h(`dragover`,b,e=>{s()&&me(e,t().id,a())}),h(`drop`,b,e=>{e.preventDefault(),!(!s()||g(_)!==a())&&(fe(g(m),t().id,g(y),i()),ge())}),n(`focusout`,b,e=>{e.currentTarget.contains(e.relatedTarget)||E(w,``)}),n(`click`,ee,e=>{be(e)&&(e.preventDefault(),r.onSelectChannel(t().id))}),u(e,b)},o=(e,t=p,r=p,a=p)=>{let o=k(()=>ce(t().key)),s=k(()=>ue(t()));var f=Yn();let m;var h=R(f),_=S(R(h),2),v=R(_,!0);B(_);var y=S(_,2),b=R(y,!0);B(y),B(h);var x=S(h,2);l(x,21,()=>g(s),e=>e.id,(e,n)=>{i(e,()=>g(n),()=>t().channels,()=>t().key,a,()=>g(o))}),B(x),B(f),d(()=>{m=C(f,1,`channel-subgroup`,null,m,{"archived-channel-group":a()}),I(h,`aria-expanded`,g(o)),I(h,`aria-controls`,r()),c(v,t().label),c(b,t().channels.length),I(x,`id`,r()),I(x,`hidden`,!g(o)&&g(s).length===0)}),n(`click`,h,()=>le(t().key)),u(e,f)},f=`archived`,m=P(``),_=P(``),v=P(``),y=P(!0),x=P(!1),w=P(``),T=P(void 0),D,O=P(``),A=P(ie({})),N=k(()=>r.channels.filter(e=>!e.archived_at)),F=k(()=>r.channels.filter(e=>!!e.archived_at)),te=k(()=>g(N).filter(e=>!e.sidebar_section?.trim())),re=k(()=>{let e=new Map;for(let t of g(N)){let n=t.sidebar_section?.trim();if(!n)continue;let r=e.get(n)??[];r.push(t),e.set(n,r)}return[...e.entries()].map(([e,t])=>({key:`section:${e}`,label:e,channels:t})).sort((e,t)=>e.label.localeCompare(t.label,void 0,{sensitivity:`base`}))}),L=k(()=>r.channels.filter(e=>e.id===r.selectedChannelID&&!r.selectedDirectID||(e.unread_count||0)>0));function ae(e){if(!e)return{};try{let t=JSON.parse(e);if(!t||typeof t!=`object`||Array.isArray(t))return{};let n=Object.entries(t);return n.length>1e3||n.some(([e,t])=>e.length>256||typeof t!=`boolean`)?{}:Object.fromEntries(n)}catch{return{}}}function z(e){return`clickclack:sidebar-channel-groups:v1:${e}`}function se(e){if(!e)return{};try{return ae(window.localStorage.getItem(z(e)))}catch{return{}}}function ce(e){let t=g(A)[e];return typeof t==`boolean`?t:e!==f}function le(e){if(E(A,{...g(A),[e]:!ce(e)},!0),r.workspaceID)try{window.localStorage.setItem(z(r.workspaceID),JSON.stringify(g(A)))}catch{}}function V(e){e.key===z(r.workspaceID)&&E(A,ae(e.newValue),!0)}function ue(e){return ce(e.key)?e.channels:e.channels.filter(e=>e.id===r.selectedChannelID&&!r.selectedDirectID||(e.unread_count||0)>0)}function de(e){E(O,``),queueMicrotask(()=>{E(O,e,!0)})}function fe(e,t,n,i){if(!e||!t||e===t)return;let a=r.channels.map(e=>e.id),o=a.indexOf(e);if(o<0)return;a.splice(o,1);let s=a.indexOf(t);if(s<0)return;a.splice(s+ +!n,0,e),r.onReorder(a);let c=r.channels.find(t=>t.id===e),l=i.map(e=>e.id).filter(t=>t!==e),u=l.indexOf(t);l.splice(u+ +!n,0,e),c&&de(`Moved #${Ze(c)} to position ${l.indexOf(e)+1} of ${l.length}`)}function pe(e,t,n){let r=n.findIndex(t=>t.id===e),i=r+t;r<0||i<0||i>=n.length||fe(e,n[i].id,t<0,n)}function H(e,t,n){E(x,!0),E(w,``),E(m,t,!0),E(_,n,!0),e.dataTransfer?.setData(`text/plain`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}function me(e,t,n){if(!g(m)||g(m)===t||g(_)!==n)return;e.preventDefault();let r=e.currentTarget;E(v,t,!0),E(y,e.clientY{E(x,!1)},0)}async function _e(e,t){if(!g(x)){if(g(w)===e){E(w,``);return}D=t,E(w,e,!0),await s(),g(T)?.querySelector(`button:not(:disabled)`)?.focus()}}async function ve(e=!1){E(w,``),e&&(await s(),D?.focus())}function ye(e,t,n){pe(e,t,n),ve(!0)}function be(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}t(()=>{E(A,se(r.workspaceID),!0)}),t(()=>{r.expanded||(E(w,``),he(),E(x,!1))});var xe=Qn();h(`storage`,ne,V);let Se;var Ce=R(xe),we=R(Ce),U=S(we,2);B(Ce);var Te=S(Ce,2),Ee=R(Te),De=e=>{var t=Zn(),n=S(j(t),2);l(n,17,()=>g(te),e=>e.id,(e,t)=>{i(e,()=>g(t),()=>g(te),()=>`unsectioned`,()=>!1,()=>!0)});var a=S(n,2);l(a,19,()=>g(re),e=>e.key,(e,t,n)=>{o(e,()=>g(t),()=>`sidebar-channel-section-${g(n)}`,()=>!1)});var s=S(a,2),c=e=>{o(e,()=>({key:f,label:`Archived`,channels:g(F)}),()=>`sidebar-archived-channels`,()=>!0)};M(s,e=>{g(F).length>0&&e(c)});var d=S(s,2),p=e=>{u(e,Xn())};M(d,e=>{r.channels.length===0&&e(p)}),u(e,t)},Oe=e=>{var t=a();l(j(t),17,()=>g(L),e=>e.id,(e,t)=>{{let n=k(()=>!!g(t).archived_at);i(e,()=>g(t),()=>g(L),()=>`priority`,()=>g(n),()=>!1)}}),u(e,t)};M(Ee,e=>{r.expanded?e(De):e(Oe,-1)}),B(Te);var W=S(Te,2),G=R(W,!0);B(W),B(xe),d(()=>{Se=C(xe,1,`nav-section`,null,Se,{collapsed:!r.expanded}),I(we,`aria-expanded`,r.expanded),I(Te,`hidden`,!r.expanded&&g(L).length===0),c(G,g(O))}),n(`click`,we,function(...e){r.onToggle?.apply(this,e)}),n(`click`,U,function(...e){r.onCreateChannel?.apply(this,e)}),u(e,xe),ee()}V([`focusout`,`click`,`keydown`]);var er=o(` `),tr=o(``),nr=o(``),rr=o(`
        `),ir=o(``),ar=o(`
        `),or=o(`
        `);function sr(e,t){b(t,!0);let r=P(``),i=k(()=>t.expanded?t.conversations:t.conversations.filter(e=>e.id===t.selectedDirectID||(e.unread_count||0)>0));function a(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}function o(e){E(r,g(r)===e?``:e,!0)}function s(){E(r,``)}var f=or();let p;var m=R(f),h=R(m),_=S(h,2);B(m);var v=S(m,2),y=R(v);l(y,17,()=>g(i),e=>e.id,(e,i)=>{let l=k(()=>He(g(i),t.currentUserID)),f=k(()=>g(i).unread_count||0),p=k(()=>g(i).id===t.selectedDirectID);var m=rr();let h;var _=R(m);let v;var y=R(_);{let e=k(()=>g(l)?.id||g(i).id),t=k(()=>g(l)?.display_name),n=k(()=>Fe(g(l))?void 0:g(l)?.avatar_url);Z(y,{class:`dm-avatar`,get id(){return g(e)},get name(){return g(t)},get src(){return g(n)},size:22})}var b=S(y,2),x=R(b,!0);B(b);var w=S(b,2),T=e=>{var t=er(),n=R(t,!0);B(t),d(()=>{I(t,`aria-label`,`${g(f)} unread`),c(n,g(f)>99?`99+`:g(f))}),u(e,t)},E=e=>{u(e,tr())};M(w,e=>{g(f)>0&&!g(p)?e(T):e(E,-1)}),B(_);var D=S(_,2),O=S(D,2),ee=e=>{var r=nr(),a=R(r);B(r),n(`click`,a,e=>{e.preventDefault(),e.stopPropagation(),s(),t.onHideDirect(g(i).id)}),u(e,r)};M(O,e=>{g(r)===g(i).id&&e(ee)}),B(m),d((e,t,n)=>{h=C(m,1,`dm-row`,null,h,{active:g(p)}),I(_,`href`,e),v=C(_,1,`nav-item dm`,null,v,{active:g(p),"has-unread":g(f)>0&&!g(p)}),c(x,t),I(D,`aria-label`,n),I(D,`aria-expanded`,g(r)===g(i).id)},[()=>t.hrefForDirect(g(i).id),()=>Ne(g(i),t.currentUserID),()=>`Direct message actions for ${Ne(g(i),t.currentUserID)}`]),n(`click`,_,e=>{a(e)&&(e.preventDefault(),t.onSelectDirect(g(i).id))}),n(`click`,D,e=>{e.preventDefault(),e.stopPropagation(),o(g(i).id)}),n(`keydown`,D,e=>{e.key===`Escape`&&s()}),u(e,m)});var x=S(y,2),w=e=>{u(e,ir())};M(x,e=>{t.expanded&&t.conversations.length===0&&e(w)});var T=S(x,2),D=e=>{var r=ar(),i=R(r),a=R(i);B(i);var o=S(i,2);B(r),d(()=>c(a,`Closed ${t.hiddenDirectTitle??``}`)),n(`click`,o,function(...e){t.onUndoHideDirect?.apply(this,e)}),u(e,r)};M(T,e=>{t.expanded&&t.hiddenDirectTitle&&e(D)}),B(v),B(f),d(()=>{p=C(f,1,`nav-section`,null,p,{collapsed:!t.expanded}),I(h,`aria-expanded`,t.expanded),I(v,`hidden`,!t.expanded&&g(i).length===0)}),n(`click`,h,function(...e){t.onToggle?.apply(this,e)}),n(`click`,_,function(...e){t.onCreateDirect?.apply(this,e)}),u(e,f),ee()}V([`click`,`keydown`]);var cr=o(``),lr=o(`Connecting…`),ur=o(`
        `),dr=o(` `),fr=o(``),pr=o(``),mr=o(``);function hr(e,r){b(r,!0);let i=x(r,`showHeader`,3,!0),a=`clickclack:sidebar-sections:v1:`,o={channels:!0,directMessages:!0,people:!0},s=P(ie({...o}));function f(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.channels==`boolean`&&typeof t.directMessages==`boolean`&&typeof t.people==`boolean`}function p(e){if(!e)return{...o};try{let t=window.localStorage.getItem(`${a}${e}`);if(!t)return{...o};let n=JSON.parse(t);return f(n)?n:{...o}}catch{return{...o}}}function m(e){if(E(s,{...g(s),[e]:!g(s)[e]},!0),r.workspaceID)try{window.localStorage.setItem(`${a}${r.workspaceID}`,JSON.stringify(g(s)))}catch{}}t(()=>{E(s,p(r.workspaceID),!0)});let _=1e6,v=P(ie([]));function y(e,t){return`clickclack:sidebar-channel-order:v1:${t}:${e}`}function T(e){if(!e||e.length>_)return[];try{let t=JSON.parse(e);return Array.isArray(t)&&t.length<=1e4&&t.every(e=>typeof e==`string`&&e.length<=128)?[...new Set(t)]:[]}catch{return[]}}function D(e,t){if(!e||!t)return[];try{return T(window.localStorage.getItem(y(e,t)))}catch{return[]}}function O(e){if(E(v,e,!0),!(!r.workspaceID||!r.currentUser?.id))try{let t=y(r.workspaceID,r.currentUser.id),n=JSON.stringify(e);if(n.length>_){window.localStorage.removeItem(t);return}window.localStorage.setItem(t,n)}catch{}}function A(e){!r.workspaceID||!r.currentUser?.id||e.key===y(r.workspaceID,r.currentUser.id)&&E(v,T(e.newValue),!0)}let j=k(()=>{let e=new Map(r.channels.map(e=>[e.id,e]));return[...g(v).flatMap(t=>{let n=e.get(t);return n?(e.delete(t),[n]):[]}),...e.values()]});t(()=>{E(v,D(r.workspaceID,r.currentUser?.id||``),!0)});function N(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}var F=mr();h(`storage`,ne,A);var te=R(F),re=e=>{var t=ur(),i=R(t),a=R(i),o=e=>{var t=cr();d(e=>I(t,`src`,e),[()=>pe(r.workspaceIconURL)]),u(e,t)};M(a,e=>{r.workspaceIconURL&&e(o)});var s=S(a,2),l=R(s),f=R(l),p=R(f,!0);B(f),w(2),B(l);var m=S(l,2),h=e=>{u(e,lr())};M(m,e=>{r.connected||e(h)}),B(s),B(i);var g=S(i,2),_=R(g),v=R(_),y=R(v);B(v),B(_),B(g),B(t),d(()=>{c(p,r.workspaceName||`Pick a workspace`),I(_,`aria-label`,r.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),I(_,`title`,r.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),I(y,`d`,r.sidebarCollapsed?`m9 6 6 6-6 6`:`m15 6-6 6 6 6`)}),n(`click`,i,function(...e){r.onOpenWorkspaceSettings?.apply(this,e)}),n(`click`,_,function(...e){r.onToggleCollapse?.apply(this,e)}),u(e,t)};M(te,e=>{i()&&e(re)});var L=S(te,2),ae=R(L);$n(ae,{get workspaceID(){return r.workspaceID},get expanded(){return g(s).channels},get channels(){return g(j)},get selectedChannelID(){return r.selectedChannelID},get selectedDirectID(){return r.selectedDirectID},get hrefForChannel(){return r.hrefForChannel},get onSelectChannel(){return r.onSelectChannel},get onCreateChannel(){return r.onCreateChannel},onToggle:()=>m(`channels`),onReorder:O});var oe=S(ae,2);{let e=k(()=>r.currentUser?.id);sr(oe,{get expanded(){return g(s).directMessages},get conversations(){return r.directConversations},get currentUserID(){return g(e)},get selectedDirectID(){return r.selectedDirectID},get hrefForDirect(){return r.hrefForDirect},get onSelectDirect(){return r.onSelectDirect},get onCreateDirect(){return r.onCreateDirect},get onHideDirect(){return r.onHideDirect},get hiddenDirectTitle(){return r.hiddenDirectTitle},get onUndoHideDirect(){return r.onUndoHideDirect},onToggle:()=>m(`directMessages`)})}var z=S(oe,2);let se;var ce=R(z),le=R(ce);B(ce);var V=S(ce,2),ue=R(V);l(ue,17,()=>r.recentPeople,e=>e.id,(e,t)=>{let i=k(()=>ke(r.directConversations,g(t).id));var a=dr();let o;var s=R(a);Z(s,{class:`dm-avatar`,get id(){return g(t).id},get name(){return g(t).display_name},get src(){return g(t).avatar_url},size:22});var l=S(s,2),f=R(l,!0);B(l),w(2),B(a),d(e=>{I(a,`href`,e),o=C(a,1,`nav-item dm`,null,o,{active:g(i)?.id===r.selectedDirectID||r.selectedProfile?.id===g(t).id}),c(f,g(t).display_name)},[()=>g(i)?r.hrefForDirect(g(i).id):`#`]),n(`click`,a,e=>{if(g(i)){if(!N(e))return;e.preventDefault(),r.onSelectDirect(g(i).id)}else e.preventDefault(),r.onOpenProfile(g(t))}),u(e,a)});var de=S(ue,2),fe=e=>{u(e,fr())};M(de,e=>{r.recentPeople.length===0&&e(fe)}),B(V),B(z),B(L);var H=S(L,2),me=e=>{var t=pr(),i=R(t);Z(i,{class:`dm-avatar`,get id(){return r.currentUser.id},get name(){return r.currentUser.display_name},get src(){return r.currentUser.avatar_url},size:28,loading:`eager`,fetchPriority:`auto`});var a=S(i,2),o=R(a),s=R(o,!0);B(o);var l=S(o,2),f=R(l,!0);B(l),B(a),w(2),B(t),d((e,n)=>{I(t,`aria-label`,e),c(s,r.currentUser.display_name),c(f,n)},[()=>`Account settings for ${r.currentUser.display_name} ${X(r.currentUser.handle)}`,()=>r.currentUser.handle?X(r.currentUser.handle):r.connected?`Active`:`Reconnecting…`]),n(`click`,t,function(...e){r.onOpenSettings?.apply(this,e)}),n(`contextmenu`,t,e=>{e.preventDefault(),r.onOpenSettings()}),u(e,t)};M(H,e=>{r.currentUser&&e(me)}),B(F),d(()=>{se=C(z,1,`nav-section`,null,se,{collapsed:!g(s).people}),I(le,`aria-expanded`,g(s).people),I(V,`hidden`,!g(s).people)}),n(`click`,le,()=>m(`people`)),u(e,F),ee()}V([`click`,`contextmenu`]);var gr=o(` `),_r=o(` `),vr=o(``),yr=o(``),br=o(`
        User kind
        `),xr=o(`

        `),Sr=o(`

        Blocked.

        `),Cr=o(``),wr=o(``),Tr=o(``),Er=o(`
        Moderation
        `),Dr=o(`

        Profile

        Active
        Contact information
        Handle
        User ID
        About

        `,1);function Or(e,t){b(t,!0);let r=k(()=>t.profile.kind===`bot`?t.profile.owner_user_id?`Bot of ${t.profile.owner_user_id}`:`Service bot`:``),i=k(()=>t.moderation?.role||`member`),a=k(()=>!!t.moderation&&g(i)!==`owner`&&(t.currentUserRole===`owner`||t.currentUserRole===`moderator`&&(g(i)===`member`||g(i)===`guest`))),o=k(()=>t.currentUser?.id!==t.profile.id&&g(a)),s=k(()=>!!t.moderation?.blocked_at),l=k(()=>g(i));var f=Dr(),p=j(f),m=R(p),h=S(R(m),2),_=R(h,!0);B(h),B(m);var v=S(m,2);B(p);var y=S(p,2),x=R(y);Z(R(x),{class:`profile-avatar`,get id(){return t.profile.id},get name(){return t.profile.display_name},get src(){return t.profile.avatar_url},size:240,loading:`eager`,fetchPriority:`auto`}),B(x);var C=S(x,2),w=R(C),T=R(w),E=R(T),D=R(E,!0);B(E);var O=S(E,2),A=e=>{var t=gr(),n=R(t,!0);B(t),d(()=>c(n,g(r))),u(e,t)};M(O,e=>{g(r)&&e(A)});var N=S(O,2),P=e=>{var n=_r(),r=R(n,!0);B(n),d(e=>c(r,e),[()=>X(t.profile.handle)]),u(e,n)};M(N,e=>{t.profile.handle&&e(P)}),B(T);var F=S(T,2),te=e=>{var r=vr();n(`click`,r,function(...e){t.onEdit?.apply(this,e)}),u(e,r)};M(F,e=>{t.currentUser?.id===t.profile.id&&e(te)}),B(w);var ne=S(w,4),re=R(ne),ie=e=>{var r=yr();n(`click`,r,()=>t.onMessage(t.profile.id)),u(e,r)};M(re,e=>{t.currentUser?.id!==t.profile.id&&e(ie)});var I=S(re,2);B(ne);var L=S(ne,2),ae=R(L),oe=S(R(ae),2),z=e=>{var r=vr();n(`click`,r,function(...e){t.onEdit?.apply(this,e)}),u(e,r)};M(oe,e=>{t.currentUser?.id===t.profile.id&&e(z)}),B(ae);var se=S(ae,2),ce=S(R(se),2),V=S(R(ce),2),ue=R(V,!0);B(V),B(ce),B(se);var de=S(se,2),fe=S(R(de),2),pe=S(R(fe),2),H=R(pe,!0);B(pe),B(fe),B(de);var me=S(de,2),he=e=>{var t=br(),n=S(R(t),2),i=S(R(n),2),a=R(i,!0);B(i),B(n),B(t),d(()=>c(a,g(r))),u(e,t)};M(me,e=>{t.profile.kind===`bot`&&e(he)}),B(L);var ge=S(L,2),_e=S(R(ge),2),ve=R(_e);B(_e),B(ge);var ye=S(ge,2),be=e=>{var r=Er(),i=R(r),a=S(R(i),2),o=R(a,!0);B(a),B(i);var f=S(i,2),p=e=>{var n=xr(),r=R(n);B(n),d(()=>c(r,`${t.moderation.posts_remaining??``} of ${t.moderation.post_limit??``} waiting-room posts left today.`)),u(e,n)};M(f,e=>{t.moderation.role===`guest`&&t.moderation.post_limit>0&&e(p)});var m=S(f,2),h=e=>{var n=xr(),r=R(n);B(n),d(e=>c(r,`Timed out until ${e??``}.`),[()=>new Date(t.moderation.timeout_until).toLocaleString()]),u(e,n)};M(m,e=>{t.moderation.timeout_until&&e(h)});var _=S(m,2),v=e=>{u(e,Sr())};M(_,e=>{t.moderation.blocked_at&&e(v)});var y=S(_,2),b=R(y),x=e=>{var r=Cr();n(`click`,r,()=>t.onApprove(t.profile.id)),u(e,r)};M(b,e=>{t.moderation.role===`guest`&&e(x)});var C=S(b,2),w=S(C,2),T=e=>{var r=wr();n(`click`,r,()=>t.onUnblock(t.profile.id)),u(e,r)},E=e=>{var r=Tr();n(`click`,r,()=>t.onBlock(t.profile.id)),u(e,r)};M(w,e=>{g(s)?e(T):e(E,-1)}),B(y),B(r),d(()=>c(o,g(l))),n(`click`,C,()=>t.onTimeout(t.profile.id)),u(e,r)};M(ye,e=>{g(o)&&t.moderation&&e(be)}),B(C),B(y),d((e,n)=>{c(_,t.profile.display_name),le(x,`--hue: ${e??``}deg`),c(D,t.profile.display_name),c(ue,n),c(H,t.profile.id),c(ve,`Member of ${(t.workspaceName||`this workspace`)??``}.`)},[()=>Pe(t.profile.id),()=>t.profile.handle?X(t.profile.handle):`No handle set`]),n(`click`,v,function(...e){t.onClose?.apply(this,e)}),n(`click`,I,function(...e){t.onSetStatus?.apply(this,e)}),u(e,f),ee()}V([`click`]);var kr=o(` `,1),Ar=o(`
        `),jr=o(`
        We couldn’t search messages

        `),Mr=o(`
        No messages found

        Try another word or phrase.

        `),Nr=o(`deleted bot`),Pr=o(` `),Fr=o(` `),Ir=o(` `),Lr=o(` Reply in thread`),Rr=o(` `),zr=o(`
      5. `),Br=o(``),Vr=o(``),Hr=o(``),Ur=o(`
          `,1),Wr=o(``);function Gr(e,t){b(t,!0);let r=x(t,`covered`,3,!1),i=x(t,`inert`,3,!1),o=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}),s=new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}),p=new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`,year:`numeric`});function m(e,t){let n=Array.from(e),r=[],i=0;for(let e of t){let t=Math.max(i,Math.min(n.length,e.start)),a=Math.max(t,Math.min(n.length,e.end));t>i&&r.push({text:n.slice(i,t).join(``),highlighted:!1}),a>t&&r.push({text:n.slice(t,a).join(``),highlighted:!0}),i=a}return i{u(e,f(`Searching messages…`))},ne=e=>{var n=kr(),r=j(n),i=S(r),a=e=>{var n=f();d(()=>c(n,`in ${t.session.scope.label??``}`)),u(e,n)};M(i,e=>{t.session.scope.label&&e(a)}),d(()=>c(r,`${t.session.results.length??``}${t.session.nextCursor?`+`:``} - ${t.session.results.length===1&&!t.session.nextCursor?`result`:`results`}`)),u(e,n)},re=e=>{u(e,f(`Search unavailable`))};M(F,e=>{t.session.state===`loading`?e(te):t.session.state===`ready`?e(ne,1):t.session.state===`error`&&e(re,2)}),B(P);var ie=S(P,2),L=R(ie),ae=e=>{u(e,Ar())},oe=e=>{var n=jr(),r=S(R(n),4),i=R(r,!0);B(r),B(n),d(()=>c(i,t.session.error)),u(e,n)},z=e=>{u(e,Mr())},se=e=>{var r=Ur(),i=j(r);l(i,21,()=>t.session.results,e=>e.id,(e,r)=>{let i=k(()=>t.contextFor(g(r)));var o=zr(),s=R(o);let p;var _=R(s);{let e=k(()=>Fe(g(r).author)?void 0:g(r).author.avatar_url);Z(_,{class:`dm-avatar`,get id(){return g(r).author.id},get name(){return g(r).author.display_name},get src(){return g(e)},size:30})}var v=S(_,2),y=R(v),b=R(y),x=R(b,!0);B(b);var w=S(b,2),T=e=>{u(e,Nr())},E=k(()=>Fe(g(r).author)),D=e=>{var t=Pr(),n=R(t,!0);B(t),d(e=>c(n,e),[()=>X(J(g(r).author))]),u(e,t)},O=k(()=>J(g(r).author));M(w,e=>{g(E)?e(T):g(O)&&e(D,1)});var ee=S(w,2),A=R(ee,!0);B(ee),B(y);var P=S(y,2);l(P,21,()=>m(g(r).snippet,g(r).highlights),N,(e,t)=>{var n=a(),r=j(n),i=e=>{var n=Fr(),r=R(n,!0);B(n),d(()=>c(r,g(t).text)),u(e,n)},o=e=>{var n=f();d(()=>c(n,g(t).text)),u(e,n)};M(r,e=>{g(t).highlighted?e(i):e(o,-1)}),u(e,n)}),B(P);var F=S(P,2),te=R(F),ne=e=>{var t=Ir(),n=R(t,!0);B(t),d(()=>c(n,g(i))),u(e,t)};M(te,e=>{g(i)&&e(ne)});var re=S(te,2),ie=e=>{u(e,Lr())},L=e=>{var t=Rr(),n=S(R(t));B(t),d(()=>c(n,` ${g(r).reply_count??``} ${g(r).reply_count===1?`reply`:`replies`}`)),u(e,t)};M(re,e=>{g(r).parent_message_id?e(ie):g(r).reply_count>0&&e(L,1)}),B(F),B(v),B(s),B(o),d(e=>{p=C(s,1,`search-result`,null,p,{"is-active":t.session.activeResultID===g(r).id}),I(s,`data-result-id`,g(r).id),c(x,g(r).author.display_name||`Local User`),I(ee,`datetime`,g(r).created_at),c(A,e)},[()=>h(g(r).created_at)]),n(`click`,s,()=>t.onOpenResult(g(r))),u(e,o)}),B(i);var o=S(i,2),s=e=>{var r=Br(),i=R(r),a=R(i,!0);B(i);var o=S(i,2);B(r),d(()=>c(a,t.session.moreError)),n(`click`,o,function(...e){t.onLoadMore?.apply(this,e)}),u(e,r)},p=e=>{var r=Vr(),i=R(r,!0);B(r),d(()=>{r.disabled=t.session.loadingMore,c(i,t.session.loadingMore?`Loading more…`:`Load more results`)}),n(`click`,r,function(...e){t.onLoadMore?.apply(this,e)}),u(e,r)},_=e=>{u(e,Hr())};M(o,e=>{t.session.moreError?e(s):t.session.nextCursor?e(p,1):e(_,-1)}),u(e,r)};M(L,e=>{t.session.state===`loading`?e(ae):t.session.state===`error`?e(oe,1):t.session.results.length===0?e(z,2):e(se,-1)}),B(ie),B(_),d(()=>{v=C(_,1,`search-results`,null,v,{covered:r()}),_.inert=i(),I(_,`aria-hidden`,r()?`true`:void 0),c(E,`Search${t.session.scope.label?` in ${t.session.scope.label}`:``}`),c(O,`Results for “${t.session.query??``}”`)}),n(`click`,A,function(...e){t.onClose?.apply(this,e)}),u(e,_),ee()}V([`click`]);var Kr=`clickclack:browser-notifications-enabled:v1:`;function qr(e){return`${Kr}${e}`}function Jr(e){if(!e)return!1;try{return window.localStorage.getItem(qr(e))===`enabled`}catch{return!1}}function Yr(e,t){if(!e)return!1;try{return t?window.localStorage.setItem(qr(e),`enabled`):window.localStorage.removeItem(qr(e)),!0}catch{return!1}}var Xr=o(`

          Browser notifications are not supported on this device.

          `),Zr=o(`

          Browser notifications are blocked by this browser.

          `),Qr=o(`

          `),$r=o(`

          Show alerts when ClickClack is in the background.

          `);function ei(e,r){b(r,!0);let i=x(r,`isDesktop`,3,!1),a=P(!1),o=P(!1),s=P(`default`),l=P(``),f=P(!1);t(()=>{p(r.user.id,i())});function p(e,t){if(t){E(a,!0),E(s,`granted`),E(o,Jr(e),!0),r.onChanged?.(g(o));return}E(a,typeof Notification<`u`),E(s,g(a)?Notification.permission:`unsupported`,!0);let n=Jr(e);E(o,g(s)===`granted`&&n,!0),n&&g(s)!==`granted`&&Yr(e,!1),r.onChanged?.(g(o))}async function m(e){if(E(l,``),E(f,!1),!e){Yr(r.user.id,!1),E(o,!1),r.onChanged?.(!1),E(l,i()?`Desktop notifications disabled`:`Browser notifications disabled`,!0);return}if(i()){E(o,Yr(r.user.id,!0),!0),r.onChanged?.(g(o)),E(l,g(o)?`Desktop notifications enabled`:`Desktop notification preference could not be saved`,!0),E(f,!g(o));return}if(typeof Notification>`u`){E(a,!1),E(s,`unsupported`),E(o,!1),r.onChanged?.(!1),E(l,`Browser notifications are not supported`),E(f,!0);return}if(E(s,Notification.permission==="default"?await Notification.requestPermission():Notification.permission,!0),E(a,!0),g(s)===`granted`){E(o,Yr(r.user.id,!0),!0),r.onChanged?.(g(o)),E(l,g(o)?`Browser notifications enabled`:`Browser notification preference could not be saved`,!0),E(f,!g(o));return}Yr(r.user.id,!1),E(o,!1),r.onChanged?.(!1),E(l,g(s)===`denied`?`Browser notifications are blocked by this browser`:`Browser notifications were not enabled`,!0),E(f,!0)}var h=$r(),_=R(h),v=R(_),y=R(v,!0);B(v);var w=S(v,4),T=e=>{u(e,Xr())},D=e=>{u(e,Zr())};M(w,e=>{!i()&&!g(a)?e(T):!i()&&g(s)===`denied`&&e(D,1)});var k=S(w,2),A=e=>{var t=Qr();let n;var r=R(t,!0);B(t),d(()=>{n=C(t,1,`settings-row2__hint`,null,n,{"is-error":g(f)}),c(r,g(l))}),u(e,t)};M(k,e=>{g(l)&&e(A)}),B(_);var j=S(_,2),N=R(j);O(N),B(j),B(h),d(()=>{c(y,i()?`Desktop notifications`:`Browser notifications`),I(N,`aria-label`,i()?`Desktop notifications`:`Browser notifications`),N.disabled=!g(a)||g(s)===`denied`,F(N,g(o))}),n(`change`,N,e=>void m(e.currentTarget.checked)),u(e,h),ee()}V([`change`]);var ti=o(``),ni=o(`

          `),ri=o(``),ii=o(`
          Preview

          Shown in messages, mentions, and your profile card.

          Used in mentions and the quick switcher. Must be unique.

          Paste a public image URL. Your initials show when empty.

          Conversation display

          Keep agent reasoning summaries out of the message timeline.

          Hide tool execution details while keeping ordinary messages visible.

          Choose which side of the timeline shows your messages.

          Choose which side of the timeline shows messages from other people and agents.

          Notifications

          `);function ai(e,r){b(r,!0);let i=x(r,`isDesktop`,3,!1),a=P(null),o=k(()=>g(a)??r.user),s=P(``),l=P(``),f=P(``),p=P(``),m=P(!1),_=P(!1),v=k(()=>g(s).trim()||g(o).display_name||`Your name`),T=k(()=>g(l).trim().replace(/^@+/,``)||g(o).handle||``);t(()=>{E(s,g(o).display_name,!0),E(l,g(o).handle??``,!0),E(f,g(o).avatar_url,!0)});function D(){let e=g(l).trim().replace(/^@+/,``);return e?`@${e}`:``}async function A(){if(!g(_)){E(_,!0),E(p,``),E(m,!1);try{let e=await ge({method:`PATCH`,body:JSON.stringify({display_name:g(s),handle:D(),avatar_url:g(f),notification_settings:g(o).notification_settings})});E(a,e.user,!0),r.onUserUpdated?.(e.user),E(p,`Saved`),r.onSaved?.()}catch(e){E(p,e instanceof Error?e.message:`Could not save profile`,!0),E(m,!0)}finally{E(_,!1)}}}function j(){E(f,``)}var N=ii(),te=R(N),ne=R(te);Z(ne,{get id(){return g(o).id},get name(){return g(v)},get src(){return g(f)},size:52,loading:`eager`,fetchPriority:`auto`});var re=S(ne,2),ie=R(re),I=R(ie,!0);B(ie);var L=S(ie,2),ae=R(L,!0);B(L),B(re),w(2),B(te);var oe=S(te,2),z=R(oe),le=S(R(z),2),V=R(le);O(V),B(le),B(z);var ue=S(z,2),de=S(R(ue),2),fe=R(de),pe=S(R(fe),2);O(pe),B(fe),B(de),B(ue);var H=S(ue,2),me=S(R(H),2),he=R(me);O(he);var _e=S(he,2),ve=e=>{var t=ti();n(`click`,t,j),u(e,t)};M(_e,e=>{g(f)&&e(ve)}),B(me),B(H);var ye=S(H,4),be=S(R(ye),2),xe=R(be);O(xe),B(be),B(ye);var Se=S(ye,2),Ce=S(R(Se),2),we=R(Ce);O(we),B(Ce),B(Se);var U=S(Se,2),Te=S(R(U),2),Ee=R(Te),De=R(Ee);De.value=De.__value=`left`;var Oe=S(De);Oe.value=Oe.__value=`right`,B(Ee);var W;y(Ee),B(Te),B(U);var G=S(U,2),K=S(R(G),2),ke=R(K),q=R(ke);q.value=q.__value=`left`;var Ae=S(q);Ae.value=Ae.__value=`right`,B(ke);var je;y(ke),B(K),B(G),ei(S(G,4),{get user(){return g(o)},get isDesktop(){return i()},get onChanged(){return r.onBrowserNotificationsChanged}}),B(oe);var J=S(oe,2),Y=R(J),Me=e=>{var t=ni();let n;var r=R(t,!0);B(t),d(()=>{n=C(t,1,`settings-status`,null,n,{"is-error":g(m)}),c(r,g(p))}),u(e,t)},Ne=e=>{u(e,ri())};M(Y,e=>{g(p)?e(Me):e(Ne,-1)});var X=S(Y,2),Pe=R(X,!0);B(X),B(J),B(N),d(()=>{c(I,g(v)),c(ae,g(T)?`@${g(T)}`:`No handle set`),F(xe,r.hideCommentary),F(we,r.hideToolCalls),W!==(W=r.userAlign)&&(Ee.value=(Ee.__value=r.userAlign)??``,ce(Ee,r.userAlign)),je!==(je=r.otherAlign)&&(ke.value=(ke.__value=r.otherAlign)??``,ce(ke,r.otherAlign)),X.disabled=g(_),c(Pe,g(_)?`Saving...`:`Save profile`)}),h(`submit`,N,e=>{e.preventDefault(),A()}),se(V,()=>g(s),e=>E(s,e)),se(pe,()=>g(l),e=>E(l,e)),se(he,()=>g(f),e=>E(f,e)),n(`change`,xe,e=>r.onHideCommentary(e.currentTarget.checked)),n(`change`,we,e=>r.onHideToolCalls(e.currentTarget.checked)),n(`change`,Ee,e=>r.onUserAlign(e.currentTarget.value===`right`?`right`:`left`)),n(`change`,ke,e=>r.onOtherAlign(e.currentTarget.value===`right`?`right`:`left`)),u(e,N),ee()}V([`click`,`change`]);var oi=o(`

          `),si=o(``),ci=o(`

          Desktop

          Mobile push

          Send push notifications to your phone via Pushover.

          Find this in your Pushover dashboard under "Your User Key".

          `);function li(e,n){b(n,!0);let r=x(n,`isDesktop`,3,!1),i=P(null),a=k(()=>g(i)??n.user),o=P(!1),s=P(``),l=P(``),f=P(!1),p=P(!1);t(()=>{E(o,g(a).notification_settings?.pushover_enabled??!1,!0),E(s,g(a).notification_settings?.pushover_user_key??``,!0)});async function m(){if(!g(p)){E(p,!0),E(l,``),E(f,!1);try{let e=await ge({method:`PATCH`,body:JSON.stringify({display_name:g(a).display_name,handle:g(a).handle?`@${g(a).handle}`:``,avatar_url:g(a).avatar_url,notification_settings:{pushover_enabled:g(o),pushover_user_key:g(s)}})});E(i,e.user,!0),n.onUserUpdated?.(e.user),E(l,`Saved`)}catch(e){E(l,e instanceof Error?e.message:`Could not save notifications`,!0),E(f,!0)}finally{E(p,!1)}}}var _=ci(),v=R(_),y=S(R(v),2);ei(y,{get user(){return g(a)},get isDesktop(){return r()},get onChanged(){return n.onBrowserNotificationsChanged}});var w=S(y,4),D=S(R(w),2),A=R(D);O(A),B(D),B(w);var j=S(w,2),N=S(R(j),2),F=R(N);O(F),B(N),B(j),B(v);var te=S(v,2),ne=R(te),re=e=>{var t=oi();let n;var r=R(t,!0);B(t),d(()=>{n=C(t,1,`settings-status`,null,n,{"is-error":g(f)}),c(r,g(l))}),u(e,t)},ie=e=>{u(e,si())};M(ne,e=>{g(l)?e(re):e(ie,-1)});var I=S(ne,2),L=R(I,!0);B(I),B(te),B(_),d(()=>{I.disabled=g(p),c(L,g(p)?`Saving...`:`Save notifications`)}),h(`submit`,_,e=>{e.preventDefault(),m()}),T(A,()=>g(o),e=>E(o,e)),se(F,()=>g(s),e=>E(s,e)),u(e,_),ee()}var ui=o(`

          Loading…

          `),$=o(`

          `),di=o(`
          You don't own any bots yet. Open a workspace's Bots & agents page to mint one.
          `),fi=o(``),pi=o(`
        • `),mi=o(`

            `),hi=o(`
            `),gi=o(`

            Account

            My bots

            Bots you own across your workspaces. Tokens live with the workspace where the bot was created.

            `,1);function _i(e,t){b(t,!0);let r=P(ie([])),i=P(`loading`),a=P(``);ae(()=>{o()});async function o(){E(i,`loading`);try{E(r,await $e(),!0),E(i,`ready`)}catch(e){E(i,`error`),E(a,et(e),!0)}}function s(e){t.onClose(),ue(De(e.workspace.route_id||e.workspace.id,`bots`))}function p(e){return e.startsWith(`@`)?e:`@${e}`}function m(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length>=2?(t[0][0]+t[1][0]).toUpperCase():e.slice(0,2).toUpperCase()}let h=k(()=>{let e=new Map;for(let t of g(r)){let n=t.workspace.id,r=e.get(n);r?r.entries.push(t):e.set(n,{workspace:t.workspace,entries:[t]})}return[...e.values()].sort((e,t)=>e.workspace.name.localeCompare(t.workspace.name))});var _=gi(),v=S(j(_),2),y=e=>{u(e,ui())},x=e=>{var t=$(),n=R(t,!0);B(t),d(()=>c(n,g(a))),u(e,t)},C=e=>{u(e,di())},w=e=>{var t=hi();l(t,21,()=>g(h),e=>e.workspace.id,(e,t)=>{var r=mi(),i=R(r),a=R(i),o=R(a,!0);B(a);var h=S(a,2);B(i);var _=S(i,2);l(_,21,()=>g(t).entries,e=>e.bot.id,(e,t)=>{var r=pi(),i=R(r),a=R(i),o=e=>{var n=fi();d(()=>I(n,`src`,g(t).bot.avatar_url)),u(e,n)},l=e=>{var n=f();d(e=>c(n,e),[()=>m(g(t).bot.display_name||g(t).bot.handle||`?`)]),u(e,n)};M(a,e=>{g(t).bot.avatar_url?e(o):e(l,-1)}),B(i);var h=S(i,2),_=R(h),v=R(_,!0);B(_);var y=S(_,2),b=R(y),x=R(b,!0);B(b);var C=S(b,4),w=R(C);B(C),B(y),B(h);var T=S(h,2);B(r),d(e=>{c(v,g(t).bot.display_name||g(t).bot.handle),c(x,e),c(w,`${g(t).active_token_count??``} - active ${g(t).active_token_count===1?`token`:`tokens`}`)},[()=>p(g(t).bot.handle)]),n(`click`,T,()=>s(g(t))),u(e,r)}),B(_),B(r),d(()=>c(o,g(t).workspace.name)),n(`click`,h,()=>s(g(t).entries[0])),u(e,r)}),B(t),u(e,t)};M(v,e=>{g(i)===`loading`?e(y):g(i)===`error`?e(x,1):g(r).length===0?e(C,2):e(w,-1)}),u(e,_),ee()}V([`click`]);var vi=o(``),yi=o(``),bi=o(`

            Account

            Appearance

            Changes apply instantly and follow your account on every device.

            Live preview — updates as you pick

            Color mode System follows your OS setting
            Board theme Palette for boards, accents, and highlights
            Message layout How agent activity attaches to replies
            Density Compact fits more messages on screen
            `,1);function xi(e,r){b(r,!0);let i=k(()=>r.user.display_name||r.user.handle||`You`),a=k(()=>(g(i)[0]??`Y`).toUpperCase()),o=P(ie(he())),s=P(ie(U())),f=P(ie(Ee())),p=P(ie(be()));t(()=>{r.user.appearance_preferences,E(o,he(),!0),E(s,U(),!0),E(f,Ee(),!0),E(p,be(),!0)});function m(e){E(o,e,!0),Ce(e)}function h(e){E(s,e,!0),_e(e)}function _(e){E(f,e,!0),ve(e)}function v(e){E(p,e,!0),xe(e)}function y(e,t,n,r){let i;switch(e.key){case`ArrowRight`:case`ArrowDown`:i=(n+1)%t;break;case`ArrowLeft`:case`ArrowUp`:i=(n-1+t)%t;break;case`Home`:i=0;break;case`End`:i=t-1;break;default:return}e.preventDefault(),r(i),(e.currentTarget.parentElement?.querySelectorAll(`[role="radio"]`))?.item(i).focus()}var x=bi(),T=S(j(x),2),D=R(T),O=S(R(D),2),A=R(O),M=R(A),N=R(M,!0);B(M);var F=S(M,2),te=R(F),ne=R(te),re=R(ne,!0);B(ne),w(2),B(te),w(2),B(F),B(A);var L=S(A,4),ae=R(L),oe=R(ae,!0);B(ae);var z=S(ae,2),se=R(z),ce=R(se),le=R(ce,!0);B(ce),w(2),B(se),w(2),B(z),B(L),B(O),B(D);var V=S(D,4),ue=R(V),de=S(R(ue),2);l(de,23,()=>Se,e=>e.id,(e,t,r)=>{var i=vi();let a;var s=R(i,!0);B(i),d(()=>{a=C(i,1,`appearance-seg__btn`,null,a,{"is-active":g(o)===g(t).id}),I(i,`aria-checked`,g(o)===g(t).id),I(i,`tabindex`,g(o)===g(t).id?0:-1),c(s,g(t).label)}),n(`click`,i,()=>m(g(t).id)),n(`keydown`,i,e=>y(e,Se.length,g(r),e=>m(Se[e].id))),u(e,i)}),B(de),B(ue);var fe=S(ue,2),pe=S(R(fe),2),H=R(pe),me=R(H,!0);B(H);var ge=S(H,2);l(ge,23,()=>Te,e=>e.id,(e,t,r)=>{var i=yi();let a;d(()=>{a=C(i,1,`board-chip`,null,a,{"is-active":g(s)===g(t).id}),I(i,`aria-checked`,g(s)===g(t).id),I(i,`tabindex`,g(s)===g(t).id?0:-1),I(i,`data-board`,g(t).id),I(i,`aria-label`,`${g(t).label} — ${g(t).blurb}`),I(i,`title`,`${g(t).label} — ${g(t).blurb}`)}),n(`click`,i,()=>h(g(t).id)),n(`keydown`,i,e=>y(e,Te.length,g(r),e=>h(Te[e].id))),u(e,i)}),B(ge),B(pe),B(fe);var De=S(fe,2),Oe=S(R(De),2);l(Oe,23,()=>ye,e=>e.id,(e,t,r)=>{var i=vi();let a;var o=R(i,!0);B(i),d(()=>{a=C(i,1,`appearance-seg__btn`,null,a,{"is-active":g(f)===g(t).id}),I(i,`aria-checked`,g(f)===g(t).id),I(i,`tabindex`,g(f)===g(t).id?0:-1),I(i,`title`,g(t).blurb),c(o,g(t).label)}),n(`click`,i,()=>_(g(t).id)),n(`keydown`,i,e=>y(e,ye.length,g(r),e=>_(ye[e].id))),u(e,i)}),B(Oe),B(De);var W=S(De,2),G=S(R(W),2);l(G,23,()=>we,e=>e.id,(e,t,r)=>{var i=vi();let a;var o=R(i,!0);B(i),d(()=>{a=C(i,1,`appearance-seg__btn`,null,a,{"is-active":g(p)===g(t).id}),I(i,`aria-checked`,g(p)===g(t).id),I(i,`tabindex`,g(p)===g(t).id?0:-1),I(i,`title`,g(t).blurb),c(o,g(t).label)}),n(`click`,i,()=>v(g(t).id)),n(`keydown`,i,e=>y(e,we.length,g(r),e=>v(we[e].id))),u(e,i)}),B(G),B(W),B(V),B(T),d(e=>{I(D,`data-layout`,g(f)),I(D,`data-density`,g(p)),c(N,g(a)),c(re,g(i)),c(oe,g(a)),c(le,g(i)),c(me,e)},[()=>Te.find(e=>e.id===g(s))?.label]),u(e,x),ee()}V([`click`,`keydown`]);var Si=o(` `,1),Ci=o(` `,1),wi=o(` `,1),Ti=o(` `,1),Ei=o(`
          • `),Di=o(`
          • `),Oi=o(`

              `),ki=o(`

              Loading...

              `),Ai=o(`

              `),ji=o(`

              Account

              Profile settings

              How you appear across ClickClack.

              `,1),Mi=o(`

              Account

              Notifications

              Decide when and how ClickClack should reach you.

              `,1),Ni=o(``);function Pi(e,r){b(r,!0);let i=x(r,`workspaces`,19,()=>[]),o=x(r,`initialSection`,3,W),s=x(r,`isDesktop`,3,!1),f=P(ie(W)),p=P(null),m=k(()=>g(p)?.id===r.user.id?g(p):r.user),_=P(`ready`),v=P(``);t(()=>{E(f,o(),!0)}),ae(()=>{y()});async function y(){E(_,`loading`);try{let e=await ge();E(p,e.user,!0),r.onUserUpdated?.(e.user),E(_,`ready`)}catch(e){if(e instanceof me&&(e.status===401||e.status===403)){E(_,`error`),E(v,`Sign in to manage your account`);return}E(_,`error`),E(v,e instanceof Error?e.message:`Could not load your account`,!0)}}function w(e){E(p,e,!0),r.onUserUpdated?.(e)}function T(e){e.target===e.currentTarget&&r.onClose()}function D(e){if(e.key!==`Escape`)return;let t=e.target;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||(e.preventDefault(),r.onClose())}function O(e,t){r.onClose(),ue(De(e.route_id||e.id,t))}var A=Ni();h(`keydown`,ne,D);var N=R(A),F=R(N),te=S(F,2),re=R(te),L=S(R(re),2);l(L,21,()=>G,e=>e.id,(e,t)=>{var r=Ei(),i=R(r);let a;var o=R(i),s=e=>{var n=Si(),r=j(n);Z(r,{class:`settings-modal__rail-avatar`,get id(){return g(m).id},get name(){return g(m).display_name},get src(){return g(m).avatar_url},size:18});var i=S(r,2),a=R(i,!0);B(i),d(()=>c(a,g(m).display_name||g(t).label)),u(e,n)},l=e=>{var n=Ci(),r=S(j(n),2),i=R(r,!0);B(r),d(()=>c(i,g(t).label)),u(e,n)},p=e=>{var n=wi(),r=S(j(n),2),i=R(r,!0);B(r),d(()=>c(i,g(t).label)),u(e,n)},h=e=>{var n=Ti(),r=S(j(n),2),i=R(r,!0);B(r),d(()=>c(i,g(t).label)),u(e,n)};M(o,e=>{g(t).id===`profile`?e(s):g(t).id===`appearance`?e(l,1):g(t).id===`notifications`?e(p,2):g(t).id===`bots`&&e(h,3)}),B(i),B(r),d(()=>{a=C(i,1,`settings-modal__rail-item`,null,a,{"is-active":g(f)===g(t).id}),I(i,`aria-current`,g(f)===g(t).id?`page`:void 0)}),n(`click`,i,()=>E(f,g(t).id,!0)),u(e,r)}),B(L),B(re),l(S(re,2),17,i,e=>e.id,(e,t)=>{var r=Oi(),i=R(r),o=R(i);B(i);var s=S(i,2);l(s,21,()=>Oe,e=>e.id,(e,r)=>{var i=a(),o=j(i),s=e=>{var i=Di(),a=R(i),o=S(R(a),2),s=R(o,!0);B(o),B(a),B(i),d(()=>c(s,g(r).label)),n(`click`,a,()=>O(g(t),g(r).slug)),u(e,i)},l=k(()=>!g(r).managersOnly||K(g(t).role));M(o,e=>{g(l)&&e(s)}),u(e,i)}),B(s),B(r),d(()=>{I(i,`title`,g(t).name),c(o,`Workspace · ${g(t).name??``}`)}),u(e,r)}),B(te);var oe=S(te,2),z=R(oe),se=e=>{u(e,ki())},ce=e=>{var t=Ai(),n=R(t,!0);B(t),d(()=>c(n,g(v))),u(e,t)},le=e=>{var t=ji();ai(S(j(t),2),{get user(){return g(m)},get hideCommentary(){return r.hideCommentary},get hideToolCalls(){return r.hideToolCalls},get userAlign(){return r.userAlign},get otherAlign(){return r.otherAlign},get isDesktop(){return s()},onUserUpdated:w,get onSaved(){return r.onClose},get onHideCommentary(){return r.onHideCommentary},get onHideToolCalls(){return r.onHideToolCalls},get onUserAlign(){return r.onUserAlign},get onOtherAlign(){return r.onOtherAlign},get onBrowserNotificationsChanged(){return r.onBrowserNotificationsChanged}}),u(e,t)},V=e=>{xi(e,{get user(){return g(m)}})},de=e=>{var t=Mi();li(S(j(t),2),{get user(){return g(m)},get isDesktop(){return s()},onUserUpdated:w,get onBrowserNotificationsChanged(){return r.onBrowserNotificationsChanged}}),u(e,t)},fe=e=>{_i(e,{get onClose(){return r.onClose}})};M(z,e=>{g(_)===`loading`?e(se):g(_)===`error`?e(ce,1):g(f)===`profile`?e(le,2):g(f)===`appearance`?e(V,3):g(f)===`notifications`?e(de,4):g(f)===`bots`&&e(fe,5)}),B(oe),B(N),B(A),n(`click`,A,T),n(`click`,F,function(...e){r.onClose?.apply(this,e)}),u(e,A),ee()}V([`click`]);var Fi=o(`
              No thread open Hover any message and tap the bubble to keep side conversations tidy.
              `);function Ii(e){u(e,Fi())}var Li=o(``),Ri=o(`

              `,1),zi=o(``),Bi=o(`Connecting…`),Vi=o(`
              `);function Hi(e,t){b(t,!0);let r=k(()=>Xe(t.externalURL));var i=Vi(),a=R(i),o=R(a),s=R(o),l=R(s),f=S(R(l),2);B(l),B(s);var p=S(s,2),m=R(p,!0);B(p);var _=S(p,2),v=e=>{var n=Ri(),i=S(j(n),2),a=R(i,!0);B(i);var o=S(i,2),s=e=>{var t=Li();d(()=>I(t,`href`,g(r))),u(e,t)};M(o,e=>{g(r)&&e(s)}),d(()=>{I(i,`title`,t.channelTitle),c(a,t.channelTitle)}),u(e,n)};M(_,e=>{t.channelTitle&&e(v)}),B(o);var y=S(o,2),x=S(R(y),2);O(x);var C=S(x,2),T=e=>{var r=zi();n(`click`,r,function(...e){t.onResetSearch?.apply(this,e)}),u(e,r)};M(C,e=>{t.searchQuery&&e(T)}),w(2),B(y);var E=S(y,2),D=e=>{u(e,Bi())};M(E,e=>{t.connected||e(D)}),B(a),B(i),d(()=>{I(i,`data-platform`,t.platform),I(s,`aria-label`,t.mobileNavigation?t.mobileNavOpen?`Close navigation`:`Open navigation`:t.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),I(s,`title`,t.mobileNavigation?t.mobileNavOpen?`Close navigation`:`Open navigation`:t.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),I(f,`d`,t.mobileNavigation?t.mobileNavOpen?`m15 9-3 3 3 3`:`m9 9 3 3-3 3`:t.sidebarCollapsed?`m13 9 3 3-3 3`:`m16 9-3 3 3 3`),c(m,t.workspaceName||`ClickClack`),A(x,t.searchQuery)}),n(`click`,s,function(...e){t.onToggleSidebar?.apply(this,e)}),n(`click`,p,function(...e){t.onOpenWorkspaceSettings?.apply(this,e)}),h(`submit`,y,e=>{e.preventDefault(),t.onSearch()}),n(`input`,x,e=>t.onSearchQuery(e.currentTarget.value)),u(e,i),ee()}V([`click`,`input`]);var Ui=o(`

              `),Wi=o(`

              `),Gi=o(`

              ClickClack

              `),Ki=o(``),qi=o(``),Ji=o(`

              `);function Yi(e,t){b(t,!0);let r=k(()=>t.selectedDirect?void 0:Xe(t.selectedChannel?.external_url));var i=Ji(),a=R(i),o=R(a),s=e=>{var n=Ui(),r=R(n,!0);B(n),d(e=>c(r,e),[()=>`@${Ne(t.selectedDirect,t.currentUserID)}`]),u(e,n)},l=e=>{var n=Wi(),r=R(n,!0);B(n),d(e=>c(r,e),[()=>`#${Ze(t.selectedChannel)}`]),u(e,n)},f=e=>{u(e,Gi())};M(o,e=>{t.selectedDirect?e(s):t.selectedChannel?e(l,1):e(f,-1)});var p=S(o,4),m=R(p,!0);B(p),B(a);var _=S(a,2),v=S(R(_),2);O(v);var y=S(v,2),x=e=>{var r=Ki();n(`click`,r,function(...e){t.onResetSearch?.apply(this,e)}),u(e,r)};M(y,e=>{t.searchQuery&&e(x)}),w(2),B(_);var T=S(_,2),E=R(T),D=e=>{var t=qi();d(()=>I(t,`href`,g(r))),u(e,t)};M(E,e=>{g(r)&&e(D)});var j=S(E,2);let N;var P=S(j,2);B(T),B(i),d(()=>{c(m,t.workspaceName||`no workspace`),A(v,t.searchQuery),I(j,`title`,t.threadOpen?`Close thread`:`Open a message thread`),I(j,`aria-label`,t.threadOpen?`Close thread`:`Open a message thread`),N=C(j,1,``,null,N,{active:t.sidePanelOpen})}),h(`submit`,_,e=>{e.preventDefault(),t.onSearch()}),n(`input`,v,e=>t.onSearchQuery(e.currentTarget.value)),n(`click`,j,function(...e){t.onToggleThread?.apply(this,e)}),n(`click`,P,function(...e){t.onPinnedItems?.apply(this,e)}),u(e,i),ee()}V([`input`,`click`]);async function Xi(e){return(await H(`/api/workspaces/${e}/bot-commands`)).bot_commands??[]}function Zi(e){let t=e.trim().toLowerCase();return t?t.startsWith(`/`)?t:`/${t}`:``}function Qi(e){let t=/^(\/\S+)\s*([\s\S]*)$/.exec(e);return t?{command:Zi(t[1]),text:t[2].trim()}:null}function $i(e,t){return e.find(e=>!e.revoked_at&&Zi(e.command)===t)}async function ea(e,t,n){let r=new URLSearchParams;r.set(`command`,t),r.set(`text`,n);let i=await fetch(fe(`/api/hooks/slash/${e}`),{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/x-www-form-urlencoded`,"X-ClickClack-CSRF":`1`},body:r.toString()}),a=await i.text();if(!i.ok)throw new me(i.status,a);let o=a?JSON.parse(a):{};return{response_type:o.response_type||`in_channel`,text:(o.text||``).trim()}}var ta=e({default:()=>da}),na=o(``),ra=o(``),ia=o(`
              cc
              ClickClack OpenClaw workspace chat

              Welcome.

              Sign in with GitHub to join the guest room.

              `,1),aa=o(``),oa=o(``),sa=o(`
              `),ca=o(``),la=o(``),ua=o(`
              `,1);function da(e,t){b(t,!1);let i=z(),o=z(),l=z(),p=z(),y=z(),w=z(),T=z(),O=z(),k=z(),A=z(),N=z(),P=z(),F=z(),ie=z(),se=z(),ce=z(),le=z(),V=z(),de=z(),he=z(),_e=`clickclack:hide-commentary:v1`,ve=`clickclack:hide-tool-calls:v1`,ye=`clickclack:user-align:v1`,be=`clickclack:other-align:v1`,xe=Date.now(),Se=nt?.integratedTitleBar===!0,Ce=x(t,`routeWorkspaceID`,8,``),we=x(t,`routeTargetID`,8,``),U=z(null),Te=new Ie(()=>g(U)?.id||``),Ee=new Ae(ga),Oe=z([]),W=z([]),G=z([]),K=z([]),ke=z([]),q=z(``),J=z(``),Y=z(``),X=z(null),Pe=z(null),Fe=z(null),Le=z([]),Re=z([]),ze=z([]),Be=z(null),Ve=z([]),He=z(null),Z=z(null),We=z(``),Ge=z(null),Je=null,Xe=z(null),$e=z(null),et=new Set,it=z(``),at=z(``),st=z(``),ct=z(``),lt=z(``),ut=z(``),dt=z(null),ft=z(!1),pt=0,mt=0,ht=z(null),gt=z(!1),vt=z(!1),yt=z(`profile`),bt=z(!1),St=z(!1),Ct=z(``),wt=z(!1),Tt=z(!1),Et=z(!1),Ot=z(`left`),kt=z(`left`),Q=z(`loading`),At=z(!1),jt=z(``),Mt=z(!1),Pt=``,It=``,Lt=``,Rt=null,zt=Promise.resolve(),Bt=z(null),Vt=new Map,Ht=z(new Map),Ut=new Set,Wt=z(`idle`),Gt=`idle`,Kt=!1,qt=!1,Jt=z(!1),Yt=z(!1),Xt=z(!1),Zt=z(!1),Qt=new Map,$t=0,en=z(``),tn=z(void 0),nn=z(``),rn=z(!0),an=z(!1),on=z(!1),sn=z(!1),cn=z(!1),ln=z(null),un=z(null),dn=z(null),fn=z(null),pn=z(`message`),mn=z([]),hn,gn=z([]),vn,yn=z(Date.now()),Sn,Tn=z(``),En=0,Dn=0,kn=0,jn=0,Mn=0,Pn=0,Fn=0,In=0,Rn=0,zn=0,Bn=z(null),Vn,Hn=z(new Set),Wn=z(null),Gn=z(``);ae(()=>{Jn(),Sn=window.setInterval(()=>{E(yn,Date.now())},3e4),ir(),er();let e=window.matchMedia(`(max-width: 820px)`),t=()=>{E(sn,!1),E(cn,e.matches)};t();let n=nt?.onNavigate(e=>{ue(e,{keepFocus:!0,noScroll:!0})}),r=nt?.onQuickCompose(()=>Kn());return e.addEventListener(`change`,t),()=>{e.removeEventListener(`change`,t),n?.(),r?.()}});function Kn(){s().then(()=>{(g(pn)===`thread`?g(fn):g(dn))?.focus()})}async function qn(e){if(nt){e.preventDefault(),E(jt,`Opening GitHub in your browser…`);try{await nt.signInWithGitHub(),E(jt,`Finish signing in in your browser. ClickClack will complete here automatically.`)}catch{E(jt,`Could not open your browser. Try again.`)}}}function Jn(){try{let e=window.localStorage.getItem(`clickclack:show-agent-activity:v1`)===`0`;E(Tt,window.localStorage.getItem(_e)===`1`||e),E(Et,window.localStorage.getItem(ve)===`1`||e),E(Ot,window.localStorage.getItem(ye)===`right`?`right`:`left`),E(kt,window.localStorage.getItem(be)===`right`?`right`:`left`)}catch{E(Tt,!1),E(Et,!1),E(Ot,`left`),E(kt,`left`)}Yn()}function Yn(){try{document.documentElement.setAttribute(`data-user-align`,g(Ot)),document.documentElement.setAttribute(`data-other-align`,g(kt))}catch{}}function Xn(e){E(Ot,e),Yn();try{window.localStorage.setItem(ye,e)}catch{}}function Zn(e){E(kt,e),Yn();try{window.localStorage.setItem(be,e)}catch{}}function Qn(e){E(Tt,e);try{window.localStorage.setItem(_e,e?`1`:`0`)}catch{}}function $n(e){E(Et,e);try{window.localStorage.setItem(ve,e?`1`:`0`)}catch{}}te(()=>{Rt?.close(),Rt=null,E(Mt,!1),Ft(),hn&&window.clearInterval(hn),vn&&window.clearInterval(vn),Sn&&window.clearInterval(Sn),Vn&&clearTimeout(Vn),vo(!1,null)});async function er(){try{let e=await ge();if(E(U,e.user),ir(),await cr(),g(Oe).length===0){E(Q,`create a workspace`);return}await wr(Ce(),we()),E(Q,`ready`)}catch(e){if(e instanceof me&&(e.status===401||e.status===403)){E(At,!0),E(Q,`auth`);return}E(Q,e instanceof Error?e.message:`Could not load ClickClack`)}}function tr(){g(U)&&(E(yt,`profile`),E(vt,!0))}function nr(){let e=g(i)?.route_id||g(q)||Ce();e&&ue(De(e))}function rr(e){E(U,e),zi(g(K).map(t=>t.author?.id===e.id?{...t,author:e}:t)),E(ke,g(ke).map(t=>t.author?.id===e.id?{...t,author:e}:t)),g(X)?.author?.id===e.id&&E(X,{...g(X),author:e})}function ir(){if(nt){E(wt,or());return}let e=or();E(wt,typeof Notification<`u`&&Notification.permission===`granted`&&e),e&&!g(wt)&&sr(!1)}function ar(){return g(U)?.id?`clickclack:browser-notifications-enabled:v1:${g(U).id}`:``}function or(){let e=ar();if(!e)return!1;try{return window.localStorage.getItem(e)===`enabled`}catch{return!1}}function sr(e){let t=ar();if(!t)return!1;try{return e?window.localStorage.setItem(t,`enabled`):window.localStorage.removeItem(t),!0}catch{return!1}}async function cr(){let e=++kn,t=await H(`/api/workspaces`);e===kn&&E(Oe,t.workspaces)}function lr(e=``,t=``){return`${e||``}/${t||``}`}function ur(e=g(q),t=``){let n=fr(e);if(!n)return`/app`;let r=`/app/${encodeURIComponent(n)}`,i=pr(t);return i?`${r}/${encodeURIComponent(i)}`:r}function dr(e){let t=g(W).find(t=>t.id===e)?.route_id||g(G).find(t=>t.id===e)?.route_id;return t?ur(g(q),t):!g(q)||!e?`/app`:`/app/${encodeURIComponent(g(q))}/${encodeURIComponent(e)}`}function fr(e=g(q)){return e?g(Oe).find(t=>t.id===e||t.route_id===e)?.route_id||e:``}function pr(e=``){return e?g(W).find(t=>t.id===e||t.route_id===e)?.route_id||g(G).find(t=>t.id===e||t.route_id===e)?.route_id||g(X)?.id===e&&g(X).route_id||g(K).find(t=>t.id===e)?.route_id||e:``}async function mr(e=g(q),t=``,n=!1){let r=ur(e,t);window.location.pathname!==r&&await ue(r,{replaceState:n,noScroll:!0,keepFocus:!0})}function gr(){g(ft)&&Ia(),E(X,null),E(Pe,null),E(Fe,null),E(pn,`message`),E(ke,[]),E(sn,!1)}function _r(e=g(q)){return xr(e)||g(W).find(e=>e.name.toLowerCase()===`guest`)?.id||g(W)[0]?.id||g(G)[0]?.id||``}function vr(e=g(q)){return g(Oe).find(t=>t.id===e||t.route_id===e)}function yr(e=g(q)){let t=vr(e),n=t?.route_id||t?.id||e;return n?`clickclack:last-channel:v1:${n}`:``}function br(e){try{let t=JSON.parse(e);return{id:typeof t.id==`string`?t.id:``,routeID:typeof t.routeID==`string`?t.routeID:``}}catch{return{id:e}}}function xr(e=g(q)){let t=yr(e);if(!t)return``;let n;try{let e=window.localStorage.getItem(t);if(!e)return``;n=br(e)}catch{return``}let r=g(W).find(e=>e.id===n.id||e.route_id===n.routeID);if(r)return r.id;try{window.localStorage.removeItem(t)}catch{}return``}function Sr(e,t){if(!e||!t)return;let n=g(W).find(e=>e.id===t);if(!n)return;let r=yr(e);if(r)try{window.localStorage.setItem(r,JSON.stringify({id:n.id,routeID:n.route_id}))}catch{}}function Cr(e){Lt===e&&(Lt=``,Qa())}async function wr(e=``,t=``){let n=++En;Te.clear();let r=lr(e,t),i=t.trim()?await Er(e,t):null;if(n!==En)return;let a=i?g(Oe).find(e=>e.id===i.workspace_id):g(Oe).find(t=>t.id===e||t.route_id===e)||g(Oe)[0];if(!a){Jr(``,qr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`),E(Tn,r);return}let o=i?lr(i.workspace_route_id,i.target_route_id):lr(a.route_id,``),s=g(q)!==a.id;if(s&&(Li(),Ee.clear(),E(q,a.id),Fn+=1,In+=1,E(Re,[]),E(ze,[]),E(J,``),E(Y,``),E(X,null),E(Pe,null),E(Fe,null),E(pn,`message`),E(ke,[]),Ia(),ti(),E(rn,!0),Lt=a.id),(s||g(W).length===0)&&await jr(!1,!1),n!==En||((s||g(G).length===0)&&await Ua(),s&&await Promise.all([Mr(),Nr(a.id),Pr(a.id)]),n!==En))return;if(i){let e=await Tr(i,n);if(n!==En)return;if(!e){gr(),await mr(a.id,_r(),!0);return}}if(i?.canonical_path&&window.location.pathname!==i.canonical_path&&(E(Tn,o),await ue(i.canonical_path,{replaceState:!0,noScroll:!0,keepFocus:!0}),n!==En))return;if(i?.target_type===`channel`&&g(W).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&g(J)===e&&!g(Y)&&g(en)===e;if(E(J,e),E(Y,``),Sr(a.id,e),gr(),t){E(Tn,o),Qr(e),Cr(a.id);return}if(await Vr(),n!==En)return;E(Tn,o),Cr(a.id);return}if(i?.target_type===`direct`&&g(G).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&g(Y)===e&&!g(J)&&g(en)===e;if(E(Y,e),E(J,``),gr(),t){E(Tn,o),Qr(e),Cr(a.id);return}if(await Vr(),n!==En)return;E(Tn,o),Cr(a.id);return}if(i?.target_type===`thread`){let e=await Dr(i);if(n!==En)return;if(e){E(Tn,o),Cr(a.id);return}}let c=_r();if(gr(),!c){E(J,``),E(Y,``),await Vr(),E(Tn,r),(e!==a.route_id||t)&&await mr(a.id,``,!0),Cr(a.id);return}await mr(a.id,c,!0)}async function Tr(e,t){return e.target_type===`channel`?(g(W).some(t=>t.id===e.target_id)||await jr(!1,!1,!1),t===En&&g(W).some(t=>t.id===e.target_id)):e.target_type===`direct`?(g(G).some(t=>t.id===e.target_id)||(await Ua(),g(G).some(t=>t.id===e.target_id)||Wa((await H(`/api/dms/${e.target_id}`)).conversation)),t===En&&g(G).some(t=>t.id===e.target_id)):e.parent_type===`channel`&&e.parent_id?(g(W).some(t=>t.id===e.parent_id)||await jr(!1,!1,!1),t===En&&g(W).some(t=>t.id===e.parent_id)):e.parent_type===`direct`&&e.parent_id?(g(G).some(t=>t.id===e.parent_id)||(await Ua(),g(G).some(t=>t.id===e.parent_id)||Wa((await H(`/api/dms/${e.parent_id}`)).conversation)),t===En&&g(G).some(t=>t.id===e.parent_id)):!0}async function Er(e,t){try{return(await H(`/api/routes/${encodeURIComponent(e)}/${encodeURIComponent(t)}`)).route}catch(e){if(e instanceof me&&(e.status===403||e.status===404))return null;throw e}}async function Dr(e){if(e.workspace_id!==g(q))return!1;let t=e.parent_type===`channel`&&e.parent_id||``,n=e.parent_type===`direct`&&e.parent_id||``;if(t){if(!g(W).some(e=>e.id===t))return!1;E(J,t),E(Y,``),Sr(e.workspace_id,t)}else if(n){if(!g(G).some(e=>e.id===n))return!1;E(Y,n),E(J,``)}else return!1;let r=g(X)?.id===e.target_id&&g(en)===$();return E(Fe,null),E(pn,`thread`),E(sn,!1),await xa(e.target_id),!r&&g(X)&&await Ba(g(X)),!0}async function kr(){if(!g(st).trim())return;let e=await H(`/api/workspaces`,{method:`POST`,body:JSON.stringify({name:g(st)})});E(st,``),E(an,!1),E(Oe,[...g(Oe),e.workspace]),E(sn,!1),await wr(e.workspace.route_id||e.workspace.id,``),await mr(e.workspace.id),E(Q,`ready`)}async function Ar(e){E(sn,!1),await mr(e)}async function jr(e=!0,t=!0,n=!0){let r=g(q);if(!r)return;let i=++jn,a=await H(`/api/workspaces/${r}/channels`);i!==jn||r!==g(q)||(E(W,a.channels),t?E(J,g(W).find(e=>e.id===g(J))?.id||g(W).find(e=>!e.archived_at)?.id||g(W)[0]?.id||``):g(J)&&!g(W).some(e=>e.id===g(J))&&E(J,``),n&&(g(ft)&&Ia(),E(X,null),E(Fe,null),E(pn,`message`),E(ke,[])),e&&await Vr())}async function Mr(e=g(q)){let t=++Pn;if(!e||e!==g(q)||g(o)!==`owner`&&g(o)!==`moderator`){t===Pn&&E(Le,[]);return}try{let n=await H(`/api/workspaces/${e}/moderation/members`);if(t!==Pn||e!==g(q))return;E(Le,n.members)}catch{t===Pn&&e===g(q)&&E(Le,[])}}async function Nr(e=g(q)){let t=++Fn;if(!e){E(Re,[]);return}try{let n=await H(`/api/workspaces/${e}/slash-commands`);if(t!==Fn||e!==g(q))return;E(Re,n.slash_commands)}catch{t===Fn&&e===g(q)&&E(Re,[])}}async function Pr(e=g(q),t=!1){let n=++In;if(!e){E(ze,[]);return}try{let t=await Xi(e);if(n!==In||e!==g(q))return;E(ze,t)}catch(r){let i=n===In&&e===g(q);if(i&&E(ze,[]),t&&i)throw r}}function Fr(e){zn+=1,E(Be,null)}function Ir(e,t,n,r){let i=new Map;for(let e of n)e.user.id&&!e.user.deleted_at&&i.set(e.user.id,e.user);for(let e of r?.members||[])e.id&&!e.deleted_at&&i.set(e.id,e);for(let e of t)e.id&&!e.deleted_at&&i.set(e.id,e);return e?.id&&i.set(e.id,e),[...i.values()].slice(0,24)}async function Lr(e,t){if(!g(q))return;let n=await H(`/api/workspaces/${g(q)}/moderation/members/${e}`,{method:`PATCH`,body:JSON.stringify(t)});E(Le,[...g(Le).filter(t=>t.user.id!==e),n.member]),await jr(!1,!1,!1),E(Q,`ready`)}async function Rr(){if(!g(q)||!g(ct).trim())return;let e=await H(`/api/workspaces/${g(q)}/channels`,{method:`POST`,body:JSON.stringify({name:g(ct),kind:`public`})});E(ct,``),E(W,[...g(W),e.channel]),E(bt,!1),await mr(g(q),e.channel.id)}async function zr(e){E(sn,!1),Sr(g(q),e);let t=ur(g(q),e);e===g(J)&&!g(Y)&&window.location.pathname===t||await mr(g(q),e)}function Br(e,t){return e===Dn&&$()===t}async function Vr(e=!0){e&&Li();let t=$(),n=++Dn,r=t!==g(en);ti(),r&&E(rn,!0);try{if(!g(Y)&&!g(J)){Jr(``,qr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}let e=await H(Kr(Ur()));if(!Br(n,t))return;Jr(t,qr(e),`replace`)}finally{Br(n,t)&&E(rn,!1)}}async function Hr(){let e=$();if(!e)return;let t=++Dn;ti(),E(rn,!0),Vt.set(e,{atBottom:!0});try{let n=await H(Kr(`limit=100`));if(!Br(t,e))return;Jr(e,qr(n),`replace`)}finally{Br(t,e)&&E(rn,!1)}}function Ur(){let e=Wr(),t=e.unread_count||0,n=e.last_read_seq||0;return t>0?`around_seq=${encodeURIComponent(String(n+1))}&limit=100`:`limit=100`}function Wr(){return g(Y)?g(G).find(e=>e.id===g(Y))||{}:g(J)&&g(W).find(e=>e.id===g(J))||{}}function Kr(e){let t=g(Y)?`/api/dms/${g(Y)}/messages`:`/api/channels/${g(J)}/messages`;return e?`${t}?${e}`:t}function qr(e){return{messages:e.messages,oldest_seq:e.oldest_seq,newest_seq:e.newest_seq,has_older:e.has_older,has_newer:e.has_newer}}function Jr(e,t,n){let r=ii(e,t.messages,n),i=r[0]?.channel_seq||0,a=r[r.length-1]?.channel_seq||0,o=i>(t.messages[0]?.channel_seq||i),s=a<(t.messages[t.messages.length-1]?.channel_seq||a),c={messages:r,oldest_seq:i,newest_seq:a,has_older:t.has_older||o,has_newer:t.has_newer||s};Yr(e,c),Qr(e,c),Ri(e,r)}function Yr(e,t){e&&(g(Ht).delete(e),g(Ht).set(e,t),Xr(e),Zr(e),E(Ht,new Map(g(Ht))))}function Xr(e){let t=g(Ht).size+1;for(;g(Ht).size>8&&t>0;){t--;let n=g(Ht).keys().next().value;if(!n)return;if(n===e){let e=g(Ht).get(n);g(Ht).delete(n),e&&g(Ht).set(n,e);continue}g(Ht).delete(n)}}function Zr(e){let t=Vt.size+1;for(;Vt.size>16&&t>0;){t--;let n=Vt.keys().next().value;if(!n)return;if(n===e){let e=Vt.get(n);Vt.delete(n),e&&Vt.set(n,e);continue}Vt.delete(n)}}function Qr(e,t=g(Ht).get(e)){e===$()&&(E(Jt,t?.has_older||!1),E(Yt,t?.has_newer||!1))}function $r(e){let t=g(Ht).get(e);!e||!t||(Yr(e,{...t,has_newer:!0}),Qr(e))}function ei(e,t){e===`older`?(E(Wt,t),E(Xt,t===`loading`)):(Gt=t,E(Zt,t===`loading`))}function ti(){Ut=new Set,E(Wt,`idle`),Gt=`idle`,Kt=!1,qt=!1,E(Xt,!1),E(Zt,!1)}function ni(e,t){let n=new Map;for(let r of[...e,...t])n.set(r.id,r);return[...n.values()].sort((e,t)=>(e.channel_seq||0)-(t.channel_seq||0))}function ri(e){let t=new Set,n=xi(e);if(n>=0){let r=Si(e,g(K),n);r&&t.add(r.id)}let r=Vt.get(e)?.anchorMessageID;r&&t.add(r);let i=Ee.session(e);i&&t.add(i.messageID),g(X)&&Vi(g(X),e)&&t.add(g(X).id),g(ln)&&Vi(g(ln),e)&&t.add(g(ln).id);for(let n of g(K))(n.status===`pending`||n.status===`failed`)&&Vi(n,e)&&t.add(n.id);return t}function ii(e,t,n){return Me(t,n,ri(e))}function ai(){if(g(Wt)!==`idle`){Kt=!0;return}si()}function oi(e=!1){if(Gt!==`idle`){e&&(qt=!0);return}ci()}async function si(){let e=$(),t=g(Ht).get(e),n=`${e}:older`;if(g(Wt)!==`idle`){Kt=!0;return}if(!e||!t?.has_older||t.oldest_seq<=0||Ut.has(n))return;Ut.add(n),Kt=!1,ei(`older`,`loading`),Li();let r=!1;try{let n=await H(Kr(`before_seq=${encodeURIComponent(String(t.oldest_seq))}&limit=50`));if($()!==e)return;Jr(e,{messages:ni(n.messages,g(K)),oldest_seq:n.oldest_seq||t.oldest_seq,newest_seq:t.newest_seq,has_older:n.has_older,has_newer:t.has_newer},`prepend`),r=!0,ei(`older`,`settling`)}catch(t){$()===e&&E(Q,t instanceof Error?t.message:`Could not load older messages`)}finally{Ut.delete(n),$()===e&&!r&&ei(`older`,`idle`)}}async function ci(){let e=$(),t=g(Ht).get(e),n=`${e}:newer`;if(Gt!==`idle`){qt=!0;return}if(!e||Ut.has(n))return;if(!t||t.newest_seq<=0){await Vr();return}Ut.add(n),qt=!1,ei(`newer`,`loading`);let r=!1;try{let n=await H(Kr(`after_seq=${encodeURIComponent(String(t.newest_seq))}&limit=50`));if($()!==e)return;if(n.messages.length===0){Jr(e,{...t,has_newer:n.has_newer},`append`),r=!0,ei(`newer`,`settling`);return}Jr(e,{messages:ni(g(K),n.messages),oldest_seq:t.oldest_seq,newest_seq:n.newest_seq||t.newest_seq,has_older:t.has_older,has_newer:n.has_newer},`append`),r=!0,ei(`newer`,`settling`)}catch(t){$()===e&&E(Q,t instanceof Error?t.message:`Could not load newer messages`)}finally{Ut.delete(n),$()===e&&!r&&ei(`newer`,`idle`)}}function li(){let e=g(q),t=$();if(!e||!t)return Promise.resolve();let n=zt.catch(()=>void 0).then(async()=>{if(g(q)!==e||$()!==t)return;let n=g(Ht).get(t);if(!n||n.newest_seq<=0){await Vr();return}let r=await H(Kr(`after_seq=${encodeURIComponent(String(n.newest_seq))}&limit=50`));if(g(q)!==e||$()!==t)return;let i=g(Ht).get(t);if(!i)return;let a=r.newest_seq||n.newest_seq,o=a>i.newest_seq?r.has_newer:an&&(n=r.channel_seq));return n}function fi(e,t=g(K)){let n=0;for(let r of t)r.direct_conversation_id===e&&typeof r.channel_seq==`number`&&r.channel_seq>n&&(n=r.channel_seq);return n}function pi(e,t){return e&&t.unread_count||0}async function mi(e,t){let n=g(W).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){E(W,g(W).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await H(`/api/channels/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}async function hi(e,t){let n=g(G).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){E(G,g(G).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await H(`/api/dms/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}function gi(e){let t=g(Ht).get(e)?.newest_seq||0,n=g(W).find(t=>t.id===e);if(n)return Math.max(n.last_seq||0,(n.last_read_seq||0)+(n.unread_count||0),di(e),t);let r=g(G).find(t=>t.id===e);return r?Math.max(r.last_seq||0,(r.last_read_seq||0)+(r.unread_count||0),fi(e),t):0}function _i(e){let t=g(Ht).get(e);return!t||t.has_newer?0:g(W).find(t=>t.id===e)?di(e):g(G).find(t=>t.id===e)?fi(e):0}function vi(e={}){if(!e.all&&Date.now()<$t)return;let t=$()||g(en);if(!t)return;if(!e.all&&!e.seq){let e=xi(t);if(e>=0&&!Mi(t,e))return}let n=e.all?Math.max(e.seq||0,gi(t)):e.seq||_i(t);if(!(n<=0)){if(g(G).some(e=>e.id===t)){hi(t,n),e.all&&yi(t,n);return}g(W).some(e=>e.id===t)&&(mi(t,n),e.all&&yi(t,n))}}function yi(e,t){Qt.delete(e),Qt=new Map(Qt),E(W,g(W).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n)),E(G,g(G).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n))}function bi(e){let t=g(W).find(t=>t.id===e);return t?t.last_read_seq||0:g(G).find(t=>t.id===e)?.last_read_seq||0}function xi(e){let t=g(W).find(t=>t.id===e);if(t)return pi(e,t)>0?t.last_read_seq||0:-1;let n=g(G).find(t=>t.id===e);return n&&pi(e,n)>0?n.last_read_seq||0:-1}function Si(e,t,n){for(let r of t){if(!Vi(r,e)||r.parent_message_id||r.author?.id===g(U)?.id||r.author_id===g(U)?.id)continue;let t=r.channel_seq;if(typeof t==`number`&&t>n)return r}return null}function Ci(e,t){if(!e)return;let n=ji(e);if(pi(e,n)<=0){Qt.delete(e),Qt=new Map(Qt);return}let r=n.last_read_seq||0,i=Qt.get(e);if(i?.boundarySeq===r&&i.since||!Mi(e,r))return;let a=Si(e,t,r);a&&(Qt=new Map(Qt).set(e,{boundarySeq:r,since:Fi(a.created_at)}))}function wi(e,t,n){if(!e||!n)return;let r=Qt.get(e);r?.boundarySeq===t&&r.since||(Qt=new Map(Qt).set(e,{boundarySeq:t,since:Fi(n)}))}function Ti(e){let t=e.payload,n=t.channel_seq??e.seq??t.seq;return typeof n==`number`?n:Number(n)||0}function Ei(e){let t=e.payload;return{channelID:e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),dmID:typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``}}function Di(e,t){if(e.type!==`message.created`)return;let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`||!g(wt)||document.visibilityState===`visible`&&t)return;let i=typeof n.author_id==`string`?n.author_id:``;if(i&&i===g(U)?.id)return;let{channelID:a,dmID:o}=Ei(e),s=g(W).find(e=>e.id===a),c=co(i)?.display_name||`ClickClack`,l=s?`#${Ze(s)}`:`Direct message`,u=typeof n.body==`string`?n.body:`New message`,d=typeof n.message_id==`string`?n.message_id:`${a||o}:${e.seq||Date.now()}`;if(nt){nt.notify({body:Oi(u),route:dr(a||o),tag:`clickclack:${d}`,title:`${c} in ${l}`});return}if(!(typeof Notification>`u`||Notification.permission!==`granted`))try{let e=new Notification(`${c} in ${l}`,{body:Oi(u),tag:`clickclack:${d}`,icon:`/favicon.svg`});e.onclick=()=>{window.focus(),e.close(),a?zr(a):o&&Ka(o)}}catch{}}function Oi(e){let t=e.replace(/!\[[^\]]*]\([^)]+\)/g,`[image]`).replace(/\[[^\]]+]\(([^)]+)\)/g,`$1`).replace(/[`*_>#|]/g,``).replace(/\s+/g,` `).trim();return t?t.length>180?`${t.slice(0,177)}...`:t:`New message`}function ki(e){if(e.type!==`message.created`)return!1;let t=Ti(e);if(t<=0)return!1;let{channelID:n,dmID:r}=Ei(e);return n?t<=(g(W).find(e=>e.id===n)?.last_seq||0):r?t<=(g(G).find(e=>e.id===r)?.last_seq||0):!1}async function Ai(e){let t=e.payload,n=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;return!n||g(G).some(e=>e.id===n)?!1:(await Ua(),g(G).some(e=>e.id===n))}function ji(e){return g(W).find(t=>t.id===e)||g(G).find(t=>t.id===e)||{}}function Mi(e,t,n=g(Ht)){if(!e||t<0)return!1;let r=n.get(e);if(!r||r.messages.length===0)return!1;let i=t+1;return r.oldest_seq<=i&&r.newest_seq>=i}function Ni(e,t,n=g(Ht)){let r=Qt.get(e);if(r?.boundarySeq===t)return r.since;if(!Mi(e,t,n))return``;let i=Si(e,g(K),t);return i?Fi(i.created_at):``}function Fi(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(t)}function Li(){if(!g(en)||!g(Bt))return;let e=g(Bt).captureState();e&&Vt.set(g(en),e)}function Ri(e,t){let n=e!==g(en);E(tn,Vt.get(e));let r=g(K).filter(t=>(t.status===`pending`||t.status===`failed`)&&Vi(t,e)),i=new Map(r.map(e=>[e.id,e])),a=new Map(r.filter(e=>e.nonce).map(e=>[e.nonce,e]));Te.seedMessages(t);let o=t.map(e=>{let t=i.get(e.id)||(e.nonce?a.get(e.nonce):void 0);return t?e.nonce&&qi.has(e.nonce)?{...e,nonce:t.nonce,status:t.status,attachments:t.attachments?.length?t.attachments:e.attachments}:{...e,nonce:t.nonce,attachments:t.attachments?.length?t.attachments:e.attachments}:e}),s=new Set(o.map(e=>e.id)),c=new Set(o.map(e=>e.nonce).filter(Boolean)),l=g(K).filter(t=>(t.status===`pending`||t.status===`failed`)&&t.id.startsWith(`tmp_`)&&!s.has(t.id)&&!(t.nonce&&c.has(t.nonce))&&Vi(t,e));E(K,l.length>0?[...o,...l]:o),Ee.reconcile(e,g(K)),E(en,e),Ci(e,g(K)),n&&(E(mn,[]),E(gn,[]),Ft())}function zi(e,t=`append`){let n=$(),r=n?g(Ht).get(n):void 0;if(!n||!r){E(K,e);return}let i=e.filter(e=>Vi(e,n)),a=ii(n,i,t),o=a.filter(e=>(e.channel_seq||0)>0),s=o[0]?.channel_seq||r.oldest_seq,c=o[o.length-1]?.channel_seq||r.newest_seq,l=Bi(a[0])>Bi(i[0]),u=Bi(a[a.length-1])0)&&await Hr(),await Ui(),vi({all:!0}),await Ui()}catch(e){E(Q,e instanceof Error?e.message:`Could not jump to latest messages`)}}let qi=new Map;function Ji(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function Zi(e,t,n=`tmp_${e}`){let r=new Date().toISOString();return{id:n,workspace_id:t.workspaceID,channel_id:t.channelID,direct_conversation_id:t.directConversationID,author_id:g(U)?.id||``,thread_root_id:n,body:t.body,body_format:`markdown`,created_at:r,author:g(U)||void 0,attachments:t.upload?[t.upload]:[],quoted_message_id:t.quotedMessageID,nonce:e,status:`pending`}}async function ta(){let e=g(it).trim();if(!e)return;if(g(w)&&!g(T)){E(Q,`This conversation has no active recipient`);return}if(!g(J)&&!g(Y)){E(Q,`pick or create a channel`);return}Ft(),E(Be,null);let t=++zn,n=$(),r=g(Y)?`dm`:`channel`,i=g(ln)&&g(un)===r?g(ln):null;if(g(J)&&!g(Y)&&!g(ht)&&!i){let r=Qi(e),i=r?$i(g(Re),r.command):void 0;if(r&&i){E(it,``),await da(g(J),r.command,r.text,e,n,t);return}}let a={body:e,quotedMessageID:i?.id,upload:g(ht)||void 0,workspaceID:g(q),channelID:g(J)||void 0,directConversationID:g(Y)||void 0,viewKey:$()};E(it,``),i&&Oa(),E(ht,null),await pa(a)}async function da(e,t,n,r,i,a){try{let r=await ea(e,t,n);if(a!==zn||$()!==i)return;r.text&&r.response_type!==`in_channel`&&E(Be,{kind:`ephemeral`,text:r.text})}catch(e){if(console.warn(`slash dispatch failed`,e),a!==zn||$()!==i)return;E(Be,{kind:`error`,text:e instanceof me&&e.message?fa(e):`${t} failed`}),g(it).trim()||E(it,r)}}function fa(e){try{let t=JSON.parse(e.message);if(t&&typeof t.error==`string`&&t.error)return t.error}catch{}return e.message}async function pa(e,t,n){let r=t??Ji(),i=`tmp_${r}`,a=n??i,o=!t&&$()===e.viewKey,s=o&&g(Yt);qi.set(r,e);let c=Zi(r,e,a);t?zi(g(K).map(e=>e.id===a?c:e)):$()===e.viewKey&&(zi([...g(K),c]),Gi());let l=e.directConversationID?`/api/dms/${e.directConversationID}/messages`:`/api/channels/${e.channelID}/messages`,u={body:e.body,nonce:r};e.quotedMessageID&&(u.quoted_message_id=e.quotedMessageID);try{let t=(await H(l,{method:`POST`,body:JSON.stringify(u)})).message;if(e.upload)try{await H(`/api/messages/${t.id}/attachments`,{method:`POST`,body:JSON.stringify({upload_id:e.upload.id})}),t={...t,attachments:[...t.attachments||[],e.upload]}}catch(n){console.warn(`attachment failed`,n);let i={...t,nonce:r,status:`failed`,attachments:e.upload?[...t.attachments||[],e.upload]:t.attachments};zi(g(K).map(e=>e.id===a?i:e));return}qi.delete(r),g(K).findIndex(e=>e.id===a)>=0?zi(g(K).map(e=>e.id===a?t:e)):g(K).some(e=>e.id===t.id)?zi(g(K).map(e=>e.id===t.id?t:e)):Vi(t,$())&&!g(K).some(e=>e.id===t.id)&&zi([...g(K),t]),$()===e.viewKey&&o&&(s&&await Hr(),await Gi(),vi({all:!0,seq:t.channel_seq||0}))}catch(e){console.warn(`send failed`,e),zi(g(K).map(e=>e.id===a?{...e,status:`failed`}:e))}}function ma(e){if(!e.nonce)return;let t=qi.get(e.nonce);if(!t){ha(e);return}pa({...t,viewKey:t.viewKey},e.nonce,e.id)}function ha(e){e.nonce&&qi.delete(e.nonce),zi(g(K).filter(t=>t.id!==e.id))}async function ga(e,t){if(e!==g(nn))return;t.surface===`timeline`&&g(Bt)?.scrollToMessage(t.messageID);let n=document.querySelector(t.surface===`timeline`?`main.timeline`:`[aria-label="Thread pane"]`);for(let e=0;e<16;e+=1){await s(),await new Promise(e=>requestAnimationFrame(()=>e()));let e=n?.querySelector(`[data-message-id="${CSS.escape(t.messageID)}"]`)?.querySelector(`textarea[aria-label="Edit message"]`);if(e){e.focus();return}}}function _a(e){zi(g(K).map(t=>t.id===e.id?{...t,...e}:t)),E(ke,g(ke).map(t=>t.id===e.id?{...t,...e}:t)),g(X)?.id===e.id&&E(X,{...g(X),...e})}function va(e){!e.id||e.deleted_at||g(Hn).has(e.id)||(E(Wn,e),E(Gn,``))}async function ya(){let e=g(Wn);if(!(!e||g(Hn).has(e.id))){E(Hn,new Set([...g(Hn),e.id])),E(Gn,``);try{let t=(await H(`/api/messages/${e.id}`,{method:`DELETE`})).message;Ee.cancelMessage($(),t.id),zi(g(K).map(e=>e.id===t.id?{...e,...t}:e)),E(ke,g(ke).map(e=>e.id===t.id?{...e,...t}:e)),g(X)?.id===t.id&&E(X,{...g(X),...t}),g(ln)?.id===t.id&&Oa(),E(Q,``),E(Wn,null)}catch(e){E(Gn,e instanceof Error?e.message:`Could not delete message`)}finally{let t=new Set(g(Hn));t.delete(e.id),E(Hn,t)}}}async function ba(e){Ia(),await xa(e.id,e),g(q)&&g(X)?.route_id&&window.location.pathname!==ur(g(q),g(X).id)&&await mr(g(q),g(X).id)}async function xa(e,t,n=()=>!0){E(Z,null),E(We,``),E(Fe,null),t&&(E(X,t),E(pn,`thread`));let r=await H(`/api/messages/${e}/thread`);if(!n())return!1;let[i,...a]=[{...r.root,thread_state:r.thread_state},...r.replies];return Te.seedMessages([i,...a]),Ee.reconcile($(),[i,...a]),E(X,i),E(pn,`thread`),zi(g(K).map(e=>e.id===i.id?i:e)),E(ke,a),E(Pe,r.thread_state),!0}async function Sa(e){let t=await H(`/api/messages/${e}/thread`),n={...t.root,thread_state:t.thread_state};Te.seedMessages([n]),zi(g(K).map(e=>e.id===n.id?n:e))}function Ca(e,t){let n=g(K).find(t=>t.id===e);if(!n)return!1;let r=new Date(t.created_at).getTime();if(Number.isFinite(r)&&ra}async function wa(){let e=g(at).trim();if(!e||!g(X))return;if(g(w)&&!g(T)){E(Q,`This direct message has no active recipient`);return}let t=g(ln)&&g(un)===`thread`?g(ln):null;E(at,``);let n={body:e,nonce:Ji()};t&&(n.quoted_message_id=t.id);let r=await H(`/api/messages/${g(X).id}/thread/replies`,{method:`POST`,body:JSON.stringify(n)});t&&Oa(),g(ke).some(e=>e.id===r.message.id)||E(ke,[...g(ke),r.message]),E(Pe,r.thread_state)}function Ta(e,t){E(ln,e),E(un,t),E(pn,t===`thread`?`thread`:`message`)}function Ea(){return g(Wn)!==null||g(He)!==null||g(vt)||g(bt)||g(St)}function Da(){return g(pn)===`thread`&&g(X)&&g(fn)?g(fn):g(dn)}function Oa(){E(ln,null),E(un,null)}async function ka(e){let t=e.quoted_message_id;if(!t)return;if(g(Bt)?.scrollToMessage(t)??!1){await Ma(t);return}let n=await H(`/api/messages/${t}`);Vi(n.message,$())&&await Ba(n.message)}async function Aa(){$t=Date.now()+1200,!(g(F)&&g(Bt)?.scrollToDivider(!1))&&await ja()}async function ja(){let e=$();if(!e)return;$t=Date.now()+1200;let t=bi(e),n=Qt.get(e),r=(n?.boundarySeq===t?n.boundarySeq:t)+1;r<=0||(await Va(r),await s(),g(Bt)?.scrollToDivider(!1))}async function Ma(e){await s();let t=document.querySelector(`[data-message-id="${CSS.escape(e)}"]`);t&&(t.classList.add(`highlight`),window.setTimeout(()=>t.classList.remove(`highlight`),1500))}async function Na(){if(!g(q)||!g(ut).trim()){Ia();return}let e=g(ut).trim();g(Z)&&_o(),(g(X)||g(Fe))&&wo();let t=++mt,n=g(Y)&&g(w)?{workspaceID:g(q),channelID:``,directConversationID:g(Y),label:`@${Ne(g(w),g(U)?.id)}`}:g(J)&&g(y)?{workspaceID:g(q),channelID:g(J),directConversationID:``,label:`#${Ze(g(y))}`}:{workspaceID:g(q),channelID:``,directConversationID:``,label:``};E(ft,!1),pt=0;let r={query:e,scope:n,results:[],nextCursor:null,state:`loading`,error:``,loadingMore:!1,moreError:``,activeResultID:``};E(dt,r);try{let e=await H(`/api/search?${Pa(r).toString()}`);if(t!==mt)return;E(dt,{...r,results:e.results,nextCursor:e.next_cursor,state:`ready`})}catch(e){if(t!==mt)return;E(dt,{...r,state:`error`,error:e instanceof me?e.message:`Search is unavailable right now.`})}}function Pa(e,t=``){let n=new URLSearchParams({workspace_id:e.scope.workspaceID,q:e.query});return e.scope.directConversationID?n.set(`direct_conversation_id`,e.scope.directConversationID):e.scope.channelID&&n.set(`channel_id`,e.scope.channelID),t&&n.set(`cursor`,t),n}async function Fa(){let e=g(dt);if(!e||e.state!==`ready`||!e.nextCursor||e.loadingMore)return;let t=mt;E(dt,{...e,loadingMore:!0,moreError:``});try{let n=await H(`/api/search?${Pa(e,e.nextCursor).toString()}`);if(t!==mt||!g(dt))return;let r=new Set(g(dt).results.map(e=>e.id));E(dt,{...g(dt),results:[...g(dt).results,...n.results.filter(e=>!r.has(e.id))],nextCursor:n.next_cursor,loadingMore:!1})}catch(e){if(t!==mt||!g(dt))return;E(dt,{...g(dt),loadingMore:!1,moreError:e instanceof me?e.message:`Couldn’t load more results.`})}}function Ia(){mt+=1,E(ut,``),E(dt,null),E(ft,!1),pt=0}function La(e){if(e.channel_name)return`#${e.channel_name}`;if(e.direct_conversation_id){let t=g(G).find(t=>t.id===e.direct_conversation_id);return t?`@${Ne(t,g(U)?.id)}`:`Direct message`}return``}async function Ra(e){let t=g(dt),n=e.channel_id||e.direct_conversation_id||``;if(!(!t||!g(q)||!n)&&(E(dt,{...t,activeResultID:e.id}),$()!==n&&(await mr(g(q),n),await wr(g(q),n)),$()===n)){if(e.parent_message_id){pt=document.querySelector(`.search-results-scroll`)?.scrollTop??0;let t=mt;E(ft,!0);try{if(!await xa(e.thread_root_id,void 0,()=>t===mt&&g(ft)&&g(dt)?.activeResultID===e.id))return}catch(e){throw E(ft,!1),await s(),e}g(X)?.route_id&&await mr(g(q),g(X).id),await s(),document.querySelector(`.thread [data-message-id="${CSS.escape(e.id)}"]`)?.scrollIntoView({block:`center`}),document.querySelector(`.thread .thread-back`)?.focus(),await Ma(e.id);return}if(e.channel_seq&&e.channel_seq>0){await Va(e.channel_seq,e.id);return}await Vr()}}async function za(){if(!g(dt)||!g(ft))return;let e=$();g(un)===`thread`&&Oa(),E(X,null),E(Fe,null),E(pn,`message`),E(ke,[]),E(ft,!1),g(q)&&e&&await mr(g(q),e),await s();let t=document.querySelector(`.search-results-scroll`);t&&(t.scrollTop=pt),(g(dt).activeResultID?document.querySelector(`.search-result[data-result-id="${CSS.escape(g(dt).activeResultID)}"]`):null)?.focus({preventScroll:!0})}async function Ba(e){let t=e.channel_seq||0;if(t<=0){await Vr();return}await Va(t,e.id)}async function Va(e,t=``){let n=$();if(!n)return;t&&Vt.set(n,{atBottom:!1,anchorMessageID:t,anchorPixelOffset:0});let r=n!==g(en);ti(),r&&E(rn,!0);try{let r=await H(Kr(`around_seq=${encodeURIComponent(String(e))}&limit=100`));if($()!==n)return;Jr(n,qr(r),`around`),await s(),t&&(g(Bt)?.scrollToMessage(t),await Ma(t))}finally{$()===n&&E(rn,!1)}}async function Ha(e){let t=e.currentTarget,n=t.files?.[0];if(!n||!g(q))return;let r=await rt(n),i=new FormData;i.set(`workspace_id`,g(q)),i.set(`file`,n),r.width>0&&i.set(`width`,String(r.width)),r.height>0&&i.set(`height`,String(r.height)),r.durationMS>0&&i.set(`duration_ms`,String(r.durationMS));let a=await H(`/api/uploads`,{method:`POST`,body:i});E(ht,a.upload),t.value=``}async function Ua(e=g(q)){let t=++Mn;if(!e){E(G,[]);return}let n=await H(`/api/dms?workspace_id=${e}`);t!==Mn||e!==g(q)||(E(G,n.conversations),g(Y)&&!g(G).some(e=>e.id===g(Y))&&E(Y,``))}function Wa(e){E(G,g(G).some(t=>t.id===e.id)?g(G).map(t=>t.id===e.id?e:t):[...g(G),e])}async function Ga(e){let t=e.trim();t&&(await qa(t),E(lt,``),E(St,!1))}async function Ka(e){E(sn,!1);let t=ur(g(q),e);e===g(Y)&&!g(J)&&window.location.pathname===t||await mr(g(q),e)}async function qa(e){let t=e.trim();if(!g(q)||!t)return;let n=g(G).find(e=>e.members.some(e=>e.id===t));if(n){E(sn,!1),await mr(g(q),n.id);return}let r=await H(`/api/dms`,{method:`POST`,body:JSON.stringify({workspace_id:g(q),member_ids:[t]})});Wa(r.conversation),E(sn,!1),await mr(g(q),r.conversation.id)}function Ja(){Vn&&clearTimeout(Vn),Vn=void 0,E(Bn,null)}function Ya(e,t){Ja(),E(Bn,{conversation:e,restoreRoute:t,title:Ne(e,g(U)?.id)}),Vn=setTimeout(()=>{E(Bn,null),Vn=void 0},8e3)}async function Xa(){let e=g(Bn);if(e){Ja();try{let t=await H(`/api/dms/${e.conversation.id}/open`,{method:`POST`});Wa(t.conversation),e.restoreRoute&&await mr(e.conversation.workspace_id,t.conversation.id),E(Q,`direct message restored`)}catch(e){E(Q,e instanceof Error?e.message:`Could not restore direct message`)}}}async function Za(e){if(!e)return;let t=g(G).find(t=>t.id===e),n=g(Y)===e;if(await H(`/api/dms/${e}`,{method:`DELETE`}),E(G,g(G).filter(t=>t.id!==e)),t&&Ya(t,n),n){gr();let e=g(W)[0]?.id||``;E(Y,``),E(J,e),e&&Sr(g(q),e),await mr(g(q),e),await Vr()}}function Qa(){if(Rn+=1,Rt?.close(),Rt=null,E(Mt,!1),!g(q))return;let e=g(q);Rt=je({workspaceID:e,onEvent:eo,onOpen:async(t,n)=>{await $a(e,t,It===e,n),t()&&(It=e,e===g(q)&&g(Q)===Pt&&E(Q,`ready`),Pt=``)},onError:t=>{e===g(q)&&(Pt=t instanceof Error?t.message:`Could not process realtime event`,E(Q,Pt))},onStatusChange:e=>{E(Mt,e)}})}async function $a(e,t=()=>!0,n=!0,r=!0){let i=++Rn;if(!e||e!==g(q)||!t())return;let a=g(X)?.id||``,o=g(Fe)?.kind===`bot`?g(Fe).id:``;if(E(mn,[]),E(gn,[]),!r){await Promise.all([Nr(e),Pr(e,!0)]);return}if(Te.clear(),await Promise.all([cr(),jr(!1,!1,!1),Ua(e),Mr(e),Nr(e),Pr(e,!0)]),!(i!==Rn||e!==g(q)||!t())){if(g(J)&&!g(W).some(e=>e.id===g(J))&&E(J,``),g(Y)&&!g(G).some(e=>e.id===g(Y))&&E(Y,``),!g(J)&&!g(Y)){let t=_r(e);if(t){let n=g(G).some(e=>e.id===t);E(Y,n?t:``),E(J,n?``:t),n||Sr(e,t),await mr(e,t,!0)}}if(!(i!==Rn||e!==g(q)||!t())&&(await Vr(n),!(i!==Rn||e!==g(q)||!t())&&(a&&g(X)?.id===a&&await xa(a,g(X)),o&&g(Fe)?.id===o))){let e=co(o);E(Fe,e&&!e.deleted_at?e:null)}}}async function eo(e){if(e.type===`typing.started`||e.type===`typing.stopped`){ao(e);return}if(e.type===`agent.progress`){oo(e);return}if(e.type===`channel.read`||e.type===`dm.read`){ro(e);return}if(e.type===`bot_command.updated`){e.workspace_id===g(q)&&Pr(e.workspace_id,!0).catch(t=>{e.workspace_id===g(q)&&(E(Q,t instanceof Error?t.message:`Could not refresh bot commands`),Qa())});return}if(e.type===`bot.deleted`){e.workspace_id===g(q)&&await to(e);return}if(e.type===`bot.membership_removed`){e.workspace_id===g(q)&&await no(e);return}if((e.type===`channel.created`||e.type===`channel.updated`)&&e.workspace_id===g(q)){await jr(!1,!1,!1);return}if(e.type===`member.moderation_updated`&&e.workspace_id===g(q)){let t=g(Y),n=e.payload.user_id===g(U)?.id;if(await cr(),await Mr(),await jr(!1,n,n),n){if(await Ua(),t&&(g(G).some(e=>e.id===t)?(E(Y,t),E(J,``)):E(Y,``)),!g(J)&&!g(Y)){Jr(``,qr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}await Vr()}return}if(ki(e))return;let t=e.channel_id===g(J)||e.payload.direct_conversation_id===g(Y);if(t&&(e.type===`reaction.added`||e.type===`reaction.removed`)){Te.applyEvent(e);return}if(Di(e,t),e.type===`message.created`&&!t&&(await Ai(e)||io(e)),t&&(e.type===`message.created`||e.type===`message.updated`||e.type===`message.deleted`)){let t=e.payload.nonce;if(e.type===`message.created`&&t&&qi.has(t))return;let n=Wi();e.type===`message.created`&&!n?($t=Date.now()+1200,$r($())):e.type===`message.created`?await li():await Vr(),e.type===`message.created`&&io(e,n),e.type===`message.created`&&n&&(await Ui(),vi({all:!0,seq:Ti(e)}))}let n=e.payload.root_message_id||e.payload.message_id;n&&e.type===`thread.state_updated`&&Ca(n,e)?g(X)?.id===n?await xa(n,g(X)):await Sa(n):e.type!==`thread.reply_created`&&g(X)&&n===g(X).id&&await xa(g(X).id,g(X))}async function to(e){let t=e.payload.bot_user_id||``;if(!t)return;let n=e.payload.deleted_at||e.created_at,r=e.payload.former_handle||``,i=e=>e.id===t?{...e,handle:``,former_handle:r,deleted_at:n}:e;E(G,g(G).map(e=>({...e,members:e.members.map(i)}))),E(Le,g(Le).filter(e=>e.user.id!==t)),E(Re,g(Re).filter(e=>e.bot_user_id!==t)),E(ze,g(ze).filter(e=>e.bot.id!==t)),E(mn,g(mn).filter(e=>e.userID!==t)),g(dt)&&E(dt,{...g(dt),results:g(dt).results.map(e=>({...e,author:i(e.author)}))}),g(Fe)?.id===t&&E(Fe,null);let a=g(X)?.id||``;await Promise.all([Ua(),Mr(),Nr(),Pr()]),await Vr(),a&&await xa(a)}async function no(e){let t=e.payload.bot_user_id||``;t&&(E(Le,g(Le).filter(e=>e.user.id!==t)),E(Re,g(Re).filter(e=>e.bot_user_id!==t)),E(ze,g(ze).filter(e=>e.bot.id!==t)),g(Fe)?.id===t&&E(Fe,null),await Promise.all([Ua(e.workspace_id),Mr(e.workspace_id),Nr(e.workspace_id),Pr(e.workspace_id)]))}function ro(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n!==g(U)?.id)return;let r=e.seq??t.last_read_seq??t.seq,i=typeof r==`number`?r:Number(r)||0;if(e.type===`channel.read`){let n=typeof t.channel_id==`string`?t.channel_id:e.channel_id||``;if(!n)return;E(W,g(W).map(e=>{if(e.id!==n)return e;let t=Math.max(e.last_read_seq||0,i);return{...e,last_read_seq:t,unread_count:t>=(e.last_seq||0)?0:e.unread_count||0}}))}else{let e=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!e)return;E(G,g(G).map(t=>{if(t.id!==e)return t;let n=Math.max(t.last_read_seq||0,i);return{...t,last_read_seq:n,unread_count:n>=(t.last_seq||0)?0:t.unread_count||0}}))}}function io(e,t){let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`)return;let i=typeof n.author_id==`string`?n.author_id:``;if(i&&i===g(U)?.id||n.parent_message_id)return;let a=Ti(e),{channelID:o,dmID:s}=Ei(e);if(o){let n=o===g(J)&&!g(Y),r=n?t??Wi():!1,i=g(W).find(e=>e.id===o),s=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&wi(o,i?.last_read_seq||0,e.created_at),E(W,g(W).map(e=>{if(e.id!==o)return e;let t=Math.max(e.last_seq||0,s),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,s-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}else if(s){let n=s===g(Y),r=n?t??Wi():!1,i=g(G).find(e=>e.id===s),o=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&wi(s,i?.last_read_seq||0,e.created_at),E(G,g(G).map(e=>{if(e.id!==s)return e;let t=Math.max(e.last_seq||0,o),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,o-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}}function ao(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n===g(U)?.id)return;let r=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),i=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(g(J)&&r===g(J)||g(Y)&&i===g(Y)))return;if(e.type===`typing.stopped`){E(mn,g(mn).filter(e=>e.userID!==n));return}let a=co(n),o=g(mn).filter(e=>e.userID!==n);o.push({userID:n,user:a,expiresAt:Date.now()+xn}),E(mn,o),lo()}function oo(e){let t=e.payload,n=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),r=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(g(J)&&n===g(J)||g(Y)&&r===g(Y)))return;let i=typeof t.turn_id==`string`?t.turn_id:``,a=typeof t.op==`string`?t.op:``;if(!i||!a)return;if(a===`clear`){E(gn,g(gn).filter(e=>e.turnId!==i));return}let o=t.line,s=o&&typeof o.id==`string`?o.id:``;if(!s)return;let c=o&&typeof o.text==`string`?o.text:``,l=o&&typeof o.title==`string`?o.title:``,u=c||l,d=o&&typeof o.tool_name==`string`?o.tool_name:typeof o?.toolName==`string`?o.toolName:void 0,f=o&&typeof o.status==`string`?o.status:void 0,p=o&&typeof o.kind==`string`?o.kind:void 0,m=g(gn).find(e=>e.turnId===i),h=m?.lines.find(e=>e.id===s),_={id:s,kind:p??h?.kind??`lifecycle`,text:u||h?.text||``,toolName:d??h?.toolName,status:f??h?.status,finalized:a===`finalize`||(h?.finalized??!1)};if(!h&&!_.text&&!_.toolName)return;let v=typeof t.user_id==`string`?t.user_id:``,y=Date.now()+wn;if(!m)E(gn,[...g(gn),{turnId:i,userId:v,lines:[_],expiresAt:y}]);else{let e=m.lines.some(e=>e.id===s)?m.lines.map(e=>e.id===s?_:e):[...m.lines,_];E(gn,g(gn).map(t=>t.turnId===i?{...t,lines:e,expiresAt:y}:t))}so()}function so(){vn||=window.setInterval(()=>{let e=Date.now(),t=g(gn).filter(t=>t.expiresAt>e);t.length!==g(gn).length&&E(gn,t),t.length===0&&vn&&(window.clearInterval(vn),vn=void 0)},1e3)}function co(e){if(g(U)?.id===e)return g(U);let t=g(K).find(t=>t.author?.id===e)?.author;if(t)return t;let n=g(ke).find(t=>t.author?.id===e)?.author;if(n)return n;if(g(X)?.author?.id===e)return g(X).author;let r=g(Le).find(t=>t.user.id===e)?.user;if(r)return r;for(let t of g(G)){let n=t.members.find(t=>t.id===e);if(n)return n}}function lo(){hn||=window.setInterval(()=>{let e=Date.now(),t=g(mn).filter(t=>t.expiresAt>e);t.length!==g(mn).length&&E(mn,t),t.length===0&&hn&&(window.clearInterval(hn),hn=void 0)},1e3)}function uo(){g(q)&&(!g(J)&&!g(Y)||Nt({workspaceID:g(q),channelID:g(J)||void 0,directConversationID:g(Y)||void 0}))}function fo(e){!e||e.deleted_at||(Ia(),E(Z,null),E(We,``),E(X,null),E(Fe,e),(g(o)===`owner`||g(o)===`moderator`)&&!g(Le).some(t=>t.user.id===e.id)&&Mr())}function po(e){if(e.key===`Escape`&&g(ln)&&g(un)!==`thread`){e.preventDefault(),Oa();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),ta())}function mo(e){if(e.key===`Escape`&&g(ln)&&g(un)===`thread`){e.preventDefault(),Oa();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),wa())}function ho(e,t){Ea()||E(He,{url:e,title:t})}function go(e){E(Ge,document.activeElement instanceof HTMLElement?document.activeElement:null),Je=g(X)?document.querySelector(`.thread-scroll`)?.scrollTop??null:null,E(We,g(nn)),E(Z,e),s().then(()=>{document.querySelector(`.artifact-viewer__actions > button:last-child`)?.focus()})}function _o(){let e=g(Ge),t=g(Z)?.id||``;E(Z,null),E(We,``),E(Ge,null),s().then(()=>{if(Je!==null){let e=document.querySelector(`.thread-scroll`);e&&(e.scrollTop=Je)}if(Je=null,e?.isConnected){e.focus({preventScroll:!0});return}(g(X)?document.querySelector(`.thread`):document)?.querySelector(`[data-artifact-upload-id="${CSS.escape(t)}"]`)?.focus({preventScroll:!0})})}function vo(e,t){for(let e of et)e.inert=!1;if(et.clear(),!(!e||!g($e)||!t))for(let e of g($e).children)!(e instanceof HTMLElement)||e===t||e.inert||(e.inert=!0,et.add(e))}function yo(e){if(!g(Z)||!g(cn)||e.key!==`Tab`||!g(Xe))return;let t=Array.from(g(Xe).querySelectorAll(`a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.inert&&e.getClientRects().length>0);if(t.length===0){e.preventDefault(),g(Xe).focus();return}let n=t[0],r=t[t.length-1];e.shiftKey&&(document.activeElement===n||!g(Xe).contains(document.activeElement))?(e.preventDefault(),r.focus()):!e.shiftKey&&(document.activeElement===r||!g(Xe).contains(document.activeElement))&&(e.preventDefault(),n.focus())}function bo(e){let t=e.target;t instanceof HTMLImageElement&&t.closest(`.markdown`)&&(e.preventDefault(),ho(Ye(t),t.alt||`Image`))}function xo(e){let t=g(it)&&!g(it).endsWith(` -`)?` -`:``;E(it,`${g(it)}${t}${e}`)}function So(e,t=e){xo(`${e}${e==="```"?` -code -`:`text`}${t}`)}function Co(e,t){xo(`![${t}](${e})`),E(gt,!1),E(Ct,``)}function wo(){if(g(Z)){_o();return}let e=g(X)!==null,t=g(ft),n=$();Ee.cancel(n,`thread`),g(un)===`thread`&&Oa(),E(X,null),E(Fe,null),E(pn,`message`),E(ke,[]),t&&Ia(),(e||t)&&g(q)&&n&&mr(g(q),n)}function To(){g(le)?wo():E(Q,`pick a message to open its thread`)}function Eo(e){if(yo(e),!e.defaultPrevented){if(e.key===`Escape`){if(e.target instanceof Element&&e.target.closest(`[data-handles-escape]`)||g(He))return;if(Ea())Do();else if(g(sn)){e.preventDefault(),Oo();return}else if(g(Z)){e.preventDefault(),wo();return}else if(g(ft)){e.preventDefault(),wo();return}else if(g(V)){e.preventDefault(),Ia();return}else if(g(ln)){e.preventDefault(),Oa();return}else{e.preventDefault(),Ki();return}}if(g(sn)&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&!e.isComposing){let t=document.activeElement;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement)&&!(t instanceof HTMLSelectElement)&&!(t instanceof HTMLElement&&t.isContentEditable)){e.preventDefault();return}}Dt(e,{authRequired:g(At),isModalOpen:()=>Ea()||g(sn),messageInput:g(dn),replyInput:g(fn),target:Da})}}function Do(){g(Wn)&&g(Hn).has(g(Wn).id)||(E(Wn,null),E(Gn,``),E(He,null),E(vt,!1),E(bt,!1),E(St,!1))}function Oo(){E(sn,!1)}function ko(){if(g(cn)){E(sn,!g(sn));return}E(on,!g(on))}_(()=>(g(Oe),g(q)),()=>{E(i,g(Oe).find(e=>e.id===g(q)))}),_(()=>g(i),()=>{E(o,g(i)?.role||``)}),_(()=>g(o),()=>{E(l,g(o)===`owner`)}),_(()=>(g(Fe),g(Le)),()=>{E(p,g(Fe)?g(Le).find(e=>e.user.id===g(Fe)?.id):void 0)}),_(()=>(g(W),g(J)),()=>{E(y,g(W).find(e=>e.id===g(J)))}),_(()=>(g(G),g(Y)),()=>{E(w,g(G).find(e=>e.id===g(Y)))}),_(()=>g(w),()=>{E(T,g(w)?.can_send??!0)}),_(()=>(g(Y),g(J)),()=>{E(nn,g(Y)||g(J)||``)}),_(()=>g(nn),()=>{Fr(g(nn))}),_(()=>(g(J),g(ze),g(w)),()=>{E(O,g(J)?g(ze):g(w)?g(ze).filter(e=>g(w)?.members?.some(t=>t.id===e.bot.id)):[])}),_(()=>(g(Y),g(G),g(J),g(W)),()=>{E(k,g(Y)?g(G).find(e=>e.id===g(Y))||{}:g(J)&&g(W).find(e=>e.id===g(J))||{})}),_(()=>(g(nn),g(k)),()=>{E(A,pi(g(nn),g(k)))}),_(()=>(g(Q),g(W),g(G)),()=>{E(N,g(Q)===`ready`?g(W).reduce((e,t)=>e+(t.unread_count||0),0)+g(G).reduce((e,t)=>e+(t.unread_count||0),0):0)}),_(()=>g(N),()=>{nt?.setUnreadCount(g(N))}),_(()=>g(Tn),()=>{nt&&g(Tn)&&typeof window<`u`&&nt.setActiveRoute(`${window.location.pathname}${window.location.search}${window.location.hash}`)}),_(()=>(g(A),g(k)),()=>{E(P,g(A)>0&&g(k).last_read_seq||0)}),_(()=>(g(A),g(nn),g(P),g(Ht)),()=>{E(F,g(A)>0&&Mi(g(nn),g(P),g(Ht)))}),_(()=>(g(A),g(nn),g(P),g(Ht)),()=>{E(ie,g(A)>0?Ni(g(nn),g(P),g(Ht)):``)}),_(()=>(g(K),g(Tt),g(Et),g(yn)),()=>{E(se,_t(g(K),{hideCommentary:g(Tt),hideToolCalls:g(Et)},g(yn)))}),_(()=>g(gn),()=>{E(ce,g(gn).some(e=>e.lines.some(e=>!e.finalized)))}),_(()=>(g(Z),g(We),g(nn)),()=>{g(Z)&&g(We)&&g(We)!==g(nn)&&(E(Z,null),E(We,``),E(Ge,null))}),_(()=>(g(X),g(Fe),g(Z)),()=>{E(le,g(X)!==null||g(Fe)!==null||g(Z)!==null)}),_(()=>(g(dt),g(ft)),()=>{E(V,g(dt)!==null&&!g(ft))}),_(()=>(g(cn),g(Z),g(Xe)),()=>{vo(g(cn)&&g(Z)!==null,g(Xe))}),_(()=>(g(K),g(G),g(U)),()=>{E(de,Ue(g(K),g(G),g(U)?.id||``))}),_(()=>(g(U),g(de),g(Le),g(w)),()=>{E(Ve,Ir(g(U),g(de),g(Le),g(w)))}),_(()=>(g(un),g(ln),g(K)),()=>{g(un)===`channel`&&g(ln)&&!g(K).some(e=>e.id===g(ln)?.id)&&Oa()}),_(()=>(g(un),g(ln),g(K)),()=>{g(un)===`dm`&&g(ln)&&!g(K).some(e=>e.id===g(ln)?.id)&&Oa()}),_(()=>(g(un),g(ln),g(X),g(ke)),()=>{g(un)===`thread`&&g(ln)&&g(X)&&g(ln).id!==g(X).id&&!g(ke).some(e=>e.id===g(ln)?.id)&&Oa()}),_(()=>(g(Q),g(U),m(Ce()),m(we()),g(Tn)),()=>{g(Q)===`ready`&&g(U)&&lr(Ce(),we())!==g(Tn)&&wr(Ce(),we())}),_(()=>(g(gt),g(Ct)),()=>{E(he,g(gt)?ot.filter(e=>{let t=g(Ct).trim().toLowerCase();return!t||e.title.toLowerCase().includes(t)||e.tags.some(e=>e.includes(t))}):[])}),v(),re();var Ao=a();r(`1oa2eo8`,e=>{u(e,na())}),h(`keydown`,ne,Eo,!0),h(`pointerdown`,ne,function(...e){xt?.apply(this,e)},!0);var jo=j(Ao),Mo=e=>{var t=ia(),r=j(t),i=e=>{var t=ra();d(()=>I(t,`data-platform`,(m(nt),L(()=>nt.platform)))),u(e,t)};M(r,e=>{Se&&nt&&e(i)});var a=S(r,2),o=R(a),s=S(R(o),4),l=S(s,2),f=R(l,!0);B(l),B(o),B(a),d(e=>{I(s,`href`,e),c(f,g(jt)||`Any GitHub account can join.`)},[()=>(m(fe),L(()=>fe(`/api/auth/github/start`)))]),n(`click`,s,qn),u(e,t)},No=e=>{var t=ua(),r=j(t);let a;var s=R(r),h=e=>{{let t=D(()=>(g(w),m(Ne),g(U),g(y),m(Ze),L(()=>g(w)?`@${Ne(g(w),g(U)?.id)}`:g(y)?`#${Ze(g(y))}`:void 0))),n=D(()=>(g(w),g(y),L(()=>g(w)?void 0:g(y)?.external_url))),r=D(()=>(g(i),L(()=>g(i)?.name)));Hi(e,{get channelTitle(){return g(t)},get externalURL(){return g(n)},get connected(){return g(Mt)},get platform(){return m(nt),L(()=>nt.platform)},get searchQuery(){return g(ut)},get sidebarCollapsed(){return g(on)},get mobileNavOpen(){return g(sn)},get mobileNavigation(){return g(cn)},get workspaceName(){return g(r)},onOpenWorkspaceSettings:nr,onResetSearch:Ia,onSearch:()=>void Na(),onSearchQuery:e=>E(ut,e),onToggleSidebar:ko})}};M(s,e=>{Se&&nt&&e(h)});var _=S(s,2),v=R(_),b=e=>{u(e,f(`×`))},x=e=>{u(e,aa())};M(v,e=>{g(sn)?e(b):e(x,-1)}),B(_);var k=S(_,2),ee=e=>{var t=oa();n(`click`,t,Oo),u(e,t)};M(k,e=>{g(sn)&&e(ee)});var N=S(k,2);{let e=D(()=>Se?`/app`:`/`);Un(N,{get workspaces(){return g(Oe)},get homeHref(){return g(e)},get selectedWorkspaceID(){return g(q)},get workspaceName(){return g(st)},get showWorkspaceCreate(){return g(an)},hrefForWorkspace:e=>ur(e),onSelectWorkspace:e=>void Ar(e),onToggleWorkspaceCreate:()=>E(an,!g(an)),onWorkspaceName:e=>E(st,e),onCreateWorkspace:()=>void kr()})}var te=S(N,2);{let e=D(()=>(g(i),L(()=>g(i)?.name))),t=D(()=>(g(i),m(pe),L(()=>g(i)?.icon_url?pe(g(i).icon_url):``))),n=D(()=>!Se),r=D(()=>(g(Bn),L(()=>g(Bn)?.title)));hr(te,{get workspaceID(){return g(q)},get workspaceName(){return g(e)},get workspaceIconURL(){return g(t)},get connected(){return g(Mt)},get sidebarCollapsed(){return g(on)},get showHeader(){return g(n)},get channels(){return g(W)},get directConversations(){return g(G)},get recentPeople(){return g(de)},get currentUser(){return g(U)},get selectedChannelID(){return g(J)},get selectedDirectID(){return g(Y)},get selectedProfile(){return g(Fe)},onToggleCollapse:ko,hrefForChannel:e=>ur(g(q),e),hrefForDirect:e=>ur(g(q),e),onSelectChannel:e=>void zr(e),onCreateChannel:()=>E(bt,!0),onSelectDirect:e=>void Ka(e),onCreateDirect:()=>E(St,!0),onHideDirect:e=>void Za(e),get hiddenDirectTitle(){return g(r)},onUndoHideDirect:()=>void Xa(),onOpenProfile:fo,onOpenSettings:tr,onOpenWorkspaceSettings:nr})}var ne=S(te,2),re=R(ne),ae=e=>{{let t=D(()=>(g(i),L(()=>g(i)?.name))),n=D(()=>(g(U),L(()=>g(U)?.id))),r=D(()=>g(X)!==null);Yi(e,{get selectedDirect(){return g(w)},get selectedChannel(){return g(y)},get workspaceName(){return g(t)},get currentUserID(){return g(n)},get searchQuery(){return g(ut)},get sidePanelOpen(){return g(le)},get threadOpen(){return g(r)},onSearchQuery:e=>E(ut,e),onSearch:()=>void Na(),onResetSearch:Ia,onToggleThread:To,onPinnedItems:()=>E(Q,`no pinned items`)})}};M(re,e=>{Se||e(ae)});var z=S(re,2);{let e=D(()=>g(Wt)!==`idle`),t=D(()=>(g(X),L(()=>g(X)?.id))),n=D(()=>(g(U),L(()=>g(U)?.id))),r=D(()=>(g(w),g(T),L(()=>!!(g(w)&&!g(T))))),i=D(()=>g(l)&&!g(Y));Qe(z,{get messages(){return g(se)},get selectedDirect(){return g(w)},get selectedChannel(){return g(y)},get restoreState(){return g(tn)},get viewKey(){return g(en)},get loading(){return g(rn)},get unreadCount(){return g(A)},get unreadBoundarySeq(){return g(P)},get unreadBoundaryLoaded(){return g(F)},get unreadSince(){return g(ie)},get hasOlder(){return g(Jt)},get hasNewer(){return g(Yt)},get loadingOlder(){return g(Xt)},get loadingNewer(){return g(Zt)},get prepending(){return g(e)},get selectedThreadID(){return g(t)},get currentUserID(){return g(n)},get reactionController(){return Te},get reactionsDisabled(){return g(r)},get canDeleteAnyMessage(){return g(i)},get deletingMessageIDs(){return g(Hn)},onListRef:e=>E(Bt,e),onActivateMessageComposer:()=>E(pn,`message`),onInlineImagePointerUp:bo,onOpenProfile:fo,onReply:Ta,onOpenThread:ba,onJumpToQuote:e=>void ka(e),onOpenImage:ho,onOpenArtifact:go,onLoadOlder:ai,onLoadNewer:e=>oi(e===`wheel`),onJumpToUnread:()=>void Aa(),onHistorySettled:ui,onReachedBottom:vi,onMarkRead:e=>{vi({all:!0,seq:e})},onRetry:ma,onDiscard:ha,onDeleteMessage:va,get editController(){return Ee},get editScope(){return g(nn)},onMessageEdited:_a})}var ue=S(z,2);On(ue,{get turns(){return g(gn)}});var fe=S(ue,2);{let e=D(()=>(g(U),L(()=>g(U)?.id)));Cn(fe,{get entries(){return g(mn)},get currentUserID(){return g(e)}})}var H=S(fe,2),me=R(H);An(me,{get active(){return g(ce)}});var ge=S(me,2),_e=e=>{var t=sa();let r;var i=R(t),a=R(i,!0);B(i);var o=S(i,2),s=R(o,!0);B(o);var l=S(o,2);B(t),d(()=>{r=C(t,1,`composer-notice`,null,r,{"composer-notice--error":g(Be).kind===`error`}),c(a,(g(Be),L(()=>g(Be).kind===`ephemeral`?`Only visible to you`:`Command failed`))),c(s,(g(Be),L(()=>g(Be).text)))}),n(`click`,l,()=>E(Be,null)),u(e,t)};M(ge,e=>{g(Be)&&e(_e)});var ve=S(ge,2);{let e=D(()=>(g(w),g(T),m(Ne),g(U),g(y),m(Ze),L(()=>g(w)&&!g(T)?`No active recipient`:g(w)?`Message ${Ne(g(w),g(U)?.id)}`:g(y)?`Message #${Ze(g(y))}`:`Pick a channel to start`))),t=D(()=>!!g(w)&&!g(T)),n=D(()=>g(ln)&&g(un)===(g(Y)?`dm`:`channel`)?g(ln):null),r=D(()=>g(J)?g(Re):[]);qe(ve,{get value(){return g(it)},get placeholder(){return g(e)},ariaLabel:`Message body`,submitLabel:`Send`,get disabled(){return g(t)},get pendingUpload(){return g(ht)},get replyTarget(){return g(n)},showUpload:!0,showToolbar:!0,get showGifPicker(){return g(gt)},get gifQuery(){return g(Ct)},get filteredGifs(){return g(he)},get slashCommands(){return g(r)},get botCommands(){return g(O)},get mentionPeople(){return g(Ve)},onValue:e=>{let t=g(it);E(it,e),e.trim()&&e!==t?uo():e.trim()||Ft()},onSubmit:()=>void ta(),onKeydown:po,onFocus:()=>E(pn,`message`),onInputRef:e=>E(dn,e),onUploadFile:Ha,onRemoveUpload:()=>E(ht,null),onClearReply:Oa,onApplyMarkdownWrap:So,onAppendToComposer:xo,onToggleGif:()=>E(gt,!g(gt)),onGifQuery:e=>E(Ct,e),onPickGif:Co})}B(H),B(ne);var ye=S(ne,2),be=e=>{var t=ca();_n(R(t),{get upload(){return g(Z)},onClose:_o}),B(t),oe(t,e=>E(Xe,e),()=>g(Xe)),d(()=>{t.inert=g(sn),I(t,`role`,g(cn)?`dialog`:`complementary`),I(t,`aria-modal`,g(cn)?`true`:void 0)}),u(e,t)};M(ye,e=>{g(Z)&&e(be)});var xe=S(ye,2),Ce=e=>{{let t=D(()=>g(Z)!==null),n=D(()=>g(sn)||g(Z)!==null);Gr(e,{get session(){return g(dt)},get covered(){return g(t)},get inert(){return g(n)},contextFor:La,onClose:Ia,onOpenResult:e=>void Ra(e),onLoadMore:()=>void Fa()})}},we=e=>{var t=la();let n;var r=R(t),a=e=>{{let t=D(()=>g(ln)&&g(un)===`thread`?g(ln):null),n=D(()=>(g(w),g(T),L(()=>!!(g(w)&&!g(T))))),r=D(()=>g(ft)&&g(dt)?()=>void za():void 0),i=D(()=>(g(U),L(()=>g(U)?.id))),a=D(()=>(g(w),g(T),L(()=>!!(g(w)&&!g(T))))),o=D(()=>g(l)&&!g(Y));tt(e,{get root(){return g(X)},get replies(){return g(ke)},get threadState(){return g(Pe)},get replyBody(){return g(at)},get replyTarget(){return g(t)},get mentionPeople(){return g(Ve)},get replyDisabled(){return g(n)},onClose:wo,get onBack(){return g(r)},onReplyBody:e=>E(at,e),onSubmitReply:()=>void wa(),onReplyKeydown:mo,onReplyFocus:()=>E(pn,`thread`),onReplyInputRef:e=>E(fn,e),get currentUserID(){return g(i)},get reactionController(){return Te},get reactionsDisabled(){return g(a)},onSetReplyTarget:Ta,onClearReply:Oa,get canDeleteAnyMessage(){return g(o)},get deletingMessageIDs(){return g(Hn)},onDeleteMessage:va,get editController(){return Ee},get editScope(){return g(nn)},onMessageEdited:_a,onActivateThreadComposer:()=>E(pn,`thread`),onInlineImagePointerUp:bo,onJumpToQuote:e=>void ka(e),onOpenImage:ho,onOpenArtifact:go})}},s=e=>{{let t=D(()=>(g(i),L(()=>g(i)?.name)));Or(e,{get profile(){return g(Fe)},get currentUser(){return g(U)},get workspaceName(){return g(t)},get currentUserRole(){return g(o)},get moderation(){return g(p)},onClose:wo,onEdit:tr,onMessage:e=>void qa(e),onApprove:e=>void Lr(e,{role:`member`,clear_timeout:!0,blocked:!1}),onTimeout:e=>void Lr(e,{timeout_minutes:60}),onBlock:e=>void Lr(e,{blocked:!0}),onUnblock:e=>void Lr(e,{blocked:!1,clear_timeout:!0}),onSetStatus:()=>E(Q,`status messages are coming soon`)})}},c=e=>{Ii(e,{})};M(r,e=>{g(X)?e(a):g(Fe)?e(s,1):e(c,-1)}),B(t),d(()=>{n=C(t,1,`thread`,null,n,{open:g(le),covered:g(Z)!==null}),t.inert=g(sn)||g(Z)!==null,I(t,`aria-hidden`,g(Z)?`true`:void 0),I(t,`aria-label`,g(Fe)?`Profile pane`:`Thread pane`)}),u(e,t)};M(xe,e=>{g(V)&&g(dt)?e(Ce):e(we,-1)}),B(r),oe(r,e=>E($e,e),()=>g($e));var De=S(r,2),K=e=>{{let t=D(()=>nt!=null);Pi(e,{get user(){return g(U)},get workspaces(){return g(Oe)},get initialSection(){return g(yt)},get hideCommentary(){return g(Tt)},get hideToolCalls(){return g(Et)},get userAlign(){return g(Ot)},get otherAlign(){return g(kt)},get isDesktop(){return g(t)},onUserUpdated:rr,onHideCommentary:Qn,onHideToolCalls:$n,onUserAlign:Xn,onOtherAlign:Zn,onBrowserNotificationsChanged:e=>E(wt,e),onClose:Do})}};M(De,e=>{g(vt)&&g(U)&&e(K)});var Ae=S(De,2),je=e=>{Nn(e,{get channelName(){return g(ct)},status:``,onChannelName:e=>E(ct,e),onClose:Do,onCreate:()=>void Rr()})};M(Ae,e=>{g(bt)&&e(je)});var Me=S(Ae,2),Ie=e=>{{let t=D(()=>(g(U),L(()=>g(U)?.id)));Ln(e,{get people(){return g(de)},get currentUserID(){return g(t)},get memberID(){return g(lt)},onMemberID:e=>E(lt,e),onClose:Do,onStart:e=>void Ga(e)})}};M(Me,e=>{g(St)&&e(Ie)});var Le=S(Me,2),ze=e=>{{let t=D(()=>(g(Hn),g(Wn),L(()=>g(Hn).has(g(Wn).id))));bn(e,{get message(){return g(Wn)},get deleting(){return g(t)},get error(){return g(Gn)},onClose:Do,onConfirm:()=>void ya()})}};M(Le,e=>{g(Wn)&&e(ze)});var Ue=S(Le,2),We=e=>{Ke(e,{get url(){return g(He),L(()=>g(He).url)},get title(){return g(He),L(()=>g(He).title)},onClose:Do})};M(Ue,e=>{g(He)&&e(We)}),d(()=>{a=C(r,1,`shell`,null,a,{"desktop-shell":Se,"nav-open":g(sn),"sidebar-collapsed":g(on),"thread-open":g(le)&&!g(V),"search-open":g(V),"artifact-open":g(Z)!==null}),I(r,`data-connected`,g(Mt)),I(r,`data-app-ready`,g(Mt)&&g(Q)===`ready`),I(_,`aria-expanded`,g(sn)),ne.inert=g(sn)}),n(`click`,_,()=>E(sn,!g(sn))),u(e,t)};M(jo,e=>{g(At)?e(Mo):e(No,-1)}),u(e,Ao),ee()}V([`click`]);export{ta as n,da as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/B_KT8vL7.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/DzgF6O2k.js similarity index 52% rename from apps/api/internal/webassets/dist/_app/immutable/chunks/B_KT8vL7.js rename to apps/api/internal/webassets/dist/_app/immutable/chunks/DzgF6O2k.js index 9d3a27c9..0eefcfba 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/B_KT8vL7.js +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/DzgF6O2k.js @@ -1 +1 @@ -import{$ as e,B as t,D as n,I as r,K as i,N as a,O as o,P as s,Q as c,S as l,W as u,_t as d,a as f,at as p,b as m,ct as h,ft as g,gt as _,it as v,j as y,lt as b,n as x,p as S,rt as C,s as w,x as ee,xt as T,z as E}from"./CySd1wef.js";import"./xihTtKlq.js";import{F as D,N as te,P as O,R as ne,a as k,d as A,f as j,i as re,l as ie,n as ae,o as oe,r as se,s as M,t as ce,v as N,w as le}from"./C5AMwlHa.js";var P=r(`
              `);function ue(n,r){d(r,!0);let i=f(r,`disabled`,3,!1),a=f(r,`pending`,3,!1),o=f(r,`buttonClass`,3,``),l=b(!1),v=b(!1),x=b(void 0),E=b(void 0),D=g(()=>`add-reaction-picker-${r.messageId}`);function te(){i()||a()||(u(l)||h(v,re(u(x),130),!0),h(l,!u(l)))}function O(e){i()||a()||(r.onToggle(e),h(l,!1))}function ne(){h(l,!1),u(E)?.focus()}function k(e){u(x)&&!u(x).contains(e.target)&&h(l,!1)}e(()=>{if(u(l))return document.addEventListener(`click`,k),()=>document.removeEventListener(`click`,k)}),e(()=>{(i()||a())&&h(l,!1)});var A=P(),j=C(A);w(j,e=>h(E,e),()=>u(E));var ie=p(j,2),ae=e=>{{let t=g(()=>u(v)?`above-right`:`below`),n=g(()=>i()||a());M(e,{get id(){return u(D)},get placement(){return u(t)},get disabled(){return u(n)},onPick:O,onEscape:ne})}};y(ie,e=>{u(l)&&e(ae)}),T(A),w(A,e=>h(x,e),()=>u(x)),c(()=>{m(j,1,ee(o()),`svelte-sk6gxl`),S(j,`aria-controls`,u(D)),S(j,`aria-expanded`,u(l)),j.disabled=i()||a()}),t(`click`,j,te),s(n,A),_()}E([`click`]);var de=r(``),fe=r(`Open in ClickClack`),pe=r(``),me=r(`deleted bot`),he=r(` `),ge=r(``),_e=r(``),ve=r(` `,1),ye=r(`
              This message was deleted.
              `),be=r(`(edited)`),xe=r(`
              `,1),Se=r(`
              `),Ce=r(`
              `,1),we=r(`
              `),Te=r(`

              `,1);function F(e,r){d(r,!0);let m=f(r,`reactionsDisabled`,3,!1),ee=f(r,`mentionPeople`,19,()=>[]),E=f(r,`replyDisabled`,3,!1),re=f(r,`headerLabel`,3,`Thread`),M=f(r,`canDeleteAnyMessage`,3,!1),P=f(r,`deletingMessageIDs`,19,()=>new Set),F=f(r,`editScope`,3,``),I=b(void 0),L=g(()=>r.editController?.session(F())),R=new Map,Ee=e=>M()||!!r.currentUserID&&(e.author?.id||e.author_id)===r.currentUserID,De=e=>!!r.currentUserID&&(e.author?.id||e.author_id)===r.currentUserID,z=e=>u(L)?.surface===`thread`&&u(L).messageID===e.id;async function B(e){await i();let t=u(I)?.querySelector(`[data-message-id="${CSS.escape(e)}"]`),n=R.get(e)??t?.querySelector(`.thread-more-actions`);if(R.delete(e),n?.isConnected&&n.getClientRects().length>0){n.focus();return}t?.querySelector(`button[aria-label="Edit message"]`)?.focus()}function Oe(e,t){t?R.set(e.id,t):R.delete(e.id),r.editController?.start(F(),e,`thread`)===`cancelled`&&B(e.id)}function ke(e){r.editController?.cancel(F(),`thread`)&&B(e.id)}async function Ae(e){if(!r.editController)return;let t=await r.editController.save(F(),e,e=>r.onMessageEdited?.(e));(t===`saved`||t===`cancelled`)&&await B(e.id)}let V=b(void 0),H=b(void 0),U=b(``),W,G,K,q=0,J=!1;function je(e){return`thread-message-action-sheet-${e.id}`}function Me(){W!==void 0&&(window.clearTimeout(W),W=void 0)}function Ne(){G?.(),G=void 0}function Y(){K!==void 0&&(window.clearTimeout(K),K=void 0)}function Pe(e,t){Y(),q+=1,h(V,e,!0),h(H,t,!0),h(U,``)}function X(){Y(),q+=1,h(V,void 0)}function Fe(e,t){if(e.pointerType!==`touch`||!e.isPrimary||e.button!==0||t.deleted_at||t.status===`pending`||t.status===`failed`||z(t)||e.target?.closest(`a, button, input, textarea, select, .attachment-grid, .media-tile, .markdown img, .gif-player, .markdown-table-scroll`))return;Ne();let n=e.pointerId,r=e.clientX,i=e.clientY;W=window.setTimeout(()=>{W=void 0,Pe(t)},450);let a=e=>{e.pointerId===n&&(Math.abs(e.clientX-r)>10||Math.abs(e.clientY-i)>10)&&s()},o=e=>{e.pointerId===n&&s()},s=()=>{Me(),window.removeEventListener(`pointermove`,a),window.removeEventListener(`pointerup`,o),window.removeEventListener(`pointercancel`,o),G===s&&(G=void 0)};G=s,window.addEventListener(`pointermove`,a),window.addEventListener(`pointerup`,o),window.addEventListener(`pointercancel`,o)}function Ie(e){(u(V)||W!==void 0)&&e.preventDefault()}function Le(e){let t=u(V);X(),!(!t||m()||!r.currentUserID||r.reactionController.pending(t.id))&&r.reactionController.toggle(t,e)}function Re(){let e=u(V);X(),e&&r.onSetReplyTarget(e,`thread`)}async function ze(){let e=u(V);if(!e)return;Y();let t=q;try{if(!navigator.clipboard)throw Error(`Clipboard unavailable`);if(await navigator.clipboard.writeText(e.body??``),J||u(V)?.id!==e.id)return;h(U,`copied`),K=window.setTimeout(()=>{K=void 0,!J&&t===q&&X()},900)}catch{!J&&u(V)?.id===e.id&&h(U,`failed`)}}function Be(){let e=u(V),t=u(H);X(),e&&Oe(e,t)}function Ve(){let e=u(V);X(),e&&r.onDeleteMessage?.(e)}x(()=>{J=!0,Y(),Ne(),R.clear()});var He=Te(),Ue=v(He),We=C(Ue),Ge=e=>{var n=de();t(`click`,n,function(...e){r.onBack?.apply(this,e)}),s(e,n)};y(We,e=>{r.onBack&&e(Ge)});var Ke=p(We,2),qe=C(Ke),Je=C(qe,!0);T(qe);var Ye=p(qe,2),Xe=C(Ye,!0);T(Ye),T(Ke);var Ze=p(Ke,2),Qe=e=>{var t=fe();c(()=>S(t,`href`,r.openHref)),s(e,t)};y(Ze,e=>{r.openHref&&e(Qe)});var $e=p(Ze,2),et=e=>{var n=pe();t(`click`,n,function(...e){r.onClose?.apply(this,e)}),s(e,n)};y($e,e=>{r.onClose&&e(et)}),T(Ue);var Z=p(Ue,2),Q=C(Z),tt=C(Q);{let e=g(()=>r.root.author?.id||r.root.author_id),t=g(()=>r.root.author?.display_name),n=g(()=>O(r.root.author)?void 0:r.root.author?.avatar_url);ie(tt,{class:`avatar`,get id(){return u(e)},get name(){return u(t)},get src(){return u(n)},size:38})}var nt=p(tt,2),rt=C(nt),it=C(rt),at=C(it,!0);T(it);var ot=p(it,2),st=e=>{s(e,me())},ct=g(()=>O(r.root.author));y(ot,e=>{u(ct)&&e(st)});var lt=p(ot,2),ut=e=>{var t=he(),n=C(t,!0);T(t),c(e=>a(n,e),[()=>te(D(r.root.author))]),s(e,t)},dt=g(()=>D(r.root.author));y(lt,e=>{u(dt)&&e(ut)});var ft=p(lt,2),pt=C(ft,!0);T(ft);var mt=p(ft,2),ht=e=>{var n=ve(),i=v(n);{let e=g(()=>m()||!r.currentUserID),t=g(()=>r.reactionController.pending(r.root.id));ue(i,{get messageId(){return r.root.id},get disabled(){return u(e)},get pending(){return u(t)},buttonClass:`thread-action-btn`,onToggle:e=>void r.reactionController.toggle(r.root,e)})}var a=p(i,2),o=p(a,2),l=e=>{var n=ge();t(`click`,n,()=>Oe(r.root)),s(e,n)},d=g(()=>De(r.root)&&r.editController&&F());y(o,e=>{u(d)&&e(l)});var f=p(o,2),h=e=>{var n=_e();c(e=>n.disabled=e,[()=>P().has(r.root.id)]),t(`click`,n,()=>r.onDeleteMessage?.(r.root)),s(e,n)},_=g(()=>Ee(r.root)&&r.onDeleteMessage);y(f,e=>{u(_)&&e(h)});var b=p(f,2);c(e=>{S(b,`aria-controls`,e),S(b,`aria-expanded`,u(V)?.id===r.root.id)},[()=>je(r.root)]),t(`click`,a,()=>r.onSetReplyTarget(r.root,`thread`)),t(`click`,b,e=>Pe(r.root,e.currentTarget)),s(e,n)},gt=g(()=>!r.root.deleted_at&&!z(r.root));y(mt,e=>{u(gt)&&e(ht)}),T(rt);var _t=p(rt,2),vt=e=>{s(e,ye())},yt=e=>{ae(e,{get body(){return u(L).draft},get errorMessage(){return u(L).error},get saving(){return u(L).saving},onBody:e=>r.editController?.updateDraft(F(),e),onCancel:()=>ke(r.root),onSave:()=>Ae(r.root)})},bt=g(()=>z(r.root)&&u(L)),xt=e=>{var t=xe(),i=v(t);n(i,()=>A(r.root.body),!0),T(i),l(i,e=>ne?.(e));var a=p(i,2),o=e=>{var t=be();c(e=>S(t,`title`,`Edited ${e??``}`),[()=>j(r.root.edited_at)]),s(e,t)};y(a,e=>{r.root.edited_at&&e(o)});var d=p(a,2);{let e=g(()=>r.reactionController.reactionsFor(r.root)),t=g(()=>r.reactionController.pending(r.root.id)),n=g(()=>r.reactionController.error(r.root.id)),i=g(()=>m()||!r.currentUserID);oe(d,{get messageId(){return r.root.id},get reactions(){return u(e)},get pending(){return u(t)},get error(){return u(n)},get disabled(){return u(i)},onToggle:e=>void r.reactionController.toggle(r.root,e)})}s(e,t)};y(_t,e=>{r.root.deleted_at?e(vt):u(bt)?e(yt,1):e(xt,-1)});var St=p(_t,2),Ct=e=>{var t=Se();o(t,21,()=>r.root.attachments,e=>e.id,(e,t)=>{{let n=g(()=>le(u(t)));se(e,{get upload(){return u(t)},get url(){return u(n)},get onOpenImage(){return r.onOpenImage},get onOpenArtifact(){return r.onOpenArtifact}})}}),T(t),s(e,t)};y(St,e=>{!r.root.deleted_at&&r.root.attachments?.length&&e(Ct)}),T(nt),T(Q);var $=p(Q,2),wt=C($),Tt=C(wt);T(wt),T($);var Et=p($,2);o(Et,21,()=>r.replies,e=>e.id,(e,i)=>{var d=we(),f=C(d);{let e=g(()=>u(i).author?.id||u(i).author_id),t=g(()=>u(i).author?.display_name),n=g(()=>O(u(i).author)?void 0:u(i).author?.avatar_url);ie(f,{class:`avatar small`,get id(){return u(e)},get name(){return u(t)},get src(){return u(n)},size:30})}var h=p(f,2),_=C(h),b=C(_),x=C(b,!0);T(b);var w=p(b,2),ee=e=>{s(e,me())},E=g(()=>O(u(i).author));y(w,e=>{u(E)&&e(ee)});var k=p(w,2),re=e=>{var t=he(),n=C(t,!0);T(t),c(e=>a(n,e),[()=>te(D(u(i).author))]),s(e,t)},M=g(()=>D(u(i).author));y(k,e=>{u(M)&&e(re)});var N=p(k,2),de=C(N,!0);T(N);var fe=p(N,2),pe=e=>{var n=ve(),a=v(n);{let e=g(()=>m()||!r.currentUserID),t=g(()=>r.reactionController.pending(u(i).id));ue(a,{get messageId(){return u(i).id},get disabled(){return u(e)},get pending(){return u(t)},buttonClass:`thread-action-btn`,onToggle:e=>void r.reactionController.toggle(u(i),e)})}var o=p(a,2),l=p(o,2),d=e=>{var n=ge();c(()=>n.disabled=u(i).status===`pending`||u(i).status===`failed`),t(`click`,n,()=>Oe(u(i))),s(e,n)},f=g(()=>De(u(i))&&r.editController&&F());y(l,e=>{u(f)&&e(d)});var h=p(l,2),_=e=>{var n=_e();c(e=>n.disabled=e,[()=>P().has(u(i).id)]),t(`click`,n,()=>r.onDeleteMessage?.(u(i))),s(e,n)},b=g(()=>Ee(u(i))&&r.onDeleteMessage);y(h,e=>{u(b)&&e(_)});var x=p(h,2);c(e=>{S(x,`aria-controls`,e),S(x,`aria-expanded`,u(V)?.id===u(i).id),x.disabled=u(i).status===`pending`||u(i).status===`failed`},[()=>je(u(i))]),t(`click`,o,()=>r.onSetReplyTarget(u(i),`thread`)),t(`click`,x,e=>Pe(u(i),e.currentTarget)),s(e,n)},xe=g(()=>!u(i).deleted_at&&!z(u(i)));y(fe,e=>{u(xe)&&e(pe)}),T(_);var Te=p(_,2),I=e=>{s(e,ye())},R=e=>{ae(e,{get body(){return u(L).draft},get errorMessage(){return u(L).error},get saving(){return u(L).saving},onBody:e=>r.editController?.updateDraft(F(),e),onCancel:()=>ke(u(i)),onSave:()=>Ae(u(i))})},B=g(()=>z(u(i))&&u(L)),H=e=>{var t=Ce(),a=v(t);ce(a,{get message(){return u(i)},get onJump(){return r.onJumpToQuote}});var o=p(a,2);n(o,()=>A(u(i).body),!0),T(o),l(o,e=>ne?.(e));var d=p(o,2),f=e=>{var t=be();c(e=>S(t,`title`,`Edited ${e??``}`),[()=>j(u(i).edited_at)]),s(e,t)};y(d,e=>{u(i).edited_at&&e(f)});var h=p(d,2);{let e=g(()=>r.reactionController.reactionsFor(u(i))),t=g(()=>r.reactionController.pending(u(i).id)),n=g(()=>r.reactionController.error(u(i).id)),a=g(()=>m()||!r.currentUserID);oe(h,{get messageId(){return u(i).id},get reactions(){return u(e)},get pending(){return u(t)},get error(){return u(n)},get disabled(){return u(a)},onToggle:e=>void r.reactionController.toggle(u(i),e)})}s(e,t)};y(Te,e=>{u(i).deleted_at?e(I):u(B)?e(R,1):e(H,-1)});var U=p(Te,2),W=e=>{var t=Se();o(t,21,()=>u(i).attachments,e=>e.id,(e,t)=>{{let n=g(()=>le(u(t)));se(e,{get upload(){return u(t)},get url(){return u(n)},get onOpenImage(){return r.onOpenImage},get onOpenArtifact(){return r.onOpenArtifact}})}}),T(t),s(e,t)};y(U,e=>{!u(i).deleted_at&&u(i).attachments?.length&&e(W)}),T(h),T(d),c(e=>{S(d,`data-message-id`,u(i).id),a(x,u(i).author?.display_name||`Local User`),a(de,e)},[()=>j(u(i).created_at)]),t(`pointerdown`,d,e=>Fe(e,u(i))),t(`contextmenu`,d,Ie),s(e,d)}),T(Et),T(Z),w(Z,e=>h(I,e),()=>u(I));var Dt=p(Z,2),Ot=e=>{{let t=g(()=>je(u(V))),n=g(()=>!!r.currentUserID&&!m()&&!r.reactionController.pending(u(V).id)),i=g(()=>!E()),a=g(()=>De(u(V))&&!!r.editController&&!!F()),o=g(()=>Ee(u(V))&&!!r.onDeleteMessage),s=g(()=>P().has(u(V).id));k(e,{get id(){return u(t)},get canReact(){return u(n)},get canReply(){return u(i)},showOpenThread:!1,get canEdit(){return u(a)},get canDelete(){return u(o)},get deleting(){return u(s)},get copyStatus(){return u(U)},onReact:Le,onOpenThread:()=>{},onReply:Re,onCopy:ze,onEdit:Be,onDelete:Ve,onClose:X,get returnFocus(){return u(H)}})}};y(Dt,e=>{u(V)&&e(Ot)});var kt=p(Dt,2);{let e=g(()=>E()?`No active recipient`:`Reply in thread`);N(kt,{get value(){return r.replyBody},get placeholder(){return u(e)},ariaLabel:`Reply body`,submitLabel:`Reply`,formClass:`composer reply-composer`,get disabled(){return E()},get replyTarget(){return r.replyTarget},get mentionPeople(){return ee()},get onValue(){return r.onReplyBody},get onSubmit(){return r.onSubmitReply},get onKeydown(){return r.onReplyKeydown},get onFocus(){return r.onReplyFocus},get onInputRef(){return r.onReplyInputRef},get onClearReply(){return r.onClearReply}})}c(e=>{a(Je,re()),a(Xe,r.headerDetail??`${r.threadState?.reply_count??r.replies.length} ${(r.threadState?.reply_count??r.replies.length)===1?`reply`:`replies`}`),S(Q,`data-message-id`,r.root.id),a(at,r.root.author?.display_name||`Local User`),a(pt,e),a(Tt,`${r.replies.length??``} ${r.replies.length===1?`reply`:`replies`}`)},[()=>j(r.root.created_at)]),t(`pointerdown`,Z,function(...e){r.onActivateThreadComposer?.apply(this,e)}),t(`pointerup`,Z,function(...e){r.onInlineImagePointerUp?.apply(this,e)}),t(`pointerdown`,Q,e=>Fe(e,r.root)),t(`contextmenu`,Q,Ie),s(e,He),_()}E([`click`,`pointerdown`,`pointerup`,`contextmenu`]);export{F as t}; \ No newline at end of file +import{$ as e,B as t,D as n,I as r,K as i,N as a,O as o,P as s,Q as c,S as l,W as u,_t as d,a as f,at as p,b as m,ct as h,ft as g,gt as _,it as v,j as y,lt as b,n as x,p as S,rt as C,s as w,x as ee,xt as T,z as E}from"./-xOSXMZB.js";import"./xihTtKlq.js";import{F as D,N as te,P as O,R as ne,a as k,d as A,f as j,i as re,l as ie,n as ae,o as oe,r as se,s as M,t as ce,v as N,w as le}from"./CQx5QjGd.js";var P=r(`
              `);function ue(n,r){d(r,!0);let i=f(r,`disabled`,3,!1),a=f(r,`pending`,3,!1),o=f(r,`buttonClass`,3,``),l=b(!1),v=b(!1),x=b(void 0),E=b(void 0),D=g(()=>`add-reaction-picker-${r.messageId}`);function te(){i()||a()||(u(l)||h(v,re(u(x),130),!0),h(l,!u(l)))}function O(e){i()||a()||(r.onToggle(e),h(l,!1))}function ne(){h(l,!1),u(E)?.focus()}function k(e){u(x)&&!u(x).contains(e.target)&&h(l,!1)}e(()=>{if(u(l))return document.addEventListener(`click`,k),()=>document.removeEventListener(`click`,k)}),e(()=>{(i()||a())&&h(l,!1)});var A=P(),j=C(A);w(j,e=>h(E,e),()=>u(E));var ie=p(j,2),ae=e=>{{let t=g(()=>u(v)?`above-right`:`below`),n=g(()=>i()||a());M(e,{get id(){return u(D)},get placement(){return u(t)},get disabled(){return u(n)},onPick:O,onEscape:ne})}};y(ie,e=>{u(l)&&e(ae)}),T(A),w(A,e=>h(x,e),()=>u(x)),c(()=>{m(j,1,ee(o()),`svelte-sk6gxl`),S(j,`aria-controls`,u(D)),S(j,`aria-expanded`,u(l)),j.disabled=i()||a()}),t(`click`,j,te),s(n,A),_()}E([`click`]);var de=r(``),fe=r(`Open in ClickClack`),pe=r(``),me=r(`deleted bot`),he=r(` `),ge=r(``),_e=r(``),ve=r(` `,1),ye=r(`
              This message was deleted.
              `),be=r(`(edited)`),xe=r(`
              `,1),Se=r(`
              `),Ce=r(`
              `,1),we=r(`
              `),Te=r(`

              `,1);function F(e,r){d(r,!0);let m=f(r,`reactionsDisabled`,3,!1),ee=f(r,`mentionPeople`,19,()=>[]),E=f(r,`replyDisabled`,3,!1),re=f(r,`headerLabel`,3,`Thread`),M=f(r,`canDeleteAnyMessage`,3,!1),P=f(r,`deletingMessageIDs`,19,()=>new Set),F=f(r,`editScope`,3,``),I=b(void 0),L=g(()=>r.editController?.session(F())),R=new Map,Ee=e=>M()||!!r.currentUserID&&(e.author?.id||e.author_id)===r.currentUserID,De=e=>!!r.currentUserID&&(e.author?.id||e.author_id)===r.currentUserID,z=e=>u(L)?.surface===`thread`&&u(L).messageID===e.id;async function B(e){await i();let t=u(I)?.querySelector(`[data-message-id="${CSS.escape(e)}"]`),n=R.get(e)??t?.querySelector(`.thread-more-actions`);if(R.delete(e),n?.isConnected&&n.getClientRects().length>0){n.focus();return}t?.querySelector(`button[aria-label="Edit message"]`)?.focus()}function Oe(e,t){t?R.set(e.id,t):R.delete(e.id),r.editController?.start(F(),e,`thread`)===`cancelled`&&B(e.id)}function ke(e){r.editController?.cancel(F(),`thread`)&&B(e.id)}async function Ae(e){if(!r.editController)return;let t=await r.editController.save(F(),e,e=>r.onMessageEdited?.(e));(t===`saved`||t===`cancelled`)&&await B(e.id)}let V=b(void 0),H=b(void 0),U=b(``),W,G,K,q=0,J=!1;function je(e){return`thread-message-action-sheet-${e.id}`}function Me(){W!==void 0&&(window.clearTimeout(W),W=void 0)}function Ne(){G?.(),G=void 0}function Y(){K!==void 0&&(window.clearTimeout(K),K=void 0)}function Pe(e,t){Y(),q+=1,h(V,e,!0),h(H,t,!0),h(U,``)}function X(){Y(),q+=1,h(V,void 0)}function Fe(e,t){if(e.pointerType!==`touch`||!e.isPrimary||e.button!==0||t.deleted_at||t.status===`pending`||t.status===`failed`||z(t)||e.target?.closest(`a, button, input, textarea, select, .attachment-grid, .media-tile, .markdown img, .gif-player, .markdown-table-scroll`))return;Ne();let n=e.pointerId,r=e.clientX,i=e.clientY;W=window.setTimeout(()=>{W=void 0,Pe(t)},450);let a=e=>{e.pointerId===n&&(Math.abs(e.clientX-r)>10||Math.abs(e.clientY-i)>10)&&s()},o=e=>{e.pointerId===n&&s()},s=()=>{Me(),window.removeEventListener(`pointermove`,a),window.removeEventListener(`pointerup`,o),window.removeEventListener(`pointercancel`,o),G===s&&(G=void 0)};G=s,window.addEventListener(`pointermove`,a),window.addEventListener(`pointerup`,o),window.addEventListener(`pointercancel`,o)}function Ie(e){(u(V)||W!==void 0)&&e.preventDefault()}function Le(e){let t=u(V);X(),!(!t||m()||!r.currentUserID||r.reactionController.pending(t.id))&&r.reactionController.toggle(t,e)}function Re(){let e=u(V);X(),e&&r.onSetReplyTarget(e,`thread`)}async function ze(){let e=u(V);if(!e)return;Y();let t=q;try{if(!navigator.clipboard)throw Error(`Clipboard unavailable`);if(await navigator.clipboard.writeText(e.body??``),J||u(V)?.id!==e.id)return;h(U,`copied`),K=window.setTimeout(()=>{K=void 0,!J&&t===q&&X()},900)}catch{!J&&u(V)?.id===e.id&&h(U,`failed`)}}function Be(){let e=u(V),t=u(H);X(),e&&Oe(e,t)}function Ve(){let e=u(V);X(),e&&r.onDeleteMessage?.(e)}x(()=>{J=!0,Y(),Ne(),R.clear()});var He=Te(),Ue=v(He),We=C(Ue),Ge=e=>{var n=de();t(`click`,n,function(...e){r.onBack?.apply(this,e)}),s(e,n)};y(We,e=>{r.onBack&&e(Ge)});var Ke=p(We,2),qe=C(Ke),Je=C(qe,!0);T(qe);var Ye=p(qe,2),Xe=C(Ye,!0);T(Ye),T(Ke);var Ze=p(Ke,2),Qe=e=>{var t=fe();c(()=>S(t,`href`,r.openHref)),s(e,t)};y(Ze,e=>{r.openHref&&e(Qe)});var $e=p(Ze,2),et=e=>{var n=pe();t(`click`,n,function(...e){r.onClose?.apply(this,e)}),s(e,n)};y($e,e=>{r.onClose&&e(et)}),T(Ue);var Z=p(Ue,2),Q=C(Z),tt=C(Q);{let e=g(()=>r.root.author?.id||r.root.author_id),t=g(()=>r.root.author?.display_name),n=g(()=>O(r.root.author)?void 0:r.root.author?.avatar_url);ie(tt,{class:`avatar`,get id(){return u(e)},get name(){return u(t)},get src(){return u(n)},size:38})}var nt=p(tt,2),rt=C(nt),it=C(rt),at=C(it,!0);T(it);var ot=p(it,2),st=e=>{var t=me();s(e,t)},ct=g(()=>O(r.root.author));y(ot,e=>{u(ct)&&e(st)});var lt=p(ot,2),ut=e=>{var t=he(),n=C(t,!0);T(t),c(e=>a(n,e),[()=>te(D(r.root.author))]),s(e,t)},dt=g(()=>D(r.root.author));y(lt,e=>{u(dt)&&e(ut)});var ft=p(lt,2),pt=C(ft,!0);T(ft);var mt=p(ft,2),ht=e=>{var n=ve(),i=v(n);{let e=g(()=>m()||!r.currentUserID),t=g(()=>r.reactionController.pending(r.root.id));ue(i,{get messageId(){return r.root.id},get disabled(){return u(e)},get pending(){return u(t)},buttonClass:`thread-action-btn`,onToggle:e=>void r.reactionController.toggle(r.root,e)})}var a=p(i,2),o=p(a,2),l=e=>{var n=ge();t(`click`,n,()=>Oe(r.root)),s(e,n)},d=g(()=>De(r.root)&&r.editController&&F());y(o,e=>{u(d)&&e(l)});var f=p(o,2),h=e=>{var n=_e();c(e=>n.disabled=e,[()=>P().has(r.root.id)]),t(`click`,n,()=>r.onDeleteMessage?.(r.root)),s(e,n)},_=g(()=>Ee(r.root)&&r.onDeleteMessage);y(f,e=>{u(_)&&e(h)});var b=p(f,2);c(e=>{S(b,`aria-controls`,e),S(b,`aria-expanded`,u(V)?.id===r.root.id)},[()=>je(r.root)]),t(`click`,a,()=>r.onSetReplyTarget(r.root,`thread`)),t(`click`,b,e=>Pe(r.root,e.currentTarget)),s(e,n)},gt=g(()=>!r.root.deleted_at&&!z(r.root));y(mt,e=>{u(gt)&&e(ht)}),T(rt);var _t=p(rt,2),vt=e=>{var t=ye();s(e,t)},yt=e=>{ae(e,{get body(){return u(L).draft},get errorMessage(){return u(L).error},get saving(){return u(L).saving},onBody:e=>r.editController?.updateDraft(F(),e),onCancel:()=>ke(r.root),onSave:()=>Ae(r.root)})},bt=g(()=>z(r.root)&&u(L)),xt=e=>{var t=xe(),i=v(t);n(i,()=>A(r.root.body),!0),T(i),l(i,e=>ne?.(e));var a=p(i,2),o=e=>{var t=be();c(e=>S(t,`title`,`Edited ${e??``}`),[()=>j(r.root.edited_at)]),s(e,t)};y(a,e=>{r.root.edited_at&&e(o)});var d=p(a,2);{let e=g(()=>r.reactionController.reactionsFor(r.root)),t=g(()=>r.reactionController.pending(r.root.id)),n=g(()=>r.reactionController.error(r.root.id)),i=g(()=>m()||!r.currentUserID);oe(d,{get messageId(){return r.root.id},get reactions(){return u(e)},get pending(){return u(t)},get error(){return u(n)},get disabled(){return u(i)},onToggle:e=>void r.reactionController.toggle(r.root,e)})}s(e,t)};y(_t,e=>{r.root.deleted_at?e(vt):u(bt)?e(yt,1):e(xt,-1)});var St=p(_t,2),Ct=e=>{var t=Se();o(t,21,()=>r.root.attachments,e=>e.id,(e,t)=>{{let n=g(()=>le(u(t)));se(e,{get upload(){return u(t)},get url(){return u(n)},get onOpenImage(){return r.onOpenImage},get onOpenArtifact(){return r.onOpenArtifact}})}}),T(t),s(e,t)};y(St,e=>{!r.root.deleted_at&&r.root.attachments?.length&&e(Ct)}),T(nt),T(Q);var $=p(Q,2),wt=C($),Tt=C(wt);T(wt),T($);var Et=p($,2);o(Et,21,()=>r.replies,e=>e.id,(e,i)=>{var d=we(),f=C(d);{let e=g(()=>u(i).author?.id||u(i).author_id),t=g(()=>u(i).author?.display_name),n=g(()=>O(u(i).author)?void 0:u(i).author?.avatar_url);ie(f,{class:`avatar small`,get id(){return u(e)},get name(){return u(t)},get src(){return u(n)},size:30})}var h=p(f,2),_=C(h),b=C(_),x=C(b,!0);T(b);var w=p(b,2),ee=e=>{var t=me();s(e,t)},E=g(()=>O(u(i).author));y(w,e=>{u(E)&&e(ee)});var k=p(w,2),re=e=>{var t=he(),n=C(t,!0);T(t),c(e=>a(n,e),[()=>te(D(u(i).author))]),s(e,t)},M=g(()=>D(u(i).author));y(k,e=>{u(M)&&e(re)});var N=p(k,2),de=C(N,!0);T(N);var fe=p(N,2),pe=e=>{var n=ve(),a=v(n);{let e=g(()=>m()||!r.currentUserID),t=g(()=>r.reactionController.pending(u(i).id));ue(a,{get messageId(){return u(i).id},get disabled(){return u(e)},get pending(){return u(t)},buttonClass:`thread-action-btn`,onToggle:e=>void r.reactionController.toggle(u(i),e)})}var o=p(a,2),l=p(o,2),d=e=>{var n=ge();c(()=>n.disabled=u(i).status===`pending`||u(i).status===`failed`),t(`click`,n,()=>Oe(u(i))),s(e,n)},f=g(()=>De(u(i))&&r.editController&&F());y(l,e=>{u(f)&&e(d)});var h=p(l,2),_=e=>{var n=_e();c(e=>n.disabled=e,[()=>P().has(u(i).id)]),t(`click`,n,()=>r.onDeleteMessage?.(u(i))),s(e,n)},b=g(()=>Ee(u(i))&&r.onDeleteMessage);y(h,e=>{u(b)&&e(_)});var x=p(h,2);c(e=>{S(x,`aria-controls`,e),S(x,`aria-expanded`,u(V)?.id===u(i).id),x.disabled=u(i).status===`pending`||u(i).status===`failed`},[()=>je(u(i))]),t(`click`,o,()=>r.onSetReplyTarget(u(i),`thread`)),t(`click`,x,e=>Pe(u(i),e.currentTarget)),s(e,n)},xe=g(()=>!u(i).deleted_at&&!z(u(i)));y(fe,e=>{u(xe)&&e(pe)}),T(_);var Te=p(_,2),I=e=>{var t=ye();s(e,t)},R=e=>{ae(e,{get body(){return u(L).draft},get errorMessage(){return u(L).error},get saving(){return u(L).saving},onBody:e=>r.editController?.updateDraft(F(),e),onCancel:()=>ke(u(i)),onSave:()=>Ae(u(i))})},B=g(()=>z(u(i))&&u(L)),H=e=>{var t=Ce(),a=v(t);ce(a,{get message(){return u(i)},get onJump(){return r.onJumpToQuote}});var o=p(a,2);n(o,()=>A(u(i).body),!0),T(o),l(o,e=>ne?.(e));var d=p(o,2),f=e=>{var t=be();c(e=>S(t,`title`,`Edited ${e??``}`),[()=>j(u(i).edited_at)]),s(e,t)};y(d,e=>{u(i).edited_at&&e(f)});var h=p(d,2);{let e=g(()=>r.reactionController.reactionsFor(u(i))),t=g(()=>r.reactionController.pending(u(i).id)),n=g(()=>r.reactionController.error(u(i).id)),a=g(()=>m()||!r.currentUserID);oe(h,{get messageId(){return u(i).id},get reactions(){return u(e)},get pending(){return u(t)},get error(){return u(n)},get disabled(){return u(a)},onToggle:e=>void r.reactionController.toggle(u(i),e)})}s(e,t)};y(Te,e=>{u(i).deleted_at?e(I):u(B)?e(R,1):e(H,-1)});var U=p(Te,2),W=e=>{var t=Se();o(t,21,()=>u(i).attachments,e=>e.id,(e,t)=>{{let n=g(()=>le(u(t)));se(e,{get upload(){return u(t)},get url(){return u(n)},get onOpenImage(){return r.onOpenImage},get onOpenArtifact(){return r.onOpenArtifact}})}}),T(t),s(e,t)};y(U,e=>{!u(i).deleted_at&&u(i).attachments?.length&&e(W)}),T(h),T(d),c(e=>{S(d,`data-message-id`,u(i).id),a(x,u(i).author?.display_name||`Local User`),a(de,e)},[()=>j(u(i).created_at)]),t(`pointerdown`,d,e=>Fe(e,u(i))),t(`contextmenu`,d,Ie),s(e,d)}),T(Et),T(Z),w(Z,e=>h(I,e),()=>u(I));var Dt=p(Z,2),Ot=e=>{{let t=g(()=>je(u(V))),n=g(()=>!!r.currentUserID&&!m()&&!r.reactionController.pending(u(V).id)),i=g(()=>!E()),a=g(()=>De(u(V))&&!!r.editController&&!!F()),o=g(()=>Ee(u(V))&&!!r.onDeleteMessage),s=g(()=>P().has(u(V).id));k(e,{get id(){return u(t)},get canReact(){return u(n)},get canReply(){return u(i)},showOpenThread:!1,get canEdit(){return u(a)},get canDelete(){return u(o)},get deleting(){return u(s)},get copyStatus(){return u(U)},onReact:Le,onOpenThread:()=>{},onReply:Re,onCopy:ze,onEdit:Be,onDelete:Ve,onClose:X,get returnFocus(){return u(H)}})}};y(Dt,e=>{u(V)&&e(Ot)});var kt=p(Dt,2);{let e=g(()=>E()?`No active recipient`:`Reply in thread`);N(kt,{get value(){return r.replyBody},get placeholder(){return u(e)},ariaLabel:`Reply body`,submitLabel:`Reply`,formClass:`composer reply-composer`,get disabled(){return E()},get replyTarget(){return r.replyTarget},get mentionPeople(){return ee()},get onValue(){return r.onReplyBody},get onSubmit(){return r.onSubmitReply},get onKeydown(){return r.onReplyKeydown},get onFocus(){return r.onReplyFocus},get onInputRef(){return r.onReplyInputRef},get onClearReply(){return r.onClearReply}})}c(e=>{a(Je,re()),a(Xe,r.headerDetail??`${r.threadState?.reply_count??r.replies.length} ${(r.threadState?.reply_count??r.replies.length)===1?`reply`:`replies`}`),S(Q,`data-message-id`,r.root.id),a(at,r.root.author?.display_name||`Local User`),a(pt,e),a(Tt,`${r.replies.length??``} ${r.replies.length===1?`reply`:`replies`}`)},[()=>j(r.root.created_at)]),t(`pointerdown`,Z,function(...e){r.onActivateThreadComposer?.apply(this,e)}),t(`pointerup`,Z,function(...e){r.onInlineImagePointerUp?.apply(this,e)}),t(`pointerdown`,Q,e=>Fe(e,r.root)),t(`contextmenu`,Q,Ie),s(e,He),_()}E([`click`,`pointerdown`,`pointerup`,`contextmenu`]);export{F as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/M3UdkkP6.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/M3UdkkP6.js deleted file mode 100644 index 685a08ac..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/M3UdkkP6.js +++ /dev/null @@ -1 +0,0 @@ -import"./DGQW1sK7.js"; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/DiELhALK.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/UXt3B2YI.js similarity index 92% rename from apps/api/internal/webassets/dist/_app/immutable/chunks/DiELhALK.js rename to apps/api/internal/webassets/dist/_app/immutable/chunks/UXt3B2YI.js index 8b843336..2bcc8405 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/DiELhALK.js +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/UXt3B2YI.js @@ -1 +1 @@ -import{n as e}from"./BEqsQr3A.js";var t=/^\/embed\/(?:channel|thread)\//u,n={surface:[`--bg`,`--rail`],card:[`--panel`],elevated:[`--panel-2`,`--panel-3`],text:[`--text`],"text-strong":[`--text-strong`],muted:[`--muted`,`--muted-2`],border:[`--line`],"border-strong":[`--line-strong`],accent:[`--accent`,`--brand-a`],"accent-fill":[`--accent-hover`,`--brand-b`],"accent-fg":[`--accent-contrast`,`--brand-contrast`],ok:[`--success`],warn:[`--warn`],danger:[`--danger`],info:[`--info`]},r=[...new Set(Object.values(n).flat()),`--hover`,`--hover-strong`,`--accent-soft`,`--font-display`,`--font-mono`,`--radius-sm`,`--radius`,`--radius-lg`,`--radius-xl`],i=null;function a(e){return e===`light`||e===`dark`}function o(e){if(!t.test(e.pathname))return null;let n=new URLSearchParams(e.search).get(`theme`);return a(n)?n:null}function s(e){if(!t.test(e.pathname))return null;let n=new URLSearchParams(e.search).get(`hostOrigin`);if(!n)return null;try{let e=new URL(n);return e.protocol!==`https:`&&e.protocol!==`http:`||e.origin!==n?null:e.origin}catch{return null}}function c(){return typeof window>`u`||!t.test(window.location.pathname)?null:i??o(window.location)}function l(){if(i===null)return!1;i=null;let e=document.documentElement;for(let t of r)e.style.removeProperty(t);return e.style.removeProperty(`font-family`),!0}function u(e){if(!e||typeof e!=`object`)return null;let t=e;return t.type!==`openclaw:widget-theme`||!a(t.mode)||!t.tokens||typeof t.tokens!=`object`||Array.isArray(t.tokens)?null:t}function d(e,t){return typeof t==`string`&&t.length<=512&&typeof CSS<`u`&&CSS.supports(e,t)}function ee(e){let t=document.documentElement;i=e.mode,t.setAttribute(`data-color-mode`,e.mode);for(let e of r)t.style.removeProperty(e);for(let[r,i]of Object.entries(n)){let n=e.tokens[r];if(d(`color`,n))for(let e of i)t.style.setProperty(e,n)}let a=e.tokens.text;d(`color`,a)&&(t.style.setProperty(`--hover`,`color-mix(in srgb, ${a} 5%, transparent)`),t.style.setProperty(`--hover-strong`,`color-mix(in srgb, ${a} 8%, transparent)`));let o=e.tokens.accent;d(`color`,o)&&t.style.setProperty(`--accent-soft`,`color-mix(in srgb, ${o} 14%, transparent)`);let s=e.tokens[`font-body`];d(`font-family`,s)?(t.style.fontFamily=s,t.style.setProperty(`--font-display`,s)):t.style.removeProperty(`font-family`);let c=e.tokens[`font-mono`];d(`font-family`,c)&&t.style.setProperty(`--font-mono`,c);let l=e.tokens.radius;d(`border-radius`,l)&&(t.style.setProperty(`--radius`,l),t.style.setProperty(`--radius-sm`,`calc(${l} * 0.67)`),t.style.setProperty(`--radius-lg`,`calc(${l} * 1.67)`),t.style.setProperty(`--radius-xl`,`calc(${l} * 2.33)`))}function te(){if(typeof window>`u`)return()=>{};let e=s(window.location);if(!e||window.parent===window)return()=>{};i=o(window.location);let t=t=>{if(s(window.location)!==e||t.origin!==e||t.source!==window.parent)return;let n=u(t.data);n&&ee(n)};return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)}var f=`clickclack:color-mode:v1`,p=`clickclack:board-theme:v1`,m=`clickclack:message-layout:v1`,h=`clickclack:density:v1`,g=`clickclack:appearance-user:v1`,_=`system`,v=`signal`,y=`standard`,b=`comfortable`,ne=[{id:`light`,label:`Light`},{id:`dark`,label:`Dark`},{id:`system`,label:`System`}],x=[{id:`signal`,label:`Signal`,blurb:`Porcelain board, electric cyan`},{id:`ember`,label:`Ember`,blurb:`Warm paper, ember coral`},{id:`moss`,label:`Moss`,blurb:`Sage plate, verdant green`},{id:`iris`,label:`Iris`,blurb:`Violet plate, twilight iris`}],S=[{id:`standard`,label:`Standard`,blurb:`Compact messages with activity attached`},{id:`outlined`,label:`Outlined chains`,blurb:`Every message outlined; agent activity caps its answer`}],C=[{id:`comfortable`,label:`Comfortable`,blurb:`Roomy rows and full-size avatars`},{id:`compact`,label:`Compact`,blurb:`Tighter rows fit more messages on screen`}],w=``,T=Promise.resolve(),E=0,D=0,O=0,k=new Set;function A(e){return e===`light`||e===`dark`||e===`system`}function j(e){return x.some(t=>t.id===e)}function re(e){return S.some(t=>t.id===e)}function M(e){return C.some(t=>t.id===e)}function N(){try{let e=window.localStorage.getItem(f);return A(e)?e:_}catch{return _}}function P(){try{let e=window.localStorage.getItem(p);return j(e)?e:v}catch{return v}}function F(){try{let e=window.localStorage.getItem(m);return re(e)?e:y}catch{return y}}function I(){try{let e=window.localStorage.getItem(h);return M(e)?e:b}catch{return b}}function L(e){try{let t=c()??e;t===`system`?document.documentElement.removeAttribute(`data-color-mode`):document.documentElement.setAttribute(`data-color-mode`,t)}catch{}}function R(e){try{e===`signal`?document.documentElement.removeAttribute(`data-board`):document.documentElement.setAttribute(`data-board`,e)}catch{}}function z(e){try{e===`standard`?document.documentElement.removeAttribute(`data-message-layout`):document.documentElement.setAttribute(`data-message-layout`,e)}catch{}}function B(e){try{e===`comfortable`?document.documentElement.removeAttribute(`data-density`):document.documentElement.setAttribute(`data-density`,e)}catch{}}function V(e){L(e);try{e===`system`?window.localStorage.removeItem(f):window.localStorage.setItem(f,e)}catch{}}function H(e){R(e);try{e===`signal`?window.localStorage.removeItem(p):window.localStorage.setItem(p,e)}catch{}}function U(e){z(e);try{e===`standard`?window.localStorage.removeItem(m):window.localStorage.setItem(m,e)}catch{}}function W(e){B(e);try{e===`comfortable`?window.localStorage.removeItem(h):window.localStorage.setItem(h,e)}catch{}}function G(e){V(e),$(),Q({color_mode:e===`system`?``:e})}function K(e){H(e),$(),Q({board_theme:e===`signal`?``:e})}function q(e){U(e),$(),Q({message_layout:e===`standard`?``:e})}function J(e){W(e),$(),Q({density:e===`comfortable`?``:e})}function Y(){let e=N(),t=P(),n=F(),r=I();return{color_mode:e===`system`?``:e,board_theme:t===`signal`?``:t,message_layout:n===`standard`?``:n,density:r===`comfortable`?``:r}}function X(e){V(e.color_mode||`system`),H(e.board_theme||`signal`),U(e.message_layout||`standard`),W(e.density||`comfortable`)}async function ie(t={}){let n={userID:w,revision:E,settledRevision:D,accountGeneration:O},r=await e(`/api/me`,t);return Z(r.user,n),r}function Z(e,t){if(t&&w&&t.userID!==w)return;let n=w===e.id;if(n&&t&&(t.accountGeneration!==O||t.revision!==E||t.revision!==t.settledRevision))return;n||(O+=1,E=0,D=0),w=e.id;let r=ae();if(e.appearance_preferences!==void 0){X(e.appearance_preferences),$();return}if(r&&r!==e.id){X({}),$();return}if($(),k.has(e.id))return;k.add(e.id);let i=Y(),a=Object.fromEntries(Object.entries(i).filter(([,e])=>e!==``));Object.keys(a).length>0&&Q(a)}function Q(t){let n=w;if(!n||Object.keys(t).length===0)return;let r=++E,i=O;T=T.then(async()=>{if(!(w!==n||O!==i))try{let a=await e(`/api/me`,{method:`PATCH`,body:JSON.stringify({appearance_preferences:t})});if(w!==n||O!==i||a.user.id!==n)return;D=Math.max(D,r),E===r&&(X(a.user.appearance_preferences??{}),$())}catch{w===n&&O===i&&(D=Math.max(D,r))}})}function ae(){try{return window.localStorage.getItem(g)??``}catch{return``}}function $(){if(w)try{window.localStorage.setItem(g,w)}catch{}}function oe(){L(N()),R(P()),z(F()),B(I())}export{te as _,L as a,N as c,ie as d,K as f,l as g,q as h,S as i,I as l,J as m,ne as n,oe as o,G as p,C as r,P as s,x as t,F as u}; \ No newline at end of file +import{n as e}from"./BEqsQr3A.js";var t=/^\/embed\/(?:channel|thread)\//u,n={surface:[`--bg`,`--rail`],card:[`--panel`],elevated:[`--panel-2`,`--panel-3`],text:[`--text`],"text-strong":[`--text-strong`],muted:[`--muted`,`--muted-2`],border:[`--line`],"border-strong":[`--line-strong`],accent:[`--accent`,`--brand-a`],"accent-fill":[`--accent-hover`,`--brand-b`],"accent-fg":[`--accent-contrast`,`--brand-contrast`],ok:[`--success`],warn:[`--warn`],danger:[`--danger`],info:[`--info`]},r=[...new Set(Object.values(n).flat()),`--hover`,`--hover-strong`,`--accent-soft`,`--font-display`,`--font-mono`,`--radius-sm`,`--radius`,`--radius-lg`,`--radius-xl`],i=null;function a(e){return e===`light`||e===`dark`}function o(e){if(!t.test(e.pathname))return null;let n=new URLSearchParams(e.search).get(`theme`);return a(n)?n:null}function s(e){if(!t.test(e.pathname))return null;let n=new URLSearchParams(e.search).get(`hostOrigin`);if(!n)return null;try{let e=new URL(n);return e.protocol!==`https:`&&e.protocol!==`http:`||e.origin!==n?null:e.origin}catch{return null}}function c(){return typeof window>`u`||!t.test(window.location.pathname)?null:i??o(window.location)}function l(){if(i===null)return!1;i=null;let e=document.documentElement;for(let t of r)e.style.removeProperty(t);return e.style.removeProperty(`font-family`),!0}function u(e){if(!e||typeof e!=`object`)return null;let t=e;return t.type!==`openclaw:widget-theme`||!a(t.mode)||!t.tokens||typeof t.tokens!=`object`||Array.isArray(t.tokens)?null:t}function d(e,t){return typeof t==`string`&&t.length<=512&&typeof CSS<`u`&&CSS.supports(e,t)}function ee(e){let t=document.documentElement;i=e.mode,t.setAttribute(`data-color-mode`,e.mode);for(let e of r)t.style.removeProperty(e);for(let[r,i]of Object.entries(n)){let n=e.tokens[r];if(d(`color`,n))for(let e of i)t.style.setProperty(e,n)}let a=e.tokens.text;d(`color`,a)&&(t.style.setProperty(`--hover`,`color-mix(in srgb, ${a} 5%, transparent)`),t.style.setProperty(`--hover-strong`,`color-mix(in srgb, ${a} 8%, transparent)`));let o=e.tokens.accent;d(`color`,o)&&t.style.setProperty(`--accent-soft`,`color-mix(in srgb, ${o} 14%, transparent)`);let s=e.tokens[`font-body`];d(`font-family`,s)?(t.style.fontFamily=s,t.style.setProperty(`--font-display`,s)):t.style.removeProperty(`font-family`);let c=e.tokens[`font-mono`];d(`font-family`,c)&&t.style.setProperty(`--font-mono`,c);let l=e.tokens.radius;d(`border-radius`,l)&&(t.style.setProperty(`--radius`,l),t.style.setProperty(`--radius-sm`,`calc(${l} * 0.67)`),t.style.setProperty(`--radius-lg`,`calc(${l} * 1.67)`),t.style.setProperty(`--radius-xl`,`calc(${l} * 2.33)`))}function te(){if(typeof window>`u`)return()=>{};let e=s(window.location);if(!e||window.parent===window)return()=>{};i=o(window.location);let t=t=>{if(s(window.location)!==e||t.origin!==e||t.source!==window.parent)return;let n=u(t.data);n&&ee(n)};return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)}var f=`clickclack:color-mode:v1`,p=`clickclack:board-theme:v1`,m=`clickclack:message-layout:v1`,h=`clickclack:density:v1`,g=`clickclack:appearance-user:v1`,_=`system`,v=`signal`,y=`standard`,b=`comfortable`,ne=[{id:`light`,label:`Light`},{id:`dark`,label:`Dark`},{id:`system`,label:`System`}],x=[{id:`signal`,label:`Signal`,blurb:`Porcelain board, electric cyan`},{id:`ember`,label:`Ember`,blurb:`Warm paper, ember coral`},{id:`moss`,label:`Moss`,blurb:`Sage plate, verdant green`},{id:`iris`,label:`Iris`,blurb:`Violet plate, twilight iris`}],S=[{id:`standard`,label:`Standard`,blurb:`Compact messages with activity attached`},{id:`outlined`,label:`Outlined chains`,blurb:`Every message outlined; agent activity caps its answer`}],C=[{id:`comfortable`,label:`Comfortable`,blurb:`Roomy rows and full-size avatars`},{id:`compact`,label:`Compact`,blurb:`Tighter rows fit more messages on screen`}],w=``,T=Promise.resolve(),E=0,D=0,O=0,k=new Set;function A(e){return e===`light`||e===`dark`||e===`system`}function j(e){return x.some(t=>t.id===e)}function re(e){return S.some(t=>t.id===e)}function M(e){return C.some(t=>t.id===e)}function N(){try{let e=window.localStorage.getItem(f);return A(e)?e:_}catch{return _}}function P(){try{let e=window.localStorage.getItem(p);return j(e)?e:v}catch{return v}}function F(){try{let e=window.localStorage.getItem(m);return re(e)?e:y}catch{return y}}function I(){try{let e=window.localStorage.getItem(h);return M(e)?e:b}catch{return b}}function L(e){try{let t=c()??e;t===`system`?document.documentElement.removeAttribute(`data-color-mode`):document.documentElement.setAttribute(`data-color-mode`,t)}catch{}}function R(e){try{e===`signal`?document.documentElement.removeAttribute(`data-board`):document.documentElement.setAttribute(`data-board`,e)}catch{}}function z(e){try{e===`standard`?document.documentElement.removeAttribute(`data-message-layout`):document.documentElement.setAttribute(`data-message-layout`,e)}catch{}}function B(e){try{e===`comfortable`?document.documentElement.removeAttribute(`data-density`):document.documentElement.setAttribute(`data-density`,e)}catch{}}function V(e){L(e);try{e===`system`?window.localStorage.removeItem(f):window.localStorage.setItem(f,e)}catch{}}function H(e){R(e);try{e===`signal`?window.localStorage.removeItem(p):window.localStorage.setItem(p,e)}catch{}}function U(e){z(e);try{e===`standard`?window.localStorage.removeItem(m):window.localStorage.setItem(m,e)}catch{}}function W(e){B(e);try{e===`comfortable`?window.localStorage.removeItem(h):window.localStorage.setItem(h,e)}catch{}}function G(e){V(e),$(),Q({color_mode:e===`system`?``:e})}function K(e){H(e),$(),Q({board_theme:e===`signal`?``:e})}function q(e){U(e),$(),Q({message_layout:e===`standard`?``:e})}function J(e){W(e),$(),Q({density:e===`comfortable`?``:e})}function Y(){let e=N(),t=P(),n=F(),r=I();return{color_mode:e===`system`?``:e,board_theme:t===`signal`?``:t,message_layout:n===`standard`?``:n,density:r===`comfortable`?``:r}}function X(e){V(e.color_mode||`system`),H(e.board_theme||`signal`),U(e.message_layout||`standard`),W(e.density||`comfortable`)}async function ie(t={}){let n={userID:w,revision:E,settledRevision:D,accountGeneration:O},r=await e(`/api/me`,t);return Z(r.user,n),r}function Z(e,t){if(t&&w&&t.userID!==w)return;let n=w===e.id;if(n&&t&&(t.accountGeneration!==O||t.revision!==E||t.revision!==t.settledRevision))return;n||(O+=1,E=0,D=0),w=e.id;let r=ae();if(e.appearance_preferences!==void 0){X(e.appearance_preferences),$();return}if(r&&r!==e.id){X({}),$();return}if($(),k.has(e.id))return;k.add(e.id);let i=Y(),a=Object.fromEntries(Object.entries(i).filter(([,e])=>e!==``));Object.keys(a).length>0&&Q(a)}function Q(t){let n=w;if(!n||Object.keys(t).length===0)return;let r=++E,i=O;T=T.then(async()=>{if(w===n&&O===i)try{let a=await e(`/api/me`,{method:`PATCH`,body:JSON.stringify({appearance_preferences:t})});if(w!==n||O!==i||a.user.id!==n)return;D=Math.max(D,r),E===r&&(X(a.user.appearance_preferences??{}),$())}catch{w===n&&O===i&&(D=Math.max(D,r))}})}function ae(){try{return window.localStorage.getItem(g)??``}catch{return``}}function $(){if(w)try{window.localStorage.setItem(g,w)}catch{}}function oe(){L(N()),R(P()),z(F()),B(I())}export{te as _,L as a,N as c,ie as d,K as f,l as g,q as h,S as i,I as l,J as m,ne as n,oe as o,G as p,C as r,P as s,x as t,F as u}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/YGHvv9X0.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/YGHvv9X0.js deleted file mode 100644 index 2ba9d4ba..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/YGHvv9X0.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,E as t,F as n,K as r,O as i,P as a,W as o,_t as s,a as c,ct as l,d as u,et as d,ft as f,gt as p,it as m,lt as h,n as g,ot as _,r as v,s as y,w as b}from"./CySd1wef.js";import"./xihTtKlq.js";var x=e=>Object.keys(e).reduce((t,n)=>{let r=e[n];return r==null?t:t+`${n}:${r};`},``),S=(e,t)=>`_`+t,C=null,{min:w,max:T,abs:E,floor:D}=Math,O=(e,t,n)=>w(n,T(t,e)),k=e=>[...e].sort((e,t)=>e-t),A=typeof queueMicrotask==`function`?queueMicrotask:e=>{Promise.resolve().then(e)},j=()=>{let e;return[new Promise(t=>{e=t}),e]},M=e=>{let t;return()=>(e&&=(t=e(),void 0),t)},N=(e,t,n)=>{let r=n?`unshift`:`push`;for(let n=0;n{let n=e.t[t];return n===-1?e.o:n},F=(e,t,n)=>{let r=e.t[t]===-1;return e.t[t]=n,e.i=w(t,e.i),r},I=(e,t)=>{if(!e.l)return 0;if(e.i>=t)return e.u[t];e.i<0&&(e.u[0]=0,e.i=0);let n=e.i,r=e.u[n];for(;n{let i=n;for(;n<=r;){let a=D((n+r)/2);I(e,a)<=t?(i=a,n=a+1):r=a-1}return O(i,0,e.l-1)},R=(e,t,n)=>{let r=t-e.l;return e.i=n?-1:w(t-1,e.i),e.l=t,r>0?(N(e.u,r),N(e.t,r,n),e.o*r):(e.u.splice(r),(n?e.t.splice(0,-r):e.t.splice(r)).reduce((t,n)=>t-(n===-1?e.o:n),0))},z=e=>e.documentElement,B=e=>e.ownerDocument,V=e=>e.defaultView,H=M(()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&navigator.maxTouchPoints>0),U=M(()=>`scrollBehavior`in z(document).style),W=e=>T(e.$getTotalSize(),e.$getViewportSize()),G=(e,t=40,n=0,r,i=!1)=>{let a=!!n,o=1,s=0,c=0,l=0,u=0,d=0,f=0,p=0,m=0,h=C,g=[0,a?T(n-1,0):-1],_=0,v=!1,y=((e,t,n)=>({o:t,t:n?N(n.slice(0,w(e,n.length)),T(0,e-n.length)):N([],e),l:e,i:-1,u:N([],e+1)}))(e,r?r[1]:t,r&&r[0]),b=new Set,x=()=>l-c,S=()=>x()+d+u,D=(e,t)=>((e,t,n,r)=>{if(r=w(r,e.l-1),I(e,r)<=t){let i=L(e,n,r);return[L(e,t,r,i),i]}{let i=L(e,t,void 0,r);return[i,L(e,n,i)]}})(y,e,t,g[0]),O=()=>I(y,y.l),A=(e,t)=>{let n=I(y,e)-d;return t?O()-n-j(e):n},j=e=>P(y,e),M=(e,t=-1)=>y.t[e]===t,z=e=>{e&&(H()&&p!==0||h&&m===1?d+=e:u+=e)};return{$dispose:()=>{b.clear()},$getStateVersion:()=>o,$getCacheSnapshot:()=>(e=>[e.t.slice(),e.o])(y),$getRange:(e=200)=>{if(!v||a)return g;let t,n;if(f)[t,n]=g;else{let r=T(0,S()),a=r+s;i||(e=T(0,e),p!==1&&(r-=e),p!==2&&(a+=e)),[t,n]=g=D(T(0,r),T(0,a)),h&&(t=w(t,h[0]),n=T(n,h[1]))}return[T(t,0),w(n,y.l-1)]},$findItemIndex:e=>L(y,e-c),$isUnmeasuredItem:M,$getItemOffset:A,$getItemSize:j,$getItemsLength:()=>y.l,$getScrollOffset:()=>l,$isScrolling:()=>p!==0,$getViewportSize:()=>s,$getStartSpacerSize:()=>c,$getTotalSize:O,$:()=>(f=u,u=0,[f,m===2]),$subscribe:(e,t)=>{let n=[e,t];return b.add(n),()=>{b.delete(n)}},$update:(e,t)=>{let n,r,g=0;switch(e){case 1:{if(t===l&&m===0)break;let e=f;f=0;let n=t-l,i=E(n);e&&i=-s&&o<=O()&&(g+=1,r=i>s);break}case 2:g=8,p!==0&&(n=!0,g+=1),p=0,m=0,h=C;break;case 3:{let e=t.filter(([e,t])=>!M(e,t));if(!e.length)break;z(e.reduce((e,[t,n])=>{let r;if(m===2)r=!0;else if(h&&m===1)r=ts&&(z(((e,t)=>{let n=0,r=[];e.t.forEach((e,i)=>{e!==-1&&(r.push(e),i{g&e&&t(r)}))}}},K=setTimeout,q=(e,t)=>t?-e:e,J=(e,t,n,r,i,a)=>{let o=Date.now,s=0,c=!1,l=!1,u=!1,d=!1,f=(()=>{let t,n=()=>{t!=C&&clearTimeout(t)},r=()=>{n(),t=K(()=>{t=C,(()=>{if(c||l)return c=!1,void f();u=!1,e.$update(2)})()},150)};return r.p=n,r})(),p=()=>{s=o(),u&&(d=!0),a&&e.$update(6,a()),e.$update(1,r()),f()},m=t=>{if(c||!e.$isScrolling()||t.ctrlKey)return;let r=o()-s;150>r&&50{l=!0,u=d=!1},g=()=>{l=!1,H()&&(u=!0)};return t.addEventListener(`scroll`,p),t.addEventListener(`wheel`,m,{passive:!0}),t.addEventListener(`touchstart`,h,{passive:!0}),t.addEventListener(`touchend`,g,{passive:!0}),{h:()=>{t.removeEventListener(`scroll`,p),t.removeEventListener(`wheel`,m),t.removeEventListener(`touchstart`,h),t.removeEventListener(`touchend`,g),f.p()},m:()=>{let[t,n]=e.$();t&&(i(t,n,d),d=!1,n&&e.$getViewportSize()>e.$getTotalSize()&&e.$update(1,r()))}}},Y=(e,t,n)=>{let r;return[async(i,a)=>{if(!await t())return;r&&r();let o=()=>{let[t,n]=j();return r=()=>{n(!1)},e.$getViewportSize()&&K(r,150),[t,e.$subscribe(2,()=>{n(!0)})]};if(a&&U())e.$update(8,i()),A(async()=>{for(;;){let t=!0;for(let[n,r]=e.$getRange();n<=r;n++)if(e.$isUnmeasuredItem(n)){t=!1;break}if(t)break;let[n,r]=o();try{if(!await n)return}finally{r()}}e.$update(7),n(i(),a)});else for(;;){let[t,r]=o();try{if(e.$update(7),n(i()),!await t)return}finally{r()}}},()=>{r&&r()}]},X=(e,t)=>{let n,r,i=j(),a=!1,o=t?`scrollLeft`:`scrollTop`,s=t?`overflowX`:`overflowY`,[c,l]=Y(e,()=>i[0],(e,r)=>{e=q(e,a),r?n.scrollTo({[t?`left`:`top`]:e,behavior:`smooth`}):n[o]=e});return{$observe(c,u){n=u,t&&(a=getComputedStyle(u).direction===`rtl`),r=J(e,u,t,()=>q(u[o],a),(t,n,r)=>{if(r){let e=u.style,t=e[s];e[s]=`hidden`,K(()=>{e[s]=t})}u[o]=q(e.$getScrollOffset()+t,a),n&&l()}),i[1](!0)},$dispose(){r&&r.h(),i[1](!1),i=j()},$isNegative:()=>a,$scrollTo(e){c(()=>e)},$scrollBy(t){t+=e.$getScrollOffset(),c(()=>t)},$scrollToIndex(t,{align:n,smooth:r,offset:i=0}={}){if(t=O(t,0,e.$getItemsLength()-1),n===`nearest`){let r=e.$getItemOffset(t),i=e.$getScrollOffset();if(ri+e.$getViewportSize()))return;n=`end`}}c(()=>i+e.$getStartSpacerSize()+e.$getItemOffset(t)+(n===`end`?e.$getItemSize(t)-e.$getViewportSize():n===`center`?(e.$getItemSize(t)-e.$getViewportSize())/2:0),r)},$fixScrollJump:()=>{r&&r.m()}}},Z=e=>{let t;return{v(n){(t||=new(V(B(n))).ResizeObserver(e)).observe(n)},S(e){t.unobserve(e)},h(){t&&t.disconnect()}}},ee=(e,t)=>{let n,r=t?`width`:`height`,i=new WeakMap,a=Z(t=>{let a=[];for(let{target:o,contentRect:s}of t)if(o.offsetParent)if(o===n)e.$update(4,s[r]);else{let e=i.get(o);e!=C&&a.push([e,s[r]])}a.length&&e.$update(3,a)});return{$observeRoot(e){a.v(n=e)},$observeItem:(e,t)=>(i.set(e,t),a.v(e),()=>{i.delete(e),a.S(e)}),$dispose:a.h}};function te(r,i){s(i,!0);let l=c(i,`as`,3,`div`),d,h,_;e(()=>{_!==i.index&&(h&&h(),h=i.resizer(d,_=i.index))}),g(()=>{h&&h()});let v=f(()=>{let e={contain:`layout style`,position:`absolute`,[i.horizontal?`height`:`width`]:`100%`,[i.horizontal?`top`:`left`]:`0px`,[i.horizontal?`left`:`top`]:i.offset+`px`,visibility:i.hide?`hidden`:void 0,...i.itemProps?.style};return i.horizontal&&(e.display=`inline-flex`),x(e)}),S=f(()=>{if(!i.itemProps)return;let{style:e,...t}=i.itemProps;return t});var C=n();b(m(C),l,!1,(e,r)=>{y(e,e=>d=e,()=>d),u(e,()=>({style:o(v),...o(S)}));var s=n();t(m(s),()=>i.children,()=>i.item,()=>i.index),a(r,s)}),a(r,C),p()}function Q(t,C){s(C,!0);let w=c(C,`getKey`,3,S),T=c(C,`as`,3,`div`),E=c(C,`shift`,3,!1),D=c(C,`horizontal`,3,!1),O=c(C,`startMargin`,3,0),A=G(C.data.length,C.itemSize,C.ssrCount,C.cache,!C.itemSize),j=ee(A,D()),M=X(A,D());A.$subscribe(1,()=>{l(P,A.$getStateVersion(),!0)}),A.$subscribe(4,()=>{C.onscroll&&C.onscroll(A.$getScrollOffset())}),A.$subscribe(8,()=>{C.onscrollend&&C.onscrollend()});let N=h(void 0),P=h(_(A.$getStateVersion())),F=f(()=>o(P)&&A.$getRange(C.bufferSize)),I=f(()=>o(P)&&A.$isScrolling()),L=f(()=>o(P)&&A.$getTotalSize()),R=f(()=>o(P)&&M.$isNegative()),z=f(()=>{let e=C.data.length,[t,n]=o(F),r=[];if(C.keepMounted){let i=new Set(C.keepMounted);for(let e=t;e<=n;e++)i.add(e);for(let t of k([...i]))t{let e=o(N),t=t=>{j.$observeRoot(t),M.$observe(e,t)};r().then(()=>{C.scrollRef?t(C.scrollRef):t(e.parentElement)})}),g(()=>{A.$dispose(),j.$dispose(),M.$dispose()}),d(()=>{C.data.length!==A.$getItemsLength()&&A.$update(5,[C.data.length,E()])}),d(()=>{O()!==A.$getStartSpacerSize()&&A.$update(6,O())});let B;e(()=>{B!==o(P)&&(B=o(P),M.$fixScrollJump())});let V=A.$getCacheSnapshot,H=A.$getScrollOffset,U=()=>W(A),K=A.$getViewportSize,q=A.$findItemIndex,J=A.$getItemOffset,Y=A.$getItemSize,Z=M.$scrollToIndex,Q=M.$scrollTo,ne=M.$scrollBy,re=f(()=>x({contain:`size style`,"overflow-anchor":`none`,flex:`none`,position:`relative`,width:D()?o(L)+`px`:`100%`,height:D()?`100%`:o(L)+`px`,"pointer-events":o(I)?`none`:void 0}));var ie={getCache:V,getScrollOffset:H,getScrollSize:U,getViewportSize:K,findItemIndex:q,getItemOffset:J,getItemSize:Y,scrollToIndex:Z,scrollTo:Q,scrollBy:ne},$=n();return b(m($),T,!1,(e,t)=>{y(e,e=>l(N,e,!0),()=>o(N)),u(e,()=>({style:o(re)}));var r=n();i(m(r),17,()=>o(z),e=>w()(C.data[e],e),(e,t)=>{let n=f(()=>C.data[o(t)]);{let r=f(()=>o(P)&&A.$getItemOffset(o(t),o(R))),i=f(()=>o(P)&&A.$isUnmeasuredItem(o(t))),a=f(()=>C.itemProps?.({item:o(n),index:o(t)}));te(e,{get children(){return C.children},get item(){return o(n)},get index(){return o(t)},get as(){return C.item},get offset(){return o(r)},get hide(){return o(i)},get horizontal(){return D()},get resizer(){return j.$observeItem},get itemProps(){return o(a)}})}}),a(t,r)}),a(t,$),p(ie)}export{Q as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/amAOfu1G.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/amAOfu1G.js deleted file mode 100644 index 0b89e193..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/amAOfu1G.js +++ /dev/null @@ -1 +0,0 @@ -import{yt as e}from"./CySd1wef.js";e(); \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/dmzB10-Q.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/dmzB10-Q.js new file mode 100644 index 00000000..fba9a958 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/dmzB10-Q.js @@ -0,0 +1,8 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BLSaiFbc.js","./HclGiUj8.js"])))=>i.map(i=>d[i]); +import{t as e}from"./DK3Fl9T5.js";import{$ as t,B as n,C as r,D as i,F as a,I as o,K as s,N as c,O as l,P as u,Q as d,R as f,St as p,U as m,V as h,W as g,X as _,Z as v,_ as y,_t as b,a as x,at as S,b as C,bt as w,c as T,ct as E,dt as D,f as O,ft as k,gt as ee,h as A,it as j,j as M,k as N,lt as P,m as F,n as te,nt as ne,o as I,ot as L,p as R,q as z,r as re,rt as B,s as ie,st as V,u as ae,v as oe,xt as H,y as se,z as U}from"./-xOSXMZB.js";import{n as ce}from"./9dGTdiTk.js";import{t as le}from"./HclGiUj8.js";import"./xihTtKlq.js";import"./DhjMpuoL.js";import{a as ue,i as de,n as W,t as fe}from"./BEqsQr3A.js";import{c as pe,d as me,f as he,h as ge,i as _e,l as ve,m as ye,n as be,p as xe,r as Se,s as Ce,t as we,u as Te}from"./UXt3B2YI.js";import{a as Ee,i as De,n as Oe,t as G}from"./Qo16U5GS.js";import{t as ke}from"./OQjxVT6U.js";import"./D_KmntYi.js";import{A as Ae,C as je,D as Me,E as Ne,F as K,I as Pe,L as Fe,M as Ie,N as Le,O as Re,P as ze,T as Be,_ as q,d as J,f as Ve,g as Y,h as X,j as Z,k as He,l as Q,m as Ue,p as We,u as Ge,v as Ke,w as qe,z as Je}from"./CQx5QjGd.js";import{n as Ye,t as Xe}from"./DlGnnCJo.js";import{t as Ze}from"./AwlLA_94.js";import{p as Qe,r as $e}from"./DFObNPU2.js";import{t as et}from"./DzgF6O2k.js";var tt=typeof window>`u`?void 0:window.clickclackDesktop;async function nt(e){return e.type.startsWith(`image/`)?rt(e):e.type.startsWith(`video/`)?it(e):{width:0,height:0,durationMS:0}}function rt(e){return new Promise(t=>{let n=URL.createObjectURL(e),r=new Image;r.onload=()=>{let e={width:r.naturalWidth,height:r.naturalHeight,durationMS:0};URL.revokeObjectURL(n),t(e)},r.onerror=()=>{URL.revokeObjectURL(n),t({width:0,height:0,durationMS:0})},r.src=n})}function it(e){return new Promise(t=>{let n=URL.createObjectURL(e),r=document.createElement(`video`);r.preload=`metadata`,r.muted=!0;let i=()=>{URL.revokeObjectURL(n),r.src=``};r.onloadedmetadata=()=>{let e=Number.isFinite(r.duration)&&r.duration>0?Math.round(r.duration*1e3):0,n={width:r.videoWidth,height:r.videoHeight,durationMS:e};i(),t(n)},r.onerror=()=>{i(),t({width:0,height:0,durationMS:0})},r.src=n})}var at=[{title:`Ship it`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYjJ1bm1meHE4N2x3bnN0djJkMWtjNGc5bXYzZDFiOHBsbG16M3F0ZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/l0HlHFRbmaZtBRhXG/giphy.gif`,tags:[`ship`,`launch`,`done`]},{title:`Approved`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExazBpbzJ6ODZ3bXQ3OHBvNGJidWZoajc0cHV6YnVub3MzZ3c1a2Z2dSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/111ebonMs90YLu/giphy.gif`,tags:[`yes`,`approved`,`nice`]},{title:`Deploy dance`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExY3NkaTVmZW9ydWNnZnl0ZWQ5aHQyeGNrd2k3NG4wZWNqYzNmd3k1ZCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/GeimqsH0TLDt4tScGw/giphy.gif`,tags:[`deploy`,`dance`,`celebrate`]},{title:`Looking`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYWZ3emE0dm5mN2h0bGVsY2w0OXBodGd2cGJlNDRiZXo1YWNtdWRmZyZlcD12MV9naWZzX3NlYXJjaCZjdD1n/26n6WywJyh39n1pBu/giphy.gif`,tags:[`search`,`looking`,`debug`]},{title:`Typing faster`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExOWFlbnJnbnIzbHYxcDIzdXZ3NGF3N2FocHNvMmR5enU3bHpycHBlZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/13HgwGsXF0aiGY/giphy.gif`,tags:[`typing`,`code`,`work`]},{title:`Tiny victory`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExdjJ2b2tqNmF4dG16NjE0eXhuc3h5bTlvamgwNTR0Zmd6ZjhtM2JuaSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/3o7abKhOpu0NwenH3O/giphy.gif`,tags:[`win`,`victory`,`celebrate`]}],ot=new Set([`agent_commentary`,`agent_tool`]),st=18e4;function ct(e){return e.kind!==void 0&&ot.has(e.kind)}function lt(e){return e.kind===void 0||e.kind===`message`}function ut(e){return e.author?.id||e.author_id||``}function dt(e){return`${e.channel_id?`channel:${e.channel_id}`:`direct:${e.direct_conversation_id||``}`}\u0000${ut(e)}\u0000${e.turn_id||e.id}`}function ft(e){let t=e.trim(),n=``,r=``,i=t.match(/^\*\*([^*]+)\*\*\s*\n+([\s\S]+)$/),a=t.match(/^\*\*([^*]+)\*\*$/);if(i)n=i[1].trim(),r=mt(i[2]);else if(a)n=a[1].trim();else return pt(t.replace(/\*\*/g,``).trim(),``);return pt(n,r)}function pt(e,t){let n=mt(e),r=n.indexOf(` `),i,a;r===-1?(i=n,a=``):(i=n.slice(0,r),a=n.slice(r+1).trim());let o=[a,t].filter(e=>e.length>0).join(` · `);return{name:i,detail:o||void 0}}function mt(e){return e.replace(/\s+/g,` `).trim()}function ht(e,t,n,r){let i=[];for(let e of t)if(e.kind===`agent_tool`){if(r.hideToolCalls)continue;let t=ft(e.body);i.push({type:`tool`,id:e.id,name:t.name,detail:t.detail,full:e.body.trim()})}else{if(r.hideCommentary)continue;let t=e.body.trim();t&&i.push({type:`commentary`,id:e.id,body:t})}return i.length===0?null:{turnId:e,items:i,final:n}}function gt(e,t,n=Date.now()){let r=new Map,i=new Map;for(let t=0;to.firstIndex;if(!r){let e=Date.parse(o.rows[o.rows.length-1].created_at);Number.isFinite(e)&&n-e>st&&(r=!0)}a.set(t,r)}let o=[];for(let n=0;n=Ot)&&(kt.active=!0,kt.lastPingAt=t,Mt(e,`typing.started`)),kt.idleTimer&&window.clearTimeout(kt.idleTimer),kt.idleTimer=window.setTimeout(()=>{kt&&=(Pt(kt),null)},Dt)}async function Pt(e){e.idleTimer&&window.clearTimeout(e.idleTimer),e.active&&await Mt(e.scope,`typing.stopped`)}function Ft(){kt&&=(Pt(kt),null)}var It=2e3,Lt=2097152;function Rt(e){let t=document.createElement(`span`);return t.textContent=e,t.innerHTML}function zt(e,t,n){return!t||e.length>262144?Promise.resolve(Rt(e)):new Promise((r,i)=>{let a=new Worker(new URL(``+new URL(`../workers/highlight.worker-fd4HibZ7.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),o=!1,s=e=>{o||(o=!0,clearTimeout(l),n.removeEventListener(`abort`,c),a.terminate(),e())},c=()=>s(()=>i(new DOMException(`Syntax highlighting was aborted.`,`AbortError`))),l=window.setTimeout(()=>s(()=>r(Rt(e))),It);if(a.onmessage=t=>{let n=t.data;`error`in n?s(()=>r(Rt(e))):s(()=>r(n.html))},a.onerror=()=>s(()=>r(Rt(e))),n.addEventListener(`abort`,c,{once:!0}),n.aborted){c();return}a.postMessage({source:e,language:t,outputLimit:Lt})})}var Bt=5e3;function Vt(e,t,n){return new Promise((r,i)=>{let a=new Worker(new URL(``+new URL(`../workers/office.worker-CgZC2A2b.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),o=!1,s=e=>{o||(o=!0,clearTimeout(l),n.removeEventListener(`abort`,c),a.terminate(),e())},c=()=>s(()=>i(new DOMException(`Office preview was aborted.`,`AbortError`))),l=window.setTimeout(()=>s(()=>i(Error(`Office preview took too long and was stopped.`))),Bt);if(a.onmessage=t=>{let n=t.data;if(`error`in n){s(()=>i(Error(n.error)));return}if(n.kind!==e){s(()=>i(Error(`Office preview returned an unexpected result.`)));return}s(()=>r(n.preview))},a.onerror=()=>s(()=>i(Error(`Could not parse this Office file safely.`))),n.addEventListener(`abort`,c,{once:!0}),n.aborted){c();return}let u=t.byteOffset===0&&t.buffer instanceof ArrayBuffer&&t.byteLength===t.buffer.byteLength?t:t.slice(),d={kind:e,bytes:u};a.postMessage(d,[u.buffer])})}var Ht=16777216,Ut=1e4,Wt=1e4,Gt=`This PDF page is too large to preview safely. Download the original to open it locally.`;function Kt(e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<1||t<1||e>8192||t>8192||e*t>16777216)throw Error(Gt)}var qt=``+new URL(`../assets/pdf.worker.CLesOks4.mjs`,import.meta.url).href,Jt=o(`
              `),Yt=o(`

              Preparing a safe preview.

              `),Xt=o(``),Zt=o(`
              No preview for this file type

              You can still download the original file.

              Download original
              `),Qt=o(`
              `,1),$t=o(` `),en=o(` `),tn=o(` `),nn=o(` `),rn=o(`

              Preview is limited to 10,000 cells, the first 1,000 rows, and the first 100 columns. Download the original to inspect omitted cells.

              `),an=o(``),on=o(`
              Raw cached values; number and date formatting omitted
              `,1),sn=o(`

              `),cn=o(`

              `),ln=o(`

              `),un=o(`

              Some slide content was omitted by preview limits.

              `),dn=o(`

              Text outline only. Visuals, layout, animations, and speaker notes are omitted.

              `,1),fn=o(`
              `),pn=o(`
              `),mn=o(`
              `),hn=o(`
               
              `),gn=o(`
              `,1);function _n(e,r){b(r,!0);let o=P(null),s=k(()=>Y(r.upload)),f=P(`preview`),p=P(`idle`),m=P(``),h=P(``),_=P(``),v=P(!1),y=P(``),x=P(null),T=P(1),D=P(1),O=P(!1),A=P(``),F=null,ne=!1,I=P(null),L=P(0),z=P(null),re=P(0),V=1e4,ae=65536,oe=5e3;class se extends Error{}let U=k(()=>We(g(s))),ce=k(()=>qe(r.upload)),ue=k(()=>(g(s)===`markdown`||g(s)===`html`)&&g(p)===`ready`&&g(v));function de(e){return`This ${g(U).toLowerCase()} is ${je(r.upload.byte_size)}. Preview is limited to ${je(e)}.`}function W(e){pe(e);let t=document.createElement(`template`);t.innerHTML=e;let n=q.sanitize(t.content,{RETURN_DOM_FRAGMENT:!0,USE_PROFILES:{html:!0},FORBID_TAGS:[`base`,`embed`,`form`,`iframe`,`link`,`meta`,`object`,`script`,`style`],FORBID_ATTR:[`action`,`formaction`,`srcset`,`style`,`xlink:href`]});for(let e of n.querySelectorAll(`*`))for(let t of Array.from(e.attributes))e.removeAttribute(t.name);let r=document.createElement(`div`);r.append(n);let i=r.innerHTML;return me(i),`${i}`}function fe(e){pe(e);let t=J(e);return me(t),q.sanitize(t,{ALLOWED_TAGS:[`blockquote`,`br`,`code`,`del`,`em`,`h1`,`h2`,`h3`,`h4`,`h5`,`h6`,`hr`,`li`,`ol`,`p`,`pre`,`strong`,`table`,`tbody`,`td`,`th`,`thead`,`tr`,`ul`],ALLOWED_ATTR:[]})}function pe(e){if(e.length>65536)throw new se(`Structured preview exceeded the safe source limit.`);let t=0;for(let n of e)if("<[]>*_`-+.!#>|~".includes(n)&&(t+=1,t>V))throw new se(`Structured preview exceeded the safe complexity limit.`)}function me(e){if(e.length>4194304)throw new se(`Rendered preview exceeded the safe output limit.`);let t=0;for(let n of e)if(n===`<`&&++t>V*2)throw new se(`Rendered preview exceeded the safe element limit.`)}function he(e){return`Preview data exceeded the ${je(e)} safety limit.`}async function ge(e,t){let n=await fetch(g(ce),{credentials:`include`,signal:e});if(!n.ok)throw n.status===401||n.status===403?Error(`You no longer have access to this artifact.`):n.status===404?Error(`This artifact is no longer available.`):Error(`Could not load this artifact (${n.status}).`);let r=Number(n.headers.get(`Content-Length`));if(Number.isFinite(r)&&r>t)throw Error(he(t));if(!n.body){let e=new Uint8Array(await n.arrayBuffer());if(e.byteLength>t)throw Error(he(t));return e}let i=n.body.getReader(),a=[],o=0;try{for(;;){let{done:e,value:n}=await i.read();if(e)break;if(o+=n.byteLength,o>t)throw await i.cancel(),Error(he(t));a.push(n)}}finally{i.releaseLock()}let s=new Uint8Array(o),c=0;for(let e of a)s.set(e,c),c+=e.byteLength;return s}async function _e(e,t){return new TextDecoder(`utf-8`,{fatal:!1}).decode(await ge(e,t))}async function ve(e){F?.(),F=null,E(x,null),E(h,``),E(_,``),E(v,!1),E(y,``),E(T,1),E(D,1),E(A,``),ne=!1,E(I,null),E(L,0),E(z,null),E(re,0),E(f,`preview`),E(m,``);let t=X(g(s));if(t!==void 0&&r.upload.byte_size>t){E(p,`error`),E(m,de(t),!0);return}if(g(s)===`unsupported`){E(p,`ready`);return}E(p,`loading`);try{if(g(s)===`pdf`){let n=await le(()=>import(`./BLSaiFbc.js`),__vite__mapDeps([0,1]),import.meta.url);if(e.aborted)return;n.GlobalWorkerOptions.workerSrc=qt;let r=new AbortController,i=()=>r.abort();e.addEventListener(`abort`,i,{once:!0});let a=null,o=0,s=new Promise((e,t)=>{o=window.setTimeout(()=>{r.abort(),a?.destroy(),t(Error(`PDF preview took too long and was stopped.`))},Ut)}),c;try{if(c=await Promise.race([ge(r.signal,t),s]),e.aborted)throw new DOMException(`Aborted`,`AbortError`);a=new n.PDFWorker,await Promise.race([a.promise,s])}catch(t){throw clearTimeout(o),e.removeEventListener(`abort`,i),t}if(e.aborted||!a){clearTimeout(o),e.removeEventListener(`abort`,i),a?.destroy();return}let l=a.port,u=e=>{let t=e.data;typeof t==`object`&&t&&`reason`in t&&typeof t.reason==`object`&&t.reason!==null&&`message`in t.reason&&t.reason.message===`Image exceeded maximum allowed size and was removed.`&&(ne=!0,F?.(),E(p,`error`),E(m,`PDF page content could not be rendered completely within safety limits.`))};l.addEventListener(`message`,u);let d=null,f=!1;F=()=>{f||(f=!0,l.removeEventListener(`message`,u),d&&d.destroy(),a.destroy(),E(x,null))};let h=n.getDocument({data:c,maxImageSize:Ht,canvasMaxAreaInBytes:Ht*4,stopAtErrors:!0,worker:a});d=h;try{E(x,await Promise.race([h.promise,s]),!0)}finally{clearTimeout(o),e.removeEventListener(`abort`,i)}}else if(g(s)===`spreadsheet`||g(s)===`presentation`){let n=await ge(e,t);if(e.aborted)return;if(g(s)===`spreadsheet`){let t=await Vt(g(s),n,e);if(e.aborted)return;E(I,t,!0)}else{let t=await Vt(g(s),n,e);if(e.aborted)return;E(z,t,!0)}}else{if(E(h,await _e(e,t),!0),e.aborted)return;g(s)===`code`&&E(y,await zt(g(h),Ue(r.upload),e),!0);try{g(s)===`markdown`&&(E(_,fe(g(h)),!0),E(v,!0)),g(s)===`html`&&(E(_,W(g(h)),!0),E(v,!0))}catch(e){if(!(e instanceof se))throw e;E(_,``),E(f,`source`)}}e.aborted||E(p,`ready`)}catch(t){if(e.aborted||t instanceof Error&&t.name===`AbortError`)return;F?.(),F=null,E(p,`error`),E(m,t instanceof Error?t.message:`Could not preview this artifact.`,!0)}}t(()=>{let e=new AbortController;return ve(e.signal),()=>e.abort()}),t(()=>{if(g(s)!==`pdf`||!g(x)||!g(o)||g(p)!==`ready`)return;let e=g(x),t=g(T),n=g(D),r=!1,i=null,a=null,c=null,l=0;return E(O,!0),E(A,``),(async()=>{try{if(l=window.setTimeout(()=>{r||(i?.cancel(),c?.cancel(),F?.(),E(p,`error`),E(m,`PDF page rendering took too long and was stopped.`))},Wt),a=await e.getPage(t),r||!g(o))return;let s=``,u=0;c=a.streamTextContent().getReader();try{for(;!r;){let{done:e,value:t}=await c.read();if(e)break;for(let e of t.items){if(u+=1,u>oe){await c.cancel(),s=`${s}…`;break}if(!(`str`in e)||!e.str)continue;let t=`${s}${s?` `:``}${e.str}`;if(t.length>ae){await c.cancel(),s=`${t.slice(0,ae)}…`;break}s=t}if(u>oe||s.endsWith(`…`))break}}finally{c.releaseLock(),c=null}if(r)return;E(A,s||`This page has no extractable text.`,!0);let d=a.getViewport({scale:n}),f=Math.min(window.devicePixelRatio||1,2),h=Math.max(1,Math.floor(d.width*f)),_=Math.max(1,Math.floor(d.height*f));Kt(h,_);let v=g(o).getContext(`2d`);if(!v)throw Error(`PDF canvas is unavailable.`);if(g(o).width=h,g(o).height=_,g(o).style.width=`${d.width}px`,g(o).style.height=`${d.height}px`,v.setTransform(f,0,0,f,0,0),i=a.render({canvasContext:v,viewport:d}),await i.promise,ne)throw Error(`PDF page content could not be rendered completely within safety limits.`)}catch(e){!r&&!(e instanceof Error&&e.name===`RenderingCancelledException`)&&(F?.(),E(p,`error`),E(m,e instanceof Error?e.message:`Could not render this PDF page.`,!0))}finally{clearTimeout(l),a?.cleanup(),a=null,r||E(O,!1)}})(),()=>{r=!0,clearTimeout(l),i?.cancel(),c?.cancel()}}),te(()=>F?.());function ye(e){let t=e.match(/^[A-Z]+/i)?.[0]?.toUpperCase()||`A`,n=0;for(let e of t)n=n*26+e.charCodeAt(0)-64;return n}function be(e){return Number(e.match(/\d+$/)?.[0]||1)}function xe(e){let t=``;for(let n=e;n>0;n=Math.floor((n-1)/26))t=String.fromCharCode(65+(n-1)%26)+t;return t}let Se=k(()=>{let e=g(I)?.sheets[g(L)];if(!e)return{columns:[],rows:[],clipped:!1};let t=Math.max(1,...e.cells.map(e=>ye(e.reference))),n=Math.max(1,...e.cells.map(e=>be(e.reference))),r=Math.min(100,t),i=Math.min(1e3,Math.floor(1e4/r),n),a=new Map(e.cells.map(e=>[e.reference.toUpperCase(),e.value])),o=Array.from({length:r},(e,t)=>xe(t+1));return{columns:o,rows:Array.from({length:i},(e,t)=>({number:t+1,values:o.map(e=>a.get(`${e}${t+1}`)||``)})),clipped:t>r||n>i}});var Ce=gn(),we=j(Ce),Te=B(we),Ee=B(Te),De=B(Ee,!0);H(Ee);var Oe=S(Ee,2),G=B(Oe,!0);H(Oe);var ke=S(Oe,2),Ae=B(ke,!0);H(ke),H(Te);var Me=S(Te,2),Ne=B(Me),K=e=>{var t=Jt(),r=B(t);let i;var a=S(r,2);let o;H(t),d(()=>{R(t,`aria-label`,`${g(U)} view`),R(r,`aria-pressed`,g(f)===`preview`),i=C(r,1,``,null,i,{active:g(f)===`preview`}),R(a,`aria-pressed`,g(f)===`source`),o=C(a,1,``,null,o,{active:g(f)===`source`})}),n(`click`,r,()=>E(f,`preview`)),n(`click`,a,()=>E(f,`source`)),u(e,t)};M(Ne,e=>{g(ue)&&e(K)});var Pe=S(Ne,2),Fe=S(Pe,2);H(Me),H(we);var Ie=S(we,2);let Le;var Re=B(Ie),ze=e=>{var t=Yt(),n=S(B(t),2),r=B(n);H(n),w(2),H(t),d(e=>c(r,`Opening ${e??``}`),[()=>g(U).toLowerCase()]),u(e,t)},Be=e=>{var t=Xt(),n=S(B(t),4),i=B(n,!0);H(n);var a=S(n,2);H(t),d(()=>{c(i,g(m)),R(a,`href`,g(ce)),R(a,`download`,r.upload.filename)}),u(e,t)},Ve=e=>{var t=Zt(),n=S(B(t),6);H(t),d(()=>{R(n,`href`,g(ce)),R(n,`download`,r.upload.filename)}),u(e,t)},Z=e=>{var t=Qt(),r=j(t),i=B(r),a=S(i,2),s=B(a);H(a);var l=S(a,2),f=S(l,4),p=S(f,2),m=B(p);H(p);var h=S(p,2);H(r);var _=S(r,2);let v;var y=B(_);ie(y,e=>E(o,e),()=>g(o));var b=S(y,2),w=B(b,!0);H(b),H(_),d(e=>{i.disabled=g(T)<=1||g(O),c(s,`Page ${g(T)??``} of ${g(x).numPages??``}`),l.disabled=g(T)>=g(x).numPages||g(O),f.disabled=g(D)<=.6||g(O),c(m,`${e??``}%`),h.disabled=g(D)>=2||g(O),v=C(_,1,`artifact-viewer__pdf-stage`,null,v,{"is-rendering":g(O)}),R(_,`aria-label`,`PDF page ${g(T)} visual preview`),R(b,`aria-label`,`PDF page ${g(T)} text`),c(w,g(A))},[()=>Math.round(g(D)*100)]),n(`click`,i,()=>E(T,g(T)-1)),n(`click`,l,()=>E(T,g(T)+1)),n(`click`,f,()=>E(D,Math.max(.6,g(D)-.2),!0)),n(`click`,h,()=>E(D,Math.min(2,g(D)+.2),!0)),u(e,t)},He=e=>{var t=on(),r=j(t),i=B(r),a=B(i);H(i);var o=S(i,4),s=e=>{var t=$t(),n=B(t);H(t),d(()=>c(n,`${g(I).hiddenSheets??``} hidden ${g(I).hiddenSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};M(o,e=>{g(I).hiddenSheets>0&&e(s)});var f=S(o,2),p=e=>{var t=$t(),n=B(t);H(t),d(()=>c(n,`${g(I).unsupportedSheets??``} non-worksheet ${g(I).unsupportedSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};M(f,e=>{g(I).unsupportedSheets>0&&e(p)}),H(r);var m=S(r,2),h=B(m),_=B(h),v=B(_),y=S(B(v));l(y,17,()=>g(Se).columns,N,(e,t)=>{var n=en(),r=B(n,!0);H(n),d(()=>c(r,g(t))),u(e,n)}),H(v),H(_);var b=S(_);l(b,21,()=>g(Se).rows,N,(e,t)=>{var n=nn(),r=B(n),i=B(r,!0);H(r);var a=S(r);l(a,17,()=>g(t).values,N,(e,t)=>{var n=tn(),r=B(n,!0);H(n),d(()=>c(r,g(t))),u(e,n)}),H(n),d(()=>c(i,g(t).number)),u(e,n)}),H(b),H(h);var x=S(h,2),w=e=>{var t=rn();u(e,t)};M(x,e=>{(g(Se).clipped||g(I).sheets[g(L)].truncated)&&e(w)}),H(m);var T=S(m,2);l(T,21,()=>g(I).sheets,N,(e,t,r)=>{var i=an();let a;var o=B(i,!0);H(i),d(()=>{R(i,`aria-selected`,g(L)===r),a=C(i,1,``,null,a,{active:g(L)===r}),c(o,g(t).name)}),n(`click`,i,()=>E(L,r,!0)),u(e,i)}),H(T),d(()=>{c(a,`${g(I).sheets.length??``} ${g(I).sheets.length===1?`sheet`:`sheets`}`),R(m,`aria-label`,`${g(I).sheets[g(L)].name} worksheet`)}),u(e,t)},Q=e=>{var t=dn(),r=j(t),i=B(r),o=S(i,2),s=B(o);H(o);var f=S(o,2);H(r);var p=S(r,2),m=B(p);l(m,21,()=>g(z).slides[g(re)].paragraphs,N,(e,t,n)=>{var r=a(),i=j(r),o=e=>{var n=sn(),r=B(n,!0);H(n),d(()=>c(r,g(t))),u(e,n)},s=e=>{var n=cn(),r=B(n,!0);H(n),d(()=>c(r,g(t))),u(e,n)};M(i,e=>{n===0?e(o):e(s,-1)}),u(e,r)}),H(m);var h=S(m,4),_=e=>{var t=ln(),n=B(t);H(t),d(()=>c(n,`${g(z).hiddenSlides??``} hidden ${g(z).hiddenSlides===1?`slide`:`slides`} omitted.`)),u(e,t)};M(h,e=>{g(z).hiddenSlides>0&&e(_)});var v=S(h,2),y=e=>{var t=un();u(e,t)};M(v,e=>{g(z).truncated&&e(y)}),H(p),d(()=>{i.disabled=g(re)===0,c(s,`Slide ${g(re)+1} of ${g(z).slides.length??``}`),f.disabled=g(re)>=g(z).slides.length-1,R(m,`aria-label`,`Slide ${g(re)+1}: ${g(z).slides[g(re)].title}`)}),n(`click`,i,()=>E(re,g(re)-1)),n(`click`,f,()=>E(re,g(re)+1)),u(e,t)},Ge=e=>{var t=fn();i(t,()=>g(_),!0),H(t),u(e,t)},Ke=e=>{var t=pn();i(t,()=>g(_),!0),H(t),u(e,t)},Je=e=>{var t=mn(),n=B(t);i(n,()=>g(y),!0),H(n),H(t),u(e,t)},Ye=e=>{var t=hn(),n=B(t),r=B(n,!0);H(n),H(t),d(()=>c(r,g(h))),u(e,t)};M(Re,e=>{g(p)===`loading`?e(ze):g(p)===`error`?e(Be,1):g(s)===`unsupported`?e(Ve,2):g(s)===`pdf`&&g(x)?e(Z,3):g(s)===`spreadsheet`&&g(I)?e(He,4):g(s)===`presentation`&&g(z)?e(Q,5):g(s)===`html`&&g(f)===`preview`&&g(_)?e(Ge,6):g(s)===`markdown`&&g(f)===`preview`?e(Ke,7):g(s)===`code`?e(Je,8):e(Ye,-1)}),H(Ie),d(e=>{c(De,g(U)),R(Oe,`title`,r.upload.filename),c(G,r.upload.filename),c(Ae,e),R(Pe,`href`,g(ce)),R(Pe,`download`,r.upload.filename),R(Pe,`aria-label`,`Download ${r.upload.filename}`),Le=C(Ie,1,`artifact-viewer__body`,null,Le,{"is-pdf":g(s)===`pdf`,"is-office":g(s)===`spreadsheet`||g(s)===`presentation`})},[()=>je(r.upload.byte_size)]),n(`click`,Fe,function(...e){r.onClose?.apply(this,e)}),u(e,Ce),ee()}U([`click`]);var vn=o(``),yn=o(``);function bn(e,t){b(t,!0);let r=x(t,`deleting`,3,!1),i=x(t,`error`,3,``),a=k(()=>t.message.author?.display_name||`Local User`);function o(){r()||t.onClose()}var s=yn(),l=B(s),f=S(l,2),p=B(f),m=S(B(p),2);H(p);var h=S(p,2),_=S(B(h),2),v=B(_);{let e=k(()=>t.message.author?.id||t.message.author_id),n=k(()=>t.message.author?.avatar_url);Q(v,{class:`avatar`,get id(){return g(e)},get name(){return g(a)},get src(){return g(n)},size:36,loading:`eager`,fetchPriority:`auto`})}var y=S(v,2),C=B(y),w=B(C),T=B(w,!0);H(w);var E=S(w,2),D=B(E,!0);H(E),H(C);var O=S(C,2),A=B(O,!0);H(O),H(y),H(_);var j=S(_,2),N=e=>{var t=vn(),n=B(t,!0);H(t),d(()=>c(n,i())),u(e,t)};M(j,e=>{i()&&e(N)});var P=S(j,2),F=B(P),te=S(F,2),ne=B(te,!0);H(te),H(P),H(h),H(f),H(s),d(e=>{l.disabled=r(),m.disabled=r(),c(T,g(a)),R(E,`datetime`,t.message.created_at),c(D,e),c(A,t.message.body),F.disabled=r(),te.disabled=r(),c(ne,r()?`Deleting...`:`Delete`)},[()=>Ve(t.message.created_at)]),n(`click`,l,o),n(`click`,m,o),n(`click`,F,o),n(`click`,te,function(...e){t.onConfirm?.apply(this,e)}),u(e,s),ee()}U([`click`]);var xn=6500,Sn=o(`
              `);function Cn(e,t){b(t,!0);let n=k(()=>t.entries.filter(e=>e.userID!==t.currentUserID));function r(e,t=`Someone`){return e?.display_name?.trim()||(e?.handle?`@${e.handle}`:t)}let i=k(()=>g(n).length===0?``:g(n).length===1?`${r(g(n)[0].user)} is typing…`:g(n).length===2?`${r(g(n)[0].user)} and ${r(g(n)[1].user)} are typing…`:g(n).length===3?`${r(g(n)[0].user)}, ${r(g(n)[1].user)}, and ${r(g(n)[2].user)} are typing…`:`Several people are typing…`);var a=Sn();let o;var s=S(B(a),2),l=B(s,!0);H(s),H(a),d(()=>{o=C(a,1,`typing-indicator`,null,o,{visible:g(n).length>0}),c(l,g(i))}),u(e,a),ee()}var wn=45e3,Tn=o(`
              `),En=o(`
              `),Dn=o(`
              `);function On(e,t){b(t,!0);function n(e){return e.kind===`tool`&&e.toolName?!e.text||e.text===e.toolName?e.toolName:`${e.toolName}: ${e.text}`:e.text}function r(e){switch(e){case`tool`:return`⚙`;case`thinking`:case`commentary`:return`✦`;case`plan`:return`☰`;case`patch`:return`±`;case`command_output`:return`›`;case`error`:return`✕`;default:return`·`}}var i=a(),o=j(i),s=e=>{var i=Dn();l(i,21,()=>t.turns,e=>e.turnId,(e,t)=>{var i=En();l(i,21,()=>g(t).lines,e=>e.id,(e,t)=>{var i=Tn();let a;var o=B(i),s=B(o,!0);H(o);var l=S(o,2),f=B(l,!0);H(l),H(i),d((e,n)=>{a=C(i,1,`agent-progress__line svelte-6vwkyv`,null,a,{"agent-progress__line--done":g(t).finalized}),R(i,`data-kind`,g(t).kind),c(s,e),c(f,n)},[()=>r(g(t).kind),()=>n(g(t))]),u(e,i)}),H(i),u(e,i)}),H(i),u(e,i)};M(o,e=>{t.turns.length>0&&e(s)}),u(e,i),ee()}var kn=o(`
              Agent is responding…
              `);function An(e,t){var n=kn();let r;d(()=>r=C(n,1,`typing-indicator agent-responding`,null,r,{visible:t.active})),u(e,n)}var jn=o(`

              `),Mn=o(``);function Nn(e,t){b(t,!0);var r=Mn(),i=B(r),a=S(i,2),o=B(a),s=S(B(o),2);H(o);var l=S(o,2),f=B(l),p=S(B(f),2);O(p),H(f);var m=S(f,2),g=e=>{var n=jn(),r=B(n,!0);H(n),d(()=>c(r,t.status)),u(e,n)};M(m,e=>{t.status&&e(g)});var _=S(m,2),v=B(_);w(2),H(_),H(l),H(a),H(r),d(()=>A(p,t.channelName)),n(`click`,i,function(...e){t.onClose?.apply(this,e)}),n(`click`,s,function(...e){t.onClose?.apply(this,e)}),h(`submit`,l,e=>{e.preventDefault(),t.onCreate()}),n(`input`,p,e=>t.onChannelName(e.currentTarget.value)),n(`click`,v,function(...e){t.onClose?.apply(this,e)}),u(e,r),ee()}U([`click`,`input`]);var Pn=o(``),Fn=o(`
              No matching people yet
              `),In=o(``);function Ln(e,t){b(t,!0);let r=k(()=>t.memberID.trim().toLowerCase()),i=k(()=>t.people.filter(e=>e.id!==t.currentUserID).filter(e=>!g(r)||e.display_name.toLowerCase().includes(g(r))||e.handle?.toLowerCase().includes(g(r))||e.id.toLowerCase().includes(g(r))));var a=In(),o=B(a),s=S(o,2),f=B(s),p=S(B(f),2);H(f);var m=S(f,2),_=B(m),v=S(B(_),2);O(v),H(_);var y=S(_,2),x=B(y);l(x,17,()=>g(i),e=>e.id,(e,r)=>{var i=Pn(),a=B(i);Q(a,{class:`dm-avatar`,get id(){return g(r).id},get name(){return g(r).display_name},get src(){return g(r).avatar_url},size:32});var o=S(a,2),s=B(o),l=B(s,!0);H(s);var f=S(s,2),p=B(f,!0);H(f),H(o),H(i),d(e=>{c(l,g(r).display_name),c(p,e)},[()=>Le(g(r).handle)||g(r).id]),n(`click`,i,()=>t.onStart(g(r).id)),u(e,i)});var C=S(x,2),T=e=>{var t=Fn();u(e,t)};M(C,e=>{g(i).length===0&&e(T)}),H(y);var E=S(y,2),D=B(E);w(2),H(E),H(m),H(s),H(a),d(()=>A(v,t.memberID)),n(`click`,o,function(...e){t.onClose?.apply(this,e)}),n(`click`,p,function(...e){t.onClose?.apply(this,e)}),h(`submit`,m,e=>{e.preventDefault(),t.onStart(t.memberID)}),n(`input`,v,e=>t.onMemberID(e.currentTarget.value)),n(`click`,D,function(...e){t.onClose?.apply(this,e)}),u(e,a),ee()}U([`click`,`input`]);var Rn=o(``),zn=o(` `),Bn=o(`
              `),Vn=o(`
              `),Hn=o(``);function Un(e,t){b(t,!0);let r=x(t,`homeHref`,3,`/`);function i(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}var a=Hn(),o=B(a),s=S(o,4),f=B(s);l(f,17,()=>t.workspaces,e=>e.id,(e,r)=>{var a=Bn();let o;var s=B(a),l=B(s),f=e=>{var t=Rn();d(e=>R(t,`src`,e),[()=>de(g(r).icon_url)]),u(e,t)},p=e=>{var t=zn(),n=B(t,!0);H(t),d(e=>c(n,e),[()=>Pe(g(r).name)]),u(e,t)};M(l,e=>{g(r).icon_url?e(f):e(p,-1)}),H(s),H(a),d(e=>{o=C(a,1,`guild-wrap`,null,o,{active:g(r).id===t.selectedWorkspaceID}),R(s,`title`,g(r).name),R(s,`aria-label`,g(r).name),R(s,`href`,e)},[()=>t.hrefForWorkspace(g(r).id)]),n(`click`,s,e=>{i(e)&&(e.preventDefault(),t.onSelectWorkspace(g(r).id))}),u(e,a)});var p=S(f,2);H(s);var m=S(s,2),_=e=>{var r=Vn(),i=B(r);O(i),H(r),d(()=>A(i,t.workspaceName)),h(`submit`,r,e=>{e.preventDefault(),t.onCreateWorkspace()}),n(`input`,i,e=>t.onWorkspaceName(e.currentTarget.value)),u(e,r)};M(m,e=>{t.showWorkspaceCreate&&e(_)}),H(a),d(()=>R(o,`href`,r())),n(`click`,p,function(...e){t.onToggleWorkspaceCreate?.apply(this,e)}),u(e,a),ee()}U([`click`,`input`]);var Wn=o(``),Gn=o(` `,1),Kn=o(``),qn=o(` `),Jn=o(``),Yn=o(`
              `),Xn=o(``),Zn=o(`Drag with a pointer, use Arrow Up and Arrow Down while focused, or open the move menu. Moves stay within the current channel section. `,1),Qn=o(`
              `);function $n(e,r){b(r,!0);let i=(e,t=p,i=p,a=p,o=p,s=p)=>{let l=k(()=>t().unread_count||0),f=k(()=>i().findIndex(e=>e.id===t().id));var b=Jn();let x;var D=B(b),O=e=>{var r=Gn(),o=j(r),s=S(o,2),c=e=>{var r=Wn(),a=B(r),o=S(a,2);H(r),ie(r,e=>E(T,e),()=>g(T)),d(e=>{R(r,`aria-label`,e),a.disabled=g(f)<=0,o.disabled=g(f)<0||g(f)>=i().length-1},[()=>`Move #${Xe(t())}`]),n(`keydown`,r,e=>{e.key===`Escape`&&(e.preventDefault(),ge(!0))}),n(`click`,a,()=>_e(t().id,-1,i())),n(`click`,o,()=>_e(t().id,1,i())),u(e,r)};M(s,e=>{g(w)===t().id&&e(c)}),d(e=>{R(o,`aria-label`,e),R(o,`aria-expanded`,g(w)===t().id)},[()=>`Move #${Xe(t())}`]),n(`click`,o,e=>void he(t().id,e.currentTarget)),h(`dragstart`,o,e=>W(e,t().id,a())),h(`dragend`,o,me),n(`keydown`,o,e=>{e.key===`ArrowUp`||e.key===`ArrowDown`?(e.preventDefault(),E(w,``),de(t().id,e.key===`ArrowUp`?-1:1,i())):e.key===`Escape`&&E(w,``)}),u(e,r)};M(D,e=>{s()&&e(O)});var ee=S(D,2);let A;var N=S(B(ee),2),P=B(N,!0);H(N);var F=S(N,2),te=e=>{var t=Kn();u(e,t)};M(F,e=>{t().external_managed&&e(te)});var ne=S(F,2),I=e=>{var t=qn(),n=B(t,!0);H(t),d(()=>{R(t,`aria-label`,`${g(l)} unread`),c(n,g(l)>99?`99+`:g(l))}),u(e,t)};M(ne,e=>{g(l)>0&&!(t().id===r.selectedChannelID&&!r.selectedDirectID)&&e(I)}),H(ee),H(b),d((e,n)=>{x=C(b,1,`channel-row`,null,x,{reorderable:s(),subdued:o(),dragging:g(m)===t().id,"drop-before":g(v)===t().id&&g(y),"drop-after":g(v)===t().id&&!g(y)}),R(ee,`href`,e),A=C(ee,1,`nav-item channel`,null,A,{active:t().id===r.selectedChannelID&&!r.selectedDirectID,"has-unread":g(l)>0&&!(t().id===r.selectedChannelID&&!r.selectedDirectID)}),c(P,n)},[()=>r.hrefForChannel(t().id),()=>Xe(t())]),h(`dragover`,b,e=>{s()&&fe(e,t().id,a())}),h(`drop`,b,e=>{e.preventDefault(),!(!s()||g(_)!==a())&&(ue(g(m),t().id,g(y),i()),me())}),n(`focusout`,b,e=>{e.currentTarget.contains(e.relatedTarget)||E(w,``)}),n(`click`,ee,e=>{ve(e)&&(e.preventDefault(),r.onSelectChannel(t().id))}),u(e,b)},o=(e,t=p,r=p,a=p)=>{let o=k(()=>oe(t().key)),s=k(()=>ce(t()));var f=Yn();let m;var h=B(f),_=S(B(h),2),v=B(_,!0);H(_);var y=S(_,2),b=B(y,!0);H(y),H(h);var x=S(h,2);l(x,21,()=>g(s),e=>e.id,(e,n)=>{i(e,()=>g(n),()=>t().channels,()=>t().key,a,()=>g(o))}),H(x),H(f),d(()=>{m=C(f,1,`channel-subgroup`,null,m,{"archived-channel-group":a()}),R(h,`aria-expanded`,g(o)),R(h,`aria-controls`,r()),c(v,t().label),c(b,t().channels.length),R(x,`id`,r()),R(x,`hidden`,!g(o)&&g(s).length===0)}),n(`click`,h,()=>se(t().key)),u(e,f)},f=`archived`,m=P(``),_=P(``),v=P(``),y=P(!0),x=P(!1),w=P(``),T=P(void 0),D,O=P(``),A=P(L({})),N=k(()=>r.channels.filter(e=>!e.archived_at)),F=k(()=>r.channels.filter(e=>!!e.archived_at)),te=k(()=>g(N).filter(e=>!e.sidebar_section?.trim())),I=k(()=>{let e=new Map;for(let t of g(N)){let n=t.sidebar_section?.trim();if(!n)continue;let r=e.get(n)??[];r.push(t),e.set(n,r)}return[...e.entries()].map(([e,t])=>({key:`section:${e}`,label:e,channels:t})).sort((e,t)=>e.label.localeCompare(t.label,void 0,{sensitivity:`base`}))}),z=k(()=>r.channels.filter(e=>e.id===r.selectedChannelID&&!r.selectedDirectID||(e.unread_count||0)>0));function re(e){if(!e)return{};try{let t=JSON.parse(e);if(!t||typeof t!=`object`||Array.isArray(t))return{};let n=Object.entries(t);return n.length>1e3||n.some(([e,t])=>e.length>256||typeof t!=`boolean`)?{}:Object.fromEntries(n)}catch{return{}}}function V(e){return`clickclack:sidebar-channel-groups:v1:${e}`}function ae(e){if(!e)return{};try{return re(window.localStorage.getItem(V(e)))}catch{return{}}}function oe(e){let t=g(A)[e];return typeof t==`boolean`?t:e!==f}function se(e){if(E(A,{...g(A),[e]:!oe(e)},!0),r.workspaceID)try{window.localStorage.setItem(V(r.workspaceID),JSON.stringify(g(A)))}catch{}}function U(e){e.key===V(r.workspaceID)&&E(A,re(e.newValue),!0)}function ce(e){return oe(e.key)?e.channels:e.channels.filter(e=>e.id===r.selectedChannelID&&!r.selectedDirectID||(e.unread_count||0)>0)}function le(e){E(O,``),queueMicrotask(()=>{E(O,e,!0)})}function ue(e,t,n,i){if(!e||!t||e===t)return;let a=r.channels.map(e=>e.id),o=a.indexOf(e);if(o<0)return;a.splice(o,1);let s=a.indexOf(t);if(s<0)return;a.splice(s+ +!n,0,e),r.onReorder(a);let c=r.channels.find(t=>t.id===e),l=i.map(e=>e.id).filter(t=>t!==e),u=l.indexOf(t);l.splice(u+ +!n,0,e),c&&le(`Moved #${Xe(c)} to position ${l.indexOf(e)+1} of ${l.length}`)}function de(e,t,n){let r=n.findIndex(t=>t.id===e),i=r+t;r<0||i<0||i>=n.length||ue(e,n[i].id,t<0,n)}function W(e,t,n){E(x,!0),E(w,``),E(m,t,!0),E(_,n,!0),e.dataTransfer?.setData(`text/plain`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}function fe(e,t,n){if(!g(m)||g(m)===t||g(_)!==n)return;e.preventDefault();let r=e.currentTarget;E(v,t,!0),E(y,e.clientY{E(x,!1)},0)}async function he(e,t){if(!g(x)){if(g(w)===e){E(w,``);return}D=t,E(w,e,!0),await s(),g(T)?.querySelector(`button:not(:disabled)`)?.focus()}}async function ge(e=!1){E(w,``),e&&(await s(),D?.focus())}function _e(e,t,n){de(e,t,n),ge(!0)}function ve(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}t(()=>{E(A,ae(r.workspaceID),!0)}),t(()=>{r.expanded||(E(w,``),pe(),E(x,!1))});var ye=Qn();h(`storage`,ne,U);let be;var xe=B(ye),Se=B(xe),Ce=S(Se,2);H(xe);var we=S(xe,2),Te=B(we),Ee=e=>{var t=Zn(),n=S(j(t),2);l(n,17,()=>g(te),e=>e.id,(e,t)=>{i(e,()=>g(t),()=>g(te),()=>`unsectioned`,()=>!1,()=>!0)});var a=S(n,2);l(a,19,()=>g(I),e=>e.key,(e,t,n)=>{o(e,()=>g(t),()=>`sidebar-channel-section-${g(n)}`,()=>!1)});var s=S(a,2),c=e=>{o(e,()=>({key:f,label:`Archived`,channels:g(F)}),()=>`sidebar-archived-channels`,()=>!0)};M(s,e=>{g(F).length>0&&e(c)});var d=S(s,2),p=e=>{var t=Xn();u(e,t)};M(d,e=>{r.channels.length===0&&e(p)}),u(e,t)},De=e=>{var t=a(),n=j(t);l(n,17,()=>g(z),e=>e.id,(e,t)=>{{let n=k(()=>!!g(t).archived_at);i(e,()=>g(t),()=>g(z),()=>`priority`,()=>g(n),()=>!1)}}),u(e,t)};M(Te,e=>{r.expanded?e(Ee):e(De,-1)}),H(we);var Oe=S(we,2),G=B(Oe,!0);H(Oe),H(ye),d(()=>{be=C(ye,1,`nav-section`,null,be,{collapsed:!r.expanded}),R(Se,`aria-expanded`,r.expanded),R(we,`hidden`,!r.expanded&&g(z).length===0),c(G,g(O))}),n(`click`,Se,function(...e){r.onToggle?.apply(this,e)}),n(`click`,Ce,function(...e){r.onCreateChannel?.apply(this,e)}),u(e,ye),ee()}U([`focusout`,`click`,`keydown`]);var er=o(` `),tr=o(``),nr=o(``),rr=o(`
              `),ir=o(``),ar=o(`
              `),or=o(`
              `);function sr(e,t){b(t,!0);let r=P(``),i=k(()=>t.expanded?t.conversations:t.conversations.filter(e=>e.id===t.selectedDirectID||(e.unread_count||0)>0));function a(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}function o(e){E(r,g(r)===e?``:e,!0)}function s(){E(r,``)}var f=or();let p;var m=B(f),h=B(m),_=S(h,2);H(m);var v=S(m,2),y=B(v);l(y,17,()=>g(i),e=>e.id,(e,i)=>{let l=k(()=>Z(g(i),t.currentUserID)),f=k(()=>g(i).unread_count||0),p=k(()=>g(i).id===t.selectedDirectID);var m=rr();let h;var _=B(m);let v;var y=B(_);{let e=k(()=>g(l)?.id||g(i).id),t=k(()=>g(l)?.display_name),n=k(()=>ze(g(l))?void 0:g(l)?.avatar_url);Q(y,{class:`dm-avatar`,get id(){return g(e)},get name(){return g(t)},get src(){return g(n)},size:22})}var b=S(y,2),x=B(b,!0);H(b);var w=S(b,2),T=e=>{var t=er(),n=B(t,!0);H(t),d(()=>{R(t,`aria-label`,`${g(f)} unread`),c(n,g(f)>99?`99+`:g(f))}),u(e,t)},E=e=>{var t=tr();u(e,t)};M(w,e=>{g(f)>0&&!g(p)?e(T):e(E,-1)}),H(_);var D=S(_,2),O=S(D,2),ee=e=>{var r=nr(),a=B(r);H(r),n(`click`,a,e=>{e.preventDefault(),e.stopPropagation(),s(),t.onHideDirect(g(i).id)}),u(e,r)};M(O,e=>{g(r)===g(i).id&&e(ee)}),H(m),d((e,t,n)=>{h=C(m,1,`dm-row`,null,h,{active:g(p)}),R(_,`href`,e),v=C(_,1,`nav-item dm`,null,v,{active:g(p),"has-unread":g(f)>0&&!g(p)}),c(x,t),R(D,`aria-label`,n),R(D,`aria-expanded`,g(r)===g(i).id)},[()=>t.hrefForDirect(g(i).id),()=>Ie(g(i),t.currentUserID),()=>`Direct message actions for ${Ie(g(i),t.currentUserID)}`]),n(`click`,_,e=>{a(e)&&(e.preventDefault(),t.onSelectDirect(g(i).id))}),n(`click`,D,e=>{e.preventDefault(),e.stopPropagation(),o(g(i).id)}),n(`keydown`,D,e=>{e.key===`Escape`&&s()}),u(e,m)});var x=S(y,2),w=e=>{var t=ir();u(e,t)};M(x,e=>{t.expanded&&t.conversations.length===0&&e(w)});var T=S(x,2),D=e=>{var r=ar(),i=B(r),a=B(i);H(i);var o=S(i,2);H(r),d(()=>c(a,`Closed ${t.hiddenDirectTitle??``}`)),n(`click`,o,function(...e){t.onUndoHideDirect?.apply(this,e)}),u(e,r)};M(T,e=>{t.expanded&&t.hiddenDirectTitle&&e(D)}),H(v),H(f),d(()=>{p=C(f,1,`nav-section`,null,p,{collapsed:!t.expanded}),R(h,`aria-expanded`,t.expanded),R(v,`hidden`,!t.expanded&&g(i).length===0)}),n(`click`,h,function(...e){t.onToggle?.apply(this,e)}),n(`click`,_,function(...e){t.onCreateDirect?.apply(this,e)}),u(e,f),ee()}U([`click`,`keydown`]);var cr=o(``),lr=o(`Connecting…`),ur=o(`
              `),dr=o(` `),fr=o(``),pr=o(``),mr=o(``);function hr(e,r){b(r,!0);let i=x(r,`showHeader`,3,!0),a=`clickclack:sidebar-sections:v1:`,o={channels:!0,directMessages:!0,people:!0},s=P(L({...o}));function f(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.channels==`boolean`&&typeof t.directMessages==`boolean`&&typeof t.people==`boolean`}function p(e){if(!e)return{...o};try{let t=window.localStorage.getItem(`${a}${e}`);if(!t)return{...o};let n=JSON.parse(t);return f(n)?n:{...o}}catch{return{...o}}}function m(e){if(E(s,{...g(s),[e]:!g(s)[e]},!0),r.workspaceID)try{window.localStorage.setItem(`${a}${r.workspaceID}`,JSON.stringify(g(s)))}catch{}}t(()=>{E(s,p(r.workspaceID),!0)});let _=1e6,v=P(L([]));function y(e,t){return`clickclack:sidebar-channel-order:v1:${t}:${e}`}function T(e){if(!e||e.length>_)return[];try{let t=JSON.parse(e);return Array.isArray(t)&&t.length<=1e4&&t.every(e=>typeof e==`string`&&e.length<=128)?[...new Set(t)]:[]}catch{return[]}}function D(e,t){if(!e||!t)return[];try{return T(window.localStorage.getItem(y(e,t)))}catch{return[]}}function O(e){if(E(v,e,!0),!(!r.workspaceID||!r.currentUser?.id))try{let t=y(r.workspaceID,r.currentUser.id),n=JSON.stringify(e);if(n.length>_){window.localStorage.removeItem(t);return}window.localStorage.setItem(t,n)}catch{}}function A(e){!r.workspaceID||!r.currentUser?.id||e.key===y(r.workspaceID,r.currentUser.id)&&E(v,T(e.newValue),!0)}let j=k(()=>{let e=new Map(r.channels.map(e=>[e.id,e]));return[...g(v).flatMap(t=>{let n=e.get(t);return n?(e.delete(t),[n]):[]}),...e.values()]});t(()=>{E(v,D(r.workspaceID,r.currentUser?.id||``),!0)});function N(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}var F=mr();h(`storage`,ne,A);var te=B(F),I=e=>{var t=ur(),i=B(t),a=B(i),o=e=>{var t=cr();d(e=>R(t,`src`,e),[()=>de(r.workspaceIconURL)]),u(e,t)};M(a,e=>{r.workspaceIconURL&&e(o)});var s=S(a,2),l=B(s),f=B(l),p=B(f,!0);H(f),w(2),H(l);var m=S(l,2),h=e=>{var t=lr();u(e,t)};M(m,e=>{r.connected||e(h)}),H(s),H(i);var g=S(i,2),_=B(g),v=B(_),y=B(v);H(v),H(_),H(g),H(t),d(()=>{c(p,r.workspaceName||`Pick a workspace`),R(_,`aria-label`,r.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),R(_,`title`,r.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),R(y,`d`,r.sidebarCollapsed?`m9 6 6 6-6 6`:`m15 6-6 6 6 6`)}),n(`click`,i,function(...e){r.onOpenWorkspaceSettings?.apply(this,e)}),n(`click`,_,function(...e){r.onToggleCollapse?.apply(this,e)}),u(e,t)};M(te,e=>{i()&&e(I)});var z=S(te,2),re=B(z);$n(re,{get workspaceID(){return r.workspaceID},get expanded(){return g(s).channels},get channels(){return g(j)},get selectedChannelID(){return r.selectedChannelID},get selectedDirectID(){return r.selectedDirectID},get hrefForChannel(){return r.hrefForChannel},get onSelectChannel(){return r.onSelectChannel},get onCreateChannel(){return r.onCreateChannel},onToggle:()=>m(`channels`),onReorder:O});var ie=S(re,2);{let e=k(()=>r.currentUser?.id);sr(ie,{get expanded(){return g(s).directMessages},get conversations(){return r.directConversations},get currentUserID(){return g(e)},get selectedDirectID(){return r.selectedDirectID},get hrefForDirect(){return r.hrefForDirect},get onSelectDirect(){return r.onSelectDirect},get onCreateDirect(){return r.onCreateDirect},get onHideDirect(){return r.onHideDirect},get hiddenDirectTitle(){return r.hiddenDirectTitle},get onUndoHideDirect(){return r.onUndoHideDirect},onToggle:()=>m(`directMessages`)})}var V=S(ie,2);let ae;var oe=B(V),se=B(oe);H(oe);var U=S(oe,2),ce=B(U);l(ce,17,()=>r.recentPeople,e=>e.id,(e,t)=>{let i=k(()=>Ae(r.directConversations,g(t).id));var a=dr();let o;var s=B(a);Q(s,{class:`dm-avatar`,get id(){return g(t).id},get name(){return g(t).display_name},get src(){return g(t).avatar_url},size:22});var l=S(s,2),f=B(l,!0);H(l),w(2),H(a),d(e=>{R(a,`href`,e),o=C(a,1,`nav-item dm`,null,o,{active:g(i)?.id===r.selectedDirectID||r.selectedProfile?.id===g(t).id}),c(f,g(t).display_name)},[()=>g(i)?r.hrefForDirect(g(i).id):`#`]),n(`click`,a,e=>{if(g(i)){if(!N(e))return;e.preventDefault(),r.onSelectDirect(g(i).id)}else e.preventDefault(),r.onOpenProfile(g(t))}),u(e,a)});var le=S(ce,2),ue=e=>{var t=fr();u(e,t)};M(le,e=>{r.recentPeople.length===0&&e(ue)}),H(U),H(V),H(z);var W=S(z,2),fe=e=>{var t=pr(),i=B(t);Q(i,{class:`dm-avatar`,get id(){return r.currentUser.id},get name(){return r.currentUser.display_name},get src(){return r.currentUser.avatar_url},size:28,loading:`eager`,fetchPriority:`auto`});var a=S(i,2),o=B(a),s=B(o,!0);H(o);var l=S(o,2),f=B(l,!0);H(l),H(a),w(2),H(t),d((e,n)=>{R(t,`aria-label`,e),c(s,r.currentUser.display_name),c(f,n)},[()=>`Account settings for ${r.currentUser.display_name} ${Le(r.currentUser.handle)}`,()=>r.currentUser.handle?Le(r.currentUser.handle):r.connected?`Active`:`Reconnecting…`]),n(`click`,t,function(...e){r.onOpenSettings?.apply(this,e)}),n(`contextmenu`,t,e=>{e.preventDefault(),r.onOpenSettings()}),u(e,t)};M(W,e=>{r.currentUser&&e(fe)}),H(F),d(()=>{ae=C(V,1,`nav-section`,null,ae,{collapsed:!g(s).people}),R(se,`aria-expanded`,g(s).people),R(U,`hidden`,!g(s).people)}),n(`click`,se,()=>m(`people`)),u(e,F),ee()}U([`click`,`contextmenu`]);var gr=o(` `),_r=o(` `),vr=o(``),yr=o(``),br=o(`
              User kind
              `),xr=o(`

              `),Sr=o(`

              Blocked.

              `),Cr=o(``),wr=o(``),Tr=o(``),Er=o(`
              Moderation
              `),Dr=o(`

              Profile

              Active
              Contact information
              Handle
              User ID
              About

              `,1);function Or(e,t){b(t,!0);let r=k(()=>t.profile.kind===`bot`?t.profile.owner_user_id?`Bot of ${t.profile.owner_user_id}`:`Service bot`:``),i=k(()=>t.moderation?.role||`member`),a=k(()=>!!t.moderation&&g(i)!==`owner`&&(t.currentUserRole===`owner`||t.currentUserRole===`moderator`&&(g(i)===`member`||g(i)===`guest`))),o=k(()=>t.currentUser?.id!==t.profile.id&&g(a)),s=k(()=>!!t.moderation?.blocked_at),l=k(()=>g(i));var f=Dr(),p=j(f),m=B(p),h=S(B(m),2),_=B(h,!0);H(h),H(m);var v=S(m,2);H(p);var y=S(p,2),x=B(y),C=B(x);Q(C,{class:`profile-avatar`,get id(){return t.profile.id},get name(){return t.profile.display_name},get src(){return t.profile.avatar_url},size:240,loading:`eager`,fetchPriority:`auto`}),H(x);var w=S(x,2),T=B(w),E=B(T),D=B(E),O=B(D,!0);H(D);var A=S(D,2),N=e=>{var t=gr(),n=B(t,!0);H(t),d(()=>c(n,g(r))),u(e,t)};M(A,e=>{g(r)&&e(N)});var P=S(A,2),F=e=>{var n=_r(),r=B(n,!0);H(n),d(e=>c(r,e),[()=>Le(t.profile.handle)]),u(e,n)};M(P,e=>{t.profile.handle&&e(F)}),H(E);var te=S(E,2),ne=e=>{var r=vr();n(`click`,r,function(...e){t.onEdit?.apply(this,e)}),u(e,r)};M(te,e=>{t.currentUser?.id===t.profile.id&&e(ne)}),H(T);var I=S(T,4),L=B(I),R=e=>{var r=yr();n(`click`,r,()=>t.onMessage(t.profile.id)),u(e,r)};M(L,e=>{t.currentUser?.id!==t.profile.id&&e(R)});var z=S(L,2);H(I);var re=S(I,2),ie=B(re),V=S(B(ie),2),ae=e=>{var r=vr();n(`click`,r,function(...e){t.onEdit?.apply(this,e)}),u(e,r)};M(V,e=>{t.currentUser?.id===t.profile.id&&e(ae)}),H(ie);var oe=S(ie,2),U=S(B(oe),2),ce=S(B(U),2),le=B(ce,!0);H(ce),H(U),H(oe);var ue=S(oe,2),de=S(B(ue),2),W=S(B(de),2),fe=B(W,!0);H(W),H(de),H(ue);var pe=S(ue,2),me=e=>{var t=br(),n=S(B(t),2),i=S(B(n),2),a=B(i,!0);H(i),H(n),H(t),d(()=>c(a,g(r))),u(e,t)};M(pe,e=>{t.profile.kind===`bot`&&e(me)}),H(re);var he=S(re,2),ge=S(B(he),2),_e=B(ge);H(ge),H(he);var ve=S(he,2),ye=e=>{var r=Er(),i=B(r),a=S(B(i),2),o=B(a,!0);H(a),H(i);var f=S(i,2),p=e=>{var n=xr(),r=B(n);H(n),d(()=>c(r,`${t.moderation.posts_remaining??``} of ${t.moderation.post_limit??``} waiting-room posts left today.`)),u(e,n)};M(f,e=>{t.moderation.role===`guest`&&t.moderation.post_limit>0&&e(p)});var m=S(f,2),h=e=>{var n=xr(),r=B(n);H(n),d(e=>c(r,`Timed out until ${e??``}.`),[()=>new Date(t.moderation.timeout_until).toLocaleString()]),u(e,n)};M(m,e=>{t.moderation.timeout_until&&e(h)});var _=S(m,2),v=e=>{var t=Sr();u(e,t)};M(_,e=>{t.moderation.blocked_at&&e(v)});var y=S(_,2),b=B(y),x=e=>{var r=Cr();n(`click`,r,()=>t.onApprove(t.profile.id)),u(e,r)};M(b,e=>{t.moderation.role===`guest`&&e(x)});var C=S(b,2),w=S(C,2),T=e=>{var r=wr();n(`click`,r,()=>t.onUnblock(t.profile.id)),u(e,r)},E=e=>{var r=Tr();n(`click`,r,()=>t.onBlock(t.profile.id)),u(e,r)};M(w,e=>{g(s)?e(T):e(E,-1)}),H(y),H(r),d(()=>c(o,g(l))),n(`click`,C,()=>t.onTimeout(t.profile.id)),u(e,r)};M(ve,e=>{g(o)&&t.moderation&&e(ye)}),H(w),H(y),d((e,n)=>{c(_,t.profile.display_name),se(x,`--hue: ${e??``}deg`),c(O,t.profile.display_name),c(le,n),c(fe,t.profile.id),c(_e,`Member of ${(t.workspaceName||`this workspace`)??``}.`)},[()=>Re(t.profile.id),()=>t.profile.handle?Le(t.profile.handle):`No handle set`]),n(`click`,v,function(...e){t.onClose?.apply(this,e)}),n(`click`,z,function(...e){t.onSetStatus?.apply(this,e)}),u(e,f),ee()}U([`click`]);var kr=o(` `,1),Ar=o(`
              `),jr=o(`
              We couldn’t search messages

              `),Mr=o(`
              No messages found

              Try another word or phrase.

              `),Nr=o(`deleted bot`),Pr=o(` `),Fr=o(` `),Ir=o(` `),Lr=o(` Reply in thread`),Rr=o(` `),zr=o(`
            • `),Br=o(``),Vr=o(``),Hr=o(``),Ur=o(`
                `,1),Wr=o(``);function Gr(e,t){b(t,!0);let r=x(t,`covered`,3,!1),i=x(t,`inert`,3,!1),o=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}),s=new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}),p=new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`,year:`numeric`});function m(e,t){let n=Array.from(e),r=[],i=0;for(let e of t){let t=Math.max(i,Math.min(n.length,e.start)),a=Math.max(t,Math.min(n.length,e.end));t>i&&r.push({text:n.slice(i,t).join(``),highlighted:!1}),a>t&&r.push({text:n.slice(t,a).join(``),highlighted:!0}),i=a}return i{var t=f(`Searching messages…`);u(e,t)},ne=e=>{var n=kr(),r=j(n),i=S(r),a=e=>{var n=f();d(()=>c(n,`in ${t.session.scope.label??``}`)),u(e,n)};M(i,e=>{t.session.scope.label&&e(a)}),d(()=>c(r,`${t.session.results.length??``}${t.session.nextCursor?`+`:``} + ${t.session.results.length===1&&!t.session.nextCursor?`result`:`results`}`)),u(e,n)},I=e=>{var t=f(`Search unavailable`);u(e,t)};M(F,e=>{t.session.state===`loading`?e(te):t.session.state===`ready`?e(ne,1):t.session.state===`error`&&e(I,2)}),H(P);var L=S(P,2),z=B(L),re=e=>{var t=Ar();u(e,t)},ie=e=>{var n=jr(),r=S(B(n),4),i=B(r,!0);H(r),H(n),d(()=>c(i,t.session.error)),u(e,n)},V=e=>{var t=Mr();u(e,t)},ae=e=>{var r=Ur(),i=j(r);l(i,21,()=>t.session.results,e=>e.id,(e,r)=>{let i=k(()=>t.contextFor(g(r)));var o=zr(),s=B(o);let p;var _=B(s);{let e=k(()=>ze(g(r).author)?void 0:g(r).author.avatar_url);Q(_,{class:`dm-avatar`,get id(){return g(r).author.id},get name(){return g(r).author.display_name},get src(){return g(e)},size:30})}var v=S(_,2),y=B(v),b=B(y),x=B(b,!0);H(b);var w=S(b,2),T=e=>{var t=Nr();u(e,t)},E=k(()=>ze(g(r).author)),D=e=>{var t=Pr(),n=B(t,!0);H(t),d(e=>c(n,e),[()=>Le(K(g(r).author))]),u(e,t)},O=k(()=>K(g(r).author));M(w,e=>{g(E)?e(T):g(O)&&e(D,1)});var ee=S(w,2),A=B(ee,!0);H(ee),H(y);var P=S(y,2);l(P,21,()=>m(g(r).snippet,g(r).highlights),N,(e,t)=>{var n=a(),r=j(n),i=e=>{var n=Fr(),r=B(n,!0);H(n),d(()=>c(r,g(t).text)),u(e,n)},o=e=>{var n=f();d(()=>c(n,g(t).text)),u(e,n)};M(r,e=>{g(t).highlighted?e(i):e(o,-1)}),u(e,n)}),H(P);var F=S(P,2),te=B(F),ne=e=>{var t=Ir(),n=B(t,!0);H(t),d(()=>c(n,g(i))),u(e,t)};M(te,e=>{g(i)&&e(ne)});var I=S(te,2),L=e=>{var t=Lr();u(e,t)},z=e=>{var t=Rr(),n=S(B(t));H(t),d(()=>c(n,` ${g(r).reply_count??``} ${g(r).reply_count===1?`reply`:`replies`}`)),u(e,t)};M(I,e=>{g(r).parent_message_id?e(L):g(r).reply_count>0&&e(z,1)}),H(F),H(v),H(s),H(o),d(e=>{p=C(s,1,`search-result`,null,p,{"is-active":t.session.activeResultID===g(r).id}),R(s,`data-result-id`,g(r).id),c(x,g(r).author.display_name||`Local User`),R(ee,`datetime`,g(r).created_at),c(A,e)},[()=>h(g(r).created_at)]),n(`click`,s,()=>t.onOpenResult(g(r))),u(e,o)}),H(i);var o=S(i,2),s=e=>{var r=Br(),i=B(r),a=B(i,!0);H(i);var o=S(i,2);H(r),d(()=>c(a,t.session.moreError)),n(`click`,o,function(...e){t.onLoadMore?.apply(this,e)}),u(e,r)},p=e=>{var r=Vr(),i=B(r,!0);H(r),d(()=>{r.disabled=t.session.loadingMore,c(i,t.session.loadingMore?`Loading more…`:`Load more results`)}),n(`click`,r,function(...e){t.onLoadMore?.apply(this,e)}),u(e,r)},_=e=>{var t=Hr();u(e,t)};M(o,e=>{t.session.moreError?e(s):t.session.nextCursor?e(p,1):e(_,-1)}),u(e,r)};M(z,e=>{t.session.state===`loading`?e(re):t.session.state===`error`?e(ie,1):t.session.results.length===0?e(V,2):e(ae,-1)}),H(L),H(_),d(()=>{v=C(_,1,`search-results`,null,v,{covered:r()}),_.inert=i(),R(_,`aria-hidden`,r()?`true`:void 0),c(E,`Search${t.session.scope.label?` in ${t.session.scope.label}`:``}`),c(O,`Results for “${t.session.query??``}”`)}),n(`click`,A,function(...e){t.onClose?.apply(this,e)}),u(e,_),ee()}U([`click`]);var Kr=`clickclack:browser-notifications-enabled:v1:`;function qr(e){return`${Kr}${e}`}function Jr(e){if(!e)return!1;try{return window.localStorage.getItem(qr(e))===`enabled`}catch{return!1}}function Yr(e,t){if(!e)return!1;try{return t?window.localStorage.setItem(qr(e),`enabled`):window.localStorage.removeItem(qr(e)),!0}catch{return!1}}var Xr=o(`

                Browser notifications are not supported on this device.

                `),Zr=o(`

                Browser notifications are blocked by this browser.

                `),Qr=o(`

                `),$r=o(`

                Show alerts when ClickClack is in the background.

                `);function ei(e,r){b(r,!0);let i=x(r,`isDesktop`,3,!1),a=P(!1),o=P(!1),s=P(`default`),l=P(``),f=P(!1);t(()=>{p(r.user.id,i())});function p(e,t){if(t){E(a,!0),E(s,`granted`),E(o,Jr(e),!0),r.onChanged?.(g(o));return}E(a,typeof Notification<`u`),E(s,g(a)?Notification.permission:`unsupported`,!0);let n=Jr(e);E(o,g(s)===`granted`&&n,!0),n&&g(s)!==`granted`&&Yr(e,!1),r.onChanged?.(g(o))}async function m(e){if(E(l,``),E(f,!1),!e){Yr(r.user.id,!1),E(o,!1),r.onChanged?.(!1),E(l,i()?`Desktop notifications disabled`:`Browser notifications disabled`,!0);return}if(i()){E(o,Yr(r.user.id,!0),!0),r.onChanged?.(g(o)),E(l,g(o)?`Desktop notifications enabled`:`Desktop notification preference could not be saved`,!0),E(f,!g(o));return}if(typeof Notification>`u`){E(a,!1),E(s,`unsupported`),E(o,!1),r.onChanged?.(!1),E(l,`Browser notifications are not supported`),E(f,!0);return}if(E(s,Notification.permission==="default"?await Notification.requestPermission():Notification.permission,!0),E(a,!0),g(s)===`granted`){E(o,Yr(r.user.id,!0),!0),r.onChanged?.(g(o)),E(l,g(o)?`Browser notifications enabled`:`Browser notification preference could not be saved`,!0),E(f,!g(o));return}Yr(r.user.id,!1),E(o,!1),r.onChanged?.(!1),E(l,g(s)===`denied`?`Browser notifications are blocked by this browser`:`Browser notifications were not enabled`,!0),E(f,!0)}var h=$r(),_=B(h),v=B(_),y=B(v,!0);H(v);var w=S(v,4),T=e=>{var t=Xr();u(e,t)},D=e=>{var t=Zr();u(e,t)};M(w,e=>{!i()&&!g(a)?e(T):!i()&&g(s)===`denied`&&e(D,1)});var k=S(w,2),A=e=>{var t=Qr();let n;var r=B(t,!0);H(t),d(()=>{n=C(t,1,`settings-row2__hint`,null,n,{"is-error":g(f)}),c(r,g(l))}),u(e,t)};M(k,e=>{g(l)&&e(A)}),H(_);var j=S(_,2),N=B(j);O(N),H(j),H(h),d(()=>{c(y,i()?`Desktop notifications`:`Browser notifications`),R(N,`aria-label`,i()?`Desktop notifications`:`Browser notifications`),N.disabled=!g(a)||g(s)===`denied`,F(N,g(o))}),n(`change`,N,e=>void m(e.currentTarget.checked)),u(e,h),ee()}U([`change`]);var ti=o(``),ni=o(`

                `),ri=o(``),ii=o(`
                Preview

                Shown in messages, mentions, and your profile card.

                Used in mentions and the quick switcher. Must be unique.

                Paste a public image URL. Your initials show when empty.

                Conversation display

                Keep agent reasoning summaries out of the message timeline.

                Hide tool execution details while keeping ordinary messages visible.

                Choose which side of the timeline shows your messages.

                Choose which side of the timeline shows messages from other people and agents.

                Notifications

                `);function ai(e,r){b(r,!0);let i=x(r,`isDesktop`,3,!1),a=P(null),o=k(()=>g(a)??r.user),s=P(``),l=P(``),f=P(``),p=P(``),m=P(!1),_=P(!1),v=k(()=>g(s).trim()||g(o).display_name||`Your name`),T=k(()=>g(l).trim().replace(/^@+/,``)||g(o).handle||``);t(()=>{E(s,g(o).display_name,!0),E(l,g(o).handle??``,!0),E(f,g(o).avatar_url,!0)});function D(){let e=g(l).trim().replace(/^@+/,``);return e?`@${e}`:``}async function A(){if(!g(_)){E(_,!0),E(p,``),E(m,!1);try{let e=await me({method:`PATCH`,body:JSON.stringify({display_name:g(s),handle:D(),avatar_url:g(f),notification_settings:g(o).notification_settings})});E(a,e.user,!0),r.onUserUpdated?.(e.user),E(p,`Saved`),r.onSaved?.()}catch(e){E(p,e instanceof Error?e.message:`Could not save profile`,!0),E(m,!0)}finally{E(_,!1)}}}function j(){E(f,``)}var N=ii(),te=B(N),ne=B(te);Q(ne,{get id(){return g(o).id},get name(){return g(v)},get src(){return g(f)},size:52,loading:`eager`,fetchPriority:`auto`});var I=S(ne,2),L=B(I),R=B(L,!0);H(L);var z=S(L,2),re=B(z,!0);H(z),H(I),w(2),H(te);var ie=S(te,2),V=B(ie),se=S(B(V),2),U=B(se);O(U),H(se),H(V);var ce=S(V,2),le=S(B(ce),2),ue=B(le),de=S(B(ue),2);O(de),H(ue),H(le),H(ce);var W=S(ce,2),fe=S(B(W),2),pe=B(fe);O(pe);var he=S(pe,2),ge=e=>{var t=ti();n(`click`,t,j),u(e,t)};M(he,e=>{g(f)&&e(ge)}),H(fe),H(W);var _e=S(W,4),ve=S(B(_e),2),ye=B(ve);O(ye),H(ve),H(_e);var be=S(_e,2),xe=S(B(be),2),Se=B(xe);O(Se),H(xe),H(be);var Ce=S(be,2),we=S(B(Ce),2),Te=B(we),Ee=B(Te);Ee.value=Ee.__value=`left`;var De=S(Ee);De.value=De.__value=`right`,H(Te);var Oe;y(Te),H(we),H(Ce);var G=S(Ce,2),ke=S(B(G),2),Ae=B(ke),je=B(Ae);je.value=je.__value=`left`;var Me=S(je);Me.value=Me.__value=`right`,H(Ae);var Ne;y(Ae),H(ke),H(G),ei(S(G,4),{get user(){return g(o)},get isDesktop(){return i()},get onChanged(){return r.onBrowserNotificationsChanged}}),H(ie);var K=S(ie,2),Pe=B(K),Fe=e=>{var t=ni();let n;var r=B(t,!0);H(t),d(()=>{n=C(t,1,`settings-status`,null,n,{"is-error":g(m)}),c(r,g(p))}),u(e,t)},Ie=e=>{var t=ri();u(e,t)};M(Pe,e=>{g(p)?e(Fe):e(Ie,-1)});var Le=S(Pe,2),Re=B(Le,!0);H(Le),H(K),H(N),d(()=>{c(R,g(v)),c(re,g(T)?`@${g(T)}`:`No handle set`),F(ye,r.hideCommentary),F(Se,r.hideToolCalls),Oe!==(Oe=r.userAlign)&&(Te.value=(Te.__value=r.userAlign)??``,oe(Te,r.userAlign)),Ne!==(Ne=r.otherAlign)&&(Ae.value=(Ae.__value=r.otherAlign)??``,oe(Ae,r.otherAlign)),Le.disabled=g(_),c(Re,g(_)?`Saving...`:`Save profile`)}),h(`submit`,N,e=>{e.preventDefault(),A()}),ae(U,()=>g(s),e=>E(s,e)),ae(de,()=>g(l),e=>E(l,e)),ae(pe,()=>g(f),e=>E(f,e)),n(`change`,ye,e=>r.onHideCommentary(e.currentTarget.checked)),n(`change`,Se,e=>r.onHideToolCalls(e.currentTarget.checked)),n(`change`,Te,e=>r.onUserAlign(e.currentTarget.value===`right`?`right`:`left`)),n(`change`,Ae,e=>r.onOtherAlign(e.currentTarget.value===`right`?`right`:`left`)),u(e,N),ee()}U([`click`,`change`]);var oi=o(`

                `),si=o(``),ci=o(`

                Desktop

                Mobile push

                Send push notifications to your phone via Pushover.

                Find this in your Pushover dashboard under "Your User Key".

                `);function li(e,n){b(n,!0);let r=x(n,`isDesktop`,3,!1),i=P(null),a=k(()=>g(i)??n.user),o=P(!1),s=P(``),l=P(``),f=P(!1),p=P(!1);t(()=>{E(o,g(a).notification_settings?.pushover_enabled??!1,!0),E(s,g(a).notification_settings?.pushover_user_key??``,!0)});async function m(){if(!g(p)){E(p,!0),E(l,``),E(f,!1);try{let e=await me({method:`PATCH`,body:JSON.stringify({display_name:g(a).display_name,handle:g(a).handle?`@${g(a).handle}`:``,avatar_url:g(a).avatar_url,notification_settings:{pushover_enabled:g(o),pushover_user_key:g(s)}})});E(i,e.user,!0),n.onUserUpdated?.(e.user),E(l,`Saved`)}catch(e){E(l,e instanceof Error?e.message:`Could not save notifications`,!0),E(f,!0)}finally{E(p,!1)}}}var _=ci(),v=B(_),y=S(B(v),2);ei(y,{get user(){return g(a)},get isDesktop(){return r()},get onChanged(){return n.onBrowserNotificationsChanged}});var w=S(y,4),D=S(B(w),2),A=B(D);O(A),H(D),H(w);var j=S(w,2),N=S(B(j),2),F=B(N);O(F),H(N),H(j),H(v);var te=S(v,2),ne=B(te),I=e=>{var t=oi();let n;var r=B(t,!0);H(t),d(()=>{n=C(t,1,`settings-status`,null,n,{"is-error":g(f)}),c(r,g(l))}),u(e,t)},L=e=>{var t=si();u(e,t)};M(ne,e=>{g(l)?e(I):e(L,-1)});var R=S(ne,2),z=B(R,!0);H(R),H(te),H(_),d(()=>{R.disabled=g(p),c(z,g(p)?`Saving...`:`Save notifications`)}),h(`submit`,_,e=>{e.preventDefault(),m()}),T(A,()=>g(o),e=>E(o,e)),ae(F,()=>g(s),e=>E(s,e)),u(e,_),ee()}var ui=o(`

                Loading…

                `),di=o(`

                `),fi=o(`
                You don't own any bots yet. Open a workspace's Bots & agents page to mint one.
                `),pi=o(``),mi=o(`
              • `),hi=o(`

                  `),gi=o(`
                  `),_i=o(`

                  Account

                  My bots

                  Bots you own across your workspaces. Tokens live with the workspace where the bot was created.

                  `,1);function vi(e,t){b(t,!0);let r=P(L([])),i=P(`loading`),a=P(``);re(()=>{o()});async function o(){E(i,`loading`);try{E(r,await Qe(),!0),E(i,`ready`)}catch(e){E(i,`error`),E(a,$e(e),!0)}}function s(e){t.onClose(),ce(Ee(e.workspace.route_id||e.workspace.id,`bots`))}function p(e){return e.startsWith(`@`)?e:`@${e}`}function m(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length>=2?(t[0][0]+t[1][0]).toUpperCase():e.slice(0,2).toUpperCase()}let h=k(()=>{let e=new Map;for(let t of g(r)){let n=t.workspace.id,r=e.get(n);r?r.entries.push(t):e.set(n,{workspace:t.workspace,entries:[t]})}return[...e.values()].sort((e,t)=>e.workspace.name.localeCompare(t.workspace.name))});var _=_i(),v=S(j(_),2),y=e=>{var t=ui();u(e,t)},x=e=>{var t=di(),n=B(t,!0);H(t),d(()=>c(n,g(a))),u(e,t)},C=e=>{var t=fi();u(e,t)},w=e=>{var t=gi();l(t,21,()=>g(h),e=>e.workspace.id,(e,t)=>{var r=hi(),i=B(r),a=B(i),o=B(a,!0);H(a);var h=S(a,2);H(i);var _=S(i,2);l(_,21,()=>g(t).entries,e=>e.bot.id,(e,t)=>{var r=mi(),i=B(r),a=B(i),o=e=>{var n=pi();d(()=>R(n,`src`,g(t).bot.avatar_url)),u(e,n)},l=e=>{var n=f();d(e=>c(n,e),[()=>m(g(t).bot.display_name||g(t).bot.handle||`?`)]),u(e,n)};M(a,e=>{g(t).bot.avatar_url?e(o):e(l,-1)}),H(i);var h=S(i,2),_=B(h),v=B(_,!0);H(_);var y=S(_,2),b=B(y),x=B(b,!0);H(b);var C=S(b,4),w=B(C);H(C),H(y),H(h);var T=S(h,2);H(r),d(e=>{c(v,g(t).bot.display_name||g(t).bot.handle),c(x,e),c(w,`${g(t).active_token_count??``} + active ${g(t).active_token_count===1?`token`:`tokens`}`)},[()=>p(g(t).bot.handle)]),n(`click`,T,()=>s(g(t))),u(e,r)}),H(_),H(r),d(()=>c(o,g(t).workspace.name)),n(`click`,h,()=>s(g(t).entries[0])),u(e,r)}),H(t),u(e,t)};M(v,e=>{g(i)===`loading`?e(y):g(i)===`error`?e(x,1):g(r).length===0?e(C,2):e(w,-1)}),u(e,_),ee()}U([`click`]);var yi=o(``),bi=o(``),xi=o(`

                  Account

                  Appearance

                  Changes apply instantly and follow your account on every device.

                  Live preview — updates as you pick

                  Color mode System follows your OS setting
                  Board theme Palette for boards, accents, and highlights
                  Message layout How agent activity attaches to replies
                  Density Compact fits more messages on screen
                  `,1);function Si(e,r){b(r,!0);let i=k(()=>r.user.display_name||r.user.handle||`You`),a=k(()=>(g(i)[0]??`Y`).toUpperCase()),o=P(L(pe())),s=P(L(Ce())),f=P(L(Te())),p=P(L(ve()));t(()=>{r.user.appearance_preferences,E(o,pe(),!0),E(s,Ce(),!0),E(f,Te(),!0),E(p,ve(),!0)});function m(e){E(o,e,!0),xe(e)}function h(e){E(s,e,!0),he(e)}function _(e){E(f,e,!0),ge(e)}function v(e){E(p,e,!0),ye(e)}function y(e,t,n,r){let i;switch(e.key){case`ArrowRight`:case`ArrowDown`:i=(n+1)%t;break;case`ArrowLeft`:case`ArrowUp`:i=(n-1+t)%t;break;case`Home`:i=0;break;case`End`:i=t-1;break;default:return}e.preventDefault(),r(i),(e.currentTarget.parentElement?.querySelectorAll(`[role="radio"]`))?.item(i).focus()}var x=xi(),T=S(j(x),2),D=B(T),O=S(B(D),2),A=B(O),M=B(A),N=B(M,!0);H(M);var F=S(M,2),te=B(F),ne=B(te),I=B(ne,!0);H(ne),w(2),H(te),w(2),H(F),H(A);var z=S(A,4),re=B(z),ie=B(re,!0);H(re);var V=S(re,2),ae=B(V),oe=B(ae),se=B(oe,!0);H(oe),w(2),H(ae),w(2),H(V),H(z),H(O),H(D);var U=S(D,4),ce=B(U),le=S(B(ce),2);l(le,23,()=>be,e=>e.id,(e,t,r)=>{var i=yi();let a;var s=B(i,!0);H(i),d(()=>{a=C(i,1,`appearance-seg__btn`,null,a,{"is-active":g(o)===g(t).id}),R(i,`aria-checked`,g(o)===g(t).id),R(i,`tabindex`,g(o)===g(t).id?0:-1),c(s,g(t).label)}),n(`click`,i,()=>m(g(t).id)),n(`keydown`,i,e=>y(e,be.length,g(r),e=>m(be[e].id))),u(e,i)}),H(le),H(ce);var ue=S(ce,2),de=S(B(ue),2),W=B(de),fe=B(W,!0);H(W);var me=S(W,2);l(me,23,()=>we,e=>e.id,(e,t,r)=>{var i=bi();let a;d(()=>{a=C(i,1,`board-chip`,null,a,{"is-active":g(s)===g(t).id}),R(i,`aria-checked`,g(s)===g(t).id),R(i,`tabindex`,g(s)===g(t).id?0:-1),R(i,`data-board`,g(t).id),R(i,`aria-label`,`${g(t).label} — ${g(t).blurb}`),R(i,`title`,`${g(t).label} — ${g(t).blurb}`)}),n(`click`,i,()=>h(g(t).id)),n(`keydown`,i,e=>y(e,we.length,g(r),e=>h(we[e].id))),u(e,i)}),H(me),H(de),H(ue);var Ee=S(ue,2),De=S(B(Ee),2);l(De,23,()=>_e,e=>e.id,(e,t,r)=>{var i=yi();let a;var o=B(i,!0);H(i),d(()=>{a=C(i,1,`appearance-seg__btn`,null,a,{"is-active":g(f)===g(t).id}),R(i,`aria-checked`,g(f)===g(t).id),R(i,`tabindex`,g(f)===g(t).id?0:-1),R(i,`title`,g(t).blurb),c(o,g(t).label)}),n(`click`,i,()=>_(g(t).id)),n(`keydown`,i,e=>y(e,_e.length,g(r),e=>_(_e[e].id))),u(e,i)}),H(De),H(Ee);var Oe=S(Ee,2),G=S(B(Oe),2);l(G,23,()=>Se,e=>e.id,(e,t,r)=>{var i=yi();let a;var o=B(i,!0);H(i),d(()=>{a=C(i,1,`appearance-seg__btn`,null,a,{"is-active":g(p)===g(t).id}),R(i,`aria-checked`,g(p)===g(t).id),R(i,`tabindex`,g(p)===g(t).id?0:-1),R(i,`title`,g(t).blurb),c(o,g(t).label)}),n(`click`,i,()=>v(g(t).id)),n(`keydown`,i,e=>y(e,Se.length,g(r),e=>v(Se[e].id))),u(e,i)}),H(G),H(Oe),H(U),H(T),d(e=>{R(D,`data-layout`,g(f)),R(D,`data-density`,g(p)),c(N,g(a)),c(I,g(i)),c(ie,g(a)),c(se,g(i)),c(fe,e)},[()=>we.find(e=>e.id===g(s))?.label]),u(e,x),ee()}U([`click`,`keydown`]);var Ci=o(` `,1),wi=o(` `,1),Ti=o(` `,1),Ei=o(` `,1),Di=o(`
                • `),Oi=o(`
                • `),ki=o(`

                    `),Ai=o(`

                    Loading...

                    `),ji=o(`

                    `),Mi=o(`

                    Account

                    Profile settings

                    How you appear across ClickClack.

                    `,1),Ni=o(`

                    Account

                    Notifications

                    Decide when and how ClickClack should reach you.

                    `,1),Pi=o(``);function Fi(e,r){b(r,!0);let i=x(r,`workspaces`,19,()=>[]),o=x(r,`initialSection`,3,Oe),s=x(r,`isDesktop`,3,!1),f=P(L(Oe)),p=P(null),m=k(()=>g(p)?.id===r.user.id?g(p):r.user),_=P(`ready`),v=P(``);t(()=>{E(f,o(),!0)}),re(()=>{y()});async function y(){E(_,`loading`);try{let e=await me();E(p,e.user,!0),r.onUserUpdated?.(e.user),E(_,`ready`)}catch(e){if(e instanceof fe&&(e.status===401||e.status===403)){E(_,`error`),E(v,`Sign in to manage your account`);return}E(_,`error`),E(v,e instanceof Error?e.message:`Could not load your account`,!0)}}function w(e){E(p,e,!0),r.onUserUpdated?.(e)}function T(e){e.target===e.currentTarget&&r.onClose()}function D(e){if(e.key!==`Escape`)return;let t=e.target;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||(e.preventDefault(),r.onClose())}function O(e,t){r.onClose(),ce(Ee(e.route_id||e.id,t))}var A=Pi();h(`keydown`,ne,D);var N=B(A),F=B(N),te=S(F,2),I=B(te),z=S(B(I),2);l(z,21,()=>G,e=>e.id,(e,t)=>{var r=Di(),i=B(r);let a;var o=B(i),s=e=>{var n=Ci(),r=j(n);Q(r,{class:`settings-modal__rail-avatar`,get id(){return g(m).id},get name(){return g(m).display_name},get src(){return g(m).avatar_url},size:18});var i=S(r,2),a=B(i,!0);H(i),d(()=>c(a,g(m).display_name||g(t).label)),u(e,n)},l=e=>{var n=wi(),r=S(j(n),2),i=B(r,!0);H(r),d(()=>c(i,g(t).label)),u(e,n)},p=e=>{var n=Ti(),r=S(j(n),2),i=B(r,!0);H(r),d(()=>c(i,g(t).label)),u(e,n)},h=e=>{var n=Ei(),r=S(j(n),2),i=B(r,!0);H(r),d(()=>c(i,g(t).label)),u(e,n)};M(o,e=>{g(t).id===`profile`?e(s):g(t).id===`appearance`?e(l,1):g(t).id===`notifications`?e(p,2):g(t).id===`bots`&&e(h,3)}),H(i),H(r),d(()=>{a=C(i,1,`settings-modal__rail-item`,null,a,{"is-active":g(f)===g(t).id}),R(i,`aria-current`,g(f)===g(t).id?`page`:void 0)}),n(`click`,i,()=>E(f,g(t).id,!0)),u(e,r)}),H(z),H(I);var ie=S(I,2);l(ie,17,i,e=>e.id,(e,t)=>{var r=ki(),i=B(r),o=B(i);H(i);var s=S(i,2);l(s,21,()=>De,e=>e.id,(e,r)=>{var i=a(),o=j(i),s=e=>{var i=Oi(),a=B(i),o=S(B(a),2),s=B(o,!0);H(o),H(a),H(i),d(()=>c(s,g(r).label)),n(`click`,a,()=>O(g(t),g(r).slug)),u(e,i)},l=k(()=>!g(r).managersOnly||ke(g(t).role));M(o,e=>{g(l)&&e(s)}),u(e,i)}),H(s),H(r),d(()=>{R(i,`title`,g(t).name),c(o,`Workspace · ${g(t).name??``}`)}),u(e,r)}),H(te);var V=S(te,2),ae=B(V),oe=e=>{var t=Ai();u(e,t)},se=e=>{var t=ji(),n=B(t,!0);H(t),d(()=>c(n,g(v))),u(e,t)},U=e=>{var t=Mi();ai(S(j(t),2),{get user(){return g(m)},get hideCommentary(){return r.hideCommentary},get hideToolCalls(){return r.hideToolCalls},get userAlign(){return r.userAlign},get otherAlign(){return r.otherAlign},get isDesktop(){return s()},onUserUpdated:w,get onSaved(){return r.onClose},get onHideCommentary(){return r.onHideCommentary},get onHideToolCalls(){return r.onHideToolCalls},get onUserAlign(){return r.onUserAlign},get onOtherAlign(){return r.onOtherAlign},get onBrowserNotificationsChanged(){return r.onBrowserNotificationsChanged}}),u(e,t)},le=e=>{Si(e,{get user(){return g(m)}})},ue=e=>{var t=Ni();li(S(j(t),2),{get user(){return g(m)},get isDesktop(){return s()},onUserUpdated:w,get onBrowserNotificationsChanged(){return r.onBrowserNotificationsChanged}}),u(e,t)},de=e=>{vi(e,{get onClose(){return r.onClose}})};M(ae,e=>{g(_)===`loading`?e(oe):g(_)===`error`?e(se,1):g(f)===`profile`?e(U,2):g(f)===`appearance`?e(le,3):g(f)===`notifications`?e(ue,4):g(f)===`bots`&&e(de,5)}),H(V),H(N),H(A),n(`click`,A,T),n(`click`,F,function(...e){r.onClose?.apply(this,e)}),u(e,A),ee()}U([`click`]);var Ii=o(`
                    No thread open Hover any message and tap the bubble to keep side conversations tidy.
                    `);function Li(e){var t=Ii();u(e,t)}var Ri=o(``),$=o(`

                    `,1),zi=o(``),Bi=o(``),Vi=o(``),Hi=o(``),Ui=o(`
                    `),Wi=o(`Connecting…`),Gi=o(`
                    `);function Ki(e,t){b(t,!0);function r(e){return e===`muted`?`Channel muted - click to change`:e===`mentions`?`Notifications for @mentions only - click to change`:`All notifications enabled - click to change`}let i=x(t,`channelNotifPreference`,3,void 0),a=x(t,`channelNotifSaving`,3,!1),o=x(t,`onToggleChannelNotifications`,3,()=>{}),s=k(()=>Ye(t.externalURL));var l=Gi(),f=B(l),p=B(f),m=B(p),_=B(m),v=S(B(_),2);H(_),H(m);var y=S(m,2),C=B(y,!0);H(y);var T=S(y,2),E=e=>{var n=$(),r=S(j(n),2),i=B(r,!0);H(r);var a=S(r,2),o=e=>{var t=Ri();d(()=>R(t,`href`,g(s))),u(e,t)};M(a,e=>{g(s)&&e(o)}),d(()=>{R(r,`title`,t.channelTitle),c(i,t.channelTitle)}),u(e,n)};M(T,e=>{t.channelTitle&&e(E)}),H(p);var D=S(p,2),N=S(B(D),2);O(N);var P=S(N,2),F=e=>{var r=zi();n(`click`,r,function(...e){t.onResetSearch?.apply(this,e)}),u(e,r)};M(P,e=>{t.searchQuery&&e(F)}),w(2),H(D);var te=S(D,2),ne=e=>{var t=Ui(),s=B(t),c=B(s),l=e=>{var t=Bi();u(e,t)},f=e=>{var t=Vi();u(e,t)},p=e=>{var t=Hi();u(e,t)};M(c,e=>{i()===`muted`?e(l):i()===`mentions`?e(f,1):e(p,-1)}),H(s),H(t),d((e,t)=>{R(s,`title`,e),R(s,`aria-label`,t),R(s,`aria-busy`,a()),s.disabled=a()},[()=>r(i()),()=>r(i())]),n(`click`,s,function(...e){o()?.apply(this,e)}),u(e,t)};M(te,e=>{i()&&e(ne)});var I=S(te,2),L=e=>{var t=Wi();u(e,t)};M(I,e=>{t.connected||e(L)}),H(f),H(l),d(()=>{R(l,`data-platform`,t.platform),R(m,`aria-label`,t.mobileNavigation?t.mobileNavOpen?`Close navigation`:`Open navigation`:t.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),R(m,`title`,t.mobileNavigation?t.mobileNavOpen?`Close navigation`:`Open navigation`:t.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),R(v,`d`,t.mobileNavigation?t.mobileNavOpen?`m15 9-3 3 3 3`:`m9 9 3 3-3 3`:t.sidebarCollapsed?`m13 9 3 3-3 3`:`m16 9-3 3 3 3`),c(C,t.workspaceName||`ClickClack`),A(N,t.searchQuery)}),n(`click`,m,function(...e){t.onToggleSidebar?.apply(this,e)}),n(`click`,y,function(...e){t.onOpenWorkspaceSettings?.apply(this,e)}),h(`submit`,D,e=>{e.preventDefault(),t.onSearch()}),n(`input`,N,e=>t.onSearchQuery(e.currentTarget.value)),u(e,l),ee()}U([`click`,`input`]);var qi=o(`

                    `),Ji=o(``),Yi=o(``),Xi=o(``),Zi=o(``),Qi=o(`

                    `,1),$i=o(`

                    ClickClack

                    `),ea=o(``),ta=o(``),na=o(`

                    `);function ra(e,t){b(t,!0);function r(e){return e===`muted`?`Channel muted - click to change`:e===`mentions`?`Notifications for @mentions only - click to change`:`All notifications enabled - click to change`}let i=x(t,`channelNotifPreference`,3,void 0),a=x(t,`channelNotifSaving`,3,!1),o=x(t,`onToggleChannelNotifications`,3,()=>{}),s=k(()=>t.selectedDirect?void 0:Ye(t.selectedChannel?.external_url));var l=na(),f=B(l),p=B(f),m=e=>{var n=qi(),r=B(n,!0);H(n),d(e=>c(r,e),[()=>`@${Ie(t.selectedDirect,t.currentUserID)}`]),u(e,n)},_=e=>{var s=Qi(),l=j(s),f=B(l,!0);H(l);var p=S(l,2),m=e=>{var t=Zi(),s=B(t),c=e=>{var t=Ji();u(e,t)},l=e=>{var t=Yi();u(e,t)},f=e=>{var t=Xi();u(e,t)};M(s,e=>{i()===`muted`?e(c):i()===`mentions`?e(l,1):e(f,-1)}),H(t),d((e,n)=>{R(t,`title`,e),R(t,`aria-label`,n),R(t,`aria-busy`,a()),t.disabled=a()},[()=>r(i()),()=>r(i())]),n(`click`,t,function(...e){o()?.apply(this,e)}),u(e,t)};M(p,e=>{i()&&e(m)}),d(e=>c(f,e),[()=>`#${Xe(t.selectedChannel)}`]),u(e,s)},v=e=>{var t=$i();u(e,t)};M(p,e=>{t.selectedDirect?e(m):t.selectedChannel?e(_,1):e(v,-1)});var y=S(p,4),T=B(y,!0);H(y),H(f);var E=S(f,2),D=S(B(E),2);O(D);var N=S(D,2),P=e=>{var r=ea();n(`click`,r,function(...e){t.onResetSearch?.apply(this,e)}),u(e,r)};M(N,e=>{t.searchQuery&&e(P)}),w(2),H(E);var F=S(E,2),te=B(F),ne=e=>{var t=ta();d(()=>R(t,`href`,g(s))),u(e,t)};M(te,e=>{g(s)&&e(ne)});var I=S(te,2);let L;var z=S(I,2);H(F),H(l),d(()=>{c(T,t.workspaceName||`no workspace`),A(D,t.searchQuery),R(I,`title`,t.threadOpen?`Close thread`:`Open a message thread`),R(I,`aria-label`,t.threadOpen?`Close thread`:`Open a message thread`),L=C(I,1,``,null,L,{active:t.sidePanelOpen})}),h(`submit`,E,e=>{e.preventDefault(),t.onSearch()}),n(`input`,D,e=>t.onSearchQuery(e.currentTarget.value)),n(`click`,I,function(...e){t.onToggleThread?.apply(this,e)}),n(`click`,z,function(...e){t.onPinnedItems?.apply(this,e)}),u(e,l),ee()}U([`click`,`input`]);async function ia(e){return(await W(`/api/workspaces/${e}/bot-commands`)).bot_commands??[]}function aa(e){let t=e.trim().toLowerCase();return t?t.startsWith(`/`)?t:`/${t}`:``}function oa(e){let t=/^(\/\S+)\s*([\s\S]*)$/.exec(e);return t?{command:aa(t[1]),text:t[2].trim()}:null}function sa(e,t){return e.find(e=>!e.revoked_at&&aa(e.command)===t)}async function ca(e,t,n){let r=new URLSearchParams;r.set(`command`,t),r.set(`text`,n);let i=await fetch(ue(`/api/hooks/slash/${e}`),{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/x-www-form-urlencoded`,"X-ClickClack-CSRF":`1`},body:r.toString()}),a=await i.text();if(!i.ok)throw new fe(i.status,a);let o=a?JSON.parse(a):{};return{response_type:o.response_type||`in_channel`,text:(o.text||``).trim()}}var la=e({default:()=>Sa}),ua=o(``),da=o(``),fa=o(`
                    cc
                    ClickClack OpenClaw workspace chat

                    Welcome.

                    Sign in with GitHub to join the guest room.

                    `,1),pa=o(``),ma=o(``),ha=o(`
                    Showing topic
                    `),ga=o(`
                    `),_a=o(``),va=o(``),ya=o(``),ba=o(``),xa=o(`
                    `,1);function Sa(e,t){b(t,!1);let i=V(),o=V(),p=V(),w=V(),T=V(),O=V(),k=V(),A=V(),N=V(),P=V(),F=V(),L=V(),ae=V(),se=V(),U=V(),le=V(),pe=V(),he=V(),ge=V(),_e=V(),ve=V(),ye=V(),be=`clickclack:hide-commentary:v1`,xe=`clickclack:hide-tool-calls:v1`,Se=`clickclack:user-align:v1`,Ce=`clickclack:other-align:v1`,we=Date.now(),Te=tt?.integratedTitleBar===!0,De=x(t,`routeWorkspaceID`,8,``),Oe=x(t,`routeTargetID`,8,``),G=V(null),ke=new Be(()=>g(G)?.id||``),Ae=new Me(eo),je=V([]),K=V([]),Pe=V([]),Le=V(null),Re=new Map,ze=V(!1),q=V([]),J=V([]),Ve=V([]),Y=V(``),X=V(``),Z=V(``),Q=V(null),Ue=V(``),We=V(``),qe=0,Ye=``,Qe=!1,$e=new Map,rt=V(null),it=V(null),ot=V([]),st=V([]),ct=V([]),lt=V(null),ut=V([]),dt=V(null),ft=V(null),pt=V(``),mt=V(null),ht=null,_t=V(null),vt=V(null),yt=new Set,xt=V(``),St=V(``),Ct=V(``),wt=V(``),Tt=V(``),Dt=V(``),Ot=V(null),kt=V(!1),At=0,jt=0,Mt=V(null),Pt=V(!1),It=V(!1),Lt=V(`profile`),Rt=V(!1),zt=V(!1),Bt=V(``),Vt=V(!1),Ht=V(!1),Ut=V(!1),Wt=V(`left`),Gt=V(`left`),Kt=V(`loading`),qt=V(!1),Jt=V(``),Yt=V(!1),Xt=``,Zt=``,Qt=``,$t=null,en=Promise.resolve(),tn=V(null),nn=new Map,rn=V(new Map),an=new Set,on=V(`idle`),sn=`idle`,cn=!1,ln=!1,un=V(!1),dn=V(!1),fn=V(!1),pn=V(!1),mn=new Map,hn=0,gn=V(``),vn=V(void 0),yn=V(``),Sn=V(!0),Tn=V(!1),En=V(!1),Dn=V(!1),kn=V(!1),jn=V(null),Mn=V(null),Pn=V(null),Fn=V(null),In=V(`message`),Rn=V([]),zn,Bn=V([]),Vn,Hn=V(Date.now()),Wn,Gn=V(``),Kn=0,qn=0,Jn=0,Yn=0,Xn=0,Zn=0,Qn=0,$n=0,er=0,tr=0,nr=0,rr=0,ir=V(null),ar,or=V(new Set),sr=V(null),cr=V(``);function lr(e){e!==Ye&&(Ye=e,Qe=!1,E(Ue,``),ur(``))}function ur(e){e!==g(We)&&(E(We,e),qe+=1)}function dr(){return`${g(Y)}:${$()}:${g(We)}:${qe}`}function fr(e,t){return t?e.filter(e=>!e.archived_at&&(!e.channel_id||e.channel_id===t)):[]}re(()=>{gr(),Wn=window.setInterval(()=>{E(Hn,Date.now())},3e4),Er(),Sr();let e=window.matchMedia(`(max-width: 820px)`),t=()=>{E(Dn,!1),E(kn,e.matches)};t();let n=tt?.onNavigate(e=>{ce(e,{keepFocus:!0,noScroll:!0})}),r=tt?.onQuickCompose(()=>pr());return e.addEventListener(`change`,t),()=>{e.removeEventListener(`change`,t),n?.(),r?.()}});function pr(){s().then(()=>{(g(In)===`thread`?g(Fn):g(Pn))?.focus()})}async function mr(e){if(tt){e.preventDefault(),E(Jt,`Opening GitHub in your browser…`);try{await tt.signInWithGitHub(),E(Jt,`Finish signing in in your browser. ClickClack will complete here automatically.`)}catch{E(Jt,`Could not open your browser. Try again.`)}}}function gr(){try{let e=window.localStorage.getItem(`clickclack:show-agent-activity:v1`)===`0`;E(Ht,window.localStorage.getItem(be)===`1`||e),E(Ut,window.localStorage.getItem(xe)===`1`||e),E(Wt,window.localStorage.getItem(Se)===`right`?`right`:`left`),E(Gt,window.localStorage.getItem(Ce)===`right`?`right`:`left`)}catch{E(Ht,!1),E(Ut,!1),E(Wt,`left`),E(Gt,`left`)}_r()}function _r(){try{document.documentElement.setAttribute(`data-user-align`,g(Wt)),document.documentElement.setAttribute(`data-other-align`,g(Gt))}catch{}}function vr(e){E(Wt,e),_r();try{window.localStorage.setItem(Se,e)}catch{}}function yr(e){E(Gt,e),_r();try{window.localStorage.setItem(Ce,e)}catch{}}function br(e){E(Ht,e);try{window.localStorage.setItem(be,e?`1`:`0`)}catch{}}function xr(e){E(Ut,e);try{window.localStorage.setItem(xe,e?`1`:`0`)}catch{}}te(()=>{$t?.close(),$t=null,E(Yt,!1),Ft(),zn&&window.clearInterval(zn),Vn&&window.clearInterval(Vn),Wn&&window.clearInterval(Wn),ar&&clearTimeout(ar),ns(!1,null)});async function Sr(){try{let e=await me();if(E(G,e.user),Er(),await jr(),g(je).length===0){E(Kt,`create a workspace`);return}await qr(De(),Oe()),E(Kt,`ready`)}catch(e){if(e instanceof fe&&(e.status===401||e.status===403)){E(qt,!0),E(Kt,`auth`);return}E(Kt,e instanceof Error?e.message:`Could not load ClickClack`)}}function Cr(){g(G)&&(E(Lt,`profile`),E(It,!0))}function wr(){let e=g(i)?.route_id||g(Y)||De();e&&ce(Ee(e))}function Tr(e){E(G,e),Pa(g(J).map(t=>t.author?.id===e.id?{...t,author:e}:t)),E(Ve,g(Ve).map(t=>t.author?.id===e.id?{...t,author:e}:t)),g(Q)?.author?.id===e.id&&E(Q,{...g(Q),author:e})}function Er(){if(tt){E(Vt,kr());return}let e=kr();E(Vt,typeof Notification<`u`&&Notification.permission===`granted`&&e),e&&!g(Vt)&&Ar(!1)}function Dr(){return g(G)?.id?`clickclack:browser-notifications-enabled:v1:${g(G).id}`:``}function kr(){let e=Dr();if(!e)return!1;try{return window.localStorage.getItem(e)===`enabled`}catch{return!1}}function Ar(e){let t=Dr();if(!t)return!1;try{return e?window.localStorage.setItem(t,`enabled`):window.localStorage.removeItem(t),!0}catch{return!1}}async function jr(){let e=++Jn,t=await W(`/api/workspaces`);e===Jn&&E(je,t.workspaces)}function Mr(e=``,t=``){return`${e||``}/${t||``}`}function Nr(e=g(Y),t=``){let n=Fr(e);if(!n)return`/app`;let r=`/app/${encodeURIComponent(n)}`,i=Ir(t);return i?`${r}/${encodeURIComponent(i)}`:r}function Pr(e){let t=g(K).find(t=>t.id===e)?.route_id||g(q).find(t=>t.id===e)?.route_id;return t?Nr(g(Y),t):!g(Y)||!e?`/app`:`/app/${encodeURIComponent(g(Y))}/${encodeURIComponent(e)}`}function Fr(e=g(Y)){return e?g(je).find(t=>t.id===e||t.route_id===e)?.route_id||e:``}function Ir(e=``){return e?g(K).find(t=>t.id===e||t.route_id===e)?.route_id||g(q).find(t=>t.id===e||t.route_id===e)?.route_id||g(Q)?.id===e&&g(Q).route_id||g(J).find(t=>t.id===e)?.route_id||e:``}async function Lr(e=g(Y),t=``,n=!1){let r=Nr(e,t);window.location.pathname!==r&&await ce(r,{replaceState:n,noScroll:!0,keepFocus:!0})}function Rr(){g(kt)&&xo(),E(Q,null),E(rt,null),E(it,null),E(In,`message`),E(Ve,[]),E(Dn,!1)}function zr(e=g(Y)){return Ur(e)||g(K).find(e=>e.name.toLowerCase()===`guest`)?.id||g(K)[0]?.id||g(q)[0]?.id||``}function Br(e=g(Y)){return g(je).find(t=>t.id===e||t.route_id===e)}function Vr(e=g(Y)){let t=Br(e),n=t?.route_id||t?.id||e;return n?`clickclack:last-channel:v1:${n}`:``}function Hr(e){try{let t=JSON.parse(e);return{id:typeof t.id==`string`?t.id:``,routeID:typeof t.routeID==`string`?t.routeID:``}}catch{return{id:e}}}function Ur(e=g(Y)){let t=Vr(e);if(!t)return``;let n;try{let e=window.localStorage.getItem(t);if(!e)return``;n=Hr(e)}catch{return``}let r=g(K).find(e=>e.id===n.id||e.route_id===n.routeID);if(r)return r.id;try{window.localStorage.removeItem(t)}catch{}return``}function Wr(e,t){if(!e||!t)return;let n=g(K).find(e=>e.id===t);if(!n)return;let r=Vr(e);if(r)try{window.localStorage.setItem(r,JSON.stringify({id:n.id,routeID:n.route_id}))}catch{}}function Kr(e){Qt===e&&(Qt=``,Lo())}async function qr(e=``,t=``){let n=++Kn;ke.clear();let r=Mr(e,t),i=t.trim()?await Yr(e,t):null;if(n!==Kn)return;let a=i?g(je).find(e=>e.id===i.workspace_id):g(je).find(t=>t.id===e||t.route_id===e)||g(je)[0];if(!a){bi(``,yi({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`),E(Gn,r);return}let o=i?Mr(i.workspace_route_id,i.target_route_id):Mr(a.route_id,``),s=g(Y)!==a.id;if(s&&(Ma(),Ae.clear(),E(Y,a.id),Xn+=1,$n+=1,er+=1,E(st,[]),E(ct,[]),E(Pe,[]),E(X,``),E(Z,``),E(Q,null),E(rt,null),E(it,null),E(In,`message`),E(Ve,[]),xo(),Di(),E(Sn,!0),Qt=a.id),(s||g(K).length===0)&&await $r(!1,!1),n!==Kn||((s||g(q).length===0)&&await Oo(),s&&await Promise.all([ni(),ri(a.id),ii(a.id),ei(a.id)]),n!==Kn))return;if(i){let e=await Jr(i,n);if(n!==Kn)return;if(!e){Rr(),await Lr(a.id,zr(),!0);return}}if(i?.canonical_path&&window.location.pathname!==i.canonical_path&&(E(Gn,o),await ce(i.canonical_path,{replaceState:!0,noScroll:!0,keepFocus:!0}),n!==Kn))return;if(i?.target_type===`channel`&&g(K).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&g(X)===e&&!g(Z)&&g(gn)===e;if(E(X,e),E(Z,``),Wr(a.id,e),Rr(),t){E(Gn,o),wi(e),Kr(a.id);return}if(lr(e),await pi(),n!==Kn)return;E(Gn,o),Kr(a.id);return}if(i?.target_type===`direct`&&g(q).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&g(Z)===e&&!g(X)&&g(gn)===e;if(E(Z,e),E(X,``),Rr(),t){E(Gn,o),wi(e),Kr(a.id);return}if(lr(e),await pi(),n!==Kn)return;E(Gn,o),Kr(a.id);return}if(i?.target_type===`thread`){let e=await Xr(i);if(n!==Kn)return;if(e){E(Gn,o),Kr(a.id);return}}let c=zr();if(Rr(),!c){E(X,``),E(Z,``),lr(``),await pi(),E(Gn,r),(e!==a.route_id||t)&&await Lr(a.id,``,!0),Kr(a.id);return}await Lr(a.id,c,!0)}async function Jr(e,t){return e.target_type===`channel`?(g(K).some(t=>t.id===e.target_id)||await $r(!1,!1,!1),t===Kn&&g(K).some(t=>t.id===e.target_id)):e.target_type===`direct`?(g(q).some(t=>t.id===e.target_id)||(await Oo(),g(q).some(t=>t.id===e.target_id)||ko((await W(`/api/dms/${e.target_id}`)).conversation)),t===Kn&&g(q).some(t=>t.id===e.target_id)):e.parent_type===`channel`&&e.parent_id?(g(K).some(t=>t.id===e.parent_id)||await $r(!1,!1,!1),t===Kn&&g(K).some(t=>t.id===e.parent_id)):e.parent_type===`direct`&&e.parent_id?(g(q).some(t=>t.id===e.parent_id)||(await Oo(),g(q).some(t=>t.id===e.parent_id)||ko((await W(`/api/dms/${e.parent_id}`)).conversation)),t===Kn&&g(q).some(t=>t.id===e.parent_id)):!0}async function Yr(e,t){try{return(await W(`/api/routes/${encodeURIComponent(e)}/${encodeURIComponent(t)}`)).route}catch(e){if(e instanceof fe&&(e.status===403||e.status===404))return null;throw e}}async function Xr(e){if(e.workspace_id!==g(Y))return!1;let t=e.parent_type===`channel`&&e.parent_id||``,n=e.parent_type===`direct`&&e.parent_id||``;if(t){if(!g(K).some(e=>e.id===t))return!1;E(X,t),E(Z,``),Wr(e.workspace_id,t)}else if(n){if(!g(q).some(e=>e.id===n))return!1;E(Z,n),E(X,``)}else return!1;let r=g(Q)?.id===e.target_id&&g(gn)===$();return E(it,null),E(In,`thread`),E(Dn,!1),await ao(e.target_id),!r&&g(Q)&&await To(g(Q)),!0}async function Zr(){if(!g(Ct).trim())return;let e=await W(`/api/workspaces`,{method:`POST`,body:JSON.stringify({name:g(Ct)})});E(Ct,``),E(Tn,!1),E(je,[...g(je),e.workspace]),E(Dn,!1),await qr(e.workspace.route_id||e.workspace.id,``),await Lr(e.workspace.id),E(Kt,`ready`)}async function Qr(e){E(Dn,!1),await Lr(e)}async function $r(e=!0,t=!0,n=!0){let r=g(Y);if(!r)return;let i=++Yn,a=await W(`/api/workspaces/${r}/channels`);i===Yn&&r===g(Y)&&(E(K,a.channels),t?E(X,g(K).find(e=>e.id===g(X))?.id||g(K).find(e=>!e.archived_at)?.id||g(K)[0]?.id||``):g(X)&&!g(K).some(e=>e.id===g(X))&&E(X,``),n&&(g(kt)&&xo(),E(Q,null),E(it,null),E(In,`message`),E(Ve,[])),e&&await pi())}async function ei(e=g(Y)){let t=++Xn,n=$(),r=g(X),i=!1;if(!e){E(Pe,[]);return}try{let a=await W(`/api/workspaces/${e}/topics`);if(t!==Xn||e!==g(Y)||(E(Pe,a.topics),$()!==n||g(X)!==r))return;let o=new Set(fr(a.topics,r).map(e=>e.id));g(Ue)&&!o.has(g(Ue))&&E(Ue,``),g(We)&&!o.has(g(We))&&(ur(``),nn.delete($()),g(rn).delete($()),i=!0)}catch{return}if(!(!i||$()!==n))try{await mi()}catch(e){if($()!==n||g(We))return;Pa(qa(n)),E(lt,{kind:`error`,text:e instanceof Error?`Topic changed, but messages could not reload: ${e.message}`:`Topic changed, but messages could not reload`})}}function ti(){E(In,`message`),g(X)&&ei()}async function ni(e=g(Y)){let t=++Qn;if(!e||e!==g(Y)||g(o)!==`owner`&&g(o)!==`moderator`){t===Qn&&E(ot,[]);return}try{let n=await W(`/api/workspaces/${e}/moderation/members`);if(t!==Qn||e!==g(Y))return;E(ot,n.members)}catch{t===Qn&&e===g(Y)&&E(ot,[])}}async function ri(e=g(Y)){let t=++$n;if(!e){E(st,[]);return}try{let n=await W(`/api/workspaces/${e}/slash-commands`);if(t!==$n||e!==g(Y))return;E(st,n.slash_commands)}catch{t===$n&&e===g(Y)&&E(st,[])}}async function ii(e=g(Y),t=!1){let n=++er;if(!e){E(ct,[]);return}try{let t=await ia(e);if(n!==er||e!==g(Y))return;E(ct,t)}catch(r){let i=n===er&&e===g(Y);if(i&&E(ct,[]),t&&i)throw r}}function ai(e){rr+=1,E(lt,null)}function oi(e,t,n,r){let i=new Map;for(let e of n)e.user.id&&e.user.handle?.trim()&&!e.user.deleted_at&&i.set(e.user.id,e.user);for(let e of r?.members||[])e.id&&e.handle?.trim()&&!e.deleted_at&&i.set(e.id,e);for(let e of t)e.id&&e.handle?.trim()&&!e.deleted_at&&i.set(e.id,e);return e?.id&&e.handle?.trim()&&i.set(e.id,e),[...i.values()].slice(0,24)}async function si(e,t){if(!g(Y))return;let n=await W(`/api/workspaces/${g(Y)}/moderation/members/${e}`,{method:`PATCH`,body:JSON.stringify(t)});E(ot,[...g(ot).filter(t=>t.user.id!==e),n.member]),await $r(!1,!1,!1),E(Kt,`ready`)}async function ci(){if(!g(Y)||!g(wt).trim())return;let e=await W(`/api/workspaces/${g(Y)}/channels`,{method:`POST`,body:JSON.stringify({name:g(wt),kind:`public`})});E(wt,``),E(K,[...g(K),e.channel]),E(Rt,!1),await Lr(g(Y),e.channel.id)}async function li(e){E(Dn,!1),Wr(g(Y),e);let t=Nr(g(Y),e);e===g(X)&&!g(Z)&&window.location.pathname===t||await Lr(g(Y),e)}async function ui(e,t){let n=++tr;if(E(Le,null),!(!e||t))try{let t=await W(`/api/channels/${e}/notification-settings`);if(n!==tr||e!==g(X)||g(Z))return;Ca(e,t.preference),E(Le,t.preference)}catch{if(n===tr&&e===g(X)&&!g(Z)){let t=Sa(e)||`all`;Ca(e,t),E(Le,t)}}}async function di(){let e=g(X);if(!e||g(Z)||g(ze)||!g(Le))return;let t=++tr,n=[`all`,`mentions`,`muted`],r=g(Le),i=n[(n.indexOf(r)+1)%n.length];E(Le,i),Ca(e,i),E(ze,!0);try{await W(`/api/channels/${e}/notification-settings`,{method:`PATCH`,body:JSON.stringify({preference:i})})}catch{Re.get(e)===i&&Ca(e,r),t===tr&&e===g(X)&&!g(Z)&&E(Le,r)}finally{E(ze,!1)}}function fi(e,t){return e===qn&&$()===t}async function pi(e=!0){e&&Ma();let t=$(),n=++qn,r=t!==g(gn);Di(),r&&E(Sn,!0);try{if(!g(Z)&&!g(X)){bi(``,yi({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}let e=await W(_i(hi()));if(!fi(n,t))return;bi(t,yi(e),`replace`)}finally{fi(n,t)&&E(Sn,!1)}}async function mi(){let e=$();if(!e)return;let t=++qn;Di(),E(Sn,!0),nn.set(e,{atBottom:!0});try{let n=await W(_i(`limit=100`));if(!fi(t,e))return;bi(e,yi(n),`replace`)}finally{fi(t,e)&&E(Sn,!1)}}function hi(){let e=gi(),t=e.unread_count||0,n=e.last_read_seq||0;return t>0?`around_seq=${encodeURIComponent(String(n+1))}&limit=100`:`limit=100`}function gi(){return g(Z)?g(q).find(e=>e.id===g(Z))||{}:g(X)&&g(K).find(e=>e.id===g(X))||{}}function _i(e){let t=g(Z)?`/api/dms/${g(Z)}/messages`:`/api/channels/${g(X)}/messages`,n=new URLSearchParams(e);!g(Z)&&g(We)&&n.set(`topic_id`,g(We));let r=n.toString();return r?`${t}?${r}`:t}async function vi(e){if(!g(X)||e===g(We)||Qe)return;let t=$(),n=g(We),r=g(Ue),i=g(rn).get(t),a=nn.get(t);Qe=!0,ur(e);let o=qe;e&&E(Ue,e),nn.delete(t),g(rn).delete(t);try{if(await mi(),$()!==t||qe!==o)return}catch(s){if($()!==t||qe!==o)return;ur(n),g(Ue)===e&&E(Ue,r),g(rn).delete(t);let c=qe;try{if(await mi(),$()!==t||qe!==c)return;a&&(nn.set(t,a),E(vn,a))}catch{if($()!==t||qe!==c)return;i?(xi(t,i),Na(t,i.messages),wi(t,i)):Pa(qa(t)),a&&(nn.set(t,a),E(vn,a))}E(lt,{kind:`error`,text:s instanceof Error?`Topic could not change: ${s.message}`:`Topic could not change`})}finally{Qe=!1}}function yi(e){return{messages:e.messages,oldest_seq:e.oldest_seq,newest_seq:e.newest_seq,has_older:e.has_older,has_newer:e.has_newer}}function bi(e,t,n){let r=Ai(e,t.messages,n),i=r[0]?.channel_seq||0,a=r[r.length-1]?.channel_seq||0,o=i>(t.messages[0]?.channel_seq||i),s=a<(t.messages[t.messages.length-1]?.channel_seq||a),c={messages:r,oldest_seq:i,newest_seq:a,has_older:t.has_older||o,has_newer:t.has_newer||s};xi(e,c),wi(e,c),Na(e,r)}function xi(e,t){e&&(g(rn).delete(e),g(rn).set(e,t),Si(e),Ci(e),E(rn,new Map(g(rn))))}function Si(e){let t=g(rn).size+1;for(;g(rn).size>8&&t>0;){t--;let n=g(rn).keys().next().value;if(!n)return;if(n===e){let e=g(rn).get(n);g(rn).delete(n),e&&g(rn).set(n,e);continue}g(rn).delete(n)}}function Ci(e){let t=nn.size+1;for(;nn.size>16&&t>0;){t--;let n=nn.keys().next().value;if(!n)return;if(n===e){let e=nn.get(n);nn.delete(n),e&&nn.set(n,e);continue}nn.delete(n)}}function wi(e,t=g(rn).get(e)){e===$()&&(E(un,t?.has_older||!1),E(dn,t?.has_newer||!1))}function Ti(e){let t=g(rn).get(e);!e||!t||(xi(e,{...t,has_newer:!0}),wi(e))}function Ei(e,t){e===`older`?(E(on,t),E(fn,t===`loading`)):(sn=t,E(pn,t===`loading`))}function Di(){an=new Set,E(on,`idle`),sn=`idle`,cn=!1,ln=!1,E(fn,!1),E(pn,!1)}function Oi(e,t){let n=new Map;for(let r of[...e,...t])n.set(r.id,r);return[...n.values()].sort((e,t)=>(e.channel_seq||0)-(t.channel_seq||0))}function ki(e){let t=new Set,n=Xi(e);if(n>=0){let r=Zi(e,g(J),n);r&&t.add(r.id)}let r=nn.get(e)?.anchorMessageID;r&&t.add(r);let i=Ae.session(e);i&&t.add(i.messageID),g(Q)&&Ia(g(Q),e)&&t.add(g(Q).id),g(jn)&&Ia(g(jn),e)&&t.add(g(jn).id);for(let n of g(J))(n.status===`pending`||n.status===`failed`)&&Ia(n,e)&&t.add(n.id);return t}function Ai(e,t,n){return Fe(t,n,ki(e))}function ji(){if(g(on)!==`idle`){cn=!0;return}Ni()}function Mi(e=!1){if(sn!==`idle`){e&&(ln=!0);return}Pi()}async function Ni(){let e=$(),t=dr(),n=g(rn).get(e),r=`${t}:older`;if(g(on)!==`idle`){cn=!0;return}if(!e||!n?.has_older||n.oldest_seq<=0||an.has(r))return;an.add(r),cn=!1,Ei(`older`,`loading`),Ma();let i=!1;try{let r=await W(_i(`before_seq=${encodeURIComponent(String(n.oldest_seq))}&limit=50`));if(dr()!==t)return;bi(e,{messages:Oi(r.messages,g(J)),oldest_seq:r.oldest_seq||n.oldest_seq,newest_seq:n.newest_seq,has_older:r.has_older,has_newer:n.has_newer},`prepend`),i=!0,Ei(`older`,`settling`)}catch(e){dr()===t&&E(Kt,e instanceof Error?e.message:`Could not load older messages`)}finally{an.delete(r),dr()===t&&!i&&Ei(`older`,`idle`)}}async function Pi(){let e=$(),t=dr(),n=g(rn).get(e),r=`${t}:newer`;if(sn!==`idle`){ln=!0;return}if(!e||an.has(r))return;if(!n||n.newest_seq<=0){await pi();return}an.add(r),ln=!1,Ei(`newer`,`loading`);let i=!1;try{let r=await W(_i(`after_seq=${encodeURIComponent(String(n.newest_seq))}&limit=50`));if(dr()!==t)return;if(r.messages.length===0){bi(e,{...n,has_newer:r.has_newer},`append`),i=!0,Ei(`newer`,`settling`);return}bi(e,{messages:Oi(g(J),r.messages),oldest_seq:n.oldest_seq,newest_seq:r.newest_seq||n.newest_seq,has_older:n.has_older,has_newer:r.has_newer},`append`),i=!0,Ei(`newer`,`settling`)}catch(e){dr()===t&&E(Kt,e instanceof Error?e.message:`Could not load newer messages`)}finally{an.delete(r),dr()===t&&!i&&Ei(`newer`,`idle`)}}function Ii(){let e=g(Y),t=$(),n=dr();if(!e||!t)return Promise.resolve();let r=en.catch(()=>void 0).then(async()=>{if(g(Y)!==e||$()!==t||dr()!==n)return;let r=g(rn).get(t);if(!r||r.newest_seq<=0){await pi();return}let i=await W(_i(`after_seq=${encodeURIComponent(String(r.newest_seq))}&limit=50`));if(g(Y)!==e||$()!==t||dr()!==n)return;let a=g(rn).get(t);if(!a)return;let o=i.newest_seq||r.newest_seq,s=o>a.newest_seq?i.has_newer:on&&(n=r.channel_seq));return n}function Bi(e,t=g(J)){let n=0;for(let r of t)r.direct_conversation_id===e&&typeof r.channel_seq==`number`&&r.channel_seq>n&&(n=r.channel_seq);return n}function Vi(e,t){return e&&t.unread_count||0}async function Hi(e,t){let n=g(K).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){E(K,g(K).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await W(`/api/channels/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}async function Ui(e,t){let n=g(q).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){E(q,g(q).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await W(`/api/dms/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}function Wi(e){let t=g(rn).get(e)?.newest_seq||0,n=g(K).find(t=>t.id===e);if(n)return Math.max(n.last_seq||0,(n.last_read_seq||0)+(n.unread_count||0),zi(e),t);let r=g(q).find(t=>t.id===e);return r?Math.max(r.last_seq||0,(r.last_read_seq||0)+(r.unread_count||0),Bi(e),t):0}function Gi(e){let t=g(rn).get(e);return!t||t.has_newer?0:g(K).find(t=>t.id===e)?zi(e):g(q).find(t=>t.id===e)?Bi(e):0}function qi(e={}){if(!e.all&&Date.now()e.id===t))return;if(!e.all&&!e.seq){let e=Xi(t);if(e>=0&&!ka(t,e))return}let n=e.all?Math.max(e.seq||0,Wi(t)):e.seq||Gi(t);if(!(n<=0)){if(g(q).some(e=>e.id===t)){Ui(t,n),e.all&&Ji(t,n);return}g(K).some(e=>e.id===t)&&(Hi(t,n),e.all&&Ji(t,n))}}function Ji(e,t){mn.delete(e),mn=new Map(mn),E(K,g(K).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n)),E(q,g(q).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n))}function Yi(e){let t=g(K).find(t=>t.id===e);return t?t.last_read_seq||0:g(q).find(t=>t.id===e)?.last_read_seq||0}function Xi(e){let t=g(K).find(t=>t.id===e);if(t)return Vi(e,t)>0?t.last_read_seq||0:-1;let n=g(q).find(t=>t.id===e);return n&&Vi(e,n)>0?n.last_read_seq||0:-1}function Zi(e,t,n){for(let r of t){if(!Ia(r,e)||r.parent_message_id||r.author?.id===g(G)?.id||r.author_id===g(G)?.id)continue;let t=r.channel_seq;if(typeof t==`number`&&t>n)return r}return null}function Qi(e,t){if(!e)return;let n=Oa(e);if(Vi(e,n)<=0){mn.delete(e),mn=new Map(mn);return}let r=n.last_read_seq||0,i=mn.get(e);if(i?.boundarySeq===r&&i.since||!ka(e,r))return;let a=Zi(e,t,r);a&&(mn=new Map(mn).set(e,{boundarySeq:r,since:ja(a.created_at)}))}function $i(e,t,n){if(!e||!n)return;let r=mn.get(e);r?.boundarySeq===t&&r.since||(mn=new Map(mn).set(e,{boundarySeq:t,since:ja(n)}))}function ea(e){let t=e.payload,n=t.channel_seq??e.seq??t.seq;return typeof n==`number`?n:Number(n)||0}function ta(e){let t=e.payload;return{channelID:e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),dmID:typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``}}async function na(e){try{let t=await W(`/api/channels/${e}/notification-settings`);return Ca(e,t.preference),e===g(X)&&!g(Z)&&!g(ze)&&E(Le,t.preference),t.preference}catch{return Sa(e)||`all`}}function aa(e){return g(G)?.id&&e?`clickclack:channel-notification:v1:${g(G).id}:${e}`:``}function la(e){let t=aa(e);if(!t)return null;try{let e=window.localStorage.getItem(t);return e===`all`||e===`mentions`||e===`muted`?e:null}catch{return null}}function Sa(e){return Re.get(e)||la(e)}function Ca(e,t){Re=new Map(Re).set(e,t);let n=aa(e);if(n)try{window.localStorage.setItem(n,t)}catch{}}async function wa(e,t){if(e.type!==`message.created`&&e.type!==`thread.reply_created`)return;let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`||!g(Vt)||document.visibilityState===`visible`&&t)return;let{channelID:i,dmID:a}=ta(e);if(i){let t=await na(i);if(!t||!g(Vt))return;let n=i===g(X)&&!g(Z);if(document.visibilityState===`visible`&&n||t===`muted`||t===`mentions`&&!e.mentioned_user_ids?.includes(g(G)?.id||``))return}let o=typeof n.message_id==`string`?n.message_id:`${e.channel_id||``}:${e.seq||Date.now()}`,s=typeof n.author_id==`string`?n.author_id:``,c=typeof n.body==`string`?n.body:`New message`;if(e.type===`thread.reply_created`&&typeof n.message_id==`string`)try{let e=await W(`/api/messages/${n.message_id}`);s=e.message.author_id,c=e.message.body}catch{}if(s&&s===g(G)?.id||!g(Vt)||document.visibilityState===`visible`&&(i&&i===g(X)||a&&a===g(Z)))return;let l=g(K).find(e=>e.id===i),u=qo(s)?.display_name||`ClickClack`,d=l?`#${Xe(l)}`:`Direct message`;if(tt){tt.notify({body:Ta(c),route:Pr(i||a),tag:`clickclack:${o}`,title:`${u} in ${d}`});return}if(!(typeof Notification>`u`||Notification.permission!==`granted`))try{let e=new Notification(`${u} in ${d}`,{body:Ta(c),tag:`clickclack:${o}`,icon:`/favicon.svg`});e.onclick=()=>{window.focus(),e.close(),i?li(i):a&&jo(a)}}catch{}}function Ta(e){let t=e.replace(/!\[[^\]]*]\([^)]+\)/g,`[image]`).replace(/\[[^\]]+]\(([^)]+)\)/g,`$1`).replace(/[`*_>#|]/g,``).replace(/\s+/g,` `).trim();return t?t.length>180?`${t.slice(0,177)}...`:t:`New message`}function Ea(e){if(e.type!==`message.created`)return!1;let t=ea(e);if(t<=0)return!1;let{channelID:n,dmID:r}=ta(e);return n?t<=(g(K).find(e=>e.id===n)?.last_seq||0):r?t<=(g(q).find(e=>e.id===r)?.last_seq||0):!1}async function Da(e){let t=e.payload,n=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;return!n||g(q).some(e=>e.id===n)?!1:(await Oo(),g(q).some(e=>e.id===n))}function Oa(e){return g(K).find(t=>t.id===e)||g(q).find(t=>t.id===e)||{}}function ka(e,t,n=g(rn)){if(!e||t<0)return!1;let r=n.get(e);if(!r||r.messages.length===0)return!1;let i=t+1;return r.oldest_seq<=i&&r.newest_seq>=i}function Aa(e,t,n=g(rn)){let r=mn.get(e);if(r?.boundarySeq===t)return r.since;if(!ka(e,t,n))return``;let i=Zi(e,g(J),t);return i?ja(i.created_at):``}function ja(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(t)}function Ma(){if(!g(gn)||!g(tn))return;let e=g(tn).captureState();e&&nn.set(g(gn),e)}function Na(e,t){let n=e!==g(gn);E(vn,nn.get(e));let r=qa(e),i=new Map(r.map(e=>[e.id,e])),a=new Map(r.filter(e=>e.nonce).map(e=>[e.nonce,e]));ke.seedMessages(t);let o=t.map(e=>{let t=i.get(e.id)||(e.nonce?a.get(e.nonce):void 0);return t?e.nonce&&Va.has(e.nonce)?{...e,nonce:t.nonce,status:t.status,attachments:t.attachments?.length?t.attachments:e.attachments}:{...e,nonce:t.nonce,attachments:t.attachments?.length?t.attachments:e.attachments}:e}),s=new Set(o.map(e=>e.id)),c=new Set(o.map(e=>e.nonce).filter(Boolean)),l=r.filter(t=>(t.status===`pending`||t.status===`failed`)&&t.id.startsWith(`tmp_`)&&!s.has(t.id)&&!(t.nonce&&c.has(t.nonce))&&Ia(t,e)&&(!g(We)||t.topic_id===g(We)));E(J,l.length>0?[...o,...l]:o),Ae.reconcile(e,g(J)),E(gn,e),Qi(e,g(J)),n&&(E(Rn,[]),E(Bn,[]),Ft())}function Pa(e,t=`append`){let n=$(),r=n?g(rn).get(n):void 0;if(!n||!r){E(J,e);return}let i=e.filter(e=>Ia(e,n)),a=Ai(n,i,t),o=a.filter(e=>(e.channel_seq||0)>0),s=o[0]?.channel_seq||r.oldest_seq,c=o[o.length-1]?.channel_seq||r.newest_seq,l=Fa(a[0])>Fa(i[0]),u=Fa(a[a.length-1])0)&&await mi(),await La(),qi({all:!0}),await La()}catch(e){E(Kt,e instanceof Error?e.message:`Could not jump to latest messages`)}}let Va=new Map;function Ha(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function Ua(e,t,n=`tmp_${e}`){let r=new Date().toISOString();return{id:n,workspace_id:t.workspaceID,channel_id:t.channelID,direct_conversation_id:t.directConversationID,topic_id:t.topicID,author_id:g(G)?.id||``,thread_root_id:n,body:t.body,body_format:`markdown`,created_at:r,author:g(G)||void 0,attachments:t.upload?[t.upload]:[],quoted_message_id:t.quotedMessageID,nonce:e,status:`pending`}}async function Wa(){let e=g(xt).trim();if(!e)return;if(g(A)&&!g(N)){E(Kt,`This conversation has no active recipient`);return}if(!g(X)&&!g(Z)){E(Kt,`pick or create a channel`);return}Ft(),E(lt,null);let t=++rr,n=$(),r=g(Z)?`dm`:`channel`,i=g(jn)&&g(Mn)===r?g(jn):null;if(g(X)&&!g(Z)&&!g(Mt)&&!i){let r=oa(e),i=r?sa(g(st),r.command):void 0;if(r&&i){E(xt,``),await Ga(g(X),r.command,r.text,e,n,t);return}}let a={body:e,quotedMessageID:i?.id,upload:g(Mt)||void 0,workspaceID:g(Y),channelID:g(X)||void 0,directConversationID:g(Z)||void 0,topicID:g(X)&&g(Ue)||void 0,topicFilterID:g(We),topicFilterGeneration:qe,viewKey:$()};E(xt,``),i&&po(),E(Mt,null),await Za(a)}async function Ga(e,t,n,r,i,a){try{let r=await ca(e,t,n);if(a!==rr||$()!==i)return;r.text&&r.response_type!==`in_channel`&&E(lt,{kind:`ephemeral`,text:r.text})}catch(e){if(console.warn(`slash dispatch failed`,e),a!==rr||$()!==i)return;E(lt,{kind:`error`,text:e instanceof fe&&e.message?Ka(e):`${t} failed`}),g(xt).trim()||E(xt,r)}}function Ka(e){try{let t=JSON.parse(e.message);if(t&&typeof t.error==`string`&&t.error)return t.error}catch{}return e.message}function qa(e){let t=[...g(J),...$e.get(e)||[]].filter(t=>(t.status===`pending`||t.status===`failed`)&&Ia(t,e)&&(!g(We)||t.topic_id===g(We))),n=new Map;for(let e of t){let t=e.nonce?`nonce:${e.nonce}`:`id:${e.id}`;n.set(t,e)}return[...n.values()]}function Ja(e,t){let n=($e.get(e)||[]).filter(e=>e.id!==t.id&&!(t.nonce&&e.nonce===t.nonce));$e=new Map($e).set(e,[...n,t])}function Ya(e,t,n){let r=$e.get(e);if(!r)return;let i=r.filter(e=>e.id!==t&&!(n&&e.nonce===n)),a=new Map($e);i.length>0?a.set(e,i):a.delete(e),$e=a}async function Xa(e,t,n){if(Ja(e.viewKey,t),$()!==e.viewKey)return;let r=!1;if(g(We)===e.topicFilterID&&qe===e.topicFilterGeneration&&g(We)&&e.topicID!==g(We)){ur(``),nn.delete(e.viewKey),g(rn).delete(e.viewKey);try{await mi()}catch{r=!0}}if($()!==e.viewKey)return;if(g(We)&&e.topicID!==g(We)){g(xt).trim()||E(xt,e.body),E(lt,{kind:`error`,text:`${n} Clear the active topic filter to recover the draft.`});return}r&&Pa(qa(e.viewKey));let i=t.id,a=t.nonce,o=g(J).findIndex(e=>e.id===i||a&&e.nonce===a);Pa(o>=0?g(J).map((e,n)=>n===o?t:e):[...g(J),t]),E(lt,{kind:`error`,text:r?`${n} The unfiltered timeline could not reload.`:n}),await za()}async function Za(e,t,n){let r=t??Ha(),i=`tmp_${r}`,a=n??i,o=!g(We)||e.topicID===g(We),s=!t&&$()===e.viewKey&&o,c=s&&g(dn);Va.set(r,e);let l=Ua(r,e,a);t&&Ja(e.viewKey,l),t?Pa(g(J).map(e=>e.id===a?l:e)):$()===e.viewKey&&o&&(Pa([...g(J),l]),za());let u=e.directConversationID?`/api/dms/${e.directConversationID}/messages`:`/api/channels/${e.channelID}/messages`,d={body:e.body,nonce:r};e.quotedMessageID&&(d.quoted_message_id=e.quotedMessageID),e.topicID&&(d.topic_id=e.topicID);try{let t=(await W(u,{method:`POST`,body:JSON.stringify(d)})).message;if(e.upload)try{await W(`/api/messages/${t.id}/attachments`,{method:`POST`,body:JSON.stringify({upload_id:e.upload.id})}),t={...t,attachments:[...t.attachments||[],e.upload]}}catch(n){console.warn(`attachment failed`,n),await Xa(e,{...t,nonce:r,status:`failed`,attachments:e.upload?[...t.attachments||[],e.upload]:t.attachments},`The message was sent, but its attachment failed. Retry or discard it below.`);return}Ya(e.viewKey,t.id,r),Va.delete(r),g(J).findIndex(e=>e.id===a)>=0?Pa(g(J).map(e=>e.id===a?t:e)):g(J).some(e=>e.id===t.id)?Pa(g(J).map(e=>e.id===t.id?t:e)):Ia(t,$())&&(!g(We)||t.topic_id===g(We))&&!g(J).some(e=>e.id===t.id)&&Pa([...g(J),t]),$()===e.viewKey&&s&&(c&&await mi(),await za(),qi({all:!0,seq:t.channel_seq||0}))}catch(t){console.warn(`send failed`,t),await Xa(e,{...l,status:`failed`},`The message failed to send. Retry or discard it below.`)}}function Qa(e){if(!e.nonce)return;let t=Va.get(e.nonce);if(!t){$a(e);return}Za({...t,viewKey:t.viewKey},e.nonce,e.id)}function $a(e){if(e.nonce){let t=Va.get(e.nonce);t&&Ya(t.viewKey,e.id,e.nonce),Va.delete(e.nonce)}Pa(g(J).filter(t=>t.id!==e.id))}async function eo(e,t){if(e!==g(yn))return;t.surface===`timeline`&&g(tn)?.scrollToMessage(t.messageID);let n=document.querySelector(t.surface===`timeline`?`main.timeline`:`[aria-label="Thread pane"]`);for(let e=0;e<16;e+=1){await s(),await new Promise(e=>requestAnimationFrame(()=>e()));let e=n?.querySelector(`[data-message-id="${CSS.escape(t.messageID)}"]`)?.querySelector(`textarea[aria-label="Edit message"]`);if(e){e.focus();return}}}function to(e){Pa(g(J).map(t=>t.id===e.id?{...t,...e}:t)),E(Ve,g(Ve).map(t=>t.id===e.id?{...t,...e}:t)),g(Q)?.id===e.id&&E(Q,{...g(Q),...e})}function no(e){!e.id||e.deleted_at||g(or).has(e.id)||(E(sr,e),E(cr,``))}async function ro(){let e=g(sr);if(!(!e||g(or).has(e.id))){E(or,new Set([...g(or),e.id])),E(cr,``);try{let t=(await W(`/api/messages/${e.id}`,{method:`DELETE`})).message;Ae.cancelMessage($(),t.id),Pa(g(J).map(e=>e.id===t.id?{...e,...t}:e)),E(Ve,g(Ve).map(e=>e.id===t.id?{...e,...t}:e)),g(Q)?.id===t.id&&E(Q,{...g(Q),...t}),g(jn)?.id===t.id&&po(),E(Kt,``),E(sr,null)}catch(e){E(cr,e instanceof Error?e.message:`Could not delete message`)}finally{let t=new Set(g(or));t.delete(e.id),E(or,t)}}}async function io(e){xo(),await ao(e.id,e),g(Y)&&g(Q)?.route_id&&window.location.pathname!==Nr(g(Y),g(Q).id)&&await Lr(g(Y),g(Q).id)}async function ao(e,t,n=()=>!0){E(ft,null),E(pt,``),E(it,null),t&&(E(Q,t),E(In,`thread`));let r=await W(`/api/messages/${e}/thread`);if(!n())return!1;let[i,...a]=[{...r.root,thread_state:r.thread_state},...r.replies];return ke.seedMessages([i,...a]),Ae.reconcile($(),[i,...a]),E(Q,i),E(In,`thread`),Pa(g(J).map(e=>e.id===i.id?i:e)),E(Ve,a),E(rt,r.thread_state),!0}async function oo(e){let t=await W(`/api/messages/${e}/thread`),n={...t.root,thread_state:t.thread_state};ke.seedMessages([n]),Pa(g(J).map(e=>e.id===n.id?n:e))}function so(e,t){let n=g(J).find(t=>t.id===e);if(!n)return!1;let r=new Date(t.created_at).getTime();if(Number.isFinite(r)&&ra}async function co(){let e=g(St).trim();if(!e||!g(Q))return;if(g(A)&&!g(N)){E(Kt,`This direct message has no active recipient`);return}let t=g(jn)&&g(Mn)===`thread`?g(jn):null;E(St,``);let n={body:e,nonce:Ha()};t&&(n.quoted_message_id=t.id);let r=await W(`/api/messages/${g(Q).id}/thread/replies`,{method:`POST`,body:JSON.stringify(n)});t&&po(),g(Ve).some(e=>e.id===r.message.id)||E(Ve,[...g(Ve),r.message]),E(rt,r.thread_state)}function lo(e,t){E(jn,e),E(Mn,t),E(In,t===`thread`?`thread`:`message`)}function uo(){return g(sr)!==null||g(dt)!==null||g(It)||g(Rt)||g(zt)}function fo(){return g(In)===`thread`&&g(Q)&&g(Fn)?g(Fn):g(Pn)}function po(){E(jn,null),E(Mn,null)}async function mo(e){let t=e.quoted_message_id;if(!t)return;if(g(tn)?.scrollToMessage(t)??!1){await _o(t);return}let n=await W(`/api/messages/${t}`);Ia(n.message,$())&&await To(n.message)}async function ho(){hn=Date.now()+1200,!(g(U)&&g(tn)?.scrollToDivider(!1))&&await go()}async function go(){let e=$();if(!e)return;hn=Date.now()+1200;let t=Yi(e),n=mn.get(e),r=(n?.boundarySeq===t?n.boundarySeq:t)+1;r<=0||(await Eo(r),await s(),g(tn)?.scrollToDivider(!1))}async function _o(e){await s();let t=document.querySelector(`[data-message-id="${CSS.escape(e)}"]`);t&&(t.classList.add(`highlight`),window.setTimeout(()=>t.classList.remove(`highlight`),1500))}async function vo(){if(!g(Y)||!g(Dt).trim()){xo();return}let e=g(Dt).trim();g(ft)&&ts(),(g(Q)||g(it))&&cs();let t=++jt,n=g(Z)&&g(A)?{workspaceID:g(Y),channelID:``,directConversationID:g(Z),label:`@${Ie(g(A),g(G)?.id)}`}:g(X)&&g(T)?{workspaceID:g(Y),channelID:g(X),directConversationID:``,label:`#${Xe(g(T))}`}:{workspaceID:g(Y),channelID:``,directConversationID:``,label:``};E(kt,!1),At=0;let r={query:e,scope:n,results:[],nextCursor:null,state:`loading`,error:``,loadingMore:!1,moreError:``,activeResultID:``};E(Ot,r);try{let e=await W(`/api/search?${yo(r).toString()}`);if(t!==jt)return;E(Ot,{...r,results:e.results,nextCursor:e.next_cursor,state:`ready`})}catch(e){if(t!==jt)return;E(Ot,{...r,state:`error`,error:e instanceof fe?e.message:`Search is unavailable right now.`})}}function yo(e,t=``){let n=new URLSearchParams({workspace_id:e.scope.workspaceID,q:e.query});return e.scope.directConversationID?n.set(`direct_conversation_id`,e.scope.directConversationID):e.scope.channelID&&n.set(`channel_id`,e.scope.channelID),t&&n.set(`cursor`,t),n}async function bo(){let e=g(Ot);if(!e||e.state!==`ready`||!e.nextCursor||e.loadingMore)return;let t=jt;E(Ot,{...e,loadingMore:!0,moreError:``});try{let n=await W(`/api/search?${yo(e,e.nextCursor).toString()}`);if(t!==jt||!g(Ot))return;let r=new Set(g(Ot).results.map(e=>e.id));E(Ot,{...g(Ot),results:[...g(Ot).results,...n.results.filter(e=>!r.has(e.id))],nextCursor:n.next_cursor,loadingMore:!1})}catch(e){if(t!==jt||!g(Ot))return;E(Ot,{...g(Ot),loadingMore:!1,moreError:e instanceof fe?e.message:`Couldn’t load more results.`})}}function xo(){jt+=1,E(Dt,``),E(Ot,null),E(kt,!1),At=0}function So(e){if(e.channel_name)return`#${e.channel_name}`;if(e.direct_conversation_id){let t=g(q).find(t=>t.id===e.direct_conversation_id);return t?`@${Ie(t,g(G)?.id)}`:`Direct message`}return``}async function Co(e){let t=g(Ot),n=e.channel_id||e.direct_conversation_id||``;if(!(!t||!g(Y)||!n)&&(E(Ot,{...t,activeResultID:e.id}),$()!==n&&(await Lr(g(Y),n),await qr(g(Y),n)),$()===n)){if(e.parent_message_id){At=document.querySelector(`.search-results-scroll`)?.scrollTop??0;let t=jt;E(kt,!0);try{if(!await ao(e.thread_root_id,void 0,()=>t===jt&&g(kt)&&g(Ot)?.activeResultID===e.id))return}catch(e){throw E(kt,!1),await s(),e}g(Q)?.route_id&&await Lr(g(Y),g(Q).id),await s(),document.querySelector(`.thread [data-message-id="${CSS.escape(e.id)}"]`)?.scrollIntoView({block:`center`}),document.querySelector(`.thread .thread-back`)?.focus(),await _o(e.id);return}if(e.channel_seq&&e.channel_seq>0){await Eo(e.channel_seq,e.id);return}await pi()}}async function wo(){if(!g(Ot)||!g(kt))return;let e=$();g(Mn)===`thread`&&po(),E(Q,null),E(it,null),E(In,`message`),E(Ve,[]),E(kt,!1),g(Y)&&e&&await Lr(g(Y),e),await s();let t=document.querySelector(`.search-results-scroll`);t&&(t.scrollTop=At),(g(Ot).activeResultID?document.querySelector(`.search-result[data-result-id="${CSS.escape(g(Ot).activeResultID)}"]`):null)?.focus({preventScroll:!0})}async function To(e){let t=e.channel_seq||0;if(t<=0){await pi();return}await Eo(t,e.id)}async function Eo(e,t=``){let n=$();if(!n)return;g(We)&&(ur(``),g(rn).delete(n),E(Sn,!0));let r=dr();t&&nn.set(n,{atBottom:!1,anchorMessageID:t,anchorPixelOffset:0});let i=n!==g(gn);Di(),i&&E(Sn,!0);try{let i=await W(_i(`around_seq=${encodeURIComponent(String(e))}&limit=100`));if($()!==n||dr()!==r)return;bi(n,yi(i),`around`),await s(),t&&(g(tn)?.scrollToMessage(t),await _o(t))}finally{$()===n&&E(Sn,!1)}}async function Do(e){let t=e.currentTarget,n=t.files?.[0];if(!n||!g(Y))return;let r=await nt(n),i=new FormData;i.set(`workspace_id`,g(Y)),i.set(`file`,n),r.width>0&&i.set(`width`,String(r.width)),r.height>0&&i.set(`height`,String(r.height)),r.durationMS>0&&i.set(`duration_ms`,String(r.durationMS));let a=await W(`/api/uploads`,{method:`POST`,body:i});E(Mt,a.upload),t.value=``}async function Oo(e=g(Y)){let t=++Zn;if(!e){E(q,[]);return}let n=await W(`/api/dms?workspace_id=${e}`);t===Zn&&e===g(Y)&&(E(q,n.conversations),g(Z)&&!g(q).some(e=>e.id===g(Z))&&E(Z,``))}function ko(e){E(q,g(q).some(t=>t.id===e.id)?g(q).map(t=>t.id===e.id?e:t):[...g(q),e])}async function Ao(e){let t=e.trim();t&&(await Mo(t),E(Tt,``),E(zt,!1))}async function jo(e){E(Dn,!1);let t=Nr(g(Y),e);e===g(Z)&&!g(X)&&window.location.pathname===t||await Lr(g(Y),e)}async function Mo(e){let t=e.trim();if(!g(Y)||!t)return;let n=g(q).find(e=>e.members.some(e=>e.id===t));if(n){E(Dn,!1),await Lr(g(Y),n.id);return}let r=await W(`/api/dms`,{method:`POST`,body:JSON.stringify({workspace_id:g(Y),member_ids:[t]})});ko(r.conversation),E(Dn,!1),await Lr(g(Y),r.conversation.id)}function No(){ar&&clearTimeout(ar),ar=void 0,E(ir,null)}function Po(e,t){No(),E(ir,{conversation:e,restoreRoute:t,title:Ie(e,g(G)?.id)}),ar=setTimeout(()=>{E(ir,null),ar=void 0},8e3)}async function Fo(){let e=g(ir);if(e){No();try{let t=await W(`/api/dms/${e.conversation.id}/open`,{method:`POST`});ko(t.conversation),e.restoreRoute&&await Lr(e.conversation.workspace_id,t.conversation.id),E(Kt,`direct message restored`)}catch(e){E(Kt,e instanceof Error?e.message:`Could not restore direct message`)}}}async function Io(e){if(!e)return;let t=g(q).find(t=>t.id===e),n=g(Z)===e;if(await W(`/api/dms/${e}`,{method:`DELETE`}),E(q,g(q).filter(t=>t.id!==e)),t&&Po(t,n),n){Rr();let e=g(K)[0]?.id||``;E(Z,``),E(X,e),e&&Wr(g(Y),e),await Lr(g(Y),e),await pi()}}function Lo(){if(nr+=1,$t?.close(),$t=null,E(Yt,!1),!g(Y))return;let e=g(Y);$t=Ne({workspaceID:e,onEvent:zo,onOpen:async(t,n)=>{await Ro(e,t,Zt===e,n),t()&&(Zt=e,e===g(Y)&&g(Kt)===Xt&&E(Kt,`ready`),Xt=``)},onError:t=>{e===g(Y)&&(Xt=t instanceof Error?t.message:`Could not process realtime event`,E(Kt,Xt))},onStatusChange:e=>{E(Yt,e)}})}async function Ro(e,t=()=>!0,n=!0,r=!0){let i=++nr;if(!e||e!==g(Y)||!t())return;let a=g(Q)?.id||``,o=g(it)?.kind===`bot`?g(it).id:``;if(E(Rn,[]),E(Bn,[]),!r){await Promise.all([ri(e),ii(e,!0)]);return}if(ke.clear(),await Promise.all([jr(),$r(!1,!1,!1),Oo(e),ni(e),ri(e),ii(e,!0),ei(e)]),!(i!==nr||e!==g(Y)||!t())){if(g(X)&&!g(K).some(e=>e.id===g(X))&&E(X,``),g(Z)&&!g(q).some(e=>e.id===g(Z))&&E(Z,``),!g(X)&&!g(Z)){let t=zr(e);if(t){let n=g(q).some(e=>e.id===t);E(Z,n?t:``),E(X,n?``:t),n||Wr(e,t),await Lr(e,t,!0)}}if(!(i!==nr||e!==g(Y)||!t())&&(await pi(n),!(i!==nr||e!==g(Y)||!t())&&(a&&g(Q)?.id===a&&await ao(a,g(Q)),o&&g(it)?.id===o))){let e=qo(o);E(it,e&&!e.deleted_at?e:null)}}}async function zo(e){if(e.type===`typing.started`||e.type===`typing.stopped`){Wo(e);return}if(e.type===`agent.progress`){Go(e);return}if(e.type===`channel.read`||e.type===`dm.read`){Ho(e);return}if(e.type===`bot_command.updated`){e.workspace_id===g(Y)&&ii(e.workspace_id,!0).catch(t=>{e.workspace_id===g(Y)&&(E(Kt,t instanceof Error?t.message:`Could not refresh bot commands`),Lo())});return}if(e.type===`bot.deleted`){e.workspace_id===g(Y)&&await Bo(e);return}if(e.type===`bot.membership_removed`){e.workspace_id===g(Y)&&await Vo(e);return}if((e.type===`channel.created`||e.type===`channel.updated`)&&e.workspace_id===g(Y)){await $r(!1,!1,!1);return}if(e.type===`member.moderation_updated`&&e.workspace_id===g(Y)){let t=g(Z),n=e.payload.user_id===g(G)?.id;if(await jr(),await ni(),await $r(!1,n,n),n){if(await Oo(),t&&(g(q).some(e=>e.id===t)?(E(Z,t),E(X,``)):E(Z,``)),!g(X)&&!g(Z)){bi(``,yi({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}await pi()}return}if(e.workspace_id===g(Y)&&e.payload.topic_id&&!g(Pe).some(t=>t.id===e.payload.topic_id)&&await ei(e.workspace_id),Ea(e))return;let t=(e.channel_id===g(X)||e.payload.direct_conversation_id===g(Z))&&!(e.type===`message.created`&&g(We)&&e.payload.topic_id!==g(We));if(t&&(e.type===`reaction.added`||e.type===`reaction.removed`)){ke.applyEvent(e);return}if(wa(e,t),e.type===`message.created`&&!t&&(await Da(e)||Uo(e)),t&&(e.type===`message.created`||e.type===`message.updated`||e.type===`message.deleted`)){let t=e.payload.nonce;if(e.type===`message.created`&&t&&Va.has(t))return;let n=Ra();e.type===`message.created`&&!n?(hn=Date.now()+1200,Ti($())):e.type===`message.created`?await Ii():await pi(),e.type===`message.created`&&Uo(e,n),e.type===`message.created`&&n&&(await La(),qi({all:!0,seq:ea(e)}))}let n=e.payload.root_message_id||e.payload.message_id;n&&e.type===`thread.state_updated`&&so(n,e)?g(Q)?.id===n?await ao(n,g(Q)):await oo(n):e.type!==`thread.reply_created`&&g(Q)&&n===g(Q).id&&await ao(g(Q).id,g(Q))}async function Bo(e){let t=e.payload.bot_user_id||``;if(!t)return;let n=e.payload.deleted_at||e.created_at,r=e.payload.former_handle||``,i=e=>e.id===t?{...e,handle:``,former_handle:r,deleted_at:n}:e;E(q,g(q).map(e=>({...e,members:e.members.map(i)}))),E(ot,g(ot).filter(e=>e.user.id!==t)),E(st,g(st).filter(e=>e.bot_user_id!==t)),E(ct,g(ct).filter(e=>e.bot.id!==t)),E(Rn,g(Rn).filter(e=>e.userID!==t)),g(Ot)&&E(Ot,{...g(Ot),results:g(Ot).results.map(e=>({...e,author:i(e.author)}))}),g(it)?.id===t&&E(it,null);let a=g(Q)?.id||``;await Promise.all([Oo(),ni(),ri(),ii()]),await pi(),a&&await ao(a)}async function Vo(e){let t=e.payload.bot_user_id||``;t&&(E(ot,g(ot).filter(e=>e.user.id!==t)),E(st,g(st).filter(e=>e.bot_user_id!==t)),E(ct,g(ct).filter(e=>e.bot.id!==t)),g(it)?.id===t&&E(it,null),await Promise.all([Oo(e.workspace_id),ni(e.workspace_id),ri(e.workspace_id),ii(e.workspace_id)]))}function Ho(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n!==g(G)?.id)return;let r=e.seq??t.last_read_seq??t.seq,i=typeof r==`number`?r:Number(r)||0;if(e.type===`channel.read`){let n=typeof t.channel_id==`string`?t.channel_id:e.channel_id||``;if(!n)return;E(K,g(K).map(e=>{if(e.id!==n)return e;let t=Math.max(e.last_read_seq||0,i);return{...e,last_read_seq:t,unread_count:t>=(e.last_seq||0)?0:e.unread_count||0}}))}else{let e=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!e)return;E(q,g(q).map(t=>{if(t.id!==e)return t;let n=Math.max(t.last_read_seq||0,i);return{...t,last_read_seq:n,unread_count:n>=(t.last_seq||0)?0:t.unread_count||0}}))}}function Uo(e,t){let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`)return;let i=typeof n.author_id==`string`?n.author_id:``;if(i&&i===g(G)?.id||n.parent_message_id)return;let a=ea(e),{channelID:o,dmID:s}=ta(e);if(o){let n=o===g(X)&&!g(Z),r=n&&!g(We)?t??Ra():!1,i=g(K).find(e=>e.id===o),s=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&$i(o,i?.last_read_seq||0,e.created_at),E(K,g(K).map(e=>{if(e.id!==o)return e;let t=Math.max(e.last_seq||0,s),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,s-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}else if(s){let n=s===g(Z),r=n?t??Ra():!1,i=g(q).find(e=>e.id===s),o=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&$i(s,i?.last_read_seq||0,e.created_at),E(q,g(q).map(e=>{if(e.id!==s)return e;let t=Math.max(e.last_seq||0,o),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,o-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}}function Wo(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n===g(G)?.id)return;let r=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),i=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(g(X)&&r===g(X)||g(Z)&&i===g(Z)))return;if(e.type===`typing.stopped`){E(Rn,g(Rn).filter(e=>e.userID!==n));return}let a=qo(n),o=g(Rn).filter(e=>e.userID!==n);o.push({userID:n,user:a,expiresAt:Date.now()+xn}),E(Rn,o),Jo()}function Go(e){let t=e.payload,n=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),r=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(g(X)&&n===g(X)||g(Z)&&r===g(Z)))return;let i=typeof t.turn_id==`string`?t.turn_id:``,a=typeof t.op==`string`?t.op:``;if(!i||!a)return;if(a===`clear`){E(Bn,g(Bn).filter(e=>e.turnId!==i));return}let o=t.line,s=o&&typeof o.id==`string`?o.id:``;if(!s)return;let c=o&&typeof o.text==`string`?o.text:``,l=o&&typeof o.title==`string`?o.title:``,u=c||l,d=o&&typeof o.tool_name==`string`?o.tool_name:typeof o?.toolName==`string`?o.toolName:void 0,f=o&&typeof o.status==`string`?o.status:void 0,p=o&&typeof o.kind==`string`?o.kind:void 0,m=g(Bn).find(e=>e.turnId===i),h=m?.lines.find(e=>e.id===s),_={id:s,kind:p??h?.kind??`lifecycle`,text:u||h?.text||``,toolName:d??h?.toolName,status:f??h?.status,finalized:a===`finalize`||(h?.finalized??!1)};if(!h&&!_.text&&!_.toolName)return;let v=typeof t.user_id==`string`?t.user_id:``,y=Date.now()+wn;if(!m)E(Bn,[...g(Bn),{turnId:i,userId:v,lines:[_],expiresAt:y}]);else{let e=m.lines.some(e=>e.id===s)?m.lines.map(e=>e.id===s?_:e):[...m.lines,_];E(Bn,g(Bn).map(t=>t.turnId===i?{...t,lines:e,expiresAt:y}:t))}Ko()}function Ko(){Vn||=window.setInterval(()=>{let e=Date.now(),t=g(Bn).filter(t=>t.expiresAt>e);t.length!==g(Bn).length&&E(Bn,t),t.length===0&&Vn&&(window.clearInterval(Vn),Vn=void 0)},1e3)}function qo(e){if(g(G)?.id===e)return g(G);let t=g(J).find(t=>t.author?.id===e)?.author;if(t)return t;let n=g(Ve).find(t=>t.author?.id===e)?.author;if(n)return n;if(g(Q)?.author?.id===e)return g(Q).author;let r=g(ot).find(t=>t.user.id===e)?.user;if(r)return r;for(let t of g(q)){let n=t.members.find(t=>t.id===e);if(n)return n}}function Jo(){zn||=window.setInterval(()=>{let e=Date.now(),t=g(Rn).filter(t=>t.expiresAt>e);t.length!==g(Rn).length&&E(Rn,t),t.length===0&&zn&&(window.clearInterval(zn),zn=void 0)},1e3)}function Yo(){g(Y)&&(!g(X)&&!g(Z)||Nt({workspaceID:g(Y),channelID:g(X)||void 0,directConversationID:g(Z)||void 0}))}function Xo(e){!e||e.deleted_at||(xo(),E(ft,null),E(pt,``),E(Q,null),E(it,e),(g(o)===`owner`||g(o)===`moderator`)&&!g(ot).some(t=>t.user.id===e.id)&&ni())}function Zo(e){if(e.key===`Escape`&&g(jn)&&g(Mn)!==`thread`){e.preventDefault(),po();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Wa())}function Qo(e){if(e.key===`Escape`&&g(jn)&&g(Mn)===`thread`){e.preventDefault(),po();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),co())}function $o(e,t){uo()||E(dt,{url:e,title:t})}function es(e){E(mt,document.activeElement instanceof HTMLElement?document.activeElement:null),ht=g(Q)?document.querySelector(`.thread-scroll`)?.scrollTop??null:null,E(pt,g(yn)),E(ft,e),s().then(()=>{document.querySelector(`.artifact-viewer__actions > button:last-child`)?.focus()})}function ts(){let e=g(mt),t=g(ft)?.id||``;E(ft,null),E(pt,``),E(mt,null),s().then(()=>{if(ht!==null){let e=document.querySelector(`.thread-scroll`);e&&(e.scrollTop=ht)}if(ht=null,e?.isConnected){e.focus({preventScroll:!0});return}(g(Q)?document.querySelector(`.thread`):document)?.querySelector(`[data-artifact-upload-id="${CSS.escape(t)}"]`)?.focus({preventScroll:!0})})}function ns(e,t){for(let e of yt)e.inert=!1;if(yt.clear(),!(!e||!g(vt)||!t))for(let e of g(vt).children)!(e instanceof HTMLElement)||e===t||e.inert||(e.inert=!0,yt.add(e))}function rs(e){if(!g(ft)||!g(kn)||e.key!==`Tab`||!g(_t))return;let t=Array.from(g(_t).querySelectorAll(`a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.inert&&e.getClientRects().length>0);if(t.length===0){e.preventDefault(),g(_t).focus();return}let n=t[0],r=t[t.length-1];e.shiftKey&&(document.activeElement===n||!g(_t).contains(document.activeElement))?(e.preventDefault(),r.focus()):!e.shiftKey&&(document.activeElement===r||!g(_t).contains(document.activeElement))&&(e.preventDefault(),n.focus())}function is(e){let t=e.target;t instanceof HTMLImageElement&&t.closest(`.markdown`)&&(e.preventDefault(),$o(Je(t),t.alt||`Image`))}function as(e){let t=g(xt)&&!g(xt).endsWith(` +`)?` +`:``;E(xt,`${g(xt)}${t}${e}`)}function os(e,t=e){as(`${e}${e==="```"?` +code +`:`text`}${t}`)}function ss(e,t){as(`![${t}](${e})`),E(Pt,!1),E(Bt,``)}function cs(){if(g(ft)){ts();return}let e=g(Q)!==null,t=g(kt),n=$();Ae.cancel(n,`thread`),g(Mn)===`thread`&&po(),E(Q,null),E(it,null),E(In,`message`),E(Ve,[]),t&&xo(),(e||t)&&g(Y)&&n&&Lr(g(Y),n)}function ls(){g(ge)?cs():E(Kt,`pick a message to open its thread`)}function us(e){if(rs(e),!e.defaultPrevented){if(e.key===`Escape`){if(e.target instanceof Element&&e.target.closest(`[data-handles-escape]`)||g(dt))return;if(uo())ds();else if(g(Dn)){e.preventDefault(),fs();return}else if(g(ft)){e.preventDefault(),cs();return}else if(g(kt)){e.preventDefault(),cs();return}else if(g(_e)){e.preventDefault(),xo();return}else if(g(jn)){e.preventDefault(),po();return}else{e.preventDefault(),Ba();return}}if(g(Dn)&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&!e.isComposing){let t=document.activeElement;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement)&&!(t instanceof HTMLSelectElement)&&!(t instanceof HTMLElement&&t.isContentEditable)){e.preventDefault();return}}Et(e,{authRequired:g(qt),isModalOpen:()=>uo()||g(Dn),messageInput:g(Pn),replyInput:g(Fn),target:fo})}}function ds(){g(sr)&&g(or).has(g(sr).id)||(E(sr,null),E(cr,``),E(dt,null),E(It,!1),E(Rt,!1),E(zt,!1))}function fs(){E(Dn,!1)}function ps(){if(g(kn)){E(Dn,!g(Dn));return}E(En,!g(En))}_(()=>(g(je),g(Y)),()=>{E(i,g(je).find(e=>e.id===g(Y)))}),_(()=>g(i),()=>{E(o,g(i)?.role||``)}),_(()=>g(o),()=>{E(p,g(o)===`owner`)}),_(()=>(g(it),g(ot)),()=>{E(w,g(it)?g(ot).find(e=>e.user.id===g(it)?.id):void 0)}),_(()=>(g(K),g(X)),()=>{E(T,g(K).find(e=>e.id===g(X)))}),_(()=>(g(Pe),g(X)),()=>{E(O,fr(g(Pe),g(X)))}),_(()=>(g(O),g(We)),()=>{E(k,g(O).find(e=>e.id===g(We)))}),_(()=>(g(X),g(Z)),()=>{ui(g(X),g(Z))}),_(()=>(g(q),g(Z)),()=>{E(A,g(q).find(e=>e.id===g(Z)))}),_(()=>g(A),()=>{E(N,g(A)?.can_send??!0)}),_(()=>(g(Z),g(X)),()=>{E(yn,g(Z)||g(X)||``)}),_(()=>g(yn),()=>{lr(g(yn))}),_(()=>g(yn),()=>{ai(g(yn))}),_(()=>(g(X),g(ct),g(A)),()=>{E(P,g(X)?g(ct):g(A)?g(ct).filter(e=>g(A)?.members?.some(t=>t.id===e.bot.id)):[])}),_(()=>(g(Z),g(q),g(X),g(K)),()=>{E(F,g(Z)?g(q).find(e=>e.id===g(Z))||{}:g(X)&&g(K).find(e=>e.id===g(X))||{})}),_(()=>(g(yn),g(F)),()=>{E(L,Vi(g(yn),g(F)))}),_(()=>(g(Kt),g(K),g(q)),()=>{E(ae,g(Kt)===`ready`?g(K).reduce((e,t)=>e+(t.unread_count||0),0)+g(q).reduce((e,t)=>e+(t.unread_count||0),0):0)}),_(()=>g(ae),()=>{tt?.setUnreadCount(g(ae))}),_(()=>g(Gn),()=>{tt&&g(Gn)&&typeof window<`u`&&tt.setActiveRoute(`${window.location.pathname}${window.location.search}${window.location.hash}`)}),_(()=>(g(L),g(F)),()=>{E(se,g(L)>0&&g(F).last_read_seq||0)}),_(()=>(g(L),g(yn),g(se),g(rn)),()=>{E(U,g(L)>0&&ka(g(yn),g(se),g(rn)))}),_(()=>(g(L),g(yn),g(se),g(rn)),()=>{E(le,g(L)>0?Aa(g(yn),g(se),g(rn)):``)}),_(()=>(g(J),g(Ht),g(Ut),g(Hn)),()=>{E(pe,gt(g(J),{hideCommentary:g(Ht),hideToolCalls:g(Ut)},g(Hn)))}),_(()=>g(Bn),()=>{E(he,g(Bn).some(e=>e.lines.some(e=>!e.finalized)))}),_(()=>(g(ft),g(pt),g(yn)),()=>{g(ft)&&g(pt)&&g(pt)!==g(yn)&&(E(ft,null),E(pt,``),E(mt,null))}),_(()=>(g(Q),g(it),g(ft)),()=>{E(ge,g(Q)!==null||g(it)!==null||g(ft)!==null)}),_(()=>(g(Ot),g(kt)),()=>{E(_e,g(Ot)!==null&&!g(kt))}),_(()=>(g(kn),g(ft),g(_t)),()=>{ns(g(kn)&&g(ft)!==null,g(_t))}),_(()=>(g(J),g(q),g(G)),()=>{E(ve,He(g(J),g(q),g(G)?.id||``))}),_(()=>(g(G),g(ve),g(ot),g(A)),()=>{E(ut,oi(g(G),g(ve),g(ot),g(A)))}),_(()=>(g(Mn),g(jn),g(J)),()=>{g(Mn)===`channel`&&g(jn)&&!g(J).some(e=>e.id===g(jn)?.id)&&po()}),_(()=>(g(Mn),g(jn),g(J)),()=>{g(Mn)===`dm`&&g(jn)&&!g(J).some(e=>e.id===g(jn)?.id)&&po()}),_(()=>(g(Mn),g(jn),g(Q),g(Ve)),()=>{g(Mn)===`thread`&&g(jn)&&g(Q)&&g(jn).id!==g(Q).id&&!g(Ve).some(e=>e.id===g(jn)?.id)&&po()}),_(()=>(g(Kt),g(G),m(De()),m(Oe()),g(Gn)),()=>{g(Kt)===`ready`&&g(G)&&Mr(De(),Oe())!==g(Gn)&&qr(De(),Oe())}),_(()=>(g(Pt),g(Bt)),()=>{E(ye,g(Pt)?at.filter(e=>{let t=g(Bt).trim().toLowerCase();return!t||e.title.toLowerCase().includes(t)||e.tags.some(e=>e.includes(t))}):[])}),v(),I();var ms=a();r(`1oa2eo8`,e=>{var t=ua();u(e,t)}),h(`keydown`,ne,us,!0),h(`pointerdown`,ne,function(...e){bt?.apply(this,e)},!0);var hs=j(ms),gs=e=>{var t=fa(),r=j(t),i=e=>{var t=da();d(()=>R(t,`data-platform`,(m(tt),z(()=>tt.platform)))),u(e,t)};M(r,e=>{Te&&tt&&e(i)});var a=S(r,2),o=B(a),s=S(B(o),4),l=S(s,2),f=B(l,!0);H(l),H(o),H(a),d(e=>{R(s,`href`,e),c(f,g(Jt)||`Any GitHub account can join.`)},[()=>(m(ue),z(()=>ue(`/api/auth/github/start`)))]),n(`click`,s,mr),u(e,t)},_s=e=>{var t=xa(),r=j(t);let a;var s=B(r),h=e=>{{let t=D(()=>g(T)?g(Le):null),n=D(()=>(g(A),m(Ie),g(G),g(T),m(Xe),z(()=>g(A)?`@${Ie(g(A),g(G)?.id)}`:g(T)?`#${Xe(g(T))}`:void 0))),r=D(()=>(g(A),g(T),z(()=>g(A)?void 0:g(T)?.external_url))),a=D(()=>(g(i),z(()=>g(i)?.name)));Ki(e,{get channelNotifPreference(){return g(t)},get channelNotifSaving(){return g(ze)},get channelTitle(){return g(n)},get externalURL(){return g(r)},get connected(){return g(Yt)},get platform(){return m(tt),z(()=>tt.platform)},get searchQuery(){return g(Dt)},get sidebarCollapsed(){return g(En)},get mobileNavOpen(){return g(Dn)},get mobileNavigation(){return g(kn)},get workspaceName(){return g(a)},onOpenWorkspaceSettings:wr,onResetSearch:xo,onSearch:()=>void vo(),onSearchQuery:e=>E(Dt,e),onToggleSidebar:ps,onToggleChannelNotifications:()=>void di()})}};M(s,e=>{Te&&tt&&e(h)});var _=S(s,2),v=B(_),b=e=>{var t=f(`×`);u(e,t)},x=e=>{var t=pa();u(e,t)};M(v,e=>{g(Dn)?e(b):e(x,-1)}),H(_);var ee=S(_,2),F=e=>{var t=ma();n(`click`,t,fs),u(e,t)};M(ee,e=>{g(Dn)&&e(F)});var te=S(ee,2);{let e=D(()=>Te?`/app`:`/`);Un(te,{get workspaces(){return g(je)},get homeHref(){return g(e)},get selectedWorkspaceID(){return g(Y)},get workspaceName(){return g(Ct)},get showWorkspaceCreate(){return g(Tn)},hrefForWorkspace:e=>Nr(e),onSelectWorkspace:e=>void Qr(e),onToggleWorkspaceCreate:()=>E(Tn,!g(Tn)),onWorkspaceName:e=>E(Ct,e),onCreateWorkspace:()=>void Zr()})}var ne=S(te,2);{let e=D(()=>(g(i),z(()=>g(i)?.name))),t=D(()=>(g(i),m(de),z(()=>g(i)?.icon_url?de(g(i).icon_url):``))),n=D(()=>!Te),r=D(()=>(g(ir),z(()=>g(ir)?.title)));hr(ne,{get workspaceID(){return g(Y)},get workspaceName(){return g(e)},get workspaceIconURL(){return g(t)},get connected(){return g(Yt)},get sidebarCollapsed(){return g(En)},get showHeader(){return g(n)},get channels(){return g(K)},get directConversations(){return g(q)},get recentPeople(){return g(ve)},get currentUser(){return g(G)},get selectedChannelID(){return g(X)},get selectedDirectID(){return g(Z)},get selectedProfile(){return g(it)},onToggleCollapse:ps,hrefForChannel:e=>Nr(g(Y),e),hrefForDirect:e=>Nr(g(Y),e),onSelectChannel:e=>void li(e),onCreateChannel:()=>E(Rt,!0),onSelectDirect:e=>void jo(e),onCreateDirect:()=>E(zt,!0),onHideDirect:e=>void Io(e),get hiddenDirectTitle(){return g(r)},onUndoHideDirect:()=>void Fo(),onOpenProfile:Xo,onOpenSettings:Cr,onOpenWorkspaceSettings:wr})}var I=S(ne,2),re=B(I),V=e=>{{let t=D(()=>(g(i),z(()=>g(i)?.name))),n=D(()=>(g(G),z(()=>g(G)?.id))),r=D(()=>g(Q)!==null);ra(e,{get selectedDirect(){return g(A)},get selectedChannel(){return g(T)},get workspaceName(){return g(t)},get currentUserID(){return g(n)},get searchQuery(){return g(Dt)},get sidePanelOpen(){return g(ge)},get threadOpen(){return g(r)},get channelNotifPreference(){return g(Le)},get channelNotifSaving(){return g(ze)},onSearchQuery:e=>E(Dt,e),onSearch:()=>void vo(),onResetSearch:xo,onToggleThread:ls,onPinnedItems:()=>E(Kt,`no pinned items`),onToggleChannelNotifications:()=>void di()})}};M(re,e=>{Te||e(V)});var ae=S(re,2),ce=e=>{var t=ha(),r=B(t),i=S(B(r)),a=B(i,!0);H(i),H(r);var o=S(r,2);H(t),d(()=>c(a,(g(k),z(()=>g(k).name)))),n(`click`,o,()=>void vi(``)),u(e,t)};M(ae,e=>{g(k)&&e(ce)});var ue=S(ae,2);{let e=D(()=>g(on)!==`idle`),t=D(()=>(g(Q),z(()=>g(Q)?.id))),n=D(()=>(g(G),z(()=>g(G)?.id))),r=D(()=>(g(A),g(N),z(()=>!!(g(A)&&!g(N))))),i=D(()=>g(p)&&!g(Z));Ze(ue,{get messages(){return g(pe)},get selectedDirect(){return g(A)},get selectedChannel(){return g(T)},get restoreState(){return g(vn)},get viewKey(){return g(gn)},get loading(){return g(Sn)},get unreadCount(){return g(L)},get unreadBoundarySeq(){return g(se)},get unreadBoundaryLoaded(){return g(U)},get unreadSince(){return g(le)},get hasOlder(){return g(un)},get hasNewer(){return g(dn)},get loadingOlder(){return g(fn)},get loadingNewer(){return g(pn)},get prepending(){return g(e)},get selectedThreadID(){return g(t)},get currentUserID(){return g(n)},get reactionController(){return ke},get reactionsDisabled(){return g(r)},get canDeleteAnyMessage(){return g(i)},get deletingMessageIDs(){return g(or)},onListRef:e=>E(tn,e),onActivateMessageComposer:ti,onInlineImagePointerUp:is,onOpenProfile:Xo,onReply:lo,onOpenThread:io,onJumpToQuote:e=>void mo(e),onOpenImage:$o,onOpenArtifact:es,onLoadOlder:ji,onLoadNewer:e=>Mi(e===`wheel`),onJumpToUnread:()=>void ho(),onHistorySettled:Ri,onReachedBottom:qi,onMarkRead:e=>{qi({all:!0,seq:e})},onRetry:Qa,onDiscard:$a,onDeleteMessage:no,get editController(){return Ae},get editScope(){return g(yn)},onMessageEdited:to,get topics(){return g(Pe)},onSelectTopic:e=>void vi(e)})}var W=S(ue,2);On(W,{get turns(){return g(Bn)}});var fe=S(W,2);{let e=D(()=>(g(G),z(()=>g(G)?.id)));Cn(fe,{get entries(){return g(Rn)},get currentUserID(){return g(e)}})}var me=S(fe,2),be=B(me);An(be,{get active(){return g(he)}});var xe=S(be,2),Se=e=>{var t=ga();let r;var i=B(t),a=B(i,!0);H(i);var o=S(i,2),s=B(o,!0);H(o);var l=S(o,2);H(t),d(()=>{r=C(t,1,`composer-notice`,null,r,{"composer-notice--error":g(lt).kind===`error`}),c(a,(g(lt),z(()=>g(lt).kind===`ephemeral`?`Only visible to you`:`Command failed`))),c(s,(g(lt),z(()=>g(lt).text)))}),n(`click`,l,()=>E(lt,null)),u(e,t)};M(xe,e=>{g(lt)&&e(Se)});var Ce=S(xe,2),we=e=>{var t=va(),r=S(B(t),2),i=B(r);i.value=i.__value=``;var a=S(i);l(a,1,()=>g(O),e=>e.id,(e,t)=>{var n=_a(),r=B(n,!0);H(n);var i={};d(()=>{c(r,(g(t),z(()=>g(t).name))),i!==(i=(g(t),z(()=>g(t).id)))&&(n.value=(n.__value=(g(t),z(()=>g(t).id)))??``)}),u(e,n)}),H(r);var o;y(r),H(t),d(()=>{o!==(o=g(Ue))&&(r.value=(r.__value=g(Ue))??``,oe(r,g(Ue)))}),n(`change`,r,e=>E(Ue,e.currentTarget.value)),u(e,t)};M(Ce,e=>{g(X),g(O),z(()=>g(X)&&g(O).length>0)&&e(we)});var Ee=S(Ce,2);{let e=D(()=>(g(A),g(N),m(Ie),g(G),g(T),m(Xe),z(()=>g(A)&&!g(N)?`No active recipient`:g(A)?`Message ${Ie(g(A),g(G)?.id)}`:g(T)?`Message #${Xe(g(T))}`:`Pick a channel to start`))),t=D(()=>!!g(A)&&!g(N)),n=D(()=>g(jn)&&g(Mn)===(g(Z)?`dm`:`channel`)?g(jn):null),r=D(()=>g(X)?g(st):[]);Ke(Ee,{get value(){return g(xt)},get placeholder(){return g(e)},ariaLabel:`Message body`,submitLabel:`Send`,get disabled(){return g(t)},get pendingUpload(){return g(Mt)},get replyTarget(){return g(n)},showUpload:!0,showToolbar:!0,get showGifPicker(){return g(Pt)},get gifQuery(){return g(Bt)},get filteredGifs(){return g(ye)},get slashCommands(){return g(r)},get botCommands(){return g(P)},get mentionPeople(){return g(ut)},onValue:e=>{let t=g(xt);E(xt,e),e.trim()&&e!==t?Yo():e.trim()||Ft()},onSubmit:()=>void Wa(),onKeydown:Zo,onFocus:ti,onInputRef:e=>E(Pn,e),onUploadFile:Do,onRemoveUpload:()=>E(Mt,null),onClearReply:po,onApplyMarkdownWrap:os,onAppendToComposer:as,onToggleGif:()=>E(Pt,!g(Pt)),onGifQuery:e=>E(Bt,e),onPickGif:ss})}H(me),H(I);var De=S(I,2),Oe=e=>{var t=ya();_n(B(t),{get upload(){return g(ft)},onClose:ts}),H(t),ie(t,e=>E(_t,e),()=>g(_t)),d(()=>{t.inert=g(Dn),R(t,`role`,g(kn)?`dialog`:`complementary`),R(t,`aria-modal`,g(kn)?`true`:void 0)}),u(e,t)};M(De,e=>{g(ft)&&e(Oe)});var Me=S(De,2),Ne=e=>{{let t=D(()=>g(ft)!==null),n=D(()=>g(Dn)||g(ft)!==null);Gr(e,{get session(){return g(Ot)},get covered(){return g(t)},get inert(){return g(n)},contextFor:So,onClose:xo,onOpenResult:e=>void Co(e),onLoadMore:()=>void bo()})}},Fe=e=>{var t=ba();let n;var r=B(t),a=e=>{{let t=D(()=>g(jn)&&g(Mn)===`thread`?g(jn):null),n=D(()=>(g(A),g(N),z(()=>!!(g(A)&&!g(N))))),r=D(()=>g(kt)&&g(Ot)?()=>void wo():void 0),i=D(()=>(g(G),z(()=>g(G)?.id))),a=D(()=>(g(A),g(N),z(()=>!!(g(A)&&!g(N))))),o=D(()=>g(p)&&!g(Z));et(e,{get root(){return g(Q)},get replies(){return g(Ve)},get threadState(){return g(rt)},get replyBody(){return g(St)},get replyTarget(){return g(t)},get mentionPeople(){return g(ut)},get replyDisabled(){return g(n)},onClose:cs,get onBack(){return g(r)},onReplyBody:e=>E(St,e),onSubmitReply:()=>void co(),onReplyKeydown:Qo,onReplyFocus:()=>E(In,`thread`),onReplyInputRef:e=>E(Fn,e),get currentUserID(){return g(i)},get reactionController(){return ke},get reactionsDisabled(){return g(a)},onSetReplyTarget:lo,onClearReply:po,get canDeleteAnyMessage(){return g(o)},get deletingMessageIDs(){return g(or)},onDeleteMessage:no,get editController(){return Ae},get editScope(){return g(yn)},onMessageEdited:to,onActivateThreadComposer:()=>E(In,`thread`),onInlineImagePointerUp:is,onJumpToQuote:e=>void mo(e),onOpenImage:$o,onOpenArtifact:es})}},s=e=>{{let t=D(()=>(g(i),z(()=>g(i)?.name)));Or(e,{get profile(){return g(it)},get currentUser(){return g(G)},get workspaceName(){return g(t)},get currentUserRole(){return g(o)},get moderation(){return g(w)},onClose:cs,onEdit:Cr,onMessage:e=>void Mo(e),onApprove:e=>void si(e,{role:`member`,clear_timeout:!0,blocked:!1}),onTimeout:e=>void si(e,{timeout_minutes:60}),onBlock:e=>void si(e,{blocked:!0}),onUnblock:e=>void si(e,{blocked:!1,clear_timeout:!0}),onSetStatus:()=>E(Kt,`status messages are coming soon`)})}},c=e=>{Li(e,{})};M(r,e=>{g(Q)?e(a):g(it)?e(s,1):e(c,-1)}),H(t),d(()=>{n=C(t,1,`thread`,null,n,{open:g(ge),covered:g(ft)!==null}),t.inert=g(Dn)||g(ft)!==null,R(t,`aria-hidden`,g(ft)?`true`:void 0),R(t,`aria-label`,g(it)?`Profile pane`:`Thread pane`)}),u(e,t)};M(Me,e=>{g(_e)&&g(Ot)?e(Ne):e(Fe,-1)}),H(r),ie(r,e=>E(vt,e),()=>g(vt));var Re=S(r,2),Be=e=>{{let t=D(()=>tt!=null);Fi(e,{get user(){return g(G)},get workspaces(){return g(je)},get initialSection(){return g(Lt)},get hideCommentary(){return g(Ht)},get hideToolCalls(){return g(Ut)},get userAlign(){return g(Wt)},get otherAlign(){return g(Gt)},get isDesktop(){return g(t)},onUserUpdated:Tr,onHideCommentary:br,onHideToolCalls:xr,onUserAlign:vr,onOtherAlign:yr,onBrowserNotificationsChanged:e=>E(Vt,e),onClose:ds})}};M(Re,e=>{g(It)&&g(G)&&e(Be)});var J=S(Re,2),He=e=>{Nn(e,{get channelName(){return g(wt)},status:``,onChannelName:e=>E(wt,e),onClose:ds,onCreate:()=>void ci()})};M(J,e=>{g(Rt)&&e(He)});var We=S(J,2),qe=e=>{{let t=D(()=>(g(G),z(()=>g(G)?.id)));Ln(e,{get people(){return g(ve)},get currentUserID(){return g(t)},get memberID(){return g(Tt)},onMemberID:e=>E(Tt,e),onClose:ds,onStart:e=>void Ao(e)})}};M(We,e=>{g(zt)&&e(qe)});var Je=S(We,2),Ye=e=>{{let t=D(()=>(g(or),g(sr),z(()=>g(or).has(g(sr).id))));bn(e,{get message(){return g(sr)},get deleting(){return g(t)},get error(){return g(cr)},onClose:ds,onConfirm:()=>void ro()})}};M(Je,e=>{g(sr)&&e(Ye)});var Qe=S(Je,2),$e=e=>{Ge(e,{get url(){return g(dt),z(()=>g(dt).url)},get title(){return g(dt),z(()=>g(dt).title)},onClose:ds})};M(Qe,e=>{g(dt)&&e($e)}),d(()=>{a=C(r,1,`shell`,null,a,{"desktop-shell":Te,"nav-open":g(Dn),"sidebar-collapsed":g(En),"thread-open":g(ge)&&!g(_e),"search-open":g(_e),"artifact-open":g(ft)!==null}),R(r,`data-connected`,g(Yt)),R(r,`data-app-ready`,g(Yt)&&g(Kt)===`ready`),R(_,`aria-expanded`,g(Dn)),I.inert=g(Dn)}),n(`click`,_,()=>E(Dn,!g(Dn))),u(e,t)};M(hs,e=>{g(qt)?e(gs):e(_s,-1)}),u(e,ms),ee()}U([`click`,`change`]);export{la as n,Sa as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/entry/app.7RPPZTRi.js b/apps/api/internal/webassets/dist/_app/immutable/entry/app.7RPPZTRi.js new file mode 100644 index 00000000..6ab8fe2b --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/entry/app.7RPPZTRi.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.CJpk276m.js","../chunks/DK3Fl9T5.js","../chunks/-xOSXMZB.js","../chunks/9dGTdiTk.js","../chunks/Dt-HX3Vu.js","../chunks/xihTtKlq.js","../chunks/DhjMpuoL.js","../chunks/UXt3B2YI.js","../chunks/BEqsQr3A.js","../assets/0.ClZf04QE.css","../nodes/1.DkQGCXRB.js","../chunks/DHjIYvi9.js","../nodes/2.Ayui9IWo.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../nodes/3.Cyf2Zyar.js","../chunks/HclGiUj8.js","../chunks/D_KmntYi.js","../nodes/4.BveXNygr.js","../chunks/dmzB10-Q.js","../chunks/CQx5QjGd.js","../assets/QuoteBlock.DPxHYHUM.css","../chunks/DlGnnCJo.js","../chunks/AwlLA_94.js","../chunks/CgfADbOh.js","../chunks/DFObNPU2.js","../chunks/DzgF6O2k.js","../assets/ThreadPanel.DFXp9CyT.css","../assets/ChatApp.nfECkybw.css","../nodes/5.-TZ8job_.js","../nodes/6.D1H8DGKr.js","../nodes/7.DTpk_RMZ.js","../chunks/Bbndfbji.js","../nodes/8.B26ibrzQ.js","../chunks/70DTYTnm.js","../nodes/9.CpLl__D-.js","../nodes/10.CV597x3Q.js","../nodes/11.DFDDRPyS.js","../nodes/12.CbM_a05y.js","../assets/12.hzXFZBW8.css","../nodes/13.VDHhtKL4.js","../assets/13.ByCz7Du1.css"])))=>i.map(i=>d[i]); +import{$ as e,F as t,I as n,K as r,N as i,P as a,Q as o,R as s,T as c,W as l,_t as u,a as d,at as f,ct as p,et as m,ft as h,gt as g,i as _,it as v,j as y,lt as b,r as x,rt as S,s as C,xt as w}from"../chunks/-xOSXMZB.js";import{t as T}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";var E={},D=n(`
                    `),O=n(` `,1);function k(n,_){u(_,!0);let T=d(_,`components`,23,()=>[]),E=d(_,`data_0`,3,null),k=d(_,`data_1`,3,null),A=d(_,`data_2`,3,null);m(()=>_.stores.page.set(_.page)),e(()=>{_.stores,_.page,_.constructors,T(),_.form,E(),k(),A(),_.stores.page.notify()});let j=b(!1),M=b(!1),N=b(null);x(()=>{let e=_.stores.page.subscribe(()=>{l(j)&&(p(M,!0),r().then(()=>{p(N,document.title||`untitled page`,!0)}))});return p(j,!0),e});let P=h(()=>_.constructors[2]);var F=O(),I=v(F),L=e=>{let n=h(()=>_.constructors[0]);var r=t(),i=v(r);c(i,()=>l(n),(e,n)=>{C(n(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t(),i=v(r),o=e=>{let n=h(()=>_.constructors[1]);var r=t(),i=v(r);c(i,()=>l(n),(e,n)=>{C(n(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t(),i=v(r);c(i,()=>l(P),(e,t)=>{C(t(e,{get data(){return A()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[2]=e,()=>T()?.[2])}),a(e,r)},$$slots:{default:!0}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)},s=e=>{let n=h(()=>_.constructors[1]);var r=t(),i=v(r);c(i,()=>l(n),(e,t)=>{C(t(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)};y(i,e=>{_.constructors[2]?e(o):e(s,-1)}),a(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)},R=e=>{let n=h(()=>_.constructors[0]);var r=t(),i=v(r);c(i,()=>l(n),(e,t)=>{C(t(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)};y(I,e=>{_.constructors[1]?e(L):e(R,-1)});var z=f(I,2),B=e=>{var t=D(),n=S(t),r=e=>{var t=s();o(()=>i(t,l(N))),a(e,t)};y(n,e=>{l(M)&&e(r)}),w(t),a(e,t)};y(z,e=>{l(j)&&e(B)}),a(n,F),g()}var A=_(k),j=[()=>T(()=>import(`../nodes/0.CJpk276m.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),()=>T(()=>import(`../nodes/1.DkQGCXRB.js`),__vite__mapDeps([10,2,1,5,11,3,4]),import.meta.url),()=>T(()=>import(`../nodes/2.Ayui9IWo.js`),__vite__mapDeps([12,1,2,3,4,5,6,8,11,13,14]),import.meta.url),()=>T(()=>import(`../nodes/3.Cyf2Zyar.js`),__vite__mapDeps([15,1,2,16,5,17]),import.meta.url),()=>T(()=>import(`../nodes/4.BveXNygr.js`),__vite__mapDeps([18,2,1,5,17,19,3,4,16,6,8,7,13,14,20,21,22,23,24,25,26,27,28]),import.meta.url),()=>T(()=>import(`../nodes/5.-TZ8job_.js`),__vite__mapDeps([29,2,1,5,19,3,4,16,6,8,7,13,14,17,20,21,22,23,24,25,26,27,28]),import.meta.url),()=>T(()=>import(`../nodes/6.D1H8DGKr.js`),__vite__mapDeps([30,1,4,13]),import.meta.url),()=>T(()=>import(`../nodes/7.DTpk_RMZ.js`),__vite__mapDeps([31,1,2,5,8,7,14,25,32]),import.meta.url),()=>T(()=>import(`../nodes/8.B26ibrzQ.js`),__vite__mapDeps([33,1,2,5,8,7,14,22,24,25,32,34]),import.meta.url),()=>T(()=>import(`../nodes/9.CpLl__D-.js`),__vite__mapDeps([35,1,2,5,24,34,8]),import.meta.url),()=>T(()=>import(`../nodes/10.CV597x3Q.js`),__vite__mapDeps([36,1,2,3,4,5,6,8,14,34]),import.meta.url),()=>T(()=>import(`../nodes/11.DFDDRPyS.js`),__vite__mapDeps([37,2,1,5,19,3,4,16,6,8,7,13,14,17,20,21,22,23,24,25,26,27,28]),import.meta.url),()=>T(()=>import(`../nodes/12.CbM_a05y.js`),__vite__mapDeps([38,1,2,5,8,7,20,21,22,23,24,39]),import.meta.url),()=>T(()=>import(`../nodes/13.VDHhtKL4.js`),__vite__mapDeps([40,1,2,5,8,7,20,21,22,26,27,41]),import.meta.url)],M=[],N={"/":[3],"/app":[4],"/app/[workspaceID]":[5],"/app/[workspaceID]/(settings)/settings":[6,[2]],"/app/[workspaceID]/(settings)/settings/bots":[7,[2]],"/app/[workspaceID]/(settings)/settings/integrations":[8,[2]],"/app/[workspaceID]/(settings)/settings/members":[9,[2]],"/app/[workspaceID]/(settings)/settings/overview":[10,[2]],"/app/[workspaceID]/[targetID]":[11],"/embed/channel/[workspaceID]/[channelID]":[12],"/embed/thread/[workspaceID]/[messageID]":[13]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t),z=()=>T(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{R as decode,F as decoders,N as dictionary,I as encoders,z as get_error_template,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/entry/app.rLUFGSPX.js b/apps/api/internal/webassets/dist/_app/immutable/entry/app.rLUFGSPX.js deleted file mode 100644 index 7872360f..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/entry/app.rLUFGSPX.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.DNzuMmb4.js","../chunks/DK3Fl9T5.js","../chunks/CySd1wef.js","../chunks/DGQW1sK7.js","../chunks/BuFlayix.js","../chunks/xihTtKlq.js","../chunks/M3UdkkP6.js","../chunks/DiELhALK.js","../chunks/BEqsQr3A.js","../assets/0.DMQbOJlk.css","../nodes/1.D9ztfcFH.js","../chunks/DwaZ0FH6.js","../nodes/2.0ohoWLGr.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../nodes/3.BlUkYxRF.js","../chunks/HclGiUj8.js","../chunks/amAOfu1G.js","../nodes/4.CV83zLxh.js","../chunks/DtafmpxM.js","../chunks/C5AMwlHa.js","../assets/QuoteBlock.DPxHYHUM.css","../chunks/DlGnnCJo.js","../chunks/CEzVcVFQ.js","../chunks/YGHvv9X0.js","../chunks/DFObNPU2.js","../chunks/B_KT8vL7.js","../assets/ThreadPanel.DFXp9CyT.css","../assets/ChatApp.nfECkybw.css","../nodes/5.C04PopFT.js","../nodes/6.B4FM4ibZ.js","../nodes/7.B9isd4ex.js","../chunks/Da4vmQqB.js","../nodes/8.B3XUUK_I.js","../chunks/CaEGKmxL.js","../nodes/9.Cv5gLiPb.js","../nodes/10.BBRfY8ZD.js","../nodes/11.BPwHOykE.js","../nodes/12.Cki_evoH.js","../assets/12.hzXFZBW8.css","../nodes/13.utPVEaYE.js","../assets/13.ByCz7Du1.css"])))=>i.map(i=>d[i]); -import{$ as e,F as t,I as n,K as r,N as i,P as a,Q as o,R as s,T as c,W as l,_t as u,a as d,at as f,ct as p,et as m,ft as h,gt as g,i as _,it as v,j as y,lt as b,r as x,rt as S,s as C,xt as w}from"../chunks/CySd1wef.js";import{t as T}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";var E={},D=n(`
                    `),O=n(` `,1);function k(n,_){u(_,!0);let T=d(_,`components`,23,()=>[]),E=d(_,`data_0`,3,null),k=d(_,`data_1`,3,null),A=d(_,`data_2`,3,null);m(()=>_.stores.page.set(_.page)),e(()=>{_.stores,_.page,_.constructors,T(),_.form,E(),k(),A(),_.stores.page.notify()});let j=b(!1),M=b(!1),N=b(null);x(()=>{let e=_.stores.page.subscribe(()=>{l(j)&&(p(M,!0),r().then(()=>{p(N,document.title||`untitled page`,!0)}))});return p(j,!0),e});let P=h(()=>_.constructors[2]);var F=O(),I=v(F),L=e=>{let n=h(()=>_.constructors[0]);var r=t();c(v(r),()=>l(n),(e,n)=>{C(n(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t(),i=v(r),o=e=>{let n=h(()=>_.constructors[1]);var r=t();c(v(r),()=>l(n),(e,n)=>{C(n(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t();c(v(r),()=>l(P),(e,t)=>{C(t(e,{get data(){return A()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[2]=e,()=>T()?.[2])}),a(e,r)},$$slots:{default:!0}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)},s=e=>{let n=h(()=>_.constructors[1]);var r=t();c(v(r),()=>l(n),(e,t)=>{C(t(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)};y(i,e=>{_.constructors[2]?e(o):e(s,-1)}),a(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)},R=e=>{let n=h(()=>_.constructors[0]);var r=t();c(v(r),()=>l(n),(e,t)=>{C(t(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)};y(I,e=>{_.constructors[1]?e(L):e(R,-1)});var z=f(I,2),B=e=>{var t=D(),n=S(t),r=e=>{var t=s();o(()=>i(t,l(N))),a(e,t)};y(n,e=>{l(M)&&e(r)}),w(t),a(e,t)};y(z,e=>{l(j)&&e(B)}),a(n,F),g()}var A=_(k),j=[()=>T(()=>import(`../nodes/0.DNzuMmb4.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),()=>T(()=>import(`../nodes/1.D9ztfcFH.js`),__vite__mapDeps([10,2,1,5,11,3,4]),import.meta.url),()=>T(()=>import(`../nodes/2.0ohoWLGr.js`),__vite__mapDeps([12,1,2,3,4,5,6,8,11,13,14]),import.meta.url),()=>T(()=>import(`../nodes/3.BlUkYxRF.js`),__vite__mapDeps([15,1,2,16,5,17]),import.meta.url),()=>T(()=>import(`../nodes/4.CV83zLxh.js`),__vite__mapDeps([18,2,1,5,17,19,3,4,16,6,8,7,13,14,20,21,22,23,24,25,26,27,28]),import.meta.url),()=>T(()=>import(`../nodes/5.C04PopFT.js`),__vite__mapDeps([29,2,1,5,19,3,4,16,6,8,7,13,14,17,20,21,22,23,24,25,26,27,28]),import.meta.url),()=>T(()=>import(`../nodes/6.B4FM4ibZ.js`),__vite__mapDeps([30,1,4,13]),import.meta.url),()=>T(()=>import(`../nodes/7.B9isd4ex.js`),__vite__mapDeps([31,1,2,5,8,7,14,25,32]),import.meta.url),()=>T(()=>import(`../nodes/8.B3XUUK_I.js`),__vite__mapDeps([33,1,2,5,8,7,14,22,24,25,32,34]),import.meta.url),()=>T(()=>import(`../nodes/9.Cv5gLiPb.js`),__vite__mapDeps([35,1,2,5,24,34,8]),import.meta.url),()=>T(()=>import(`../nodes/10.BBRfY8ZD.js`),__vite__mapDeps([36,1,2,3,4,5,6,8,14,34]),import.meta.url),()=>T(()=>import(`../nodes/11.BPwHOykE.js`),__vite__mapDeps([37,2,1,5,19,3,4,16,6,8,7,13,14,17,20,21,22,23,24,25,26,27,28]),import.meta.url),()=>T(()=>import(`../nodes/12.Cki_evoH.js`),__vite__mapDeps([38,1,2,5,8,7,20,21,22,23,24,39]),import.meta.url),()=>T(()=>import(`../nodes/13.utPVEaYE.js`),__vite__mapDeps([40,1,2,5,8,7,20,21,22,26,27,41]),import.meta.url)],M=[],N={"/":[3],"/app":[4],"/app/[workspaceID]":[5],"/app/[workspaceID]/(settings)/settings":[6,[2]],"/app/[workspaceID]/(settings)/settings/bots":[7,[2]],"/app/[workspaceID]/(settings)/settings/integrations":[8,[2]],"/app/[workspaceID]/(settings)/settings/members":[9,[2]],"/app/[workspaceID]/(settings)/settings/overview":[10,[2]],"/app/[workspaceID]/[targetID]":[11],"/embed/channel/[workspaceID]/[channelID]":[12],"/embed/thread/[workspaceID]/[messageID]":[13]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t),z=()=>T(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{R as decode,F as decoders,N as dictionary,I as encoders,z as get_error_template,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/entry/start.BJgyZiDJ.js b/apps/api/internal/webassets/dist/_app/immutable/entry/start.BJgyZiDJ.js deleted file mode 100644 index c79e7789..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/entry/start.BJgyZiDJ.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,l as t}from"../chunks/DGQW1sK7.js";export{t as load_css,e as start}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/entry/start.CfWZRA5o.js b/apps/api/internal/webassets/dist/_app/immutable/entry/start.CfWZRA5o.js new file mode 100644 index 00000000..94209401 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/entry/start.CfWZRA5o.js @@ -0,0 +1 @@ +import{i as e,l as t}from"../chunks/9dGTdiTk.js";export{t as load_css,e as start}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/0.CJpk276m.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/0.CJpk276m.js new file mode 100644 index 00000000..a3175bb5 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/0.CJpk276m.js @@ -0,0 +1 @@ +import{t as e}from"../chunks/DK3Fl9T5.js";import{E as t,F as n,P as r,_t as i,gt as a,it as o,r as s}from"../chunks/-xOSXMZB.js";import{t as c}from"../chunks/9dGTdiTk.js";import"../chunks/xihTtKlq.js";import"../chunks/DhjMpuoL.js";import{_ as l,a as u,c as d,g as f,o as p}from"../chunks/UXt3B2YI.js";var m=e({ssr:()=>!1});function h(e,m){i(m,!0);let h=()=>{};s(()=>(p(),()=>{h(),f()})),c(()=>{h(),f(),h=l(),u(d())});var g=n(),_=o(g);t(_,()=>m.children),r(e,g),a()}export{h as component,m as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/0.DNzuMmb4.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/0.DNzuMmb4.js deleted file mode 100644 index fece1860..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/0.DNzuMmb4.js +++ /dev/null @@ -1 +0,0 @@ -import{t as e}from"../chunks/DK3Fl9T5.js";import{E as t,F as n,P as r,_t as i,gt as a,it as o,r as s}from"../chunks/CySd1wef.js";import{t as c}from"../chunks/DGQW1sK7.js";import"../chunks/xihTtKlq.js";import"../chunks/M3UdkkP6.js";import{_ as l,a as u,c as d,g as f,o as p}from"../chunks/DiELhALK.js";var m=e({ssr:()=>!1});function h(e,m){i(m,!0);let h=()=>{};s(()=>(p(),()=>{h(),f()})),c(()=>{h(),f(),h=l(),u(d())});var g=n();t(o(g),()=>m.children),r(e,g),a()}export{h as component,m as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/1.D9ztfcFH.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/1.DkQGCXRB.js similarity index 66% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/1.D9ztfcFH.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/1.DkQGCXRB.js index 1032fcd1..2c1486e8 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/1.D9ztfcFH.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/1.DkQGCXRB.js @@ -1 +1 @@ -import{I as e,N as t,P as n,Q as r,_t as i,at as a,gt as o,it as s,rt as c,xt as l}from"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/DwaZ0FH6.js";var d=e(`

                    `,1);function f(e,f){i(f,!0);var p=d(),m=s(p),h=c(m,!0);l(m);var g=a(m,2),_=c(g,!0);l(g),r(()=>{t(h,u.status),t(_,u.error?.message)}),n(e,p),o()}export{f as component}; \ No newline at end of file +import{I as e,N as t,P as n,Q as r,_t as i,at as a,gt as o,it as s,rt as c,xt as l}from"../chunks/-xOSXMZB.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/DHjIYvi9.js";var d=e(`

                    `,1);function f(e,f){i(f,!0);var p=d(),m=s(p),h=c(m,!0);l(m);var g=a(m,2),_=c(g,!0);l(g),r(()=>{t(h,u.status),t(_,u.error?.message)}),n(e,p),o()}export{f as component}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/10.BBRfY8ZD.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/10.CV597x3Q.js similarity index 90% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/10.BBRfY8ZD.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/10.CV597x3Q.js index 385f8fca..e7fa22c5 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/10.BBRfY8ZD.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/10.CV597x3Q.js @@ -1,2 +1,2 @@ -import{t as e}from"../chunks/DK3Fl9T5.js";import{$ as t,B as n,I as r,N as i,O as a,P as o,Q as s,R as c,W as l,_t as u,at as d,b as f,ct as p,f as m,ft as h,g as ee,gt as g,it as te,j as _,lt as v,ot as y,p as ne,rt as b,s as x,u as S,xt as C,z as w}from"../chunks/CySd1wef.js";import{n as T,r as E}from"../chunks/DGQW1sK7.js";import"../chunks/xihTtKlq.js";import"../chunks/M3UdkkP6.js";import{i as D,n as O,t as k}from"../chunks/BEqsQr3A.js";import{t as re}from"../chunks/OQjxVT6U.js";import{t as ie}from"../chunks/CaEGKmxL.js";var A=e({prerender:()=>!1,ssr:()=>!1}),ae=r(``),oe=r(`

                    `),se=r(``),ce=r(`
                    Transfer ownership
                    Delete workspace
                    `,1),le=r(`
                    Owner-only actions
                    Only the workspace owner can transfer ownership or delete the workspace.
                    `),ue=r(`

                    Danger zone

                    `),de=r(`

                    Overview

                    Workspace name
                    The name members and bots see.
                    URL slug
                    clickclack.app/
                    Workspace icon
                    Shown in the workspace switcher and in mentions.
                    `,1);function j(e,r){u(r,!0);let w=h(()=>r.data.workspace),A=h(()=>(l(w)?.role??``)===`owner`),j=h(()=>re(l(w)?.role)),fe=h(()=>(l(w)?.name??`?`).slice(0,1).toUpperCase()),M=v(``),N=v(``),P=v(``),F=v(``),I=v(!1),L=v(void 0),R=v(y([])),pe=v(``),z=v(``),B=v(!1),V=v(``),H=v(!1),me=h(()=>!!l(w)&&(l(M).trim()!==l(w).name||l(N).trim()!==l(w).slug)),he=h(()=>l(j)&&l(me)&&!l(I)),ge=h(()=>l(A)&&l(z)!==``&&!l(B)),_e=h(()=>l(A)&&l(w)&&l(V)===l(w).name&&!l(H));t(()=>{l(w)&&(p(M,l(w).name,!0),p(N,l(w).slug,!0),p(V,``),p(P,``),p(F,``))}),t(()=>{!l(A)||!l(w)||l(pe)===l(w).id||Ce(l(w).id)});function ve(e){return e?e.charAt(0).toUpperCase()+e.slice(1):`-`}function U(e){if(e instanceof k)try{let t=JSON.parse(e.message);if(t.error)return t.error}catch{return e.message}return e instanceof Error?e.message:`Something went wrong`}async function ye(e){if(!l(w))return;let t=await O(`/api/workspaces/${l(w).id}`,{method:`PATCH`,body:JSON.stringify(e)});return await E(),t.workspace}async function be(){if(!(!l(w)||!l(he))){p(I,!0),p(P,``),p(F,``);try{await ye({name:l(M).trim(),slug:l(N).trim()}),p(P,`Workspace updated.`)}catch(e){p(F,U(e),!0)}finally{p(I,!1)}}}function xe(){l(L)?.click()}async function Se(e){if(!l(w))return;let t=e.currentTarget,n=t.files?.[0];if(t.value=``,n){if(!n.type.startsWith(`image/`)){p(F,`Workspace icon must be an image.`);return}p(I,!0),p(P,``),p(F,``);try{let e=new FormData;e.set(`workspace_id`,l(w).id),e.set(`file`,n);let t={icon_url:`/api/uploads/${(await O(`/api/uploads`,{method:`POST`,body:e})).upload.id}`};l(M).trim()!==l(w).name&&(t.name=l(M).trim()),l(N).trim()!==l(w).slug&&(t.slug=l(N).trim()),await ye(t),p(P,`Workspace icon updated.`)}catch(e){p(F,U(e),!0)}finally{p(I,!1)}}}async function Ce(e){try{let t=[],n,r=new Set;do{let i=await ie({workspaceID:e,limit:200,cursor:n});if(t.push(...i.members),n=i.has_more?i.next_cursor:void 0,i.has_more&&!n)throw Error(`Member directory returned an incomplete page`);if(n&&r.has(n))throw Error(`Member directory repeated a pagination cursor`);n&&r.add(n)}while(n);if(l(w)?.id!==e)return;p(R,t.filter(e=>e.user.kind===`human`&&e.role!==`owner`&&e.role!==`guest`&&e.role!==`bot`),!0),p(z,l(R)[0]?.user.id??``,!0),p(pe,e,!0)}catch(e){p(F,U(e),!0)}}async function we(){if(!(!l(w)||!l(ge))){p(B,!0),p(P,``),p(F,``);try{await O(`/api/workspaces/${l(w).id}/transfer-ownership`,{method:`POST`,body:JSON.stringify({user_id:l(z)})}),await E(),p(P,`Ownership transferred.`)}catch(e){p(F,U(e),!0)}finally{p(B,!1)}}}async function Te(){if(!(!l(w)||!l(_e))){p(H,!0),p(P,``),p(F,``);try{await O(`/api/workspaces/${l(w).id}`,{method:`DELETE`}),await T(`/app`,{invalidateAll:!0,replaceState:!0})}catch(e){p(F,U(e),!0),p(H,!1)}}}var Ee=de(),W=te(Ee),De=d(b(W),2),Oe=b(De);C(De),C(W);var G=d(W,2),K=b(G),ke=b(K),Ae=e=>{var t=ae();s(e=>ne(t,`src`,e),[()=>D(l(w).icon_url)]),o(e,t)},je=e=>{var t=c();s(()=>i(t,l(fe))),o(e,t)};_(ke,e=>{l(w)?.icon_url?e(Ae):e(je,-1)}),C(K);var q=d(K,2),Me=b(q,!0);C(q);var J=d(q,2),Ne=b(J,!0);C(J),C(G);var Y=d(G,2),X=b(Y),Z=d(b(X),2);m(Z),C(X);var Q=d(X,2),$=b(Q),Pe=d(b($),2),Fe=d(b(Pe)),Ie=b(Fe,!0);C(Fe),C(Pe),C($);var Le=d($,2);m(Le),C(Q);var Re=d(Q,2),ze=d(b(Re),2),Be=b(ze);x(Be,e=>p(L,e),()=>l(L));var Ve=d(Be,2);C(ze),C(Re);var He=d(Re,2),Ue=e=>{var t=oe(),r=b(t);let a;var c=b(r,!0);C(r);var u=d(r,2),p=b(u,!0);C(u),C(t),s(()=>{a=f(r,1,`ws-status`,null,a,{"is-error":!!l(F)}),i(c,l(F)||l(P)),u.disabled=!l(he),i(p,l(I)?`Saving...`:`Save changes`)}),n(`click`,u,be),o(e,t)};_(He,e=>{l(j)&&e(Ue)}),C(Y);var We=d(Y,2),Ge=e=>{var t=ue(),r=d(b(t),2),c=e=>{var t=ce(),r=te(t),c=b(r),u=d(b(c),2),f=b(u);C(u),C(c);var h=d(c,2),g=b(h);a(g,21,()=>l(R),e=>e.user.id,(e,t)=>{var n=se(),r=b(n,!0);C(n);var a={};s(()=>{i(r,l(t).user.display_name||l(t).user.handle||l(t).user.id),a!==(a=l(t).user.id)&&(n.value=(n.__value=l(t).user.id)??``)}),o(e,n)}),C(g);var _=d(g,2),v=b(_,!0);C(_),C(h),C(r);var y=d(r,2),x=b(y),T=d(b(x),2),E=b(T);C(T),C(x);var D=d(x,2),O=b(D);m(O);var k=d(O,2),re=b(k,!0);C(k),C(D),C(y),s(()=>{i(f,`Transfer ownership of ${l(w)?.name??`this workspace`??``} to another member.`),g.disabled=l(B)||l(R).length===0,_.disabled=!l(ge),i(v,l(B)?`Transferring...`:`Transfer`),i(E,`Permanently delete ${l(w)?.name??`this workspace`??``}, all of its messages, channels, - and bot tokens. This cannot be undone.`),ne(O,`placeholder`,l(w)?.name??`Workspace name`),O.disabled=l(H),k.disabled=!l(_e),i(re,l(H)?`Deleting...`:`Delete workspace`)}),ee(g,()=>l(z),e=>p(z,e)),n(`click`,_,we),S(O,()=>l(V),e=>p(V,e)),n(`click`,k,Te),o(e,t)},u=e=>{o(e,le())};_(r,e=>{l(A)?e(c):e(u,-1)}),C(t),o(e,t)};_(We,e=>{l(j)&&e(Ge)}),s(e=>{i(Oe,`How ${l(w)?.name??`this workspace`??``} appears to members and the bots that connect to it.`),i(Me,l(w)?.name??`-`),f(J,1,`ws-strip__pill ws-strip__pill--${l(w)?.role??`member`??``}`),i(Ne,e),Z.disabled=!l(j)||l(I),i(Ie,l(w)?.slug??`-`),Le.disabled=!l(j)||l(I),Ve.disabled=!l(j)||l(I)},[()=>ve(l(w)?.role)]),S(Z,()=>l(M),e=>p(M,e)),S(Le,()=>l(N),e=>p(N,e)),n(`change`,Be,Se),n(`click`,Ve,xe),o(e,Ee),g()}w([`change`,`click`]);export{j as component,A as universal}; \ No newline at end of file +import{t as e}from"../chunks/DK3Fl9T5.js";import{$ as t,B as n,I as r,N as i,O as a,P as o,Q as s,R as c,W as l,_t as u,at as d,b as f,ct as p,f as m,ft as h,g as ee,gt as g,it as te,j as _,lt as v,ot as y,p as ne,rt as b,s as x,u as S,xt as C,z as w}from"../chunks/-xOSXMZB.js";import{n as T,r as E}from"../chunks/9dGTdiTk.js";import"../chunks/xihTtKlq.js";import"../chunks/DhjMpuoL.js";import{i as D,n as O,t as k}from"../chunks/BEqsQr3A.js";import{t as re}from"../chunks/OQjxVT6U.js";import{t as ie}from"../chunks/70DTYTnm.js";var A=e({prerender:()=>!1,ssr:()=>!1}),ae=r(``),oe=r(`

                    `),se=r(``),ce=r(`
                    Transfer ownership
                    Delete workspace
                    `,1),le=r(`
                    Owner-only actions
                    Only the workspace owner can transfer ownership or delete the workspace.
                    `),ue=r(`

                    Danger zone

                    `),de=r(`

                    Overview

                    Workspace name
                    The name members and bots see.
                    URL slug
                    clickclack.app/
                    Workspace icon
                    Shown in the workspace switcher and in mentions.
                    `,1);function j(e,r){u(r,!0);let w=h(()=>r.data.workspace),A=h(()=>(l(w)?.role??``)===`owner`),j=h(()=>re(l(w)?.role)),fe=h(()=>(l(w)?.name??`?`).slice(0,1).toUpperCase()),M=v(``),N=v(``),P=v(``),F=v(``),I=v(!1),L=v(void 0),R=v(y([])),pe=v(``),z=v(``),B=v(!1),V=v(``),H=v(!1),me=h(()=>!!l(w)&&(l(M).trim()!==l(w).name||l(N).trim()!==l(w).slug)),he=h(()=>l(j)&&l(me)&&!l(I)),ge=h(()=>l(A)&&l(z)!==``&&!l(B)),_e=h(()=>l(A)&&l(w)&&l(V)===l(w).name&&!l(H));t(()=>{l(w)&&(p(M,l(w).name,!0),p(N,l(w).slug,!0),p(V,``),p(P,``),p(F,``))}),t(()=>{!l(A)||!l(w)||l(pe)===l(w).id||Ce(l(w).id)});function ve(e){return e?e.charAt(0).toUpperCase()+e.slice(1):`-`}function U(e){if(e instanceof k)try{let t=JSON.parse(e.message);if(t.error)return t.error}catch{return e.message}return e instanceof Error?e.message:`Something went wrong`}async function ye(e){if(!l(w))return;let t=await O(`/api/workspaces/${l(w).id}`,{method:`PATCH`,body:JSON.stringify(e)});return await E(),t.workspace}async function be(){if(!(!l(w)||!l(he))){p(I,!0),p(P,``),p(F,``);try{await ye({name:l(M).trim(),slug:l(N).trim()}),p(P,`Workspace updated.`)}catch(e){p(F,U(e),!0)}finally{p(I,!1)}}}function xe(){l(L)?.click()}async function Se(e){if(!l(w))return;let t=e.currentTarget,n=t.files?.[0];if(t.value=``,n){if(!n.type.startsWith(`image/`)){p(F,`Workspace icon must be an image.`);return}p(I,!0),p(P,``),p(F,``);try{let e=new FormData;e.set(`workspace_id`,l(w).id),e.set(`file`,n);let t={icon_url:`/api/uploads/${(await O(`/api/uploads`,{method:`POST`,body:e})).upload.id}`};l(M).trim()!==l(w).name&&(t.name=l(M).trim()),l(N).trim()!==l(w).slug&&(t.slug=l(N).trim()),await ye(t),p(P,`Workspace icon updated.`)}catch(e){p(F,U(e),!0)}finally{p(I,!1)}}}async function Ce(e){try{let t=[],n,r=new Set;do{let i=await ie({workspaceID:e,limit:200,cursor:n});if(t.push(...i.members),n=i.has_more?i.next_cursor:void 0,i.has_more&&!n)throw Error(`Member directory returned an incomplete page`);if(n&&r.has(n))throw Error(`Member directory repeated a pagination cursor`);n&&r.add(n)}while(n);if(l(w)?.id!==e)return;p(R,t.filter(e=>e.user.kind===`human`&&e.role!==`owner`&&e.role!==`guest`&&e.role!==`bot`),!0),p(z,l(R)[0]?.user.id??``,!0),p(pe,e,!0)}catch(e){p(F,U(e),!0)}}async function we(){if(!(!l(w)||!l(ge))){p(B,!0),p(P,``),p(F,``);try{await O(`/api/workspaces/${l(w).id}/transfer-ownership`,{method:`POST`,body:JSON.stringify({user_id:l(z)})}),await E(),p(P,`Ownership transferred.`)}catch(e){p(F,U(e),!0)}finally{p(B,!1)}}}async function Te(){if(!(!l(w)||!l(_e))){p(H,!0),p(P,``),p(F,``);try{await O(`/api/workspaces/${l(w).id}`,{method:`DELETE`}),await T(`/app`,{invalidateAll:!0,replaceState:!0})}catch(e){p(F,U(e),!0),p(H,!1)}}}var Ee=de(),W=te(Ee),De=d(b(W),2),Oe=b(De);C(De),C(W);var G=d(W,2),K=b(G),ke=b(K),Ae=e=>{var t=ae();s(e=>ne(t,`src`,e),[()=>D(l(w).icon_url)]),o(e,t)},je=e=>{var t=c();s(()=>i(t,l(fe))),o(e,t)};_(ke,e=>{l(w)?.icon_url?e(Ae):e(je,-1)}),C(K);var q=d(K,2),Me=b(q,!0);C(q);var J=d(q,2),Ne=b(J,!0);C(J),C(G);var Y=d(G,2),X=b(Y),Z=d(b(X),2);m(Z),C(X);var Q=d(X,2),$=b(Q),Pe=d(b($),2),Fe=d(b(Pe)),Ie=b(Fe,!0);C(Fe),C(Pe),C($);var Le=d($,2);m(Le),C(Q);var Re=d(Q,2),ze=d(b(Re),2),Be=b(ze);x(Be,e=>p(L,e),()=>l(L));var Ve=d(Be,2);C(ze),C(Re);var He=d(Re,2),Ue=e=>{var t=oe(),r=b(t);let a;var c=b(r,!0);C(r);var u=d(r,2),p=b(u,!0);C(u),C(t),s(()=>{a=f(r,1,`ws-status`,null,a,{"is-error":!!l(F)}),i(c,l(F)||l(P)),u.disabled=!l(he),i(p,l(I)?`Saving...`:`Save changes`)}),n(`click`,u,be),o(e,t)};_(He,e=>{l(j)&&e(Ue)}),C(Y);var We=d(Y,2),Ge=e=>{var t=ue(),r=d(b(t),2),c=e=>{var t=ce(),r=te(t),c=b(r),u=d(b(c),2),f=b(u);C(u),C(c);var h=d(c,2),g=b(h);a(g,21,()=>l(R),e=>e.user.id,(e,t)=>{var n=se(),r=b(n,!0);C(n);var a={};s(()=>{i(r,l(t).user.display_name||l(t).user.handle||l(t).user.id),a!==(a=l(t).user.id)&&(n.value=(n.__value=l(t).user.id)??``)}),o(e,n)}),C(g);var _=d(g,2),v=b(_,!0);C(_),C(h),C(r);var y=d(r,2),x=b(y),T=d(b(x),2),E=b(T);C(T),C(x);var D=d(x,2),O=b(D);m(O);var k=d(O,2),re=b(k,!0);C(k),C(D),C(y),s(()=>{i(f,`Transfer ownership of ${l(w)?.name??`this workspace`??``} to another member.`),g.disabled=l(B)||l(R).length===0,_.disabled=!l(ge),i(v,l(B)?`Transferring...`:`Transfer`),i(E,`Permanently delete ${l(w)?.name??`this workspace`??``}, all of its messages, channels, + and bot tokens. This cannot be undone.`),ne(O,`placeholder`,l(w)?.name??`Workspace name`),O.disabled=l(H),k.disabled=!l(_e),i(re,l(H)?`Deleting...`:`Delete workspace`)}),ee(g,()=>l(z),e=>p(z,e)),n(`click`,_,we),S(O,()=>l(V),e=>p(V,e)),n(`click`,k,Te),o(e,t)},u=e=>{var t=le();o(e,t)};_(r,e=>{l(A)?e(c):e(u,-1)}),C(t),o(e,t)};_(We,e=>{l(j)&&e(Ge)}),s(e=>{i(Oe,`How ${l(w)?.name??`this workspace`??``} appears to members and the bots that connect to it.`),i(Me,l(w)?.name??`-`),f(J,1,`ws-strip__pill ws-strip__pill--${l(w)?.role??`member`??``}`),i(Ne,e),Z.disabled=!l(j)||l(I),i(Ie,l(w)?.slug??`-`),Le.disabled=!l(j)||l(I),Ve.disabled=!l(j)||l(I)},[()=>ve(l(w)?.role)]),S(Z,()=>l(M),e=>p(M,e)),S(Le,()=>l(N),e=>p(N,e)),n(`change`,Be,Se),n(`click`,Ve,xe),o(e,Ee),g()}w([`change`,`click`]);export{j as component,A as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/11.BPwHOykE.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/11.DFDDRPyS.js similarity index 54% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/11.BPwHOykE.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/11.DFDDRPyS.js index 28835b17..b3767e86 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/11.BPwHOykE.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/11.DFDDRPyS.js @@ -1 +1 @@ -import{_t as e,gt as t}from"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/DtafmpxM.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID},get routeTargetID(){return i.params.targetID}}),t()}export{r as component}; \ No newline at end of file +import{_t as e,gt as t}from"../chunks/-xOSXMZB.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/dmzB10-Q.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID},get routeTargetID(){return i.params.targetID}}),t()}export{r as component}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/12.CbM_a05y.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/12.CbM_a05y.js new file mode 100644 index 00000000..7eacfaa9 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/12.CbM_a05y.js @@ -0,0 +1 @@ +import{t as e}from"../chunks/DK3Fl9T5.js";import{A as t,B as n,C as r,F as i,I as a,J as o,K as s,N as c,P as l,Q as u,W as d,_t as f,at as p,ct as m,ft as h,gt as g,it as _,j as v,lt as y,n as ee,ot as te,r as ne,rt as b,tt as re,xt as x,z as S}from"../chunks/-xOSXMZB.js";import"../chunks/xihTtKlq.js";import{i as ie,n as C,o as w,t as T}from"../chunks/BEqsQr3A.js";import{d as ae}from"../chunks/UXt3B2YI.js";import{D as oe,E as se,T as ce,u as le,v as ue,z as de}from"../chunks/CQx5QjGd.js";import{t as E}from"../chunks/DlGnnCJo.js";import{t as fe}from"../chunks/AwlLA_94.js";var D=e({prerender:()=>!1,ssr:()=>!1}),pe=a(``),me=a(`Archived`),he=a(`

                    `),ge=a(`

                    `),_e=a(`

                    Sign in to ClickClack

                    Open ClickClack in a new tab, sign in, then return here. This panel will reconnect automatically.

                    Open ClickClack
                    `),ve=a(`
                    `),ye=a(`
                    `),be=a(`
                    `),xe=a(`
                    `),Se=a(` `,1);function O(e,t){f(t,!0);let i=y(`loading`),a=y(``),S=y(null),D=new ce(()=>d(S)?.id||``),O=new oe(Te),k=y(null),A=y(null),j=y(te([])),M=y(0),N=y(0),P=y(!1),F=y(!1),I=y(!1),L=y(``),R=y(null),z=y(null),B=y(null),V=y(``),H=y(``),U=y(!1),W=y(null),G=null,K=0,q=!1,J=null,Ce=h(()=>{let e=new Map;for(let t of d(j))t.author?.id&&t.author.handle?.trim()&&!t.author.deleted_at&&e.set(t.author.id,t.author);return d(S)?.id&&d(S).handle?.trim()&&e.set(d(S).id,d(S)),[...e.values()].slice(0,24)});function we(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}async function Te(e,t){if(e===d(A)?.id){d(B)?.scrollToMessage(t.messageID);for(let e=0;e<16;e+=1){await s(),await new Promise(e=>requestAnimationFrame(()=>e()));let e=document.querySelector(`.embed-channel-shell`)?.querySelector(`[data-message-id="${CSS.escape(t.messageID)}"]`)?.querySelector(`textarea[aria-label="Edit message"]`);if(e){e.focus();return}}}}function Ee(e){m(j,d(j).map(t=>t.id===e.id?{...t,...e}:t),!0)}function Y(...e){let t=new Map;for(let n of e)for(let e of n)t.set(e.id,e);return[...t.values()].sort((e,t)=>(e.channel_seq||0)-(t.channel_seq||0))}function X(e,t){D.seedMessages(e.messages),m(j,t===`replace`?e.messages:t===`prepend`?Y(e.messages,d(j)):Y(d(j),e.messages),!0),O.reconcile(d(A)?.id||``,d(j)),m(M,d(j)[0]?.channel_seq||e.oldest_seq||d(M),!0),m(N,d(j)[d(j).length-1]?.channel_seq||e.newest_seq||d(N),!0),t!==`append`&&m(P,e.has_older,!0),t!==`prepend`&&m(F,e.has_newer,!0)}function De(){G?.close(),G=null,m(k,null),m(A,null),D.clear(),O.clear(),m(j,[],!0),m(M,0),m(N,0),m(P,!1),m(F,!1),m(R,null)}function Z(e){if(De(),e instanceof T){if(e.status===401){m(i,`auth`);return}if(e.status===403){m(i,`forbidden`);return}if(e.status===404){m(i,`not-found`);return}}m(a,w(e,`Could not load this channel.`),!0),m(i,`error`)}async function Q(){if(q)return;q=!0;let e=++K;d(i)!==`auth`&&m(i,`loading`),m(a,``);try{let n=await ae(),r=await C(`/api/routes/${encodeURIComponent(t.workspaceRouteID)}/${encodeURIComponent(t.channelRouteID)}`);if(r.route.target_type!==`channel`)throw new T(404,`Channel route not found`);let[a,o]=await Promise.all([C(`/api/workspaces/${encodeURIComponent(r.route.workspace_id)}/channels`),C(`/api/channels/${encodeURIComponent(r.route.target_id)}/messages?limit=100`)]),s=a.channels.find(e=>e.id===r.route.target_id);if(!s)throw new T(404,`Channel not found`);if(e!==K)return;m(S,n.user,!0),m(k,r.route,!0),m(A,s,!0),X(o,`replace`),m(i,`ready`),Ie(r.route.workspace_id)}catch(t){e===K&&Z(t)}finally{e===K&&(q=!1)}}async function Oe(){if(!d(A)||d(I)||!d(P)||d(M)<=0)return;let e=d(A).id;m(I,!0);try{let t=await C(`/api/channels/${encodeURIComponent(e)}/messages?before_seq=${encodeURIComponent(String(d(M)))}&limit=100`);if(d(A)?.id!==e||d(i)!==`ready`)return;X(t,`prepend`)}catch(e){m(V,w(e,`Could not load older messages.`),!0)}finally{m(I,!1)}}async function ke(e=()=>!0){if(!d(k)||!d(A)||d(i)!==`ready`)return;let t=d(k).workspace_id,n=d(A).id;try{let[r,a]=await Promise.all([C(`/api/workspaces/${encodeURIComponent(t)}/channels`),C(`/api/channels/${encodeURIComponent(n)}/messages?limit=100`)]);if(!e()||d(k)?.workspace_id!==t||d(A)?.id!==n||d(i)!==`ready`)return;let o=r.channels.find(e=>e.id===n);if(!o)throw new T(404,`Channel not found`);m(A,o,!0),X(a,`replace`)}catch(r){let a=e()&&d(k)?.workspace_id===t&&d(A)?.id===n&&d(i)===`ready`;if(a&&r instanceof T&&[401,403,404].includes(r.status)&&Z(r),a)throw r}}async function Ae(e=()=>!0){if(!d(A)||d(i)!==`ready`)return;let t=d(A).id;try{if(d(N)<=0){let n=await C(`/api/channels/${encodeURIComponent(t)}/messages?limit=100`);e()&&d(A)?.id===t&&d(i)===`ready`&&X(n,`replace`);return}let n=d(N);for(let r=0;r<20;r++){let r=await C(`/api/channels/${encodeURIComponent(t)}/messages?after_seq=${encodeURIComponent(String(n))}&limit=100`);if(!e()||d(A)?.id!==t||d(i)!==`ready`)return;X(r,`append`);let a=r.newest_seq||n;if(!r.has_newer||a<=n)return;n=a}throw Error(`Realtime message recovery exceeded its page limit`)}catch(e){throw e instanceof T&&[401,403,404].includes(e.status)&&Z(e),e}}async function je(e,t=()=>!0){if(d(j).some(t=>t.id===e))try{let n=await C(`/api/messages/${encodeURIComponent(e)}`);if(!t())return;m(j,d(j).map(e=>e.id===n.message.id?n.message:e),!0),O.reconcile(d(A)?.id||``,d(j))}catch(e){throw e instanceof T&&[401,403,404].includes(e.status)&&Z(e),e}}async function Me(e=()=>!0){if(!(!d(k)||!d(A)))try{let t=await C(`/api/workspaces/${encodeURIComponent(d(k).workspace_id)}/channels`);if(!e())return;let n=t.channels.find(e=>e.id===d(A)?.id);if(!n)throw new T(404,`Channel not found`);m(A,n,!0)}catch(e){throw e instanceof T&&[401,403,404].includes(e.status)&&Z(e),e}}function Ne(e){return e.channel_id||e.payload.channel_id||``}async function Pe(e,t){if(!(!d(A)||Ne(e)!==d(A).id)){if(e.type===`message.created`){let n=e.seq||e.payload.seq||0;if(n>0&&n<=d(N))return;await Ae(t);return}if(e.type===`message.updated`||e.type===`message.deleted`){e.payload.message_id&&await je(e.payload.message_id,t);return}if(e.type===`reaction.added`||e.type===`reaction.removed`){D.applyEvent(e);return}e.type===`channel.updated`&&await Me(t)}}function Fe(e){d(i)===`ready`&&(m(H,w(e,`Could not process a realtime update.`),!0),m(V,d(H),!0))}function Ie(e){G?.close(),G=se({workspaceID:e,onEvent:Pe,onOpen:async(e,t)=>{t&&await ke(e),e()&&(d(V)===d(H)&&m(V,``),m(H,``))},onError:Fe})}async function Le(){let e=d(L).trim();if(!e||!d(A)||d(U))return;let t=d(A).id,n=d(R)?.id,r=J?.body===e&&J.quotedMessageID===n?J:{body:e,nonce:we(),quotedMessageID:n};J=null,m(V,``),m(U,!0);let a={body:e,nonce:r.nonce};n&&(a.quoted_message_id=n);try{let r=await C(`/api/channels/${encodeURIComponent(t)}/messages`,{method:`POST`,body:JSON.stringify(a)});if(d(A)?.id!==t||d(i)!==`ready`)return;m(j,Y(d(j),[r.message]),!0),m(N,Math.max(d(N),r.message.channel_seq||0),!0),d(L).trim()===e&&m(L,``),n&&d(R)?.id===n&&m(R,null),await s(),await d(B)?.scrollToBottom()}catch(e){if(e instanceof T&&e.status===401){Z(e);return}J=r,m(V,w(e,`Could not send this message.`),!0)}finally{m(U,!1)}}function Re(e){if(e.key===`Escape`&&d(R)){e.preventDefault(),m(R,null);return}e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),Le())}function ze(e){d(U)||(m(R,e,!0),s().then(()=>d(z)?.focus()))}function Be(e){e.quoted_message_id&&d(B)?.scrollToMessage(e.quoted_message_id)}function Ve(e){if(!e.route_id)return;let n=window.open(`/app/${encodeURIComponent(t.workspaceRouteID)}/${encodeURIComponent(e.route_id)}`,`_blank`,`noopener,noreferrer`);n&&(n.opener=null)}function He(e){let t=de(e);t&&m(W,{url:t,title:`Message image`},!0)}function Ue(e){let t=window.open(ie(`/api/uploads/${e.id}`),`_blank`,`noopener,noreferrer`);t&&(t.opener=null)}function $(){d(i)===`auth`&&document.visibilityState===`visible`&&Q()}ne(()=>{Q(),window.addEventListener(`focus`,$),document.addEventListener(`visibilitychange`,$)}),ee(()=>{K+=1,G?.close(),window.removeEventListener(`focus`,$),document.removeEventListener(`visibilitychange`,$)});var We=Se();r(`6awrv5`,e=>{var t=pe();o(e=>{re.title=e??``},[()=>d(A)?`#${E(d(A))} · ClickClack`:`ClickClack channel`]),l(e,t)});var Ge=_(We),Ke=e=>{var t=ge(),n=b(t),r=b(n),i=p(b(r),2),a=b(i,!0);x(i);var o=p(i,2),s=e=>{var t=me();l(e,t)};v(o,e=>{d(A).archived_at&&e(s)}),x(r),x(n);var f=p(n,2);{let e=h(()=>d(S)?.id);fe(f,{get messages(){return d(j)},get selectedChannel(){return d(A)},get viewKey(){return d(A).id},get hasOlder(){return d(P)},get hasNewer(){return d(F)},get loadingOlder(){return d(I)},get currentUserID(){return d(e)},get reactionController(){return D},get editController(){return O},get editScope(){return d(A).id},onMessageEdited:Ee,onListRef:e=>m(B,e,!0),onActivateMessageComposer:()=>{},onInlineImagePointerUp:He,onOpenProfile:()=>{},onReply:e=>ze(e),onOpenThread:Ve,onJumpToQuote:Be,onOpenImage:(e,t)=>m(W,{url:e,title:t},!0),onOpenArtifact:Ue,onLoadOlder:()=>void Oe(),onLoadNewer:()=>queueMessageSync()})}var g=p(f,2),_=b(g),y=e=>{var t=he(),n=b(t,!0);x(t),u(()=>c(n,d(V))),l(e,t)};v(_,e=>{d(V)&&e(y)});var ee=p(_,2);{let e=h(()=>`Message #${E(d(A))}`);ue(ee,{get value(){return d(L)},get placeholder(){return d(e)},ariaLabel:`Message body`,submitLabel:`Send`,formClass:`composer embed-channel-composer`,get disabled(){return d(U)},get replyTarget(){return d(R)},showToolbar:!0,get mentionPeople(){return d(Ce)},onValue:e=>m(L,e,!0),onSubmit:()=>void Le(),onKeydown:Re,onFocus:()=>m(V,``),onInputRef:e=>m(z,e,!0),onClearReply:()=>m(R,null)})}x(g),x(t),u(e=>c(a,e),[()=>E(d(A))]),l(e,t)},qe=e=>{var t=_e();l(e,t)},Je=e=>{var t=ve();l(e,t)},Ye=e=>{var t=ye();l(e,t)},Xe=e=>{var t=be(),r=b(t),i=p(b(r),2),o=b(i,!0);x(i);var s=p(i,2);x(r),x(t),u(()=>c(o,d(a))),n(`click`,s,()=>void Q()),l(e,t)},Ze=e=>{var t=xe();l(e,t)};v(Ge,e=>{d(i)===`ready`&&d(A)&&d(k)?e(Ke):d(i)===`auth`?e(qe,1):d(i)===`forbidden`?e(Je,2):d(i)===`not-found`?e(Ye,3):d(i)===`error`?e(Xe,4):e(Ze,-1)});var Qe=p(Ge,2),$e=e=>{le(e,{get url(){return d(W).url},get title(){return d(W).title},onClose:()=>m(W,null)})};v(Qe,e=>{d(W)&&e($e)}),l(e,We),g()}S([`click`]);function k(e,n){f(n,!0);var r=i(),a=_(r);t(a,()=>`${n.params.workspaceID}:${n.params.channelID}`,e=>{O(e,{get workspaceRouteID(){return n.params.workspaceID},get channelRouteID(){return n.params.channelID}})}),l(e,r),g()}export{k as component,D as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/12.Cki_evoH.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/12.Cki_evoH.js deleted file mode 100644 index 2bb30bae..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/12.Cki_evoH.js +++ /dev/null @@ -1 +0,0 @@ -import{t as e}from"../chunks/DK3Fl9T5.js";import{A as t,B as n,C as r,F as i,I as a,J as o,K as s,N as c,P as l,Q as u,W as d,_t as f,at as p,ct as m,ft as h,gt as g,it as _,j as v,lt as y,n as ee,ot as te,r as ne,rt as b,tt as re,xt as x,z as S}from"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import{i as ie,n as C,o as w,t as T}from"../chunks/BEqsQr3A.js";import{d as ae}from"../chunks/DiELhALK.js";import{D as oe,E as se,T as ce,u as le,v as ue,z as de}from"../chunks/C5AMwlHa.js";import{t as E}from"../chunks/DlGnnCJo.js";import{t as fe}from"../chunks/CEzVcVFQ.js";var D=e({prerender:()=>!1,ssr:()=>!1}),pe=a(``),me=a(`Archived`),he=a(`

                    `),ge=a(`

                    `),_e=a(`

                    Sign in to ClickClack

                    Open ClickClack in a new tab, sign in, then return here. This panel will reconnect automatically.

                    Open ClickClack
                    `),ve=a(`
                    `),ye=a(`
                    `),be=a(`
                    `),xe=a(`
                    `),Se=a(` `,1);function O(e,t){f(t,!0);let i=y(`loading`),a=y(``),S=y(null),D=new ce(()=>d(S)?.id||``),O=new oe(Te),k=y(null),A=y(null),j=y(te([])),M=y(0),N=y(0),P=y(!1),F=y(!1),I=y(!1),L=y(``),R=y(null),z=y(null),B=y(null),V=y(``),H=y(``),U=y(!1),W=y(null),G=null,K=0,q=!1,J=null,Ce=h(()=>{let e=new Map;for(let t of d(j))t.author?.id&&!t.author.deleted_at&&e.set(t.author.id,t.author);return d(S)?.id&&e.set(d(S).id,d(S)),[...e.values()].slice(0,24)});function we(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}async function Te(e,t){if(e===d(A)?.id){d(B)?.scrollToMessage(t.messageID);for(let e=0;e<16;e+=1){await s(),await new Promise(e=>requestAnimationFrame(()=>e()));let e=document.querySelector(`.embed-channel-shell`)?.querySelector(`[data-message-id="${CSS.escape(t.messageID)}"]`)?.querySelector(`textarea[aria-label="Edit message"]`);if(e){e.focus();return}}}}function Ee(e){m(j,d(j).map(t=>t.id===e.id?{...t,...e}:t),!0)}function Y(...e){let t=new Map;for(let n of e)for(let e of n)t.set(e.id,e);return[...t.values()].sort((e,t)=>(e.channel_seq||0)-(t.channel_seq||0))}function X(e,t){D.seedMessages(e.messages),m(j,t===`replace`?e.messages:t===`prepend`?Y(e.messages,d(j)):Y(d(j),e.messages),!0),O.reconcile(d(A)?.id||``,d(j)),m(M,d(j)[0]?.channel_seq||e.oldest_seq||d(M),!0),m(N,d(j)[d(j).length-1]?.channel_seq||e.newest_seq||d(N),!0),t!==`append`&&m(P,e.has_older,!0),t!==`prepend`&&m(F,e.has_newer,!0)}function De(){G?.close(),G=null,m(k,null),m(A,null),D.clear(),O.clear(),m(j,[],!0),m(M,0),m(N,0),m(P,!1),m(F,!1),m(R,null)}function Z(e){if(De(),e instanceof T){if(e.status===401){m(i,`auth`);return}if(e.status===403){m(i,`forbidden`);return}if(e.status===404){m(i,`not-found`);return}}m(a,w(e,`Could not load this channel.`),!0),m(i,`error`)}async function Q(){if(q)return;q=!0;let e=++K;d(i)!==`auth`&&m(i,`loading`),m(a,``);try{let n=await ae(),r=await C(`/api/routes/${encodeURIComponent(t.workspaceRouteID)}/${encodeURIComponent(t.channelRouteID)}`);if(r.route.target_type!==`channel`)throw new T(404,`Channel route not found`);let[a,o]=await Promise.all([C(`/api/workspaces/${encodeURIComponent(r.route.workspace_id)}/channels`),C(`/api/channels/${encodeURIComponent(r.route.target_id)}/messages?limit=100`)]),s=a.channels.find(e=>e.id===r.route.target_id);if(!s)throw new T(404,`Channel not found`);if(e!==K)return;m(S,n.user,!0),m(k,r.route,!0),m(A,s,!0),X(o,`replace`),m(i,`ready`),Ie(r.route.workspace_id)}catch(t){e===K&&Z(t)}finally{e===K&&(q=!1)}}async function Oe(){if(!d(A)||d(I)||!d(P)||d(M)<=0)return;let e=d(A).id;m(I,!0);try{let t=await C(`/api/channels/${encodeURIComponent(e)}/messages?before_seq=${encodeURIComponent(String(d(M)))}&limit=100`);if(d(A)?.id!==e||d(i)!==`ready`)return;X(t,`prepend`)}catch(e){m(V,w(e,`Could not load older messages.`),!0)}finally{m(I,!1)}}async function ke(e=()=>!0){if(!d(k)||!d(A)||d(i)!==`ready`)return;let t=d(k).workspace_id,n=d(A).id;try{let[r,a]=await Promise.all([C(`/api/workspaces/${encodeURIComponent(t)}/channels`),C(`/api/channels/${encodeURIComponent(n)}/messages?limit=100`)]);if(!e()||d(k)?.workspace_id!==t||d(A)?.id!==n||d(i)!==`ready`)return;let o=r.channels.find(e=>e.id===n);if(!o)throw new T(404,`Channel not found`);m(A,o,!0),X(a,`replace`)}catch(r){let a=e()&&d(k)?.workspace_id===t&&d(A)?.id===n&&d(i)===`ready`;if(a&&r instanceof T&&[401,403,404].includes(r.status)&&Z(r),a)throw r}}async function Ae(e=()=>!0){if(!d(A)||d(i)!==`ready`)return;let t=d(A).id;try{if(d(N)<=0){let n=await C(`/api/channels/${encodeURIComponent(t)}/messages?limit=100`);e()&&d(A)?.id===t&&d(i)===`ready`&&X(n,`replace`);return}let n=d(N);for(let r=0;r<20;r++){let r=await C(`/api/channels/${encodeURIComponent(t)}/messages?after_seq=${encodeURIComponent(String(n))}&limit=100`);if(!e()||d(A)?.id!==t||d(i)!==`ready`)return;X(r,`append`);let a=r.newest_seq||n;if(!r.has_newer||a<=n)return;n=a}throw Error(`Realtime message recovery exceeded its page limit`)}catch(e){throw e instanceof T&&[401,403,404].includes(e.status)&&Z(e),e}}async function je(e,t=()=>!0){if(d(j).some(t=>t.id===e))try{let n=await C(`/api/messages/${encodeURIComponent(e)}`);if(!t())return;m(j,d(j).map(e=>e.id===n.message.id?n.message:e),!0),O.reconcile(d(A)?.id||``,d(j))}catch(e){throw e instanceof T&&[401,403,404].includes(e.status)&&Z(e),e}}async function Me(e=()=>!0){if(!(!d(k)||!d(A)))try{let t=await C(`/api/workspaces/${encodeURIComponent(d(k).workspace_id)}/channels`);if(!e())return;let n=t.channels.find(e=>e.id===d(A)?.id);if(!n)throw new T(404,`Channel not found`);m(A,n,!0)}catch(e){throw e instanceof T&&[401,403,404].includes(e.status)&&Z(e),e}}function Ne(e){return e.channel_id||e.payload.channel_id||``}async function Pe(e,t){if(!(!d(A)||Ne(e)!==d(A).id)){if(e.type===`message.created`){let n=e.seq||e.payload.seq||0;if(n>0&&n<=d(N))return;await Ae(t);return}if(e.type===`message.updated`||e.type===`message.deleted`){e.payload.message_id&&await je(e.payload.message_id,t);return}if(e.type===`reaction.added`||e.type===`reaction.removed`){D.applyEvent(e);return}e.type===`channel.updated`&&await Me(t)}}function Fe(e){d(i)===`ready`&&(m(H,w(e,`Could not process a realtime update.`),!0),m(V,d(H),!0))}function Ie(e){G?.close(),G=se({workspaceID:e,onEvent:Pe,onOpen:async(e,t)=>{t&&await ke(e),e()&&(d(V)===d(H)&&m(V,``),m(H,``))},onError:Fe})}async function Le(){let e=d(L).trim();if(!e||!d(A)||d(U))return;let t=d(A).id,n=d(R)?.id,r=J?.body===e&&J.quotedMessageID===n?J:{body:e,nonce:we(),quotedMessageID:n};J=null,m(V,``),m(U,!0);let a={body:e,nonce:r.nonce};n&&(a.quoted_message_id=n);try{let r=await C(`/api/channels/${encodeURIComponent(t)}/messages`,{method:`POST`,body:JSON.stringify(a)});if(d(A)?.id!==t||d(i)!==`ready`)return;m(j,Y(d(j),[r.message]),!0),m(N,Math.max(d(N),r.message.channel_seq||0),!0),d(L).trim()===e&&m(L,``),n&&d(R)?.id===n&&m(R,null),await s(),await d(B)?.scrollToBottom()}catch(e){if(e instanceof T&&e.status===401){Z(e);return}J=r,m(V,w(e,`Could not send this message.`),!0)}finally{m(U,!1)}}function Re(e){if(e.key===`Escape`&&d(R)){e.preventDefault(),m(R,null);return}e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),Le())}function ze(e){d(U)||(m(R,e,!0),s().then(()=>d(z)?.focus()))}function Be(e){e.quoted_message_id&&d(B)?.scrollToMessage(e.quoted_message_id)}function Ve(e){if(!e.route_id)return;let n=window.open(`/app/${encodeURIComponent(t.workspaceRouteID)}/${encodeURIComponent(e.route_id)}`,`_blank`,`noopener,noreferrer`);n&&(n.opener=null)}function He(e){let t=de(e);t&&m(W,{url:t,title:`Message image`},!0)}function Ue(e){let t=window.open(ie(`/api/uploads/${e.id}`),`_blank`,`noopener,noreferrer`);t&&(t.opener=null)}function $(){d(i)===`auth`&&document.visibilityState===`visible`&&Q()}ne(()=>{Q(),window.addEventListener(`focus`,$),document.addEventListener(`visibilitychange`,$)}),ee(()=>{K+=1,G?.close(),window.removeEventListener(`focus`,$),document.removeEventListener(`visibilitychange`,$)});var We=Se();r(`6awrv5`,e=>{var t=pe();o(e=>{re.title=e??``},[()=>d(A)?`#${E(d(A))} · ClickClack`:`ClickClack channel`]),l(e,t)});var Ge=_(We),Ke=e=>{var t=ge(),n=b(t),r=b(n),i=p(b(r),2),a=b(i,!0);x(i);var o=p(i,2),s=e=>{l(e,me())};v(o,e=>{d(A).archived_at&&e(s)}),x(r),x(n);var f=p(n,2);{let e=h(()=>d(S)?.id);fe(f,{get messages(){return d(j)},get selectedChannel(){return d(A)},get viewKey(){return d(A).id},get hasOlder(){return d(P)},get hasNewer(){return d(F)},get loadingOlder(){return d(I)},get currentUserID(){return d(e)},get reactionController(){return D},get editController(){return O},get editScope(){return d(A).id},onMessageEdited:Ee,onListRef:e=>m(B,e,!0),onActivateMessageComposer:()=>{},onInlineImagePointerUp:He,onOpenProfile:()=>{},onReply:e=>ze(e),onOpenThread:Ve,onJumpToQuote:Be,onOpenImage:(e,t)=>m(W,{url:e,title:t},!0),onOpenArtifact:Ue,onLoadOlder:()=>void Oe(),onLoadNewer:()=>queueMessageSync()})}var g=p(f,2),_=b(g),y=e=>{var t=he(),n=b(t,!0);x(t),u(()=>c(n,d(V))),l(e,t)};v(_,e=>{d(V)&&e(y)});var ee=p(_,2);{let e=h(()=>`Message #${E(d(A))}`);ue(ee,{get value(){return d(L)},get placeholder(){return d(e)},ariaLabel:`Message body`,submitLabel:`Send`,formClass:`composer embed-channel-composer`,get disabled(){return d(U)},get replyTarget(){return d(R)},showToolbar:!0,get mentionPeople(){return d(Ce)},onValue:e=>m(L,e,!0),onSubmit:()=>void Le(),onKeydown:Re,onFocus:()=>m(V,``),onInputRef:e=>m(z,e,!0),onClearReply:()=>m(R,null)})}x(g),x(t),u(e=>c(a,e),[()=>E(d(A))]),l(e,t)},qe=e=>{l(e,_e())},Je=e=>{l(e,ve())},Ye=e=>{l(e,ye())},Xe=e=>{var t=be(),r=b(t),i=p(b(r),2),o=b(i,!0);x(i);var s=p(i,2);x(r),x(t),u(()=>c(o,d(a))),n(`click`,s,()=>void Q()),l(e,t)},Ze=e=>{l(e,xe())};v(Ge,e=>{d(i)===`ready`&&d(A)&&d(k)?e(Ke):d(i)===`auth`?e(qe,1):d(i)===`forbidden`?e(Je,2):d(i)===`not-found`?e(Ye,3):d(i)===`error`?e(Xe,4):e(Ze,-1)});var Qe=p(Ge,2),$e=e=>{le(e,{get url(){return d(W).url},get title(){return d(W).title},onClose:()=>m(W,null)})};v(Qe,e=>{d(W)&&e($e)}),l(e,We),g()}S([`click`]);function k(e,n){f(n,!0);var r=i();t(_(r),()=>`${n.params.workspaceID}:${n.params.channelID}`,e=>{O(e,{get workspaceRouteID(){return n.params.workspaceID},get channelRouteID(){return n.params.channelID}})}),l(e,r),g()}export{k as component,D as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/13.utPVEaYE.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/13.VDHhtKL4.js similarity index 86% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/13.utPVEaYE.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/13.VDHhtKL4.js index cb1eb785..b3eba90b 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/13.utPVEaYE.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/13.VDHhtKL4.js @@ -1 +1 @@ -import{t as e}from"../chunks/DK3Fl9T5.js";import{A as t,B as n,C as r,F as i,I as a,K as o,N as s,P as c,Q as l,W as u,Y as d,_t as f,at as p,ct as m,ft as h,gt as g,it as _,j as v,lt as y,n as ee,ot as te,r as ne,rt as b,tt as re,xt as x,z as S}from"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import{i as ie,n as C,o as w,t as T}from"../chunks/BEqsQr3A.js";import{d as ae}from"../chunks/DiELhALK.js";import{D as oe,E as se,M as ce,T as le,u as ue,z as de}from"../chunks/C5AMwlHa.js";import{t as fe}from"../chunks/DlGnnCJo.js";import{t as pe}from"../chunks/B_KT8vL7.js";var E=e({prerender:()=>!1,ssr:()=>!1}),me=a(``),he=a(`

                    `),ge=a(`
                    `),_e=a(`

                    Sign in to ClickClack

                    Open ClickClack in a new tab, sign in, then return here. This panel will reconnect automatically.

                    Open ClickClack
                    `),ve=a(`
                    `),ye=a(`
                    `),be=a(`
                    `),xe=a(`
                    `),Se=a(` `,1);function D(e,t){f(t,!0);let i=y(`loading`),a=y(``),S=y(null),E=new le(()=>u(S)?.id||``),D=new oe(Te),O=y(null),k=y(null),A=y(te([])),j=y(null),M=y(null),N=y(`Thread`),P=y(``),F=y(null),I=y(null),L=y(``),R=y(``),z=y(!1),B=y(null),V=null,H=0,U=!1,W=null,G=h(()=>u(z)||!!(u(M)&&!u(M).can_send)),Ce=h(()=>{let e=new Map;for(let t of u(M)?.members??[])t.id&&!t.deleted_at&&e.set(t.id,t);for(let t of u(k)?[u(k),...u(A)]:u(A))t.author?.id&&!t.author.deleted_at&&e.set(t.author.id,t.author);return u(S)?.id&&e.set(u(S).id,u(S)),[...e.values()].slice(0,24)});function we(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}async function Te(e,t){if(e===u(O)?.target_id)for(let e=0;e<4;e+=1){await o();let e=document.querySelector(`[aria-label="Embedded thread"]`)?.querySelector(`[data-message-id="${CSS.escape(t.messageID)}"]`)?.querySelector(`textarea[aria-label="Edit message"]`);if(e){e.focus();return}}}function Ee(e){u(k)?.id===e.id&&m(k,{...u(k),...e},!0),m(A,u(A).map(t=>t.id===e.id?{...t,...e}:t),!0)}function De(){V?.close(),V=null,m(O,null),m(k,null),E.clear(),D.clear(),m(A,[],!0),m(j,null),m(M,null),m(F,null)}function K(e){if(De(),e instanceof T){if(e.status===401){m(i,`auth`);return}if(e.status===403){m(i,`forbidden`);return}if(e.status===404){m(i,`not-found`);return}}m(a,w(e,`Could not load this thread.`),!0),m(i,`error`)}async function Oe(e,t){if(e.parent_type===`direct`){let n=(await C(`/api/dms?workspace_id=${encodeURIComponent(e.workspace_id)}`)).conversations.find(t=>t.id===e.parent_id);n||=(await C(`/api/dms/${encodeURIComponent(e.parent_id)}`)).conversation,m(M,n,!0),m(N,ce(n,t.id)||`Direct message`,!0);return}let n=(await C(`/api/workspaces/${encodeURIComponent(e.workspace_id)}/channels`)).channels.find(t=>t.id===e.parent_id);if(!n)throw new T(404,`Thread channel not found`);m(M,null),m(N,`#${fe(n)}`)}async function q(){if(U)return;U=!0;let e=++H;u(i)!==`auth`&&m(i,`loading`),m(a,``);try{let n=await ae(),r=await C(`/api/routes/${encodeURIComponent(t.workspaceRouteID)}/${encodeURIComponent(t.messageRouteID)}`);if(r.route.target_type!==`thread`)throw new T(404,`Thread route not found`);let[a]=await Promise.all([C(`/api/messages/${encodeURIComponent(r.route.target_id)}/thread`),Oe(r.route,n.user)]);if(e!==H)return;m(S,n.user,!0),m(O,r.route,!0),m(k,{...a.root,thread_state:a.thread_state},!0),m(A,a.replies,!0),E.seedMessages([u(k),...u(A)]),D.reconcile(r.route.target_id,[u(k),...u(A)]),m(j,a.thread_state,!0),m(i,`ready`),je(r.route.workspace_id)}catch(t){e===H&&K(t)}finally{e===H&&(U=!1)}}async function J(e=()=>!0){if(!u(k)||u(i)!==`ready`)return;let t=u(k).id;try{let n=await C(`/api/messages/${encodeURIComponent(t)}/thread`);if(!e()||!u(k)||u(k).id!==t||u(i)!==`ready`)return;m(k,{...n.root,thread_state:n.thread_state},!0),m(A,n.replies,!0),E.seedMessages([u(k),...u(A)]),D.reconcile(u(O)?.target_id||u(k).id,[u(k),...u(A)]),m(j,n.thread_state,!0),u(F)&&u(F).id!==u(k).id&&!u(A).some(e=>e.id===u(F)?.id)&&m(F,null)}catch(e){throw e instanceof T&&[401,403,404].includes(e.status)&&K(e),e}}function Y(e){if(!u(k))return!1;if(e.payload.root_message_id)return e.payload.root_message_id===u(k).id;let t=e.payload.message_id;return t===u(k).id||u(A).some(e=>e.id===t)}async function ke(e,t){if(Y(e)&&(e.type===`reaction.added`||e.type===`reaction.removed`)){E.applyEvent(e);return}if(Y(e)&&(e.type===`thread.reply_created`||e.type===`message.updated`||e.type===`message.deleted`)){if(e.type===`thread.reply_created`&&e.payload.message_id&&u(A).some(t=>t.id===e.payload.message_id))return;await J(t)}}function Ae(e){u(i)===`ready`&&(m(R,w(e,`Could not process a realtime update.`),!0),m(L,u(R),!0))}function je(e){V?.close(),V=se({workspaceID:e,onEvent:ke,onOpen:async(e,t)=>{t&&await J(e),e()&&(u(L)===u(R)&&m(L,``),m(R,``))},onError:Ae})}async function X(){let e=u(P).trim();if(!e||!u(k)||u(G))return;let t=u(k).id,n=u(F)?.id,r=W?.body===e&&W.quotedMessageID===n?W:{body:e,nonce:we(),quotedMessageID:n};W=null,m(L,``),m(z,!0);let i={body:e,nonce:r.nonce};n&&(i.quoted_message_id=n);try{let r=await C(`/api/messages/${encodeURIComponent(t)}/thread/replies`,{method:`POST`,body:JSON.stringify(i)});if(!u(k)||u(k).id!==t)return;u(A).some(e=>e.id===r.message.id)||m(A,[...u(A),r.message],!0),m(j,r.thread_state,!0),u(P).trim()===e&&m(P,``),n&&u(F)?.id===n&&m(F,null)}catch(e){if(e instanceof T&&e.status===401){K(e);return}W=r,m(L,w(e,`Could not post the reply.`),!0)}finally{m(z,!1)}}function Me(e){if(e.key===`Escape`&&u(F)){e.preventDefault(),m(F,null);return}e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),X())}function Ne(e){u(z)||(m(F,e,!0),o().then(()=>u(I)?.focus()))}function Pe(){u(z)||m(F,null)}function Fe(e){e.quoted_message_id&&document.querySelector(`[data-message-id="${CSS.escape(e.quoted_message_id)}"]`)?.scrollIntoView({behavior:`smooth`,block:`center`})}function Ie(e){let t=de(e);t&&m(B,{url:t,title:`Message image`},!0)}function Le(e){let t=window.open(ie(`/api/uploads/${e.id}`),`_blank`,`noopener,noreferrer`);t&&(t.opener=null)}function Z(){u(i)===`auth`&&document.visibilityState===`visible`&&q()}ne(()=>{q(),window.addEventListener(`focus`,Z),document.addEventListener(`visibilitychange`,Z)}),ee(()=>{H+=1,V?.close(),window.removeEventListener(`focus`,Z),document.removeEventListener(`visibilitychange`,Z)});var Q=Se();r(`b3w79y`,e=>{var t=me();d(()=>{re.title=`ClickClack thread`}),c(e,t)});var $=_(Q),Re=e=>{var t=ge(),n=b(t),r=b(n);{let e=h(()=>`Thread · ${u(j)?.reply_count??u(A).length} ${(u(j)?.reply_count??u(A).length)===1?`reply`:`replies`}`),t=h(()=>u(S)?.id),n=h(()=>!!(u(M)&&!u(M).can_send));pe(r,{get root(){return u(k)},get replies(){return u(A)},get threadState(){return u(j)},get replyBody(){return u(P)},get replyTarget(){return u(F)},get mentionPeople(){return u(Ce)},get replyDisabled(){return u(G)},get headerLabel(){return u(N)},get headerDetail(){return u(e)},get openHref(){return u(O).canonical_path},get currentUserID(){return u(t)},get reactionController(){return E},get editController(){return D},get editScope(){return u(O).target_id},onMessageEdited:Ee,get reactionsDisabled(){return u(n)},onReplyBody:e=>m(P,e,!0),onSubmitReply:()=>void X(),onReplyKeydown:Me,onReplyFocus:()=>m(L,``),onReplyInputRef:e=>m(I,e,!0),onSetReplyTarget:e=>Ne(e),onClearReply:Pe,onActivateThreadComposer:()=>{},onInlineImagePointerUp:Ie,onJumpToQuote:Fe,onOpenImage:(e,t)=>m(B,{url:e,title:t},!0),onOpenArtifact:Le})}x(n);var i=p(n,2),a=e=>{var t=he(),n=b(t,!0);x(t),l(()=>s(n,u(L))),c(e,t)};v(i,e=>{u(L)&&e(a)}),x(t),c(e,t)},ze=e=>{c(e,_e())},Be=e=>{c(e,ve())},Ve=e=>{c(e,ye())},He=e=>{var t=be(),r=b(t),i=p(b(r),2),o=b(i,!0);x(i);var d=p(i,2);x(r),x(t),l(()=>s(o,u(a))),n(`click`,d,()=>void q()),c(e,t)},Ue=e=>{c(e,xe())};v($,e=>{u(i)===`ready`&&u(k)&&u(O)?e(Re):u(i)===`auth`?e(ze,1):u(i)===`forbidden`?e(Be,2):u(i)===`not-found`?e(Ve,3):u(i)===`error`?e(He,4):e(Ue,-1)});var We=p($,2),Ge=e=>{ue(e,{get url(){return u(B).url},get title(){return u(B).title},onClose:()=>m(B,null)})};v(We,e=>{u(B)&&e(Ge)}),c(e,Q),g()}S([`click`]);function O(e,n){f(n,!0);var r=i();t(_(r),()=>`${n.params.workspaceID}:${n.params.messageID}`,e=>{D(e,{get workspaceRouteID(){return n.params.workspaceID},get messageRouteID(){return n.params.messageID}})}),c(e,r),g()}export{O as component,E as universal}; \ No newline at end of file +import{t as e}from"../chunks/DK3Fl9T5.js";import{A as t,B as n,C as r,F as i,I as a,K as o,N as s,P as c,Q as l,W as u,Y as d,_t as f,at as p,ct as m,ft as h,gt as g,it as _,j as v,lt as y,n as ee,ot as te,r as ne,rt as b,tt as re,xt as x,z as S}from"../chunks/-xOSXMZB.js";import"../chunks/xihTtKlq.js";import{i as ie,n as C,o as w,t as T}from"../chunks/BEqsQr3A.js";import{d as ae}from"../chunks/UXt3B2YI.js";import{D as oe,E as se,M as ce,T as le,u as ue,z as de}from"../chunks/CQx5QjGd.js";import{t as fe}from"../chunks/DlGnnCJo.js";import{t as pe}from"../chunks/DzgF6O2k.js";var E=e({prerender:()=>!1,ssr:()=>!1}),me=a(``),he=a(`

                    `),ge=a(`
                    `),_e=a(`

                    Sign in to ClickClack

                    Open ClickClack in a new tab, sign in, then return here. This panel will reconnect automatically.

                    Open ClickClack
                    `),ve=a(`
                    `),ye=a(`
                    `),be=a(`
                    `),xe=a(`
                    `),Se=a(` `,1);function D(e,t){f(t,!0);let i=y(`loading`),a=y(``),S=y(null),E=new le(()=>u(S)?.id||``),D=new oe(Te),O=y(null),k=y(null),A=y(te([])),j=y(null),M=y(null),N=y(`Thread`),P=y(``),F=y(null),I=y(null),L=y(``),R=y(``),z=y(!1),B=y(null),V=null,H=0,U=!1,W=null,G=h(()=>u(z)||!!(u(M)&&!u(M).can_send)),Ce=h(()=>{let e=new Map;for(let t of u(M)?.members??[])t.id&&t.handle?.trim()&&!t.deleted_at&&e.set(t.id,t);for(let t of u(k)?[u(k),...u(A)]:u(A))t.author?.id&&t.author.handle?.trim()&&!t.author.deleted_at&&e.set(t.author.id,t.author);return u(S)?.id&&u(S).handle?.trim()&&e.set(u(S).id,u(S)),[...e.values()].slice(0,24)});function we(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}async function Te(e,t){if(e===u(O)?.target_id)for(let e=0;e<4;e+=1){await o();let e=document.querySelector(`[aria-label="Embedded thread"]`)?.querySelector(`[data-message-id="${CSS.escape(t.messageID)}"]`)?.querySelector(`textarea[aria-label="Edit message"]`);if(e){e.focus();return}}}function Ee(e){u(k)?.id===e.id&&m(k,{...u(k),...e},!0),m(A,u(A).map(t=>t.id===e.id?{...t,...e}:t),!0)}function De(){V?.close(),V=null,m(O,null),m(k,null),E.clear(),D.clear(),m(A,[],!0),m(j,null),m(M,null),m(F,null)}function K(e){if(De(),e instanceof T){if(e.status===401){m(i,`auth`);return}if(e.status===403){m(i,`forbidden`);return}if(e.status===404){m(i,`not-found`);return}}m(a,w(e,`Could not load this thread.`),!0),m(i,`error`)}async function Oe(e,t){if(e.parent_type===`direct`){let n=(await C(`/api/dms?workspace_id=${encodeURIComponent(e.workspace_id)}`)).conversations.find(t=>t.id===e.parent_id);n||=(await C(`/api/dms/${encodeURIComponent(e.parent_id)}`)).conversation,m(M,n,!0),m(N,ce(n,t.id)||`Direct message`,!0);return}let n=(await C(`/api/workspaces/${encodeURIComponent(e.workspace_id)}/channels`)).channels.find(t=>t.id===e.parent_id);if(!n)throw new T(404,`Thread channel not found`);m(M,null),m(N,`#${fe(n)}`)}async function q(){if(U)return;U=!0;let e=++H;u(i)!==`auth`&&m(i,`loading`),m(a,``);try{let n=await ae(),r=await C(`/api/routes/${encodeURIComponent(t.workspaceRouteID)}/${encodeURIComponent(t.messageRouteID)}`);if(r.route.target_type!==`thread`)throw new T(404,`Thread route not found`);let[a]=await Promise.all([C(`/api/messages/${encodeURIComponent(r.route.target_id)}/thread`),Oe(r.route,n.user)]);if(e!==H)return;m(S,n.user,!0),m(O,r.route,!0),m(k,{...a.root,thread_state:a.thread_state},!0),m(A,a.replies,!0),E.seedMessages([u(k),...u(A)]),D.reconcile(r.route.target_id,[u(k),...u(A)]),m(j,a.thread_state,!0),m(i,`ready`),je(r.route.workspace_id)}catch(t){e===H&&K(t)}finally{e===H&&(U=!1)}}async function J(e=()=>!0){if(!u(k)||u(i)!==`ready`)return;let t=u(k).id;try{let n=await C(`/api/messages/${encodeURIComponent(t)}/thread`);if(!e()||!u(k)||u(k).id!==t||u(i)!==`ready`)return;m(k,{...n.root,thread_state:n.thread_state},!0),m(A,n.replies,!0),E.seedMessages([u(k),...u(A)]),D.reconcile(u(O)?.target_id||u(k).id,[u(k),...u(A)]),m(j,n.thread_state,!0),u(F)&&u(F).id!==u(k).id&&!u(A).some(e=>e.id===u(F)?.id)&&m(F,null)}catch(e){throw e instanceof T&&[401,403,404].includes(e.status)&&K(e),e}}function Y(e){if(!u(k))return!1;if(e.payload.root_message_id)return e.payload.root_message_id===u(k).id;let t=e.payload.message_id;return t===u(k).id||u(A).some(e=>e.id===t)}async function ke(e,t){if(Y(e)&&(e.type===`reaction.added`||e.type===`reaction.removed`)){E.applyEvent(e);return}if(Y(e)&&(e.type===`thread.reply_created`||e.type===`message.updated`||e.type===`message.deleted`)){if(e.type===`thread.reply_created`&&e.payload.message_id&&u(A).some(t=>t.id===e.payload.message_id))return;await J(t)}}function Ae(e){u(i)===`ready`&&(m(R,w(e,`Could not process a realtime update.`),!0),m(L,u(R),!0))}function je(e){V?.close(),V=se({workspaceID:e,onEvent:ke,onOpen:async(e,t)=>{t&&await J(e),e()&&(u(L)===u(R)&&m(L,``),m(R,``))},onError:Ae})}async function X(){let e=u(P).trim();if(!e||!u(k)||u(G))return;let t=u(k).id,n=u(F)?.id,r=W?.body===e&&W.quotedMessageID===n?W:{body:e,nonce:we(),quotedMessageID:n};W=null,m(L,``),m(z,!0);let i={body:e,nonce:r.nonce};n&&(i.quoted_message_id=n);try{let r=await C(`/api/messages/${encodeURIComponent(t)}/thread/replies`,{method:`POST`,body:JSON.stringify(i)});if(!u(k)||u(k).id!==t)return;u(A).some(e=>e.id===r.message.id)||m(A,[...u(A),r.message],!0),m(j,r.thread_state,!0),u(P).trim()===e&&m(P,``),n&&u(F)?.id===n&&m(F,null)}catch(e){if(e instanceof T&&e.status===401){K(e);return}W=r,m(L,w(e,`Could not post the reply.`),!0)}finally{m(z,!1)}}function Me(e){if(e.key===`Escape`&&u(F)){e.preventDefault(),m(F,null);return}e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),X())}function Ne(e){u(z)||(m(F,e,!0),o().then(()=>u(I)?.focus()))}function Pe(){u(z)||m(F,null)}function Fe(e){e.quoted_message_id&&document.querySelector(`[data-message-id="${CSS.escape(e.quoted_message_id)}"]`)?.scrollIntoView({behavior:`smooth`,block:`center`})}function Ie(e){let t=de(e);t&&m(B,{url:t,title:`Message image`},!0)}function Le(e){let t=window.open(ie(`/api/uploads/${e.id}`),`_blank`,`noopener,noreferrer`);t&&(t.opener=null)}function Z(){u(i)===`auth`&&document.visibilityState===`visible`&&q()}ne(()=>{q(),window.addEventListener(`focus`,Z),document.addEventListener(`visibilitychange`,Z)}),ee(()=>{H+=1,V?.close(),window.removeEventListener(`focus`,Z),document.removeEventListener(`visibilitychange`,Z)});var Q=Se();r(`b3w79y`,e=>{var t=me();d(()=>{re.title=`ClickClack thread`}),c(e,t)});var $=_(Q),Re=e=>{var t=ge(),n=b(t),r=b(n);{let e=h(()=>`Thread · ${u(j)?.reply_count??u(A).length} ${(u(j)?.reply_count??u(A).length)===1?`reply`:`replies`}`),t=h(()=>u(S)?.id),n=h(()=>!!(u(M)&&!u(M).can_send));pe(r,{get root(){return u(k)},get replies(){return u(A)},get threadState(){return u(j)},get replyBody(){return u(P)},get replyTarget(){return u(F)},get mentionPeople(){return u(Ce)},get replyDisabled(){return u(G)},get headerLabel(){return u(N)},get headerDetail(){return u(e)},get openHref(){return u(O).canonical_path},get currentUserID(){return u(t)},get reactionController(){return E},get editController(){return D},get editScope(){return u(O).target_id},onMessageEdited:Ee,get reactionsDisabled(){return u(n)},onReplyBody:e=>m(P,e,!0),onSubmitReply:()=>void X(),onReplyKeydown:Me,onReplyFocus:()=>m(L,``),onReplyInputRef:e=>m(I,e,!0),onSetReplyTarget:e=>Ne(e),onClearReply:Pe,onActivateThreadComposer:()=>{},onInlineImagePointerUp:Ie,onJumpToQuote:Fe,onOpenImage:(e,t)=>m(B,{url:e,title:t},!0),onOpenArtifact:Le})}x(n);var i=p(n,2),a=e=>{var t=he(),n=b(t,!0);x(t),l(()=>s(n,u(L))),c(e,t)};v(i,e=>{u(L)&&e(a)}),x(t),c(e,t)},ze=e=>{var t=_e();c(e,t)},Be=e=>{var t=ve();c(e,t)},Ve=e=>{var t=ye();c(e,t)},He=e=>{var t=be(),r=b(t),i=p(b(r),2),o=b(i,!0);x(i);var d=p(i,2);x(r),x(t),l(()=>s(o,u(a))),n(`click`,d,()=>void q()),c(e,t)},Ue=e=>{var t=xe();c(e,t)};v($,e=>{u(i)===`ready`&&u(k)&&u(O)?e(Re):u(i)===`auth`?e(ze,1):u(i)===`forbidden`?e(Be,2):u(i)===`not-found`?e(Ve,3):u(i)===`error`?e(He,4):e(Ue,-1)});var We=p($,2),Ge=e=>{ue(e,{get url(){return u(B).url},get title(){return u(B).title},onClose:()=>m(B,null)})};v(We,e=>{u(B)&&e(Ge)}),c(e,Q),g()}S([`click`]);function O(e,n){f(n,!0);var r=i(),a=_(r);t(a,()=>`${n.params.workspaceID}:${n.params.messageID}`,e=>{D(e,{get workspaceRouteID(){return n.params.workspaceID},get messageRouteID(){return n.params.messageID}})}),c(e,r),g()}export{O as component,E as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/2.0ohoWLGr.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/2.Ayui9IWo.js similarity index 84% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/2.0ohoWLGr.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/2.Ayui9IWo.js index 64142bf1..42bca2f7 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/2.0ohoWLGr.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/2.Ayui9IWo.js @@ -1 +1 @@ -import{t as e}from"../chunks/DK3Fl9T5.js";import{A as t,B as n,E as r,F as i,I as a,L as o,N as s,O as c,P as l,Q as u,St as d,V as f,W as p,_t as m,at as h,b as g,ft as _,gt as v,it as y,j as b,k as x,nt as S,p as C,rt as w,xt as T,z as E}from"../chunks/CySd1wef.js";import{n as D}from"../chunks/DGQW1sK7.js";import"../chunks/xihTtKlq.js";import"../chunks/M3UdkkP6.js";import{n as O,t as k}from"../chunks/BEqsQr3A.js";import{t as A}from"../chunks/DwaZ0FH6.js";import{a as j,i as M}from"../chunks/Qo16U5GS.js";import{t as N}from"../chunks/OQjxVT6U.js";var P=e({load:()=>F,prerender:()=>!1,ssr:()=>!1});async function F({params:e}){let t=e.workspaceID,n=[],r=``;try{n=(await O(`/api/workspaces`)).workspaces}catch(e){r=e instanceof k||e instanceof Error?e.message:`Could not load workspace`}return{workspaceID:t,workspace:n.find(e=>e.id===t||e.route_id===t),workspaces:n,loadError:r}}var I=o(``),L=a(`
                  • `),R=a(`
                    `),z=a(`
                    `);function B(e,a){m(a,!0);let o=_(()=>a.data.workspaceID),E=_(()=>a.data.workspace),O=_(()=>p(E)?.role),k=_(()=>M.filter(e=>!e.managersOnly||N(p(O)))),P=_(()=>A.url.pathname.split(`/`).filter(Boolean)[3]??``);function F(){D(`/app/${p(o)}`)}function B(e){D(j(p(o),e))}function V(e){if(e.key!==`Escape`)return;let t=e.target;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||(e.preventDefault(),F())}var H=z();f(`keydown`,S,V);var U=w(H),W=w(U),G=h(w(W),2),K=w(G),q=h(w(K)),J=w(q,!0);T(q),T(K);var Y=h(K,2);c(Y,21,()=>p(k),e=>e.id,(e,t)=>{var r=L(),i=w(r);let a;var o=w(i),d=w(o);c(d,21,()=>p(t).icon,x,(e,t)=>{var n=I();u(()=>C(n,`d`,p(t))),l(e,n)}),T(d),T(o);var f=h(o,2),m=w(f,!0);T(f),T(i),T(r),u(()=>{a=g(i,1,`ws-settings__rail-item`,null,a,{"is-active":p(P)===p(t).slug}),C(i,`aria-current`,p(P)===p(t).slug?`page`:void 0),s(m,p(t).label)}),n(`click`,i,()=>B(p(t).slug)),l(e,r)}),T(Y),T(G),T(W);var X=h(W,2),Z=w(X),Q=w(Z),$=e=>{var t=R(),n=w(t,!0);T(t),u(()=>s(n,a.data.loadError)),l(e,t)},ee=e=>{var n=i();t(y(n),()=>p(o),e=>{var t=i();r(y(t),()=>a.children??d),l(e,t)}),l(e,n)};b(Q,e=>{a.data.loadError?e($):e(ee,-1)}),T(Z),T(X),T(U);var te=h(U,2);T(H),u(()=>s(J,p(E)?.name??`—`)),n(`click`,te,F),l(e,H),v()}E([`click`]);export{B as component,P as universal}; \ No newline at end of file +import{t as e}from"../chunks/DK3Fl9T5.js";import{A as t,B as n,E as r,F as i,I as a,L as o,N as s,O as c,P as l,Q as u,St as d,V as f,W as p,_t as m,at as h,b as g,ft as _,gt as v,it as y,j as b,k as x,nt as S,p as C,rt as w,xt as T,z as E}from"../chunks/-xOSXMZB.js";import{n as D}from"../chunks/9dGTdiTk.js";import"../chunks/xihTtKlq.js";import"../chunks/DhjMpuoL.js";import{n as O,t as k}from"../chunks/BEqsQr3A.js";import{t as A}from"../chunks/DHjIYvi9.js";import{a as j,i as M}from"../chunks/Qo16U5GS.js";import{t as N}from"../chunks/OQjxVT6U.js";var P=e({load:()=>F,prerender:()=>!1,ssr:()=>!1});async function F({params:e}){let t=e.workspaceID,n=[],r=``;try{n=(await O(`/api/workspaces`)).workspaces}catch(e){r=e instanceof k||e instanceof Error?e.message:`Could not load workspace`}return{workspaceID:t,workspace:n.find(e=>e.id===t||e.route_id===t),workspaces:n,loadError:r}}var I=o(``),L=a(`
                  • `),R=a(`
                    `),z=a(`
                    `);function B(e,a){m(a,!0);let o=_(()=>a.data.workspaceID),E=_(()=>a.data.workspace),O=_(()=>p(E)?.role),k=_(()=>M.filter(e=>!e.managersOnly||N(p(O)))),P=_(()=>A.url.pathname.split(`/`).filter(Boolean)[3]??``);function F(){D(`/app/${p(o)}`)}function B(e){D(j(p(o),e))}function V(e){if(e.key!==`Escape`)return;let t=e.target;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||(e.preventDefault(),F())}var H=z();f(`keydown`,S,V);var U=w(H),W=w(U),G=h(w(W),2),K=w(G),q=h(w(K)),J=w(q,!0);T(q),T(K);var Y=h(K,2);c(Y,21,()=>p(k),e=>e.id,(e,t)=>{var r=L(),i=w(r);let a;var o=w(i),d=w(o);c(d,21,()=>p(t).icon,x,(e,t)=>{var n=I();u(()=>C(n,`d`,p(t))),l(e,n)}),T(d),T(o);var f=h(o,2),m=w(f,!0);T(f),T(i),T(r),u(()=>{a=g(i,1,`ws-settings__rail-item`,null,a,{"is-active":p(P)===p(t).slug}),C(i,`aria-current`,p(P)===p(t).slug?`page`:void 0),s(m,p(t).label)}),n(`click`,i,()=>B(p(t).slug)),l(e,r)}),T(Y),T(G),T(W);var X=h(W,2),Z=w(X),Q=w(Z),$=e=>{var t=R(),n=w(t,!0);T(t),u(()=>s(n,a.data.loadError)),l(e,t)},ee=e=>{var n=i(),s=y(n);t(s,()=>p(o),e=>{var t=i(),n=y(t);r(n,()=>a.children??d),l(e,t)}),l(e,n)};b(Q,e=>{a.data.loadError?e($):e(ee,-1)}),T(Z),T(X),T(U);var te=h(U,2);T(H),u(()=>s(J,p(E)?.name??`—`)),n(`click`,te,F),l(e,H),v()}E([`click`]);export{B as component,P as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/3.BlUkYxRF.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.BlUkYxRF.js deleted file mode 100644 index 967b038b..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/3.BlUkYxRF.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/DtafmpxM.js","../chunks/DK3Fl9T5.js","../chunks/CySd1wef.js","../chunks/DGQW1sK7.js","../chunks/BuFlayix.js","../chunks/HclGiUj8.js","../chunks/xihTtKlq.js","../chunks/M3UdkkP6.js","../chunks/BEqsQr3A.js","../chunks/DiELhALK.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../chunks/amAOfu1G.js","../chunks/C5AMwlHa.js","../assets/QuoteBlock.DPxHYHUM.css","../chunks/DlGnnCJo.js","../chunks/CEzVcVFQ.js","../chunks/YGHvv9X0.js","../chunks/DFObNPU2.js","../chunks/B_KT8vL7.js","../assets/ThreadPanel.DFXp9CyT.css","../assets/ChatApp.nfECkybw.css","../chunks/C1AJ2Jv0.js","../assets/ProductSite.4q0lYJor.css"])))=>i.map(i=>d[i]); -import{t as e}from"../chunks/DK3Fl9T5.js";import{F as t,M as n,P as r,W as i,dt as a,it as o}from"../chunks/CySd1wef.js";import{t as s}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";import"../chunks/amAOfu1G.js";var c=e({prerender:()=>!0});function l(e){let c=window.location.hostname.startsWith(`app.`)?s(()=>import(`../chunks/DtafmpxM.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url):s(()=>import(`../chunks/C1AJ2Jv0.js`),__vite__mapDeps([22,2,1,6,12,23]),import.meta.url);var l=t();n(o(l),()=>c,null,(e,t)=>{i(a(()=>i(t).default))(e,{})}),r(e,l)}export{l as component,c as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/3.Cyf2Zyar.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.Cyf2Zyar.js new file mode 100644 index 00000000..6909668c --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.Cyf2Zyar.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/dmzB10-Q.js","../chunks/DK3Fl9T5.js","../chunks/-xOSXMZB.js","../chunks/9dGTdiTk.js","../chunks/Dt-HX3Vu.js","../chunks/HclGiUj8.js","../chunks/xihTtKlq.js","../chunks/DhjMpuoL.js","../chunks/BEqsQr3A.js","../chunks/UXt3B2YI.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../chunks/D_KmntYi.js","../chunks/CQx5QjGd.js","../assets/QuoteBlock.DPxHYHUM.css","../chunks/DlGnnCJo.js","../chunks/AwlLA_94.js","../chunks/CgfADbOh.js","../chunks/DFObNPU2.js","../chunks/DzgF6O2k.js","../assets/ThreadPanel.DFXp9CyT.css","../assets/ChatApp.nfECkybw.css","../chunks/BfeYhzix.js","../assets/ProductSite.4q0lYJor.css"])))=>i.map(i=>d[i]); +import{t as e}from"../chunks/DK3Fl9T5.js";import{F as t,M as n,P as r,W as i,dt as a,it as o}from"../chunks/-xOSXMZB.js";import{t as s}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";import"../chunks/D_KmntYi.js";var c=e({prerender:()=>!0});function l(e){let c=window.location.hostname.startsWith(`app.`)?s(()=>import(`../chunks/dmzB10-Q.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url):s(()=>import(`../chunks/BfeYhzix.js`),__vite__mapDeps([22,2,1,6,12,23]),import.meta.url);var l=t(),u=o(l);n(u,()=>c,null,(e,t)=>{let n=a(()=>i(t).default);i(n)(e,{})}),r(e,l)}export{l as component,c as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/4.BveXNygr.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.BveXNygr.js new file mode 100644 index 00000000..fd9ccadd --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.BveXNygr.js @@ -0,0 +1 @@ +import"../chunks/-xOSXMZB.js";import"../chunks/xihTtKlq.js";import"../chunks/D_KmntYi.js";import{t as e}from"../chunks/dmzB10-Q.js";function t(t){e(t,{})}export{t as component}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/4.CV83zLxh.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.CV83zLxh.js deleted file mode 100644 index 85ac1b3c..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/4.CV83zLxh.js +++ /dev/null @@ -1 +0,0 @@ -import"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import"../chunks/amAOfu1G.js";import{t as e}from"../chunks/DtafmpxM.js";function t(t){e(t,{})}export{t as component}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/5.-TZ8job_.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/5.-TZ8job_.js new file mode 100644 index 00000000..907409ba --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/5.-TZ8job_.js @@ -0,0 +1 @@ +import{_t as e,gt as t}from"../chunks/-xOSXMZB.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/dmzB10-Q.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID}}),t()}export{r as component}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/5.C04PopFT.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/5.C04PopFT.js deleted file mode 100644 index e5d70240..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/5.C04PopFT.js +++ /dev/null @@ -1 +0,0 @@ -import{_t as e,gt as t}from"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/DtafmpxM.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID}}),t()}export{r as component}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/6.B4FM4ibZ.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/6.D1H8DGKr.js similarity index 78% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/6.B4FM4ibZ.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/6.D1H8DGKr.js index da3a173a..e217f0c6 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/6.B4FM4ibZ.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/6.D1H8DGKr.js @@ -1 +1 @@ -import{t as e}from"../chunks/DK3Fl9T5.js";import{r as t}from"../chunks/BuFlayix.js";import{a as n,r}from"../chunks/Qo16U5GS.js";function i(e,n){throw new t(e,n.toString())}var a=e({load:()=>o,prerender:()=>!1,ssr:()=>!1});function o({params:e}){throw i(307,n(e.workspaceID,r))}export{a as universal}; \ No newline at end of file +import{t as e}from"../chunks/DK3Fl9T5.js";import{r as t}from"../chunks/Dt-HX3Vu.js";import{a as n,r}from"../chunks/Qo16U5GS.js";function i(e,n){throw new t(e,n.toString())}var a=e({load:()=>o,prerender:()=>!1,ssr:()=>!1});function o({params:e}){throw i(307,n(e.workspaceID,r))}export{a as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/7.B9isd4ex.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/7.DTpk_RMZ.js similarity index 50% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/7.B9isd4ex.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/7.DTpk_RMZ.js index cba6a002..ecfc5352 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/7.B9isd4ex.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/7.DTpk_RMZ.js @@ -1,7 +1,7 @@ -import{t as e}from"../chunks/DK3Fl9T5.js";import{$ as t,A as n,B as r,F as i,I as a,N as o,O as s,P as c,Q as l,R as u,V as d,W as f,_t as p,a as m,at as h,b as g,bt as _,ct as v,f as y,ft as b,gt as x,h as S,it as C,j as w,l as T,lt as E,ot as D,p as O,q as k,rt as A,u as j,xt as M,z as N}from"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import{t as P}from"../chunks/BEqsQr3A.js";import{d as F}from"../chunks/DiELhALK.js";import{t as I}from"../chunks/OQjxVT6U.js";import{_ as L,b as R,d as z,f as B,g as V,h as H,l as U,m as W,n as G,r as K,s as ee,t as q,u as J,v as te,y as Y}from"../chunks/DFObNPU2.js";import{t as X}from"../chunks/Da4vmQqB.js";var Z=e({load:()=>Q,prerender:()=>!1,ssr:()=>!1});async function Q({params:e,parent:t}){let{workspace:n}=await t(),r=n?.id??e.workspaceID,i=n?V(n):e.workspaceID,a=[],o=null,s=``;try{let[e,t]=await Promise.all([H(r),F()]);a=e,o=t.user}catch(e){s=(e instanceof P&&(e.status===401||e.status),K(e))}return{workspaceID:r,workspaceIdentifier:i,workspace:n,bots:a,me:o,loadError:s}}var ne=a(``),re=a(``),ie=a(`Names the token the setup code mints when it's claimed.`),ae=a(``),oe=a(`

                    New bot

                    Bots post to channels and DMs through tokens you mint here. Plug a token into OpenClaw to give +import{t as e}from"../chunks/DK3Fl9T5.js";import{$ as t,A as n,B as r,F as i,I as a,N as o,O as s,P as c,Q as l,R as u,V as d,W as f,_t as p,a as m,at as h,b as g,bt as _,ct as v,f as y,ft as b,gt as x,h as S,it as C,j as w,l as T,lt as E,ot as D,p as O,q as k,rt as A,u as j,xt as M,z as N}from"../chunks/-xOSXMZB.js";import"../chunks/xihTtKlq.js";import{t as P}from"../chunks/BEqsQr3A.js";import{d as F}from"../chunks/UXt3B2YI.js";import{t as I}from"../chunks/OQjxVT6U.js";import{_ as L,b as R,d as z,f as B,g as V,h as H,l as U,m as W,n as G,r as K,s as ee,t as q,u as J,v as te,y as Y}from"../chunks/DFObNPU2.js";import{t as X}from"../chunks/Bbndfbji.js";var Z=e({load:()=>Q,prerender:()=>!1,ssr:()=>!1});async function Q({params:e,parent:t}){let{workspace:n}=await t(),r=n?.id??e.workspaceID,i=n?V(n):e.workspaceID,a=[],o=null,s=``;try{let[e,t]=await Promise.all([H(r),F()]);a=e,o=t.user}catch(e){s=(e instanceof P&&(e.status===401||e.status),K(e))}return{workspaceID:r,workspaceIdentifier:i,workspace:n,bots:a,me:o,loadError:s}}var ne=a(``),re=a(``),ie=a(`Names the token the setup code mints when it's claimed.`),ae=a(`

                    `),oe=a(`

                    New bot

                    Bots post to channels and DMs through tokens you mint here. Plug a token into OpenClaw to give it a presence in this workspace.

                    Ownership
                    How will you connect it?
                    Scope
                    `);function se(e,n){p(n,!0);let i=[],a=[],u=[],m=E(``),C=E(``),O=E(!1),N=E(D(k(()=>n.canCreateService?`service`:`user`))),P=E(`code`),F=E(`default`),I=E(`bot:write`),L=D(crypto.randomUUID()),R=E(!1),z=E(``);t(()=>{f(O)||v(C,Y(f(m)),!0)});function B(e){v(O,!0),v(C,e.target.value,!0)}let V=b(()=>!f(R)&&f(m).trim().length>0&&f(C).trim().length>0);async function H(e){if(e.preventDefault(),f(V)){v(R,!0),v(z,``);try{let e=f(F).trim()||`default`,t=await ee(n.workspaceID,{display_name:f(m).trim(),handle:f(C).trim(),owner_user_id:f(N)===`user`?n.currentUserID:void 0,setup_nonce:L,...f(P)===`code`?{initial_token:!1}:{token_name:e,scopes:[f(I)]}});n.onCreated(t,{connect:f(P),tokenName:e,scopes:[f(I)]})}catch(e){v(z,K(e),!0)}finally{v(R,!1)}}}var U=oe(),W=h(A(U),2),G=A(W),J=h(A(G),2);y(J),M(G);var te=h(G,2),X=h(A(te),2),Z=h(A(X),2);y(Z),M(X),M(te),M(W);var Q=h(W,2),se=h(A(Q),2),ce=A(se),le=e=>{var t=ne();let n;var r=A(t);y(r),r.value=r.__value=`service`,_(4),M(t),l(()=>n=g(t,1,`ws-bots__choice`,null,n,{"is-active":f(N)===`service`})),T(i,[],r,()=>f(N),e=>v(N,e)),c(e,t)};w(ce,e=>{n.canCreateService&&e(le)});var $=h(ce,2);let ue;var de=A($);y(de),de.value=de.__value=`user`,_(4),M($),M(se),M(Q);var fe=h(Q,2),pe=h(A(fe),2),me=A(pe);let he;var ge=A(me);y(ge),ge.value=ge.__value=`code`,_(4),M(me);var _e=h(me,2);let ve;var ye=A(_e);y(ye),ye.value=ye.__value=`token`,_(4),M(_e),M(pe),M(fe);var be=h(fe,2),xe=h(A(be),2);s(xe,21,()=>q,e=>e.id,(e,t)=>{var n=re();let r;var i=A(n);y(i);var a,s=h(i,2),d=A(s,!0);M(s);var p=h(s,2),m=A(p,!0);M(p),M(n),l(()=>{r=g(n,1,`ws-bots__choice`,null,r,{"is-active":f(I)===f(t).id}),a!==(a=f(t).id)&&(i.value=(i.__value=f(t).id)??``),o(d,f(t).label),o(m,f(t).hint)}),T(u,[],i,()=>(f(t).id,f(I)),e=>v(I,e)),c(e,n)}),M(xe),M(be);var Se=h(be,2),Ce=h(A(Se),2);y(Ce);var we=h(Ce,2),Te=e=>{c(e,ie())};w(we,e=>{f(P)===`code`&&e(Te)}),M(Se);var Ee=h(Se,2),De=e=>{var t=ae(),n=A(t,!0);M(t),l(()=>o(n,f(z))),c(e,t)};w(Ee,e=>{f(z)&&e(De)});var Oe=h(Ee,2),ke=A(Oe),Ae=h(ke,2),je=A(Ae,!0);M(Ae),M(Oe),M(U),l(()=>{S(Z,f(C)),ue=g($,1,`ws-bots__choice`,null,ue,{"is-active":f(N)===`user`}),he=g(me,1,`ws-bots__choice`,null,he,{"is-active":f(P)===`code`}),ve=g(_e,1,`ws-bots__choice`,null,ve,{"is-active":f(P)===`token`}),ke.disabled=f(R),Ae.disabled=!f(V),o(je,f(R)?`Creating…`:`Create bot`)}),d(`submit`,U,H),j(J,()=>f(m),e=>v(m,e)),r(`input`,Z,B),T(i,[],de,()=>f(N),e=>v(N,e)),T(a,[],ge,()=>f(P),e=>v(P,e)),T(a,[],ye,()=>f(P),e=>v(P,e)),j(Ce,()=>f(F),e=>v(F,e)),r(`click`,ke,function(...e){n.onCancel?.apply(this,e)}),c(e,U),x()}N([`input`,`click`]);var ce=a(``),le=a(``),$=a(`

                    Scope
                    `);function ue(e,t){p(t,!0);let n=[],i=m(t,`mode`,3,`token`),a=E(``),u=E(`bot:write`),_=E(!1),S=E(``),C=b(()=>!f(_)&&f(a).trim().length>0);async function D(e){if(e.preventDefault(),f(C)){if(i()===`code`){t.onCode?.(f(a).trim(),[f(u)]);return}v(_,!0),v(S,``);try{let e=await U(t.workspaceID,t.botUserID,{name:f(a).trim(),scopes:[f(u)]});t.onCreated(e)}catch(e){v(S,K(e),!0)}finally{v(_,!1)}}}var O=$(),k=A(O),N=A(k),P=A(N,!0);M(N);var F=h(N,2),I=A(F,!0);M(F),M(k);var L=h(k,2),R=h(A(L),2);y(R),M(L);var z=h(L,2),B=h(A(z),2);s(B,21,()=>q,e=>e.id,(e,t)=>{var r=ce();let i;var a=A(r);y(a);var s,d=h(a,2),p=A(d,!0);M(d);var m=h(d,2),_=A(m,!0);M(m),M(r),l(()=>{i=g(r,1,`ws-bots__choice`,null,i,{"is-active":f(u)===f(t).id}),s!==(s=f(t).id)&&(a.value=(a.__value=f(t).id)??``),o(p,f(t).label),o(_,f(t).hint)}),T(n,[],a,()=>(f(t).id,f(u)),e=>v(u,e)),c(e,r)}),M(B),M(z);var V=h(z,2),H=e=>{var t=le(),n=A(t,!0);M(t),l(()=>o(n,f(S))),c(e,t)};w(V,e=>{f(S)&&e(H)});var W=h(V,2),G=A(W),ee=h(G,2),J=A(ee,!0);M(ee),M(W),M(O),l(()=>{o(P,i()===`code`?`New setup code`:`Mint new token`),o(I,i()===`code`?`The code mints a fresh token for this bot when OpenClaw claims it. Name the runtime and grant only the access it needs.`:`Name the runtime using this credential and grant only the access it needs.`),G.disabled=f(_),ee.disabled=!f(C),o(J,i()===`code`?`Generate code`:f(_)?`Minting…`:`Mint token`)}),d(`submit`,O,D),j(R,()=>f(a),e=>v(a,e)),r(`click`,G,function(...e){t.onCancel?.apply(this,e)}),c(e,O),x()}N([`click`]);var de=a(``),fe=a(`
                    `),pe=a(`
                    `),me=a(`
                    No bots yet. Add one to plug an agent into this workspace.
                    `),he=a(``),ge=a(` `,1),_e=a(` `,1),ve=a(``),ye=a(`
                    `),be=a(`

                    No active tokens. Mint one to get this bot online.

                    `),xe=a(` `),Se=a(` `),Ce=a(``),we=a(`
                    `),Te=a(`
                    `,1),Ee=a(``),De=a(`
                  • `),Oe=a(`
                      `),ke=a(`

                      Tokens

                      Each token authenticates one OpenClaw process. Rotate to mint a new one; revoke + than OpenClaw.

                      Scope
                      `);function se(e,n){p(n,!0);let i=[],a=[],u=[],m=E(``),C=E(``),O=E(!1),N=E(D(k(()=>n.canCreateService?`service`:`user`))),P=E(`code`),F=E(`default`),I=E(`bot:write`),L=D(crypto.randomUUID()),R=E(!1),z=E(``);t(()=>{f(O)||v(C,Y(f(m)),!0)});function B(e){v(O,!0),v(C,e.target.value,!0)}let V=b(()=>!f(R)&&f(m).trim().length>0&&f(C).trim().length>0);async function H(e){if(e.preventDefault(),f(V)){v(R,!0),v(z,``);try{let e=f(F).trim()||`default`,t=await ee(n.workspaceID,{display_name:f(m).trim(),handle:f(C).trim(),owner_user_id:f(N)===`user`?n.currentUserID:void 0,setup_nonce:L,...f(P)===`code`?{initial_token:!1}:{token_name:e,scopes:[f(I)]}});n.onCreated(t,{connect:f(P),tokenName:e,scopes:[f(I)]})}catch(e){v(z,K(e),!0)}finally{v(R,!1)}}}var U=oe(),W=h(A(U),2),G=A(W),J=h(A(G),2);y(J),M(G);var te=h(G,2),X=h(A(te),2),Z=h(A(X),2);y(Z),M(X),M(te),M(W);var Q=h(W,2),se=h(A(Q),2),ce=A(se),le=e=>{var t=ne();let n;var r=A(t);y(r),r.value=r.__value=`service`,_(4),M(t),l(()=>n=g(t,1,`ws-bots__choice`,null,n,{"is-active":f(N)===`service`})),T(i,[],r,()=>f(N),e=>v(N,e)),c(e,t)};w(ce,e=>{n.canCreateService&&e(le)});var $=h(ce,2);let ue;var de=A($);y(de),de.value=de.__value=`user`,_(4),M($),M(se),M(Q);var fe=h(Q,2),pe=h(A(fe),2),me=A(pe);let he;var ge=A(me);y(ge),ge.value=ge.__value=`code`,_(4),M(me);var _e=h(me,2);let ve;var ye=A(_e);y(ye),ye.value=ye.__value=`token`,_(4),M(_e),M(pe),M(fe);var be=h(fe,2),xe=h(A(be),2);s(xe,21,()=>q,e=>e.id,(e,t)=>{var n=re();let r;var i=A(n);y(i);var a,s=h(i,2),d=A(s,!0);M(s);var p=h(s,2),m=A(p,!0);M(p),M(n),l(()=>{r=g(n,1,`ws-bots__choice`,null,r,{"is-active":f(I)===f(t).id}),a!==(a=f(t).id)&&(i.value=(i.__value=f(t).id)??``),o(d,f(t).label),o(m,f(t).hint)}),T(u,[],i,()=>(f(t).id,f(I)),e=>v(I,e)),c(e,n)}),M(xe),M(be);var Se=h(be,2),Ce=h(A(Se),2);y(Ce);var we=h(Ce,2),Te=e=>{var t=ie();c(e,t)};w(we,e=>{f(P)===`code`&&e(Te)}),M(Se);var Ee=h(Se,2),De=e=>{var t=ae(),n=A(t,!0);M(t),l(()=>o(n,f(z))),c(e,t)};w(Ee,e=>{f(z)&&e(De)});var Oe=h(Ee,2),ke=A(Oe),Ae=h(ke,2),je=A(Ae,!0);M(Ae),M(Oe),M(U),l(()=>{S(Z,f(C)),ue=g($,1,`ws-bots__choice`,null,ue,{"is-active":f(N)===`user`}),he=g(me,1,`ws-bots__choice`,null,he,{"is-active":f(P)===`code`}),ve=g(_e,1,`ws-bots__choice`,null,ve,{"is-active":f(P)===`token`}),ke.disabled=f(R),Ae.disabled=!f(V),o(je,f(R)?`Creating…`:`Create bot`)}),d(`submit`,U,H),j(J,()=>f(m),e=>v(m,e)),r(`input`,Z,B),T(i,[],de,()=>f(N),e=>v(N,e)),T(a,[],ge,()=>f(P),e=>v(P,e)),T(a,[],ye,()=>f(P),e=>v(P,e)),j(Ce,()=>f(F),e=>v(F,e)),r(`click`,ke,function(...e){n.onCancel?.apply(this,e)}),c(e,U),x()}N([`input`,`click`]);var ce=a(``),le=a(``),$=a(`

                      Scope
                      `);function ue(e,t){p(t,!0);let n=[],i=m(t,`mode`,3,`token`),a=E(``),u=E(`bot:write`),_=E(!1),S=E(``),C=b(()=>!f(_)&&f(a).trim().length>0);async function D(e){if(e.preventDefault(),f(C)){if(i()===`code`){t.onCode?.(f(a).trim(),[f(u)]);return}v(_,!0),v(S,``);try{let e=await U(t.workspaceID,t.botUserID,{name:f(a).trim(),scopes:[f(u)]});t.onCreated(e)}catch(e){v(S,K(e),!0)}finally{v(_,!1)}}}var O=$(),k=A(O),N=A(k),P=A(N,!0);M(N);var F=h(N,2),I=A(F,!0);M(F),M(k);var L=h(k,2),R=h(A(L),2);y(R),M(L);var z=h(L,2),B=h(A(z),2);s(B,21,()=>q,e=>e.id,(e,t)=>{var r=ce();let i;var a=A(r);y(a);var s,d=h(a,2),p=A(d,!0);M(d);var m=h(d,2),_=A(m,!0);M(m),M(r),l(()=>{i=g(r,1,`ws-bots__choice`,null,i,{"is-active":f(u)===f(t).id}),s!==(s=f(t).id)&&(a.value=(a.__value=f(t).id)??``),o(p,f(t).label),o(_,f(t).hint)}),T(n,[],a,()=>(f(t).id,f(u)),e=>v(u,e)),c(e,r)}),M(B),M(z);var V=h(z,2),H=e=>{var t=le(),n=A(t,!0);M(t),l(()=>o(n,f(S))),c(e,t)};w(V,e=>{f(S)&&e(H)});var W=h(V,2),G=A(W),ee=h(G,2),J=A(ee,!0);M(ee),M(W),M(O),l(()=>{o(P,i()===`code`?`New setup code`:`Mint new token`),o(I,i()===`code`?`The code mints a fresh token for this bot when OpenClaw claims it. Name the runtime and grant only the access it needs.`:`Name the runtime using this credential and grant only the access it needs.`),G.disabled=f(_),ee.disabled=!f(C),o(J,i()===`code`?`Generate code`:f(_)?`Minting…`:`Mint token`)}),d(`submit`,O,D),j(R,()=>f(a),e=>v(a,e)),r(`click`,G,function(...e){t.onCancel?.apply(this,e)}),c(e,O),x()}N([`click`]);var de=a(``),fe=a(`
                      `),pe=a(`
                      `),me=a(`
                      No bots yet. Add one to plug an agent into this workspace.
                      `),he=a(``),ge=a(` `,1),_e=a(` `,1),ve=a(``),ye=a(`
                      `),be=a(`

                      No active tokens. Mint one to get this bot online.

                      `),xe=a(` `),Se=a(` `),Ce=a(``),we=a(`
                      `),Te=a(`
                      `,1),Ee=a(``),De=a(`
                    • `),Oe=a(`
                        `),ke=a(`

                        Tokens

                        Each token authenticates one OpenClaw process. Rotate to mint a new one; revoke to cut off whatever is using it.

                        `),Ae=a(`
                        `),je=a(`
                        `),Me=a(`

                        Bots & agents

                        Bots are workspace members backed by tokens. Plug a token into OpenClaw to give an agent a - presence in this workspace.

                        `);function Ne(e,t){p(t,!0);let a=E(D(k(()=>t.data.bots))),d=E(D(k(()=>t.data.loadError))),m=E(!1),y=E(!1),S=E(null),T=E(null),j=E(null),N=E(`token`),F=E(null),V=E(``),U=E(null);function ee(e){v(U,f(U)===e?null:e,!0)}let q=b(()=>t.data.me),Y=b(()=>t.data.workspaceID),Z=b(()=>t.data.workspaceIdentifier||t.data.workspaceID),Q=b(()=>I(t.data.workspace?.role)),ne=b(()=>f(Q));function re(e){return B(e)?`Service`:f(q)&&e.owner_user_id===f(q).id?`Owned by you`:`Owned`}function ie(e){return B(e)?f(Q):!!f(q)&&e.owner_user_id===f(q).id}function ae(){return f(Q)}function oe(e){return B(e)?f(Q):!!f(q)&&e.owner_user_id===f(q).id}function ce(e){v(T,f(T)===e?null:e,!0)}async function le(){v(m,!0);try{v(a,await H(f(Y)),!0),v(d,``)}catch(e){v(d,K(e),!0)}finally{v(m,!1)}}async function $(e){try{let t=await W(f(Y),e);v(a,f(a).map(n=>n.bot.id===e?{...n,tokens:t}:n),!0)}catch(e){v(V,K(e),!0)}}function Ne(e,t){v(y,!1),v(S,{bot:e.bot,connect:t.connect,token:e.bot_token,tokenName:t.tokenName,scopes:t.scopes},!0),v(a,[{bot:e.bot,tokens:e.bot_token?[e.bot_token]:[]},...f(a)],!0),v(T,e.bot.id,!0)}function Pe(e,t){v(V,``),v(j,e,!0),v(N,t,!0)}async function Fe(e,t){v(j,null),v(S,{bot:e,connect:`token`,token:t},!0),await $(e.id)}function Ie(e,t,n){v(j,null),v(S,{bot:e,connect:`code`,tokenName:t,scopes:n},!0)}async function Le(e,t){if(confirm(`Revoke "${t.name||`token`}"? Anything using it will fail immediately.`)){v(F,{botID:e.id,kind:`revoke`},!0),v(V,``);try{await te(t.id),await $(e.id)}catch(e){v(V,K(e),!0)}finally{v(F,null)}}}async function Re(e){let t=`Remove ${He(e)} from this workspace? Its tokens here will be revoked.`;if(confirm(t)){v(F,{botID:e.id,kind:`remove`},!0),v(V,``);try{await L(f(Y),e.id),v(a,f(a).filter(t=>t.bot.id!==e.id),!0),f(T)===e.id&&v(T,null)}catch(e){v(V,K(e),!0)}finally{v(F,null)}}}async function ze(e){let t=`Delete ${He(e)} everywhere? This permanently retires this bot identity and revokes all of its tokens and integrations in every workspace${e.handle?`, and releases ${Ve(e.handle)} for reuse`:``}. Existing messages keep the old identity marked as deleted.`;if(confirm(t)){v(F,{botID:e.id,kind:`delete`},!0),v(V,``);try{await J(e.id),v(a,f(a).filter(t=>t.bot.id!==e.id),!0),f(T)===e.id&&v(T,null),f(S)?.bot.id===e.id&&v(S,null)}catch(e){v(V,e instanceof P&&e.status===403?e.message:K(e),!0)}finally{v(F,null)}}}function Be(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:t.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}function Ve(e){return e.startsWith(`@`)?e:`@${e}`}function He(e){return e.handle?Ve(e.handle):e.display_name||`this bot`}function Ue(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length>=2?(t[0][0]+t[1][0]).toUpperCase():e.slice(0,2).toUpperCase()}let We=b(()=>`${f(a).length} ${f(a).length===1?`bot`:`bots`}`);var Ge=Me(),Ke=h(A(Ge),2),qe=A(Ke),Je=A(qe,!0);M(qe);var Ye=h(qe,2),Xe=A(Ye),Ze=A(Xe,!0);M(Xe);var Qe=h(Xe,2),$e=e=>{var t=de();l(()=>t.disabled=f(y)),r(`click`,t,()=>{v(y,!0),v(S,null)}),c(e,t)};w(Qe,e=>{f(q)&&e($e)}),M(Ye),M(Ke);var et=h(Ke,2),tt=e=>{var t=fe(),n=A(t,!0);M(t),l(()=>o(n,f(d))),c(e,t)};w(et,e=>{f(d)&&e(tt)});var nt=h(et,2),rt=e=>{var t=i();n(C(t),()=>f(S),e=>{X(e,{get connect(){return f(S).connect},get token(){return f(S).token},get workspaceID(){return f(Y)},get tokenName(){return f(S).tokenName},get scopes(){return f(S).scopes},get botHandle(){return f(S).bot.handle},get botUserID(){return f(S).bot.id},get workspace(){return f(Z)},onDismiss:()=>{let e=f(S)?.bot.id,t=f(S)?.connect===`code`;v(S,null),t&&e&&$(e)}})}),c(e,t)};w(nt,e=>{f(S)&&f(q)&&e(rt)});var it=h(nt,2),at=e=>{var t=pe();se(A(t),{get workspaceID(){return f(Y)},get currentUserID(){return f(q).id},get canCreateService(){return f(ne)},onCreated:Ne,onCancel:()=>v(y,!1)}),M(t),c(e,t)};w(it,e=>{f(y)&&f(q)&&e(at)});var ot=h(it,2),st=e=>{var t=fe(),n=A(t,!0);M(t),l(()=>o(n,f(V))),c(e,t)};w(ot,e=>{f(V)&&e(st)});var ct=h(ot,2),lt=e=>{c(e,me())},ut=e=>{var t=je();s(t,21,()=>f(a),e=>e.bot.id,(e,t)=>{let n=b(()=>f(t).bot),i=b(()=>G(f(t).tokens)),a=b(()=>f(T)===f(n).id),d=b(()=>f(F)?.botID===f(n).id),p=b(()=>f(j)===f(n).id);var m=Ae();let y;var x=A(m),S=A(x),E=A(S),D=e=>{var t=he();l(()=>O(t,`src`,f(n).avatar_url)),c(e,t)},k=e=>{var t=u();l(e=>o(t,e),[()=>Ue(f(n).display_name||f(n).handle||`?`)]),c(e,t)};w(E,e=>{f(n).avatar_url?e(D):e(k,-1)}),M(S);var P=h(S,2),I=A(P),L=A(I,!0);M(I);var V=h(I,2),H=A(V),W=e=>{var t=ge(),r=C(t),i=A(r,!0);M(r),_(2),l(e=>o(i,e),[()=>Ve(f(n).handle)]),c(e,t)};w(H,e=>{f(n).handle&&e(W)});var K=h(H,2),q=A(K);M(K);var J=h(K,4),te=A(J);M(J),M(V),M(P);var X=h(P,2),Z=A(X,!0);M(X);var Q=h(X,2),ne=A(Q),se=A(ne);M(ne),M(Q),M(x);var le=h(x,2),$=e=>{var t=ke(),a=A(t),m=h(A(a),2),g=A(m),_=e=>{var t=_e(),i=C(t),a=h(i,2);l(()=>{i.disabled=f(d)||f(p),a.disabled=f(d)||f(p)}),r(`click`,i,()=>Pe(f(n).id,`code`)),r(`click`,a,()=>Pe(f(n).id,`token`)),c(e,t)},y=b(()=>ie(f(n)));w(g,e=>{f(y)&&e(_)});var x=h(g,2),S=e=>{var t=ve(),i=A(t,!0);M(t),l(()=>{t.disabled=f(d),o(i,f(d)&&f(F)?.kind===`remove`?`Removing…`:`Remove from workspace`)}),r(`click`,t,()=>Re(f(n))),c(e,t)},T=b(()=>ae());w(x,e=>{f(T)&&e(S)});var E=h(x,2),D=e=>{var t=ve(),i=A(t,!0);M(t),l(()=>{t.disabled=f(d),o(i,f(d)&&f(F)?.kind===`delete`?`Deleting…`:`Delete bot`)}),r(`click`,t,()=>ze(f(n))),c(e,t)},k=b(()=>oe(f(n)));w(E,e=>{f(k)&&e(D)}),M(m),M(a);var P=h(a,2),I=e=>{var t=ye();ue(A(t),{get workspaceID(){return f(Y)},get botUserID(){return f(n).id},get mode(){return f(N)},onCreated:e=>Fe(f(n),e),onCode:(e,t)=>Ie(f(n),e,t),onCancel:()=>v(j,null)}),M(t),c(e,t)};w(P,e=>{f(p)&&e(I)});var L=h(P,2),B=e=>{c(e,be())},V=e=>{var t=Oe();s(t,21,()=>f(i),e=>e.id,(e,t)=>{var i=De(),a=A(i),p=A(a),m=A(p,!0);M(p);var g=h(p,2),_=A(g),v=h(_),y=e=>{var n=u();l(e=>o(n,`· last used ${e??``}`),[()=>Be(f(t).last_used_at)]),c(e,n)};w(v,e=>{f(t).last_used_at&&e(y)}),M(g);var x=h(g,2),S=e=>{let n=b(()=>R(f(t).scopes)),i=b(()=>z(f(t).scopes));var a=Te(),u=C(a),d=A(u),p=e=>{var t=xe(),r=A(t,!0);M(t),l(()=>o(r,f(n).bundleLabel)),c(e,t)};w(d,e=>{f(n).bundleLabel&&e(p)});var m=h(d,2);s(m,16,()=>f(n).extras,e=>e,(e,t)=>{var n=Se(),r=A(n,!0);M(n),l(()=>o(r,t)),c(e,n)});var g=h(m,2),_=e=>{var n=Ce(),a=A(n,!0);M(n),l(()=>{O(n,`aria-expanded`,f(U)===f(t).id),O(n,`aria-controls`,`ws-bots-scopes-${f(t).id??``}`),o(a,f(U)===f(t).id?`Hide scopes`:`All ${f(i).length} scopes`)}),r(`click`,n,()=>ee(f(t).id)),c(e,n)};w(g,e=>{f(n).bundle&&e(_)}),M(u);var v=h(u,2),y=e=>{var n=we();s(n,20,()=>f(i),e=>e,(e,t)=>{var n=Se(),r=A(n,!0);M(n),l(()=>o(r,t)),c(e,n)}),M(n),l(()=>O(n,`id`,`ws-bots-scopes-${f(t).id??``}`)),c(e,n)};w(v,e=>{f(n).bundle&&f(U)===f(t).id&&e(y)}),c(e,a)};w(x,e=>{f(t).scopes?.length&&e(S)}),M(a);var T=h(a,2),E=e=>{var i=Ee();l(()=>i.disabled=f(d)),r(`click`,i,()=>Le(f(n),f(t))),c(e,i)},D=b(()=>ie(f(n)));w(T,e=>{f(D)&&e(E)}),M(i),l(e=>{o(m,f(t).name||`token`),o(_,`Created ${e??``} `)},[()=>Be(f(t).created_at)]),c(e,i)}),M(t),c(e,t)};w(L,e=>{f(i).length===0?e(B):e(V,-1)}),M(t),c(e,t)};w(le,e=>{f(a)&&e($)}),M(m),l((e,t,r,s)=>{y=g(m,1,`ws-bots__row`,null,y,{"is-expanded":f(a)}),O(x,`aria-expanded`,f(a)),g(S,1,`ws-members__avatar ws-members__avatar--${e??``}`),o(L,f(n).display_name||f(n).handle),o(q,`Created ${t??``}`),o(te,`${f(i).length??``} active ${f(i).length===1?`token`:`tokens`}`),g(X,1,`ws-bots__owner-pill ws-bots__owner-pill--${r??``}`),o(Z,s),O(se,`points`,f(a)?`18 15 12 9 6 15`:`6 9 12 15 18 9`)},[()=>B(f(n))?`human`:`bot`,()=>Be(f(n).created_at),()=>B(f(n))?`service`:`user`,()=>re(f(n))]),r(`click`,x,()=>ce(f(n).id)),c(e,m)}),M(t),c(e,t)};w(ct,e=>{f(a).length===0&&!f(d)?e(lt):e(ut,-1)}),M(Ge),l(()=>{o(Je,f(We)),Xe.disabled=f(m),o(Ze,f(m)?`Refreshing…`:`Refresh`)}),r(`click`,Xe,le),c(e,Ge),x()}N([`click`]);export{Ne as component,Z as universal}; \ No newline at end of file + presence in this workspace.

                        `);function Ne(e,t){p(t,!0);let a=E(D(k(()=>t.data.bots))),d=E(D(k(()=>t.data.loadError))),m=E(!1),y=E(!1),S=E(null),T=E(null),j=E(null),N=E(`token`),F=E(null),V=E(``),U=E(null);function ee(e){v(U,f(U)===e?null:e,!0)}let q=b(()=>t.data.me),Y=b(()=>t.data.workspaceID),Z=b(()=>t.data.workspaceIdentifier||t.data.workspaceID),Q=b(()=>I(t.data.workspace?.role)),ne=b(()=>f(Q));function re(e){return B(e)?`Service`:f(q)&&e.owner_user_id===f(q).id?`Owned by you`:`Owned`}function ie(e){return B(e)?f(Q):!!f(q)&&e.owner_user_id===f(q).id}function ae(){return f(Q)}function oe(e){return B(e)?f(Q):!!f(q)&&e.owner_user_id===f(q).id}function ce(e){v(T,f(T)===e?null:e,!0)}async function le(){v(m,!0);try{v(a,await H(f(Y)),!0),v(d,``)}catch(e){v(d,K(e),!0)}finally{v(m,!1)}}async function $(e){try{let t=await W(f(Y),e);v(a,f(a).map(n=>n.bot.id===e?{...n,tokens:t}:n),!0)}catch(e){v(V,K(e),!0)}}function Ne(e,t){v(y,!1),v(S,{bot:e.bot,connect:t.connect,token:e.bot_token,tokenName:t.tokenName,scopes:t.scopes},!0),v(a,[{bot:e.bot,tokens:e.bot_token?[e.bot_token]:[]},...f(a)],!0),v(T,e.bot.id,!0)}function Pe(e,t){v(V,``),v(j,e,!0),v(N,t,!0)}async function Fe(e,t){v(j,null),v(S,{bot:e,connect:`token`,token:t},!0),await $(e.id)}function Ie(e,t,n){v(j,null),v(S,{bot:e,connect:`code`,tokenName:t,scopes:n},!0)}async function Le(e,t){if(confirm(`Revoke "${t.name||`token`}"? Anything using it will fail immediately.`)){v(F,{botID:e.id,kind:`revoke`},!0),v(V,``);try{await te(t.id),await $(e.id)}catch(e){v(V,K(e),!0)}finally{v(F,null)}}}async function Re(e){let t=`Remove ${He(e)} from this workspace? Its tokens here will be revoked.`;if(confirm(t)){v(F,{botID:e.id,kind:`remove`},!0),v(V,``);try{await L(f(Y),e.id),v(a,f(a).filter(t=>t.bot.id!==e.id),!0),f(T)===e.id&&v(T,null)}catch(e){v(V,K(e),!0)}finally{v(F,null)}}}async function ze(e){let t=`Delete ${He(e)} everywhere? This permanently retires this bot identity and revokes all of its tokens and integrations in every workspace${e.handle?`, and releases ${Ve(e.handle)} for reuse`:``}. Existing messages keep the old identity marked as deleted.`;if(confirm(t)){v(F,{botID:e.id,kind:`delete`},!0),v(V,``);try{await J(e.id),v(a,f(a).filter(t=>t.bot.id!==e.id),!0),f(T)===e.id&&v(T,null),f(S)?.bot.id===e.id&&v(S,null)}catch(e){v(V,e instanceof P&&e.status===403?e.message:K(e),!0)}finally{v(F,null)}}}function Be(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:t.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}function Ve(e){return e.startsWith(`@`)?e:`@${e}`}function He(e){return e.handle?Ve(e.handle):e.display_name||`this bot`}function Ue(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length>=2?(t[0][0]+t[1][0]).toUpperCase():e.slice(0,2).toUpperCase()}let We=b(()=>`${f(a).length} ${f(a).length===1?`bot`:`bots`}`);var Ge=Me(),Ke=h(A(Ge),2),qe=A(Ke),Je=A(qe,!0);M(qe);var Ye=h(qe,2),Xe=A(Ye),Ze=A(Xe,!0);M(Xe);var Qe=h(Xe,2),$e=e=>{var t=de();l(()=>t.disabled=f(y)),r(`click`,t,()=>{v(y,!0),v(S,null)}),c(e,t)};w(Qe,e=>{f(q)&&e($e)}),M(Ye),M(Ke);var et=h(Ke,2),tt=e=>{var t=fe(),n=A(t,!0);M(t),l(()=>o(n,f(d))),c(e,t)};w(et,e=>{f(d)&&e(tt)});var nt=h(et,2),rt=e=>{var t=i(),r=C(t);n(r,()=>f(S),e=>{X(e,{get connect(){return f(S).connect},get token(){return f(S).token},get workspaceID(){return f(Y)},get tokenName(){return f(S).tokenName},get scopes(){return f(S).scopes},get botHandle(){return f(S).bot.handle},get botUserID(){return f(S).bot.id},get workspace(){return f(Z)},onDismiss:()=>{let e=f(S)?.bot.id,t=f(S)?.connect===`code`;v(S,null),t&&e&&$(e)}})}),c(e,t)};w(nt,e=>{f(S)&&f(q)&&e(rt)});var it=h(nt,2),at=e=>{var t=pe();se(A(t),{get workspaceID(){return f(Y)},get currentUserID(){return f(q).id},get canCreateService(){return f(ne)},onCreated:Ne,onCancel:()=>v(y,!1)}),M(t),c(e,t)};w(it,e=>{f(y)&&f(q)&&e(at)});var ot=h(it,2),st=e=>{var t=fe(),n=A(t,!0);M(t),l(()=>o(n,f(V))),c(e,t)};w(ot,e=>{f(V)&&e(st)});var ct=h(ot,2),lt=e=>{var t=me();c(e,t)},ut=e=>{var t=je();s(t,21,()=>f(a),e=>e.bot.id,(e,t)=>{let n=b(()=>f(t).bot),i=b(()=>G(f(t).tokens)),a=b(()=>f(T)===f(n).id),d=b(()=>f(F)?.botID===f(n).id),p=b(()=>f(j)===f(n).id);var m=Ae();let y;var x=A(m),S=A(x),E=A(S),D=e=>{var t=he();l(()=>O(t,`src`,f(n).avatar_url)),c(e,t)},k=e=>{var t=u();l(e=>o(t,e),[()=>Ue(f(n).display_name||f(n).handle||`?`)]),c(e,t)};w(E,e=>{f(n).avatar_url?e(D):e(k,-1)}),M(S);var P=h(S,2),I=A(P),L=A(I,!0);M(I);var V=h(I,2),H=A(V),W=e=>{var t=ge(),r=C(t),i=A(r,!0);M(r),_(2),l(e=>o(i,e),[()=>Ve(f(n).handle)]),c(e,t)};w(H,e=>{f(n).handle&&e(W)});var K=h(H,2),q=A(K);M(K);var J=h(K,4),te=A(J);M(J),M(V),M(P);var X=h(P,2),Z=A(X,!0);M(X);var Q=h(X,2),ne=A(Q),se=A(ne);M(ne),M(Q),M(x);var le=h(x,2),$=e=>{var t=ke(),a=A(t),m=h(A(a),2),g=A(m),_=e=>{var t=_e(),i=C(t),a=h(i,2);l(()=>{i.disabled=f(d)||f(p),a.disabled=f(d)||f(p)}),r(`click`,i,()=>Pe(f(n).id,`code`)),r(`click`,a,()=>Pe(f(n).id,`token`)),c(e,t)},y=b(()=>ie(f(n)));w(g,e=>{f(y)&&e(_)});var x=h(g,2),S=e=>{var t=ve(),i=A(t,!0);M(t),l(()=>{t.disabled=f(d),o(i,f(d)&&f(F)?.kind===`remove`?`Removing…`:`Remove from workspace`)}),r(`click`,t,()=>Re(f(n))),c(e,t)},T=b(()=>ae());w(x,e=>{f(T)&&e(S)});var E=h(x,2),D=e=>{var t=ve(),i=A(t,!0);M(t),l(()=>{t.disabled=f(d),o(i,f(d)&&f(F)?.kind===`delete`?`Deleting…`:`Delete bot`)}),r(`click`,t,()=>ze(f(n))),c(e,t)},k=b(()=>oe(f(n)));w(E,e=>{f(k)&&e(D)}),M(m),M(a);var P=h(a,2),I=e=>{var t=ye();ue(A(t),{get workspaceID(){return f(Y)},get botUserID(){return f(n).id},get mode(){return f(N)},onCreated:e=>Fe(f(n),e),onCode:(e,t)=>Ie(f(n),e,t),onCancel:()=>v(j,null)}),M(t),c(e,t)};w(P,e=>{f(p)&&e(I)});var L=h(P,2),B=e=>{var t=be();c(e,t)},V=e=>{var t=Oe();s(t,21,()=>f(i),e=>e.id,(e,t)=>{var i=De(),a=A(i),p=A(a),m=A(p,!0);M(p);var g=h(p,2),_=A(g),v=h(_),y=e=>{var n=u();l(e=>o(n,`· last used ${e??``}`),[()=>Be(f(t).last_used_at)]),c(e,n)};w(v,e=>{f(t).last_used_at&&e(y)}),M(g);var x=h(g,2),S=e=>{let n=b(()=>R(f(t).scopes)),i=b(()=>z(f(t).scopes));var a=Te(),u=C(a),d=A(u),p=e=>{var t=xe(),r=A(t,!0);M(t),l(()=>o(r,f(n).bundleLabel)),c(e,t)};w(d,e=>{f(n).bundleLabel&&e(p)});var m=h(d,2);s(m,16,()=>f(n).extras,e=>e,(e,t)=>{var n=Se(),r=A(n,!0);M(n),l(()=>o(r,t)),c(e,n)});var g=h(m,2),_=e=>{var n=Ce(),a=A(n,!0);M(n),l(()=>{O(n,`aria-expanded`,f(U)===f(t).id),O(n,`aria-controls`,`ws-bots-scopes-${f(t).id??``}`),o(a,f(U)===f(t).id?`Hide scopes`:`All ${f(i).length} scopes`)}),r(`click`,n,()=>ee(f(t).id)),c(e,n)};w(g,e=>{f(n).bundle&&e(_)}),M(u);var v=h(u,2),y=e=>{var n=we();s(n,20,()=>f(i),e=>e,(e,t)=>{var n=Se(),r=A(n,!0);M(n),l(()=>o(r,t)),c(e,n)}),M(n),l(()=>O(n,`id`,`ws-bots-scopes-${f(t).id??``}`)),c(e,n)};w(v,e=>{f(n).bundle&&f(U)===f(t).id&&e(y)}),c(e,a)};w(x,e=>{f(t).scopes?.length&&e(S)}),M(a);var T=h(a,2),E=e=>{var i=Ee();l(()=>i.disabled=f(d)),r(`click`,i,()=>Le(f(n),f(t))),c(e,i)},D=b(()=>ie(f(n)));w(T,e=>{f(D)&&e(E)}),M(i),l(e=>{o(m,f(t).name||`token`),o(_,`Created ${e??``} `)},[()=>Be(f(t).created_at)]),c(e,i)}),M(t),c(e,t)};w(L,e=>{f(i).length===0?e(B):e(V,-1)}),M(t),c(e,t)};w(le,e=>{f(a)&&e($)}),M(m),l((e,t,r,s)=>{y=g(m,1,`ws-bots__row`,null,y,{"is-expanded":f(a)}),O(x,`aria-expanded`,f(a)),g(S,1,`ws-members__avatar ws-members__avatar--${e??``}`),o(L,f(n).display_name||f(n).handle),o(q,`Created ${t??``}`),o(te,`${f(i).length??``} active ${f(i).length===1?`token`:`tokens`}`),g(X,1,`ws-bots__owner-pill ws-bots__owner-pill--${r??``}`),o(Z,s),O(se,`points`,f(a)?`18 15 12 9 6 15`:`6 9 12 15 18 9`)},[()=>B(f(n))?`human`:`bot`,()=>Be(f(n).created_at),()=>B(f(n))?`service`:`user`,()=>re(f(n))]),r(`click`,x,()=>ce(f(n).id)),c(e,m)}),M(t),c(e,t)};w(ct,e=>{f(a).length===0&&!f(d)?e(lt):e(ut,-1)}),M(Ge),l(()=>{o(Je,f(We)),Xe.disabled=f(m),o(Ze,f(m)?`Refreshing…`:`Refresh`)}),r(`click`,Xe,le),c(e,Ge),x()}N([`click`]);export{Ne as component,Z as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/8.B3XUUK_I.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/8.B26ibrzQ.js similarity index 77% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/8.B3XUUK_I.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/8.B26ibrzQ.js index fd4d92ac..497c5bfa 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/8.B3XUUK_I.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/8.B26ibrzQ.js @@ -1,24 +1,24 @@ -import{t as e}from"../chunks/DK3Fl9T5.js";import{$ as t,B as n,F as r,I as i,L as a,N as o,O as s,P as c,Q as l,R as u,St as d,V as f,W as p,_t as m,at as h,b as g,bt as _,c as v,ct as y,f as b,ft as x,g as S,gt as C,h as w,it as T,j as E,l as D,lt as O,m as k,n as A,ot as j,p as M,q as N,rt as P,u as F,xt as I,z as L}from"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import{n as R,t as ee}from"../chunks/BEqsQr3A.js";import{d as z}from"../chunks/DiELhALK.js";import{t as B}from"../chunks/OQjxVT6U.js";import{t as te}from"../chunks/DlGnnCJo.js";import{t as V}from"../chunks/YGHvv9X0.js";import{a as H,f as ne,g as U,h as re,i as W,l as G,m as ie,n as ae,o as K,r as oe,s as q,t as se,y as ce}from"../chunks/DFObNPU2.js";import{t as le}from"../chunks/Da4vmQqB.js";import{t as ue}from"../chunks/CaEGKmxL.js";async function de(e){return(await R(`/api/workspaces/${e}/app-installations`)).app_installations??[]}async function fe(e,t){return(await R(`/api/workspaces/${e}/app-installations`,{method:`POST`,body:JSON.stringify(t)})).app_installation}async function pe(e,t={}){return R(`/api/app-installations/${e}/revoke`,{method:`POST`,body:JSON.stringify(t)})}async function J(e){return(await R(`/api/workspaces/${e}/slash-commands`)).slash_commands??[]}async function Y(e,t){return(await R(`/api/workspaces/${e}/slash-commands`,{method:`POST`,body:JSON.stringify(t)})).slash_command}async function me(e){return(await R(`/api/slash-commands/${e}/revoke`,{method:`POST`,body:JSON.stringify({})})).slash_command}async function he(e){return(await R(`/api/slash-commands/${e}/rotate-secret`,{method:`POST`,body:JSON.stringify({})})).slash_command}async function ge(e){return(await R(`/api/workspaces/${e}/event-subscriptions`)).event_subscriptions??[]}async function _e(e,t){return(await R(`/api/workspaces/${e}/event-subscriptions`,{method:`POST`,body:JSON.stringify(t)})).event_subscription}async function ve(e){return(await R(`/api/event-subscriptions/${e}/revoke`,{method:`POST`,body:JSON.stringify({})})).event_subscription}async function ye(e){return(await R(`/api/event-subscriptions/${e}/rotate-secret`,{method:`POST`,body:JSON.stringify({})})).event_subscription}async function X(e,t={}){let n=new URLSearchParams;t.limit&&n.set(`limit`,String(t.limit)),t.before&&n.set(`before`,t.before);let r=n.toString(),i=await R(`/api/event-subscriptions/${e}/deliveries${r?`?${r}`:``}`);return{deliveries:i.deliveries??[],next_cursor:i.next_cursor??null}}async function be(e){return(await R(`/api/workspaces/${e}/connected-accounts`)).connected_accounts??[]}async function xe(e){return(await R(`/api/connected-accounts/${e}/revoke`,{method:`POST`,body:JSON.stringify({})})).connected_account}async function Se(){return(await R(`/api/event-types`)).event_types??[]}function Z(e){if(e instanceof ee){if(e.status===401)return`Sign in to manage integrations.`;if(e.status===403)return`You don't have permission to manage integrations in this workspace.`;if(e.status===404)return`That integration is no longer available.`;if(e.status===400)return e.message||`That request is invalid.`}return e instanceof Error?e.message:`Something went wrong`}function Q(e){return!!e.revoked_at}function Ce(e){return e.filter(e=>!Q(e))}function we(e,t){return e.filter(e=>e.app_installation_id===t)}function Te(e){return e.filter(e=>!e.app_installation_id)}var Ee=e({load:()=>$,prerender:()=>!1,ssr:()=>!1});async function $({params:e,parent:t}){let{workspace:n}=await t(),r=n?.id??e.workspaceID,i=n?U(n):e.workspaceID,a=[],o=[],s=[],c=[],l=[],u=[],d=[],f=null,p=``,[m,h,g,_,v,y,b,x]=await Promise.allSettled([de(r),J(r),ge(r),be(r),re(r),R(`/api/workspaces/${r}/channels`),Se(),z()]);m.status===`fulfilled`&&(a=m.value),h.status===`fulfilled`&&(o=h.value),g.status===`fulfilled`&&(s=g.value),_.status===`fulfilled`&&(c=_.value),v.status===`fulfilled`&&(l=v.value),y.status===`fulfilled`&&(u=y.value.channels??[]),b.status===`fulfilled`&&(d=b.value),x.status===`fulfilled`&&(f=x.value.user);let S=[m,h,g,_,v,y,b,x].filter(e=>e.status===`rejected`).map(e=>Z(e.reason));return S.length>0&&(p=`Some integration data could not be loaded. ${[...new Set(S)].join(` `)}`),{workspaceID:r,workspaceIdentifier:i,workspace:n,installations:a,commands:o,subscriptions:s,connectedAccounts:c,bots:l,channels:u,eventTypes:d,me:f,loaded:{installations:m.status===`fulfilled`,commands:h.status===`fulfilled`,subscriptions:g.status===`fulfilled`,connectedAccounts:_.status===`fulfilled`,bots:v.status===`fulfilled`,channels:y.status===`fulfilled`,eventTypes:b.status===`fulfilled`,me:x.status===`fulfilled`},loadError:p}}var De=`agent_activity:write`,Oe=[{slug:`openclaw`,name:`OpenClaw`,description:`Connect an OpenClaw agent as a bot user. OpenClaw runs outside ClickClack and connects in over realtime using the bot token minted here.`,icon:[`M12 8V4H8`,`M5 4h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Z`,`M9 13v2`,`M15 13v2`],suggestedScopeBundle:`bot:write`,suggestedBotName:`OpenClaw`,suggestedBotHandle:`openclaw`,configFields:[{id:`default_channel`,label:`Default channel`,hint:`Where the agent sends messages when no target is specified.`},{id:`allow_from`,label:`Who can talk to this agent`,hint:`Everyone in the workspace, or only specific members.`},{id:`agent_activity`,label:`Agent activity`,hint:`Stream the agent's thinking and tool progress into the conversation as it works. Grants the agent_activity:write token scope.`}],buildConfigSnippet:e=>H({workspace:e.workspace,botHandle:e.botHandle,botUserID:e.botUserID,mode:e.mode,defaultTo:e.defaultTo,allowFrom:e.allowFrom,agentActivity:e.agentActivity}),buildShellSnippet:e=>K({botHandle:e.botHandle,token:e.token,mode:e.mode,workspace:e.workspace}),buildCodeSnippet:e=>W({code:e.setupCode??``,botHandle:e.botHandle,mode:e.mode,claimURL:e.setupClaimURL,apiBaseURL:e.apiBaseURL})},{slug:`custom`,name:`Custom app`,description:`Any external app or script that talks to the ClickClack API with a bot token. No platform-specific setup — you get the bot, the token, and the API.`,icon:[`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z`],suggestedScopeBundle:`bot:write`,suggestedBotName:``,suggestedBotHandle:``,configFields:[],buildConfigSnippet:null,buildShellSnippet:null,buildCodeSnippet:null}];function ke(e){return Oe.find(t=>t.slug===e)}function Ae(e){return ke(e)??{slug:e,name:e,description:``,icon:[`M9 2v6`,`M15 2v6`,`M12 17v5`,`M5 8h14l-1 7a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4L5 8Z`],suggestedScopeBundle:`bot:write`,suggestedBotName:``,suggestedBotHandle:``,configFields:[],buildConfigSnippet:null,buildShellSnippet:null,buildCodeSnippet:null}}var je=a(``),Me=i(``),Ne=i(`
                        `,1),Pe=i(`
                        Ownership
                        `,1),Fe=i(``),Ie=i(``),Le=i(`
                        How will you connect it?
                        `),Re=i(``),ze=i(``),Be=i(`
                        Bot identity
                        Token scope
                        `),Ve=i(` `),He=i(`
                        `),Ue=i(`
                      • `),We=i(`
                          `),Ge=i(`
                          Allowed members
                          `),Ke=i(`
                          Who can talk to this agent
                          `),qe=i(`

                          `);function Je(e,i){m(i,!0);let a=[],d=[],k=[],L=[],R=[],z=O(`app`),B=O(null),V=O(`create`),H=O(`code`),U=O(``),re=O(``),W=O(!1),ie=O(`service`),K=O(`default`),de=O(`bot:write`),pe=O(``),J=O(``),Y=O(`everyone`),me=O(j([])),he=O(``),ge=O(j([])),_e=null,ve=0,ye=O(!1),X=O(!1),be=O(``),xe=O(null),Se=O(null),Q=O(null),Ce=O(!1),we=O(j(crypto.randomUUID())),Te=O(j(crypto.randomUUID())),Ee=x(()=>!!p(xe)&&(p(H)===`code`||!!p(Se))),$=x(()=>p(Ce)||p(Ee)),ke=x(()=>i.bots.filter(e=>!i.boundBotIDs.has(e.bot.id)&&(ne(e.bot)||e.bot.owner_user_id===i.currentUserID))),Ae=x(()=>i.channels.filter(e=>!e.archived_at)),Je=x(()=>p(Ae).map(e=>e.name).filter(Boolean));t(()=>{p(W)||y(re,ce(p(U)),!0)}),t(()=>{!p($)&&!p(Je).includes(p(J))&&y(J,p(Je)[0]??``,!0)});function Ye(e){_e&&clearTimeout(_e),_e=null,ve+=1,y(B,e,!0),y(V,`create`),y(H,e.buildCodeSnippet?`code`:`token`,!0),y(U,``),y(re,``),y(W,!1),y(ie,`service`),y(K,`default`),y(de,e.suggestedScopeBundle,!0),y(pe,``),y(J,N(()=>p(Je)[0]??``),!0),y(Y,`everyone`),y(me,[],!0),y(he,``),y(ge,[],!0),y(ye,!1),y(xe,null),y(Se,null),y(Ce,!1),y(we,crypto.randomUUID(),!0),y(Te,crypto.randomUUID(),!0),y(Q,null),y(be,``),y(z,`bot`)}function Xe(e){y(W,!0),y(re,e.target.value,!0)}let Ze=x(()=>(p(B)?.configFields.length??0)>0),Qe=x(()=>p(V)===`create`?p(U).trim().length>0&&p(re).trim().length>0&&p(K).trim().length>0:p(pe).length>0&&p(K).trim().length>0);function $e(){p(Qe)&&(y(be,``),p(Ze)?y(z,`config`):ct())}function et(e){y(he,e.target.value,!0),_e&&clearTimeout(_e);let t=++ve,n=p(he).trim();if(!n){y(ge,[],!0);return}_e=setTimeout(async()=>{try{let e=await ue({workspaceID:i.workspaceID,query:n,limit:8});if(t!==ve)return;let r=new Set(p(me).map(e=>e.id));y(ge,e.members.filter(e=>e.user.kind===`human`&&!r.has(e.user.id)),!0)}catch{if(t!==ve)return;y(ge,[],!0)}},250)}function tt(e){y(me,[...p(me),{id:e.user.id,label:e.user.display_name||e.user.handle||e.user.id}],!0),y(he,``),y(ge,[],!0)}function nt(e){y(me,p(me).filter(t=>t.id!==e),!0)}let rt=x(()=>p(B)?.configFields.some(e=>e.id===`default_channel`)??!1),it=x(()=>(!p(rt)||p(J).length>0)&&(p(Y)===`everyone`||p(me).length>0)),at=x(()=>p(Y)===`everyone`?[`*`]:p(me).map(e=>e.id)),ot=x(()=>`channel:${p(J)}`),st=x(()=>{let e=[p(de)];return p(ye)&&e.push(De),e});async function ct(){if(!(!p(B)||p(X)||p(Ze)&&!p(it))){y(X,!0),y(be,``);try{let e=p(xe),t=p(Se),n=p(H)===`token`;if(!e||n&&!t){y(Ce,!0);let r=[p(de)];if(p(ye)&&r.push(De),p(V)===`create`){let a=await q(i.workspaceID,{display_name:p(U).trim(),handle:p(re).trim(),owner_user_id:p(ie)===`user`?i.currentUserID:void 0,...n?{token_name:p(K).trim()||`default`,scopes:r,setup_nonce:p(we)}:{initial_token:!1,setup_nonce:p(we)}});e=a.bot,t=a.bot_token??null}else{let a=p(ke).find(e=>e.bot.id===p(pe));if(!a)throw Error(`Pick a bot to bind this app to.`);e=a.bot,n&&(t=await G(i.workspaceID,a.bot.id,{name:p(K).trim()||`default`,scopes:r,setup_nonce:p(we)}))}y(xe,e,!0),y(Se,t,!0)}let r={};p(Ze)&&(r.default_to=p(ot),r.allow_from=p(at),r.agent_activity=p(ye));let a=await fe(i.workspaceID,{app_slug:p(B).slug,display_name:e.display_name||p(B).name,bot_user_id:e.id,config:r,setup_nonce:p(Te)});y(Q,{installation:a,bot:e,token:t},!0),y(z,`reveal`),i.onInstalled(a,e,t??void 0)}catch(e){!p(xe)&&e instanceof ee&&e.status>=400&&e.status<500&&(y(Ce,!1),y(we,crypto.randomUUID(),!0)),y(be,p(xe)?`${Z(e)} The bot is ready — retrying reuses it and the same installation request.`:p(Ce)&&p(H)===`token`?`${oe(e)} Retrying reuses the same bot and token row.`:oe(e),!0)}finally{y(X,!1)}}}function lt(){y(be,``),p(z)===`config`?y(z,`bot`):p(z)===`bot`&&y(z,`app`)}let ut=x(()=>p(z)===`app`?1:p(z)===`bot`?2:p(z)===`config`?3:4),dt=x(()=>p(Ze)||p(z)===`app`?4:3);A(()=>{_e&&clearTimeout(_e),ve+=1});var ft=qe(),pt=P(ft),mt=P(pt),ht=P(mt),gt=P(ht),_t=e=>{var t=u();l(()=>o(t,`Install ${p(B).name??``}`)),c(e,t)},vt=e=>{var t=u(`Add app`);c(e,t)};E(gt,e=>{p(B)&&p(z)!==`app`?e(_t):e(vt,-1)}),I(ht);var yt=h(ht,2),bt=P(yt),xt=e=>{var t=u(`Pick what you're connecting. The app gets a bot identity in this workspace and a token it + uses to connect in.`);c(e,t)},St=e=>{var t=u(`The bot is the app's identity here — its name, avatar, and the token it authenticates + with.`);c(e,t)},Ct=e=>{var t=u(`How the agent behaves in this workspace. This shapes the config you'll paste into the + platform.`);c(e,t)},wt=e=>{var t=r(),n=T(t),i=e=>{var t=u(`The app is installed. Copy the token and setup below — this is the only time the raw + token is visible.`);c(e,t)},a=e=>{var t=u(`The app is installed. Run the setup command below to connect it — the one-time code + mints the bot's token.`);c(e,t)};E(n,e=>{p(Q)?.token?e(i):e(a,-1)}),c(e,t)};E(bt,e=>{p(z)===`app`?e(xt):p(z)===`bot`?e(St,1):p(z)===`config`?e(Ct,2):e(wt,-1)}),I(yt),I(mt);var Tt=h(mt,2),Et=P(Tt);I(Tt),I(pt);var Dt=h(pt,2),Ot=e=>{var t=Ne(),r=T(t);s(r,21,()=>Oe,e=>e.slug,(e,t)=>{var r=Me(),i=P(r),a=P(i);s(a,20,()=>p(t).icon,e=>e,(e,t)=>{var n=je();l(()=>M(n,`d`,t)),c(e,n)}),I(a),I(i);var u=h(i,2),d=P(u,!0);I(u);var f=h(u,2),m=P(f,!0);I(f),I(r),l(()=>{o(d,p(t).name),o(m,p(t).description)}),n(`click`,r,()=>Ye(p(t))),c(e,r)}),I(r);var a=h(r,2),u=P(a);I(a),n(`click`,u,function(...e){i.onClose?.apply(this,e)}),c(e,t)},kt=e=>{var t=Be(),r=P(t),i=h(P(r),2),u=P(i);let m;var v=P(u);b(v),v.value=v.__value=`create`,_(4),I(u);var x=h(u,2);let C;var O=P(x);b(O),O.value=O.__value=`existing`;var A=h(O,4),j=P(A,!0);I(A),I(x),I(i),I(r);var N=h(r,2),R=e=>{var t=Pe(),r=T(t),i=P(r),a=h(P(i),2);b(a),I(i);var o=h(i,2),s=h(P(o),2),u=h(P(s),2);b(u),I(s),I(o),I(r);var f=h(r,2),m=h(P(f),2),v=P(m);let x;var S=P(v);b(S),S.value=S.__value=`service`,_(4),I(v);var C=h(v,2);let E;var O=P(C);b(O),O.value=O.__value=`user`,_(4),I(C),I(m),I(f),l(()=>{M(a,`placeholder`,p(B)?.suggestedBotName||`My app`),a.disabled=p($),w(u,p(re)),M(u,`placeholder`,p(B)?.suggestedBotHandle||`my-app`),u.disabled=p($),f.disabled=p($),x=g(v,1,`ws-bots__choice`,null,x,{"is-active":p(ie)===`service`}),E=g(C,1,`ws-bots__choice`,null,E,{"is-active":p(ie)===`user`})}),F(a,()=>p(U),e=>y(U,e)),n(`input`,u,Xe),D(d,[],S,()=>p(ie),e=>y(ie,e)),D(d,[],O,()=>p(ie),e=>y(ie,e)),c(e,t)},ee=e=>{var t=Ie(),n=h(P(t),2),r=P(n);r.value=r.__value=``;var i=h(r);s(i,17,()=>p(ke),e=>e.bot.id,(e,t)=>{var n=Fe(),r=P(n);I(n);var i={};l((e,a)=>{o(r,`${(p(t).bot.display_name||p(t).bot.handle)??``} (@${p(t).bot.handle??``}) ${e??``} · ${a??``} active tokens`),i!==(i=p(t).bot.id)&&(n.value=(n.__value=p(t).bot.id)??``)},[()=>ne(p(t).bot)?` · service`:` · user-owned`,()=>ae(p(t).tokens).length]),c(e,n)}),I(n),I(t),l(()=>n.disabled=p($)),S(n,()=>p(pe),e=>y(pe,e)),c(e,t)};E(N,e=>{p(V)===`create`?e(R):e(ee,-1)});var z=h(N,2),te=e=>{var t=Le(),n=h(P(t),2),r=P(n);let i;var a=P(r);b(a),a.value=a.__value=`code`,_(4),I(r);var o=h(r,2);let s;var u=P(o);b(u),u.value=u.__value=`token`,_(4),I(o),I(n),I(t),l(()=>{t.disabled=p($),i=g(r,1,`ws-bots__choice`,null,i,{"is-active":p(H)===`code`}),s=g(o,1,`ws-bots__choice`,null,s,{"is-active":p(H)===`token`})}),D(k,[],a,()=>p(H),e=>y(H,e)),D(k,[],u,()=>p(H),e=>y(H,e)),c(e,t)};E(z,e=>{p(B)?.buildCodeSnippet&&e(te)});var W=h(z,2),G=h(P(W),2);s(G,21,()=>se,e=>e.id,(e,t)=>{var n=Re();let r;var i=P(n);b(i);var a,s=h(i,2),u=P(s,!0);I(s);var d=h(s,2),f=P(d,!0);I(d),I(n),l(()=>{r=g(n,1,`ws-bots__choice`,null,r,{"is-active":p(de)===p(t).id}),a!==(a=p(t).id)&&(i.value=(i.__value=p(t).id)??``),o(u,p(t).label),o(f,p(t).hint)}),D(L,[],i,()=>(p(t).id,p(de)),e=>y(de,e)),c(e,n)}),I(G),I(W);var oe=h(W,2),q=h(P(oe),2);b(q),I(oe);var ce=h(oe,2),le=e=>{var t=ze(),n=P(t,!0);I(t),l(()=>o(n,p(be))),c(e,t)};E(ce,e=>{p(be)&&e(le)});var ue=h(ce,2),fe=P(ue),J=h(fe,2),Y=P(J,!0);I(J),I(ue),I(t),l(()=>{r.disabled=p($),m=g(u,1,`ws-bots__choice`,null,m,{"is-active":p(V)===`create`}),C=g(x,1,`ws-bots__choice`,null,C,{"is-active":p(V)===`existing`,"is-disabled":p(ke).length===0}),O.disabled=p(ke).length===0,o(j,p(ke).length===0?`No unbound bots in this workspace.`:`Bind a bot that isn't attached to another app. A new token is minted for it.`),W.disabled=p($),q.disabled=p($),fe.disabled=p(X)||p($),J.disabled=!p(Qe)||p(X),o(Y,p(Ze)?`Continue`:p(X)?`Installing…`:`Install`)}),f(`submit`,t,e=>{e.preventDefault(),$e()}),D(a,[],v,()=>p(V),e=>y(V,e)),D(a,[],O,()=>p(V),e=>y(V,e)),F(q,()=>p(K),e=>y(K,e)),n(`click`,fe,lt),c(e,t)},At=e=>{var t=Ke(),r=P(t),i=h(P(r),2);s(i,21,()=>p(Ae),e=>e.id,(e,t)=>{var n=Fe(),r=P(n);I(n);var i={};l(e=>{o(r,`#${e??``}`),i!==(i=p(t).name)&&(n.value=(n.__value=p(t).name)??``)},[()=>te(p(t))]),c(e,n)}),I(i);var a=h(i,2),u=P(a,!0);I(a),I(r);var d=h(r,2),m=h(P(d),2),x=P(m);let C;var T=P(x);b(T),T.value=T.__value=`everyone`,_(4),I(x);var O=h(x,2);let k;var A=P(O);b(A),A.value=A.__value=`specific`,_(4),I(O),I(m),I(d);var j=h(d,2),N=e=>{var t=Ge(),r=h(P(t),2),i=e=>{var t=He();s(t,21,()=>p(me),e=>e.id,(e,t)=>{var r=Ve(),i=P(r),a=h(i);I(r),l(()=>{o(i,`${p(t).label??``} `),M(a,`aria-label`,`Remove ${p(t).label}`),a.disabled=p($)}),n(`click`,a,()=>nt(p(t).id)),c(e,r)}),I(t),c(e,t)};E(r,e=>{p(me).length>0&&e(i)});var a=h(r,2);b(a);var u=h(a,2),d=e=>{var t=We();s(t,21,()=>p(ge),e=>e.user.id,(e,t)=>{var r=Ue(),i=P(r),a=P(i),s=h(a),u=P(s);I(s),I(i),I(r),l(()=>{i.disabled=p($),o(a,`${(p(t).user.display_name||p(t).user.handle)??``} `),o(u,`@${p(t).user.handle??``}`)}),n(`click`,i,()=>tt(p(t))),c(e,r)}),I(t),c(e,t)};E(u,e=>{p(ge).length>0&&e(d)}),I(t),l(()=>{w(a,p(he)),a.disabled=p($)}),n(`input`,a,et),c(e,t)};E(j,e=>{p(Y)===`specific`&&e(N)});var F=h(j,2),L=P(F);b(L),_(2),I(F);var ee=h(F,2),z=e=>{var t=ze(),n=P(t,!0);I(t),l(()=>o(n,p(be))),c(e,t)};E(ee,e=>{p(be)&&e(z)});var B=h(ee,2),V=P(B),H=h(V,2),ne=P(H,!0);I(H),I(B),I(t),l(()=>{i.disabled=p($)||p(Je).length===0,o(u,p(Je).length===0?`Create or restore a channel before installing this app.`:`Where the agent sends messages when no target is specified.`),d.disabled=p($),C=g(x,1,`ws-bots__choice`,null,C,{"is-active":p(Y)===`everyone`}),k=g(O,1,`ws-bots__choice`,null,k,{"is-active":p(Y)===`specific`}),L.disabled=p($),V.disabled=p(X)||p($),H.disabled=!p(it)||p(X),o(ne,p(X)?`Installing…`:p(Ce)?`Retry install`:`Install`)}),f(`submit`,t,e=>{e.preventDefault(),ct()}),S(i,()=>p(J),e=>y(J,e)),D(R,[],T,()=>p(Y),e=>y(Y,e)),D(R,[],A,()=>p(Y),e=>y(Y,e)),v(L,()=>p(ye),e=>y(ye,e)),n(`click`,V,lt),c(e,t)},jt=e=>{{let t=x(()=>p(Q).token?`token`:`code`),n=x(()=>p(K).trim()||`default`),r=x(()=>p(Ze)?p(ot):void 0),a=x(()=>p(Ze)?p(at):void 0),o=x(()=>p(Ze)?p(ye):void 0);le(e,{get connect(){return p(t)},get token(){return p(Q).token},get workspaceID(){return i.workspaceID},get tokenName(){return p(n)},get scopes(){return p(st)},get botHandle(){return p(Q).bot.handle},get botUserID(){return p(Q).bot.id},get workspace(){return i.workspaceIdentifier},get defaultTo(){return p(r)},get allowFrom(){return p(a)},get agentActivity(){return p(o)},get configSnippetBuilder(){return p(B).buildConfigSnippet},get shellSnippetBuilder(){return p(B).buildShellSnippet},get codeSnippetBuilder(){return p(B).buildCodeSnippet},onDismiss:()=>{p(Q)?.token||i.onBotTokensChanged(p(Q).bot.id),i.onClose()}})}};E(Dt,e=>{p(z)===`app`?e(Ot):p(z)===`bot`?e(kt,1):p(z)===`config`&&p(B)?e(At,2):p(z)===`reveal`&&p(Q)&&p(B)&&e(jt,3)}),I(ft),l(()=>o(Et,`Step ${p(ut)??``} of ${p(dt)??``}`)),c(e,ft),C()}L([`click`,`input`]);var Ye=i(``),Xe=i(`
                          `),Ze=i(``),Qe=i(`

                          No slash commands.

                          `),$e=i(`
                          Signing secret — visible once
                          `),et=i(`
                          `),tt=i(`
                        • `),nt=i(`
                            `),rt=i(`
                            Slash commands

                            /command entries in the composer. Each one calls an HTTPS endpoint signed with - its own secret; the reply posts as the bot.

                            `);function it(e,t){m(t,!0);let r=O(!1),i=O(``),a=O(``),d=O(``),g=O(!1),v=O(``),S=O(j(new Set)),T=O(j({})),D=O(``),k=x(()=>t.canManage&&!!t.installationID&&!!t.botUserID),A=x(()=>!p(g)&&p(i).trim().length>0&&p(d).trim().startsWith(`https://`));function N(){return p(i).trim().replace(/^\/+/,``)}function L(e){return`/${e.replace(/^\/+/,``)}`}function R(e,t){let n=new Set(p(S));t?n.add(e):n.delete(e),y(S,n,!0)}async function ee(e){if(e.preventDefault(),!(!p(A)||!t.installationID||!t.botUserID)){y(g,!0),y(v,``);try{let e=await Y(t.workspaceID,{app_installation_id:t.installationID,command:N(),description:p(a).trim(),callback_url:p(d).trim(),bot_user_id:t.botUserID});e.signing_secret&&y(T,{...p(T),[e.id]:e.signing_secret},!0),y(i,``),y(a,``),y(d,``),y(r,!1),t.onChanged(e)}catch(e){y(v,Z(e),!0)}finally{y(g,!1)}}}async function z(e){if(!p(S).has(e.id)&&confirm(`Revoke ${L(e.command)}? It disappears from the composer and its callback stops firing immediately.`)){R(e.id,!0),y(v,``);try{let n=await me(e.id);t.onChanged(n)}catch(e){y(v,Z(e),!0)}finally{R(e.id,!1)}}}async function B(e){if(!p(S).has(e.id)&&confirm(`Rotate the signing secret for ${L(e.command)}? The old secret stops verifying immediately — update the receiver right away.`)){R(e.id,!0),y(v,``);try{let n=await he(e.id);n.signing_secret&&y(T,{...p(T),[e.id]:n.signing_secret},!0),t.onChanged(n)}catch(e){y(v,Z(e),!0)}finally{R(e.id,!1)}}}async function te(e){try{await navigator.clipboard.writeText(p(T)[e]??``),y(D,e,!0),setTimeout(()=>{p(D)===e&&y(D,``)},1800)}catch{}}function V(e){let{[e]:t,...n}=p(T);y(T,n,!0)}function H(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:t.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}var ne=rt(),U=P(ne),re=h(P(U),2),W=e=>{var t=Ye(),i=P(t,!0);I(t),l(()=>o(i,p(r)?`Cancel`:`Add command`)),n(`click`,t,()=>{y(r,!p(r)),y(v,``)}),c(e,t)};E(re,e=>{p(k)&&e(W)}),I(U);var G=h(U,2),ie=e=>{var t=Xe(),n=P(t),r=P(n),s=h(P(r),2),u=h(P(s),2);b(u),I(s),I(r);var m=h(r,2),v=h(P(m),2);b(v),I(m),I(n);var x=h(n,2),S=h(P(x),2);b(S),_(2),I(x);var C=h(x,2),w=P(C),T=P(w,!0);I(w),I(C),I(t),l(()=>{w.disabled=!p(A),o(T,p(g)?`Creating…`:`Create command`)}),f(`submit`,t,ee),F(u,()=>p(i),e=>y(i,e)),F(v,()=>p(a),e=>y(a,e)),F(S,()=>p(d),e=>y(d,e)),c(e,t)};E(G,e=>{p(r)&&p(k)&&e(ie)});var ae=h(G,2),K=e=>{var t=Ze(),n=P(t,!0);I(t),l(()=>o(n,p(v))),c(e,t)};E(ae,e=>{p(v)&&e(K)});var oe=h(ae,2),q=e=>{c(e,Qe())},se=e=>{var r=nt();s(r,21,()=>t.commands,e=>e.id,(e,r)=>{var i=tt(),a=P(i),s=P(a),d=P(s),f=P(d,!0);I(d),I(s);var m=h(s,2),g=P(m),_=e=>{var t=u();l(()=>o(t,`${p(r).description??``} ·`)),c(e,t)};E(g,e=>{p(r).description&&e(_)});var v=h(g,2),y=P(v,!0);I(v);var x=h(v);I(m);var C=h(m,2),O=e=>{var t=$e(),i=h(P(t),2),a=P(i);b(a);var s=h(a,2),u=P(s,!0);I(s);var d=h(s,2);I(i),I(t),l(()=>{w(a,p(T)[p(r).id]),o(u,p(D)===p(r).id?`Copied`:`Copy`)}),n(`click`,s,()=>te(p(r).id)),n(`click`,d,()=>V(p(r).id)),c(e,t)};E(C,e=>{p(T)[p(r).id]&&e(O)}),I(a);var k=h(a,2),A=e=>{var t=et(),i=P(t),a=h(i,2);I(t),l((e,t)=>{i.disabled=e,a.disabled=t},[()=>p(S).has(p(r).id),()=>p(S).has(p(r).id)]),n(`click`,i,()=>B(p(r))),n(`click`,a,()=>z(p(r))),c(e,t)};E(k,e=>{t.canManage&&e(A)}),I(i),l((e,t)=>{o(f,e),M(v,`title`,p(r).callback_url),o(y,p(r).callback_url),o(x,` · created ${t??``}`)},[()=>L(p(r).command),()=>H(p(r).created_at)]),c(e,i)}),I(r),c(e,r)};E(oe,e=>{t.commands.length===0?e(q):e(se,-1)}),I(ne),c(e,ne),C()}L([`click`]);var at=i(`

                            Loading deliveries…

                            `),ot=i(`
                            `),st=i(`

                            No deliveries yet. Attempts show up here as soon as an event fires.

                            `),ct=i(`
                            Error
                             
                            `),lt=i(`
                            Request
                             
                            `),ut=i(`
                             
                            `),dt=i(`
                            `),ft=i(`
                            `),pt=i(`
                            `),mt=i(`
                            `,1),ht=i(` `,1),gt=i(`
                            `);function _t(e,i){m(i,!0);let a=O(j([])),s=O(null),u=O(!0),f=O(!1),_=O(``),v=O(``);t(()=>{i.subscriptionID,y(a,[],!0),y(s,null),y(v,``),b()});async function b(){y(u,!0),y(_,``);try{let e=await X(i.subscriptionID,{limit:50});y(a,e.deliveries,!0),y(s,e.next_cursor,!0)}catch(e){y(_,Z(e),!0)}finally{y(u,!1)}}async function x(){if(!(!p(s)||p(f))){y(f,!0),y(_,``);try{let e=await X(i.subscriptionID,{limit:50,before:p(s)});y(a,[...p(a),...e.deliveries],!0),y(s,e.next_cursor,!0)}catch(e){y(_,Z(e),!0)}finally{y(f,!1)}}}function S(){p(a).length===0?b():x()}function w(e){return e.error?`Failed`:e.response_status>=200&&e.response_status<300?`Delivered`:e.response_status>0?`HTTP ${e.response_status}`:`Failed`}function D(e){return!e.error&&e.response_status>=200&&e.response_status<300?`ok`:`fail`}function k(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:t.toLocaleString(void 0,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function A(e){if(!e)return``;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}var N=gt(),F=P(N),L=e=>{c(e,at())},R=e=>{var t=ht(),i=T(t),u=e=>{var t=ot(),r=P(t),i=P(r,!0);I(r);var a=h(r,2);I(t),l(()=>o(i,p(_))),n(`click`,a,S),c(e,t)};E(i,e=>{p(_)&&e(u)});var m=h(i,2),b=e=>{var t=r(),n=T(t),i=e=>{c(e,st())};E(n,e=>{p(_)||e(i)}),c(e,t)},C=e=>{var t=mt(),r=T(t);V(P(r),{get data(){return p(a)},getKey:e=>e.id,itemSize:44,children:(e,t=d,r=d)=>{var i=ft(),a=P(i),s=P(a),u=P(s,!0);I(s);var f=h(s,2),m=P(f,!0);I(f);var _=h(f,2),b=P(_);I(_);var x=h(_,2),S=P(x,!0);I(x),I(a);var C=h(a,2),T=e=>{var n=dt(),r=P(n),i=e=>{var n=ct(),r=h(P(n),2),i=P(r),a=P(i,!0);I(i),I(r),I(n),l(()=>o(a,t().error)),c(e,n)};E(r,e=>{t().error&&e(i)});var a=h(r,2),s=e=>{var n=lt(),r=h(P(n),2),i=P(r),a=P(i,!0);I(i),I(r),I(n),l(e=>o(a,e),[()=>A(t().request_json)]),c(e,n)};E(a,e=>{t().request_json&&e(s)});var u=h(a,2),d=e=>{var n=ut(),r=P(n),i=P(r);I(r);var a=h(r,2),s=P(a),u=P(s,!0);I(s),I(a),I(n),l(()=>{o(i,`Response (${t().response_status??``})`),o(u,t().response_body)}),c(e,n)};E(u,e=>{t().response_body&&e(d)});var f=h(u,2),p=P(f);I(f),I(n),l((e,t)=>o(p,`Started ${e??``} · completed - ${t??``}`),[()=>k(t().created_at),()=>k(t().completed_at)]),c(e,n)};E(C,e=>{p(v)===t().id&&e(T)}),I(i),l((e,n,r)=>{M(a,`aria-expanded`,p(v)===t().id),g(s,1,`ws-intg__delivery-status ws-intg__delivery-status--${e??``}`),o(u,n),o(m,t().event_type),o(b,`attempt ${t().attempt??``}`),o(S,r)},[()=>D(t()),()=>w(t()),()=>k(t().created_at)]),n(`click`,a,()=>y(v,p(v)===t().id?``:t().id,!0)),c(e,i)},$$slots:{default:!0}}),I(r);var i=h(r,2),u=e=>{var t=pt(),r=P(t),i=P(r,!0);I(r),I(t),l(()=>{r.disabled=p(f),o(i,p(f)?`Loading…`:`Load older deliveries`)}),n(`click`,r,x),c(e,t)};E(i,e=>{p(s)&&!p(_)&&e(u)}),c(e,t)};E(m,e=>{p(a).length===0?e(b):e(C,-1)}),c(e,t)};E(F,e=>{p(u)&&p(a).length===0?e(L):e(R,-1)}),I(N),c(e,N),C()}L([`click`]);var vt=i(``),yt=i(``),bt=i(`
                            `),xt=i(`
                            Event types
                            `),St=i(``),Ct=i(`

                            No event subscriptions.

                            `),wt=i(` `),Tt=i(`
                            Signing secret — visible once
                            `),Et=i(` `,1),Dt=i(`
                          • `),Ot=i(`
                              `),kt=i(`
                              Event subscriptions

                              Workspace events pushed to an HTTPS endpoint, signed with a per-subscription secret. Every - attempt is recorded in the delivery log.

                              `);function At(e,t){m(t,!0);let r=O(!1),i=O(``),a=O(!1),u=O(j([])),d=O(!1),S=O(``),D=O(j(new Set)),A=O(j({})),N=O(``),L=O(``),R=x(()=>t.canManage&&!!t.installationID),ee=x(()=>!p(d)&&(p(a)||p(u).length>0)&&p(i).trim().startsWith(`https://`));function z(e){y(u,p(u).includes(e)?p(u).filter(t=>t!==e):[...p(u),e],!0)}function B(e,t){let n=new Set(p(D));t?n.add(e):n.delete(e),y(D,n,!0)}async function te(e){if(e.preventDefault(),!(!p(ee)||!t.installationID)){y(d,!0),y(S,``);try{let e=await _e(t.workspaceID,{app_installation_id:t.installationID,event_types:p(a)?[`*`]:p(u),callback_url:p(i).trim()});e.signing_secret&&y(A,{...p(A),[e.id]:e.signing_secret},!0),y(i,``),y(a,!1),y(u,[],!0),y(r,!1),t.onChanged(e)}catch(e){y(S,Z(e),!0)}finally{y(d,!1)}}}async function V(e){if(!p(D).has(e.id)&&confirm(`Revoke this event subscription? Deliveries to its callback stop immediately. The delivery history is kept.`)){B(e.id,!0),y(S,``);try{let n=await ve(e.id);t.onChanged(n)}catch(e){y(S,Z(e),!0)}finally{B(e.id,!1)}}}async function H(e){if(!p(D).has(e.id)&&confirm(`Rotate this subscription's signing secret? The old secret stops verifying immediately — update the receiver right away.`)){B(e.id,!0),y(S,``);try{let n=await ye(e.id);n.signing_secret&&y(A,{...p(A),[e.id]:n.signing_secret},!0),t.onChanged(n)}catch(e){y(S,Z(e),!0)}finally{B(e.id,!1)}}}async function ne(e){try{await navigator.clipboard.writeText(p(A)[e]??``),y(N,e,!0),setTimeout(()=>{p(N)===e&&y(N,``)},1800)}catch{}}function U(e){let{[e]:t,...n}=p(A);y(A,n,!0)}function re(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:t.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}var W=kt(),G=P(W),ie=h(P(G),2),ae=e=>{var t=vt(),i=P(t,!0);I(t),l(()=>o(i,p(r)?`Cancel`:`Add subscription`)),n(`click`,t,()=>{y(r,!p(r)),y(S,``)}),c(e,t)};E(ie,e=>{p(R)&&e(ae)}),I(G);var K=h(G,2),oe=e=>{var r=xt(),m=P(r),x=h(P(m),2);b(x),I(m);var S=h(m,2),C=h(P(S),2),w=P(C);b(w),_(2),I(C);var T=h(C,2),D=e=>{var r=bt();s(r,20,()=>t.eventTypes,e=>e,(e,t)=>{var r=yt();let i;var a=P(r);b(a);var s=h(a,2),d=P(s,!0);I(s),I(r),l((e,n)=>{i=g(r,1,`ws-intg__event-option`,null,i,e),k(a,n),o(d,t)},[()=>({"is-active":p(u).includes(t)}),()=>p(u).includes(t)]),n(`change`,a,()=>z(t)),c(e,r)}),I(r),c(e,r)};E(T,e=>{p(a)||e(D)}),I(S);var O=h(S,2),A=P(O),j=P(A,!0);I(A),I(O),I(r),l(()=>{A.disabled=!p(ee),o(j,p(d)?`Creating…`:`Create subscription`)}),f(`submit`,r,te),F(x,()=>p(i),e=>y(i,e)),v(w,()=>p(a),e=>y(a,e)),c(e,r)};E(K,e=>{p(r)&&p(R)&&e(oe)});var q=h(K,2),se=e=>{var t=St(),n=P(t,!0);I(t),l(()=>o(n,p(S))),c(e,t)};E(q,e=>{p(S)&&e(se)});var ce=h(q,2),le=e=>{c(e,Ct())},ue=e=>{var r=Ot();s(r,21,()=>t.subscriptions,e=>e.id,(e,r)=>{var i=Dt(),a=P(i),u=P(a),d=P(u),f=P(d),m=P(f,!0);I(f),I(d);var g=h(d,2),_=P(g);I(g);var v=h(g,2);s(v,20,()=>p(r).event_types,e=>e,(e,t)=>{var n=wt(),r=P(n,!0);I(n),l(()=>o(r,t)),c(e,n)}),I(v);var x=h(v,2),S=e=>{var t=Tt(),i=h(P(t),2),a=P(i);b(a);var s=h(a,2),u=P(s,!0);I(s);var d=h(s,2);I(i),I(t),l(()=>{w(a,p(A)[p(r).id]),o(u,p(N)===p(r).id?`Copied`:`Copy`)}),n(`click`,s,()=>ne(p(r).id)),n(`click`,d,()=>U(p(r).id)),c(e,t)};E(x,e=>{p(A)[p(r).id]&&e(S)}),I(u);var C=h(u,2),O=P(C),k=P(O,!0);I(O);var j=h(O,2),F=e=>{var t=Et(),i=T(t),a=h(i,2);l((e,t)=>{i.disabled=e,a.disabled=t},[()=>p(D).has(p(r).id),()=>p(D).has(p(r).id)]),n(`click`,i,()=>H(p(r))),n(`click`,a,()=>V(p(r))),c(e,t)};E(j,e=>{t.canManage&&e(F)}),I(C),I(a);var R=h(a,2),ee=e=>{_t(e,{get subscriptionID(){return p(r).id}})};E(R,e=>{p(L)===p(r).id&&e(ee)}),I(i),l(e=>{M(f,`title`,p(r).callback_url),o(m,p(r).callback_url),o(_,`created ${e??``}`),o(k,p(L)===p(r).id?`Hide deliveries`:`Deliveries`)},[()=>re(p(r).created_at)]),n(`click`,O,()=>y(L,p(L)===p(r).id?``:p(r).id,!0)),c(e,i)}),I(r),c(e,r)};E(ce,e=>{t.subscriptions.length===0?e(le):e(ue,-1)}),I(W),c(e,W),C()}L([`click`,`change`]);var jt=i(``),Mt=i(`
                              `),Nt=i(`
                              No apps installed. Add one to connect an agent platform to this workspace.
                              `),Pt=a(``),Ft=i(` `,1),It=i(`Connected as — tokens are managed on the Bots page.`,1),Lt=i(`
                              `),Rt=i(`