From 519d7531cac4b2df767cda4f4bc1e33d8205114e Mon Sep 17 00:00:00 2001 From: Jacqueline Henriksen Date: Thu, 23 Jul 2026 22:09:46 -0700 Subject: [PATCH 01/13] feat: add channel mention notifications --- apps/api/internal/httpapi/authz_test.go | 4 + .../internal/httpapi/channel_notifications.go | 73 ++ apps/api/internal/httpapi/features.go | 8 +- apps/api/internal/httpapi/mutations_test.go | 6 +- apps/api/internal/httpapi/notifications.go | 13 +- apps/api/internal/httpapi/server.go | 6 +- apps/api/internal/store/postgres/export.go | 2 +- apps/api/internal/store/postgres/helpers.go | 47 +- .../postgres/mentions_notifications_test.go | 43 ++ .../0032_mentions_and_notifications.sql | 14 + .../internal/store/postgres/notifications.go | 83 ++- apps/api/internal/store/postgres/postgres.go | 21 +- .../internal/store/postgres/sqlc/queries.sql | 32 +- .../internal/store/postgres/sqlc/schema.sql | 15 +- .../internal/store/postgres/sqlc_adapters.go | 1 + .../internal/store/postgres/storedb/models.go | 28 +- .../store/postgres/storedb/queries.sql.go | 158 +++- apps/api/internal/store/sqlite/export.go | 2 +- apps/api/internal/store/sqlite/helpers.go | 47 +- .../sqlite/mentions_notifications_test.go | 700 ++++++++++++++++++ .../sqlite/message_privacy_scaling_test.go | 4 + .../0039_mentions_and_notifications.sql | 13 + apps/api/internal/store/sqlite/misc_test.go | 8 +- .../internal/store/sqlite/notifications.go | 88 ++- .../store/sqlite/search_pages_test.go | 8 +- .../internal/store/sqlite/sqlc/queries.sql | 35 +- .../api/internal/store/sqlite/sqlc/schema.sql | 15 +- .../internal/store/sqlite/sqlc_adapters.go | 1 + apps/api/internal/store/sqlite/sqlite.go | 21 +- apps/api/internal/store/sqlite/sqlite_test.go | 8 + .../internal/store/sqlite/storedb/models.go | 27 +- .../store/sqlite/storedb/queries.sql.go | 161 +++- apps/api/internal/store/types.go | 91 ++- apps/api/internal/webassets/dist/200.html | 136 ---- .../dist/_app/immutable/assets/0.CDRQdhFP.css | 1 + .../dist/_app/immutable/assets/0.DMQbOJlk.css | 1 - .../dist/_app/immutable/chunks/DcXiw1Ro.js | 8 + .../dist/_app/immutable/nodes/11.BPwHOykE.js | 1 - .../dist/_app/immutable/nodes/4.DxP4pTu5.js | 1 + .../dist/_app/immutable/nodes/5.C04PopFT.js | 1 - apps/api/internal/webassets/dist/index.html | 139 ---- apps/web/src/ChatApp.svelte | 141 +++- .../components/topbar/DesktopTitlebar.svelte | 34 + apps/web/src/components/topbar/Topbar.svelte | 33 +- apps/web/src/lib/types.ts | 3 + apps/web/src/styles/layout.css | 64 +- docs/features/channel-notifications.md | 29 + .../0039_mentions_and_notifications.sql | 13 + packages/protocol/openapi.yaml | 48 ++ packages/sdk-ts/src/generated/openapi.d.ts | 74 ++ packages/sdk-ts/src/index.ts | 21 + tests/e2e/chat.spec.ts | 226 +++++- 52 files changed, 2299 insertions(+), 458 deletions(-) create mode 100644 apps/api/internal/httpapi/channel_notifications.go create mode 100644 apps/api/internal/store/postgres/mentions_notifications_test.go create mode 100644 apps/api/internal/store/postgres/migrations/0032_mentions_and_notifications.sql create mode 100644 apps/api/internal/store/sqlite/mentions_notifications_test.go create mode 100644 apps/api/internal/store/sqlite/migrations/0039_mentions_and_notifications.sql delete mode 100644 apps/api/internal/webassets/dist/200.html create mode 100644 apps/api/internal/webassets/dist/_app/immutable/assets/0.CDRQdhFP.css delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/assets/0.DMQbOJlk.css create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/DcXiw1Ro.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/11.BPwHOykE.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/4.DxP4pTu5.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/5.C04PopFT.js delete mode 100644 apps/api/internal/webassets/dist/index.html create mode 100644 docs/features/channel-notifications.md create mode 100644 infra/migrations/sqlite/0039_mentions_and_notifications.sql diff --git a/apps/api/internal/httpapi/authz_test.go b/apps/api/internal/httpapi/authz_test.go index 8e3c2c72..1fdd1ed0 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", ""}, @@ -220,6 +222,8 @@ func TestHTTPBotTokenWorkspaceIsolation(t *testing.T) { 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/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..57096602 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) @@ -982,7 +984,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 +1149,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/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..06abdbf1 100644 --- a/apps/api/internal/store/postgres/postgres.go +++ b/apps/api/internal/store/postgres/postgres.go @@ -780,7 +780,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 +970,11 @@ 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, + "author_id": input.AuthorID, + }, nonce) statePayload := map[string]string{"root_message_id": root.ID} var recipients []string if root.DirectConversationID != "" { @@ -977,7 +985,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/sqlc/queries.sql b/apps/api/internal/store/postgres/sqlc/queries.sql index 9fc2137e..dbcf1c7f 100644 --- a/apps/api/internal/store/postgres/sqlc/queries.sql +++ b/apps/api/internal/store/postgres/sqlc/queries.sql @@ -252,11 +252,35 @@ 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 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 +1384,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 +1515,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) 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..2a3ed8cd 100644 --- a/apps/api/internal/store/postgres/storedb/queries.sql.go +++ b/apps/api/internal/store/postgres/storedb/queries.sql.go @@ -1179,6 +1179,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 +2426,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 +2454,7 @@ func (q *Queries) InsertEvent(ctx context.Context, arg InsertEventParams) error arg.PayloadJson, arg.CreatedAt, arg.IsPrivate, + arg.MentionedUserIds, ) return err } @@ -3487,7 +3508,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 +3582,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 +3616,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 +3631,48 @@ 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 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 +4282,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 +4318,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 +5424,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/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..29dff590 --- /dev/null +++ b/apps/api/internal/store/sqlite/mentions_notifications_test.go @@ -0,0 +1,700 @@ +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: "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) + } + if authorID, _ := eventPayloadValue(evt2, "author_id"); authorID != owner.ID { + t.Fatalf("expected thread reply author_id %q, got %q", owner.ID, authorID) + } + } + } + } +} + +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..b6ac14f5 100644 --- a/apps/api/internal/store/sqlite/sqlc/queries.sql +++ b/apps/api/internal/store/sqlite/sqlc/queries.sql @@ -250,11 +250,38 @@ 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 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 +1353,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 +1484,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) 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..aa7aa1d4 100644 --- a/apps/api/internal/store/sqlite/sqlite.go +++ b/apps/api/internal/store/sqlite/sqlite.go @@ -794,7 +794,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 +984,11 @@ 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, + "author_id": input.AuthorID, + }, nonce) statePayload := map[string]string{"root_message_id": root.ID} var recipients []string if root.DirectConversationID != "" { @@ -991,7 +999,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..76a86adc 100644 --- a/apps/api/internal/store/sqlite/storedb/queries.sql.go +++ b/apps/api/internal/store/sqlite/storedb/queries.sql.go @@ -1174,6 +1174,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 +2418,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 +2446,7 @@ func (q *Queries) InsertEvent(ctx context.Context, arg InsertEventParams) error arg.PayloadJson, arg.CreatedAt, arg.IsPrivate, + arg.MentionedUserIds, ) return err } @@ -3478,7 +3499,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 +3573,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 +3607,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 +3622,51 @@ 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 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 +4262,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 +4298,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 +5329,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/types.go b/apps/api/internal/store/types.go index ca6a4c5a..5bc2c0ba 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 @@ -310,6 +323,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 +655,79 @@ 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 (len(value) >= len("http://") && strings.EqualFold(value[:len("http://")], "http://")) || + (len(value) >= len("https://") && strings.EqualFold(value[:len("https://")], "https://")) +} + +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 +1147,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 deleted file mode 100644 index d3360759..00000000 --- a/apps/api/internal/webassets/dist/200.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - ClickClack - - - - - - - - - - - - - - - - - -
- -
- - diff --git a/apps/api/internal/webassets/dist/_app/immutable/assets/0.CDRQdhFP.css b/apps/api/internal/webassets/dist/_app/immutable/assets/0.CDRQdhFP.css new file mode 100644 index 00000000..5fc1bd53 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/assets/0.CDRQdhFP.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}.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/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/chunks/DcXiw1Ro.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/DcXiw1Ro.js new file mode 100644 index 00000000..557439eb --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/DcXiw1Ro.js @@ -0,0 +1,8 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DGD3aKTU.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 A,h as j,it as M,j as N,k as P,lt as F,m as I,n as ee,nt as te,o as L,ot as ne,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"./CySd1wef.js";import{t as ce}from"./0MLs41xV.js";import{t as le}from"./HclGiUj8.js";import"./xihTtKlq.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,i as ge,l as _e,m as ve,n as ye,o as be,p as xe,r as G,s as Se,t as Ce,u as we}from"./CDuOLCxG.js";import"./D7HZDAvv.js";import{a as Te,i as Ee,n as K,t as De}from"./Qo16U5GS.js";import{t as Oe}from"./OQjxVT6U.js";import"./amAOfu1G.js";import{A as ke,C as q,D as Ae,E as je,F as J,I as Me,L as Ne,M as Pe,N as Y,O as X,P as Z,T as Fe,_ as Q,d as Ie,f as Le,g as Re,h as ze,j as Be,k as Ve,l as He,m as Ue,p as We,u as Ge,v as Ke,w as qe,z as Je}from"./C5AMwlHa.js";import{t as Ye}from"./Cmuxu8Nw.js";import{p as Xe,r as Ze}from"./DFObNPU2.js";import{t as Qe}from"./B_KT8vL7.js";var $e=typeof window>`u`?void 0:window.clickclackDesktop;async function et(e){return e.type.startsWith(`image/`)?tt(e):e.type.startsWith(`video/`)?nt(e):{width:0,height:0,durationMS:0}}function tt(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 nt(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 rt=[{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`]}],it=new Set([`agent_commentary`,`agent_tool`]),at=180*1e3;function ot(e){return e.kind!==void 0&&it.has(e.kind)}function st(e){return e.kind===void 0||e.kind===`message`}function ct(e){return e.author?.id||e.author_id||``}function lt(e){return`${e.channel_id?`channel:${e.channel_id}`:`direct:${e.direct_conversation_id||``}`}\u0000${ct(e)}\u0000${e.turn_id||e.id}`}function ut(e){let t=e.trim(),n=``,r=``,i=t.match(/^\*\*([^*]+)\*\*\s*\n+([\s\S]+)$/),a=t.match(/^\*\*([^*]+)\*\*$/);if(i)n=i[1].trim(),r=ft(i[2]);else if(a)n=a[1].trim();else return dt(t.replace(/\*\*/g,``).trim(),``);return dt(n,r)}function dt(e,t){let n=ft(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 ft(e){return e.replace(/\s+/g,` `).trim()}function pt(e,t,n,r){let i=[];for(let e of t)if(e.kind===`agent_tool`){if(r.hideToolCalls)continue;let t=ut(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 mt(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>at&&(r=!0)}a.set(t,r)}let o=[];for(let n=0;n=Et)&&(Dt.active=!0,Dt.lastPingAt=t,At(e,`typing.started`)),Dt.idleTimer&&window.clearTimeout(Dt.idleTimer),Dt.idleTimer=window.setTimeout(()=>{Dt&&=(Mt(Dt),null)},Tt)}async function Mt(e){e.idleTimer&&window.clearTimeout(e.idleTimer),e.active&&await At(e.scope,`typing.stopped`)}function Nt(){Dt&&=(Mt(Dt),null)}var Pt=2e3,Ft=2*1024*1024;function It(e){let t=document.createElement(`span`);return t.textContent=e,t.innerHTML}function Lt(e,t,n){return!t||e.length>262144?Promise.resolve(It(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(It(e))),Pt);if(a.onmessage=t=>{let n=t.data;`error`in n?s(()=>r(It(e))):s(()=>r(n.html))},a.onerror=()=>s(()=>r(It(e))),n.addEventListener(`abort`,c,{once:!0}),n.aborted){c();return}a.postMessage({source:e,language:t,outputLimit:Ft})})}var Rt=5e3;function zt(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.`))),Rt);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 Bt=16*1024*1024,Vt=1e4,Ht=1e4,Ut=`This PDF page is too large to preview safely. Download the original to open it locally.`;function Wt(e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<1||t<1||e>8192||t>8192||e*t>16777216)throw Error(Ut)}var Gt=``+new URL(`../assets/pdf.worker.CPbhI6B3.mjs`,import.meta.url).href,Kt=o(`
`),qt=o(`

Preparing a safe preview.

`),Jt=o(``),Yt=o(`
No preview for this file type

You can still download the original file.

Download original
`),Xt=o(`
`,1),Zt=o(` `),Qt=o(` `),$t=o(` `),en=o(` `),tn=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.

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

`),on=o(`

`),sn=o(`

`),cn=o(`

Some slide content was omitted by preview limits.

`),ln=o(`

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

`,1),un=o(`
`),dn=o(`
`),fn=o(`
`),pn=o(`
 
`),mn=o(`
`,1);function hn(e,r){b(r,!0);let o=F(null),s=k(()=>Re(r.upload)),f=F(`preview`),p=F(`idle`),m=F(``),h=F(``),_=F(``),v=F(!1),y=F(``),x=F(null),T=F(1),D=F(1),O=F(!1),j=F(``),I=null,te=!1,L=F(null),ne=F(0),z=F(null),re=F(0),V=1e4,ae=64*1024,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 ${q(r.upload.byte_size)}. Preview is limited to ${q(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=Ie(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 ${q(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){I?.(),I=null,E(x,null),E(h,``),E(_,``),E(v,!1),E(y,``),E(T,1),E(D,1),E(j,``),te=!1,E(L,null),E(ne,0),E(z,null),E(re,0),E(f,`preview`),E(m,``);let t=ze(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(`./DGD3aKTU.js`),__vite__mapDeps([0,1]),import.meta.url);if(e.aborted)return;n.GlobalWorkerOptions.workerSrc=Gt;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.`))},Vt)}),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.`&&(te=!0,I?.(),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;I=()=>{f||(f=!0,l.removeEventListener(`message`,u),d&&d.destroy(),a.destroy(),E(x,null))};let h=n.getDocument({data:c,maxImageSize:Bt,canvasMaxAreaInBytes:Bt*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 zt(g(s),n,e);if(e.aborted)return;E(L,t,!0)}else{let t=await zt(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 Lt(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;I?.(),I=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(j,``),(async()=>{try{if(l=window.setTimeout(()=>{r||(i?.cancel(),c?.cancel(),I?.(),E(p,`error`),E(m,`PDF page rendering took too long and was stopped.`))},Ht),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(j,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));Wt(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,te)throw Error(`PDF page content could not be rendered completely within safety limits.`)}catch(e){!r&&!(e instanceof Error&&e.name===`RenderingCancelledException`)&&(I?.(),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()}}),ee(()=>I?.());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 G=k(()=>{let e=g(L)?.sheets[g(ne)];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 Se=mn(),Ce=M(Se),we=B(Ce),Te=B(we),Ee=B(Te,!0);H(Te);var K=S(Te,2),De=B(K,!0);H(K);var Oe=S(K,2),ke=B(Oe,!0);H(Oe),H(we);var Ae=S(we,2),je=B(Ae),J=e=>{var t=Kt(),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)};N(je,e=>{g(ue)&&e(J)});var Me=S(je,2),Ne=S(Me,2);H(Ae),H(Ce);var Pe=S(Ce,2);let Y;var X=B(Pe),Z=e=>{var t=qt(),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)},Fe=e=>{var t=Jt(),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)},Le=e=>{var t=Yt(),n=S(B(t),6);H(t),d(()=>{R(n,`href`,g(ce)),R(n,`download`,r.upload.filename)}),u(e,t)},Be=e=>{var t=Xt(),r=M(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(j))},[()=>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)},Ve=e=>{var t=rn(),r=M(t),i=B(r),a=B(i);H(i);var o=S(i,4),s=e=>{var t=Zt(),n=B(t);H(t),d(()=>c(n,`${g(L).hiddenSheets??``} hidden ${g(L).hiddenSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};N(o,e=>{g(L).hiddenSheets>0&&e(s)});var f=S(o,2),p=e=>{var t=Zt(),n=B(t);H(t),d(()=>c(n,`${g(L).unsupportedSheets??``} non-worksheet ${g(L).unsupportedSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};N(f,e=>{g(L).unsupportedSheets>0&&e(p)}),H(r);var m=S(r,2),h=B(m),_=B(h),v=B(_);l(S(B(v)),17,()=>g(G).columns,P,(e,t)=>{var n=Qt(),r=B(n,!0);H(n),d(()=>c(r,g(t))),u(e,n)}),H(v),H(_);var y=S(_);l(y,21,()=>g(G).rows,P,(e,t)=>{var n=en(),r=B(n),i=B(r,!0);H(r),l(S(r),17,()=>g(t).values,P,(e,t)=>{var n=$t(),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(y),H(h);var b=S(h,2),x=e=>{u(e,tn())};N(b,e=>{(g(G).clipped||g(L).sheets[g(ne)].truncated)&&e(x)}),H(m);var w=S(m,2);l(w,21,()=>g(L).sheets,P,(e,t,r)=>{var i=nn();let a;var o=B(i,!0);H(i),d(()=>{R(i,`aria-selected`,g(ne)===r),a=C(i,1,``,null,a,{active:g(ne)===r}),c(o,g(t).name)}),n(`click`,i,()=>E(ne,r,!0)),u(e,i)}),H(w),d(()=>{c(a,`${g(L).sheets.length??``} ${g(L).sheets.length===1?`sheet`:`sheets`}`),R(m,`aria-label`,`${g(L).sheets[g(ne)].name} worksheet`)}),u(e,t)},He=e=>{var t=ln(),r=M(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,P,(e,t,n)=>{var r=a(),i=M(r),o=e=>{var n=an(),r=B(n,!0);H(n),d(()=>c(r,g(t))),u(e,n)},s=e=>{var n=on(),r=B(n,!0);H(n),d(()=>c(r,g(t))),u(e,n)};N(i,e=>{n===0?e(o):e(s,-1)}),u(e,r)}),H(m);var h=S(m,4),_=e=>{var t=sn(),n=B(t);H(t),d(()=>c(n,`${g(z).hiddenSlides??``} hidden ${g(z).hiddenSlides===1?`slide`:`slides`} omitted.`)),u(e,t)};N(h,e=>{g(z).hiddenSlides>0&&e(_)});var v=S(h,2),y=e=>{u(e,cn())};N(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=un();i(t,()=>g(_),!0),H(t),u(e,t)},Ke=e=>{var t=dn();i(t,()=>g(_),!0),H(t),u(e,t)},Je=e=>{var t=fn(),n=B(t);i(n,()=>g(y),!0),H(n),H(t),u(e,t)},Ye=e=>{var t=pn(),n=B(t),r=B(n,!0);H(n),H(t),d(()=>c(r,g(h))),u(e,t)};N(X,e=>{g(p)===`loading`?e(Z):g(p)===`error`?e(Fe,1):g(s)===`unsupported`?e(Le,2):g(s)===`pdf`&&g(x)?e(Be,3):g(s)===`spreadsheet`&&g(L)?e(Ve,4):g(s)===`presentation`&&g(z)?e(He,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(Pe),d(e=>{c(Ee,g(U)),R(K,`title`,r.upload.filename),c(De,r.upload.filename),c(ke,e),R(Me,`href`,g(ce)),R(Me,`download`,r.upload.filename),R(Me,`aria-label`,`Download ${r.upload.filename}`),Y=C(Pe,1,`artifact-viewer__body`,null,Y,{"is-pdf":g(s)===`pdf`,"is-office":g(s)===`spreadsheet`||g(s)===`presentation`})},[()=>q(r.upload.byte_size)]),n(`click`,Ne,function(...e){r.onClose?.apply(this,e)}),u(e,Se),A()}U([`click`]);var gn=o(``),_n=o(``);function vn(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=_n(),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);He(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),j=B(O,!0);H(O),H(y),H(_);var M=S(_,2),P=e=>{var t=gn(),n=B(t,!0);H(t),d(()=>c(n,i())),u(e,t)};N(M,e=>{i()&&e(P)});var F=S(M,2),I=B(F),ee=S(I,2),te=B(ee,!0);H(ee),H(F),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(j,t.message.body),I.disabled=r(),ee.disabled=r(),c(te,r()?`Deleting...`:`Delete`)},[()=>Le(t.message.created_at)]),n(`click`,l,o),n(`click`,m,o),n(`click`,I,o),n(`click`,ee,function(...e){t.onConfirm?.apply(this,e)}),u(e,s),A()}U([`click`]);var yn=6500,bn=o(`
`);function xn(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=bn();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),A()}var Sn=45e3,Cn=o(`
`),wn=o(`
`),Tn=o(`
`);function En(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=M(i),s=e=>{var i=Tn();l(i,21,()=>t.turns,e=>e.turnId,(e,t)=>{var i=wn();l(i,21,()=>g(t).lines,e=>e.id,(e,t)=>{var i=Cn();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)};N(o,e=>{t.turns.length>0&&e(s)}),u(e,i),A()}var Dn=o(`
Agent is responding…
`);function On(e,t){var n=Dn();let r;d(()=>r=C(n,1,`typing-indicator agent-responding`,null,r,{visible:t.active})),u(e,n)}var kn=o(`

`),An=o(``);function jn(e,t){b(t,!0);var r=An(),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=kn(),r=B(n,!0);H(n),d(()=>c(r,t.status)),u(e,n)};N(m,e=>{t.status&&e(g)});var _=S(m,2),v=B(_);w(2),H(_),H(l),H(a),H(r),d(()=>j(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),A()}U([`click`,`input`]);var Mn=o(``),Nn=o(`
No matching people yet
`),Pn=o(``);function Fn(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=Pn(),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=Mn(),a=B(i);He(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)},[()=>Y(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,Nn())};N(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(()=>j(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),A()}U([`click`,`input`]);var In=o(``),Ln=o(` `),Rn=o(`
`),zn=o(`
`),Bn=o(``);function Vn(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=Bn(),o=B(a),s=S(o,4),f=B(s);l(f,17,()=>t.workspaces,e=>e.id,(e,r)=>{var a=Rn();let o;var s=B(a),l=B(s),f=e=>{var t=In();d(e=>R(t,`src`,e),[()=>de(g(r).icon_url)]),u(e,t)},p=e=>{var t=Ln(),n=B(t,!0);H(t),d(e=>c(n,e),[()=>Me(g(r).name)]),u(e,t)};N(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=zn(),i=B(r);O(i),H(r),d(()=>j(i,t.workspaceName)),h(`submit`,r,e=>{e.preventDefault(),t.onCreateWorkspace()}),n(`input`,i,e=>t.onWorkspaceName(e.currentTarget.value)),u(e,r)};N(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),A()}U([`click`,`input`]);var Hn=o(``),Un=o(` `,1),Wn=o(``),Gn=o(` `),Kn=o(`
#
`),qn=o(`
`),Jn=o(``),Yn=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),Xn=o(`
`);function Zn(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=Kn();let x;var D=B(b),O=e=>{var r=Un(),o=M(r),s=S(o,2),c=e=>{var r=Hn(),a=B(r),o=S(a,2);H(r),ie(r,e=>E(T,e),()=>g(T)),d(()=>{R(r,`aria-label`,`Move #${t().name}`),a.disabled=g(f)<=0,o.disabled=g(f)<0||g(f)>=i().length-1}),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)};N(s,e=>{g(w)===t().id&&e(c)}),d(()=>{R(o,`aria-label`,`Move #${t().name}`),R(o,`aria-expanded`,g(w)===t().id)}),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)};N(D,e=>{s()&&e(O)});var A=S(D,2);let j;var P=S(B(A),2),F=B(P,!0);H(P);var I=S(P,2),ee=e=>{u(e,Wn())};N(I,e=>{t().external_managed&&e(ee)});var te=S(I,2),L=e=>{var t=Gn(),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)};N(te,e=>{g(l)>0&&!(t().id===r.selectedChannelID&&!r.selectedDirectID)&&e(L)}),H(A),H(b),d(e=>{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(A,`href`,e),j=C(A,1,`nav-item channel`,null,j,{active:t().id===r.selectedChannelID&&!r.selectedDirectID,"has-unread":g(l)>0&&!(t().id===r.selectedChannelID&&!r.selectedDirectID)}),c(F,t().name)},[()=>r.hrefForChannel(t().id)]),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`,A,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=qn();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=F(``),_=F(``),v=F(``),y=F(!0),x=F(!1),w=F(``),T=F(void 0),D,O=F(``),j=F(ne({})),P=k(()=>r.channels.filter(e=>!e.archived_at)),I=k(()=>r.channels.filter(e=>!!e.archived_at)),ee=k(()=>g(P).filter(e=>!e.sidebar_section?.trim())),L=k(()=>{let e=new Map;for(let t of g(P)){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(j)[e];return typeof t==`boolean`?t:e!==f}function se(e){if(E(j,{...g(j),[e]:!oe(e)},!0),r.workspaceID)try{window.localStorage.setItem(V(r.workspaceID),JSON.stringify(g(j)))}catch{}}function U(e){e.key===V(r.workspaceID)&&E(j,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 #${c.name} 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(j,ae(r.workspaceID),!0)}),t(()=>{r.expanded||(E(w,``),pe(),E(x,!1))});var ye=Xn();h(`storage`,te,U);let be;var xe=B(ye),G=B(xe),Se=S(G,2);H(xe);var Ce=S(xe,2),we=B(Ce),Te=e=>{var t=Yn(),n=S(M(t),2);l(n,17,()=>g(ee),e=>e.id,(e,t)=>{i(e,()=>g(t),()=>g(ee),()=>`unsectioned`,()=>!1,()=>!0)});var a=S(n,2);l(a,19,()=>g(L),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(I)}),()=>`sidebar-archived-channels`,()=>!0)};N(s,e=>{g(I).length>0&&e(c)});var d=S(s,2),p=e=>{u(e,Jn())};N(d,e=>{r.channels.length===0&&e(p)}),u(e,t)},Ee=e=>{var t=a();l(M(t),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)};N(we,e=>{r.expanded?e(Te):e(Ee,-1)}),H(Ce);var K=S(Ce,2),De=B(K,!0);H(K),H(ye),d(()=>{be=C(ye,1,`nav-section`,null,be,{collapsed:!r.expanded}),R(G,`aria-expanded`,r.expanded),R(Ce,`hidden`,!r.expanded&&g(z).length===0),c(De,g(O))}),n(`click`,G,function(...e){r.onToggle?.apply(this,e)}),n(`click`,Se,function(...e){r.onCreateChannel?.apply(this,e)}),u(e,ye),A()}U([`focusout`,`click`,`keydown`]);var Qn=o(` `),$n=o(``),er=o(``),tr=o(`
`),nr=o(``),rr=o(`
`),ir=o(`
`);function ar(e,t){b(t,!0);let r=F(``),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=ir();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(()=>Be(g(i),t.currentUserID)),f=k(()=>g(i).unread_count||0),p=k(()=>g(i).id===t.selectedDirectID);var m=tr();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(()=>Z(g(l))?void 0:g(l)?.avatar_url);He(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=Qn(),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=>{u(e,$n())};N(w,e=>{g(f)>0&&!g(p)?e(T):e(E,-1)}),H(_);var D=S(_,2),O=S(D,2),A=e=>{var r=er(),a=B(r);H(r),n(`click`,a,e=>{e.preventDefault(),e.stopPropagation(),s(),t.onHideDirect(g(i).id)}),u(e,r)};N(O,e=>{g(r)===g(i).id&&e(A)}),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),()=>Pe(g(i),t.currentUserID),()=>`Direct message actions for ${Pe(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,nr())};N(x,e=>{t.expanded&&t.conversations.length===0&&e(w)});var T=S(x,2),D=e=>{var r=rr(),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)};N(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),A()}U([`click`,`keydown`]);var or=o(``),sr=o(`Connecting…`),cr=o(`
`),lr=o(` `),ur=o(``),dr=o(``),fr=o(``);function pr(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=F(ne({...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=F(ne([]));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 j(e){!r.workspaceID||!r.currentUser?.id||e.key===y(r.workspaceID,r.currentUser.id)&&E(v,T(e.newValue),!0)}let M=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 P(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}var I=fr();h(`storage`,te,j);var ee=B(I),L=e=>{var t=cr(),i=B(t),a=B(i),o=e=>{var t=or();d(e=>R(t,`src`,e),[()=>de(r.workspaceIconURL)]),u(e,t)};N(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=>{u(e,sr())};N(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)};N(ee,e=>{i()&&e(L)});var z=S(ee,2),re=B(z);Zn(re,{get workspaceID(){return r.workspaceID},get expanded(){return g(s).channels},get channels(){return g(M)},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);ar(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(()=>ke(r.directConversations,g(t).id));var a=lr();let o;var s=B(a);He(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(!P(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=>{u(e,ur())};N(le,e=>{r.recentPeople.length===0&&e(ue)}),H(U),H(V),H(z);var W=S(z,2),fe=e=>{var t=dr(),i=B(t);He(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} ${Y(r.currentUser.handle)}`,()=>r.currentUser.handle?Y(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)};N(W,e=>{r.currentUser&&e(fe)}),H(I),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,I),A()}U([`click`,`contextmenu`]);var mr=o(` `),hr=o(` `),gr=o(``),_r=o(``),vr=o(`
User kind
`),yr=o(`

`),br=o(`

Blocked.

`),xr=o(``),Sr=o(``),Cr=o(``),wr=o(`
Moderation
`),Tr=o(`

Profile

Active
Contact information
Handle
User ID
About

`,1);function Er(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=Tr(),p=M(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);He(B(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`}),H(x);var C=S(x,2),w=B(C),T=B(w),E=B(T),D=B(E,!0);H(E);var O=S(E,2),j=e=>{var t=mr(),n=B(t,!0);H(t),d(()=>c(n,g(r))),u(e,t)};N(O,e=>{g(r)&&e(j)});var P=S(O,2),F=e=>{var n=hr(),r=B(n,!0);H(n),d(e=>c(r,e),[()=>Y(t.profile.handle)]),u(e,n)};N(P,e=>{t.profile.handle&&e(F)}),H(T);var I=S(T,2),ee=e=>{var r=gr();n(`click`,r,function(...e){t.onEdit?.apply(this,e)}),u(e,r)};N(I,e=>{t.currentUser?.id===t.profile.id&&e(ee)}),H(w);var te=S(w,4),L=B(te),ne=e=>{var r=_r();n(`click`,r,()=>t.onMessage(t.profile.id)),u(e,r)};N(L,e=>{t.currentUser?.id!==t.profile.id&&e(ne)});var R=S(L,2);H(te);var z=S(te,2),re=B(z),ie=S(B(re),2),V=e=>{var r=gr();n(`click`,r,function(...e){t.onEdit?.apply(this,e)}),u(e,r)};N(ie,e=>{t.currentUser?.id===t.profile.id&&e(V)}),H(re);var ae=S(re,2),oe=S(B(ae),2),U=S(B(oe),2),ce=B(U,!0);H(U),H(oe),H(ae);var le=S(ae,2),ue=S(B(le),2),de=S(B(ue),2),W=B(de,!0);H(de),H(ue),H(le);var fe=S(le,2),pe=e=>{var t=vr(),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)};N(fe,e=>{t.profile.kind===`bot`&&e(pe)}),H(z);var me=S(z,2),he=S(B(me),2),ge=B(he);H(he),H(me);var _e=S(me,2),ve=e=>{var r=wr(),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=yr(),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)};N(f,e=>{t.moderation.role===`guest`&&t.moderation.post_limit>0&&e(p)});var m=S(f,2),h=e=>{var n=yr(),r=B(n);H(n),d(e=>c(r,`Timed out until ${e??``}.`),[()=>new Date(t.moderation.timeout_until).toLocaleString()]),u(e,n)};N(m,e=>{t.moderation.timeout_until&&e(h)});var _=S(m,2),v=e=>{u(e,br())};N(_,e=>{t.moderation.blocked_at&&e(v)});var y=S(_,2),b=B(y),x=e=>{var r=xr();n(`click`,r,()=>t.onApprove(t.profile.id)),u(e,r)};N(b,e=>{t.moderation.role===`guest`&&e(x)});var C=S(b,2),w=S(C,2),T=e=>{var r=Sr();n(`click`,r,()=>t.onUnblock(t.profile.id)),u(e,r)},E=e=>{var r=Cr();n(`click`,r,()=>t.onBlock(t.profile.id)),u(e,r)};N(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)};N(_e,e=>{g(o)&&t.moderation&&e(ve)}),H(C),H(y),d((e,n)=>{c(_,t.profile.display_name),se(x,`--hue: ${e??``}deg`),c(D,t.profile.display_name),c(ce,n),c(W,t.profile.id),c(ge,`Member of ${(t.workspaceName||`this workspace`)??``}.`)},[()=>X(t.profile.id),()=>t.profile.handle?Y(t.profile.handle):`No handle set`]),n(`click`,v,function(...e){t.onClose?.apply(this,e)}),n(`click`,R,function(...e){t.onSetStatus?.apply(this,e)}),u(e,f),A()}U([`click`]);var Dr=o(` `,1),Or=o(`
`),kr=o(`
We couldn’t search messages

`),Ar=o(`
No messages found

Try another word or phrase.

`),jr=o(`deleted bot`),Mr=o(` `),Nr=o(` `),Pr=o(` `),Fr=o(` Reply in thread`),Ir=o(` `),Lr=o(`
  • `),Rr=o(``),zr=o(``),Br=o(``),Vr=o(`
      `,1),Hr=o(``);function Ur(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…`))},te=e=>{var n=Dr(),r=M(n),i=S(r),a=e=>{var n=f();d(()=>c(n,`in ${t.session.scope.label??``}`)),u(e,n)};N(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)},L=e=>{u(e,f(`Search unavailable`))};N(I,e=>{t.session.state===`loading`?e(ee):t.session.state===`ready`?e(te,1):t.session.state===`error`&&e(L,2)}),H(F);var ne=S(F,2),z=B(ne),re=e=>{u(e,Or())},ie=e=>{var n=kr(),r=S(B(n),4),i=B(r,!0);H(r),H(n),d(()=>c(i,t.session.error)),u(e,n)},V=e=>{u(e,Ar())},ae=e=>{var r=Vr(),i=M(r);l(i,21,()=>t.session.results,e=>e.id,(e,r)=>{let i=k(()=>t.contextFor(g(r)));var o=Lr(),s=B(o);let p;var _=B(s);{let e=k(()=>Z(g(r).author)?void 0:g(r).author.avatar_url);He(_,{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=>{u(e,jr())},E=k(()=>Z(g(r).author)),D=e=>{var t=Mr(),n=B(t,!0);H(t),d(e=>c(n,e),[()=>Y(J(g(r).author))]),u(e,t)},O=k(()=>J(g(r).author));N(w,e=>{g(E)?e(T):g(O)&&e(D,1)});var A=S(w,2),j=B(A,!0);H(A),H(y);var F=S(y,2);l(F,21,()=>m(g(r).snippet,g(r).highlights),P,(e,t)=>{var n=a(),r=M(n),i=e=>{var n=Nr(),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)};N(r,e=>{g(t).highlighted?e(i):e(o,-1)}),u(e,n)}),H(F);var I=S(F,2),ee=B(I),te=e=>{var t=Pr(),n=B(t,!0);H(t),d(()=>c(n,g(i))),u(e,t)};N(ee,e=>{g(i)&&e(te)});var L=S(ee,2),ne=e=>{u(e,Fr())},z=e=>{var t=Ir(),n=S(B(t));H(t),d(()=>c(n,` ${g(r).reply_count??``} ${g(r).reply_count===1?`reply`:`replies`}`)),u(e,t)};N(L,e=>{g(r).parent_message_id?e(ne):g(r).reply_count>0&&e(z,1)}),H(I),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(A,`datetime`,g(r).created_at),c(j,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=Rr(),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=zr(),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=>{u(e,Br())};N(o,e=>{t.session.moreError?e(s):t.session.nextCursor?e(p,1):e(_,-1)}),u(e,r)};N(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(ne),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`,j,function(...e){t.onClose?.apply(this,e)}),u(e,_),A()}U([`click`]);var Wr=`clickclack:browser-notifications-enabled:v1:`;function Gr(e){return`${Wr}${e}`}function Kr(e){if(!e)return!1;try{return window.localStorage.getItem(Gr(e))===`enabled`}catch{return!1}}function qr(e,t){if(!e)return!1;try{return t?window.localStorage.setItem(Gr(e),`enabled`):window.localStorage.removeItem(Gr(e)),!0}catch{return!1}}var Jr=o(`

      Browser notifications are not supported on this device.

      `),Yr=o(`

      Browser notifications are blocked by this browser.

      `),Xr=o(`

      `),Zr=o(`

      Show alerts when ClickClack is in the background.

      `);function Qr(e,r){b(r,!0);let i=x(r,`isDesktop`,3,!1),a=F(!1),o=F(!1),s=F(`default`),l=F(``),f=F(!1);t(()=>{p(r.user.id,i())});function p(e,t){if(t){E(a,!0),E(s,`granted`),E(o,Kr(e),!0),r.onChanged?.(g(o));return}E(a,typeof Notification<`u`),E(s,g(a)?Notification.permission:`unsupported`,!0);let n=Kr(e);E(o,g(s)===`granted`&&n,!0),n&&g(s)!==`granted`&&qr(e,!1),r.onChanged?.(g(o))}async function m(e){if(E(l,``),E(f,!1),!e){qr(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,qr(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,qr(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}qr(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=Zr(),_=B(h),v=B(_),y=B(v,!0);H(v);var w=S(v,4),T=e=>{u(e,Jr())},D=e=>{u(e,Yr())};N(w,e=>{!i()&&!g(a)?e(T):!i()&&g(s)===`denied`&&e(D,1)});var k=S(w,2),j=e=>{var t=Xr();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)};N(k,e=>{g(l)&&e(j)}),H(_);var M=S(_,2),P=B(M);O(P),H(M),H(h),d(()=>{c(y,i()?`Desktop notifications`:`Browser notifications`),R(P,`aria-label`,i()?`Desktop notifications`:`Browser notifications`),P.disabled=!g(a)||g(s)===`denied`,I(P,g(o))}),n(`change`,P,e=>void m(e.currentTarget.checked)),u(e,h),A()}U([`change`]);var $r=o(``),ei=o(`

      `),ti=o(``),ni=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 ri(e,r){b(r,!0);let i=x(r,`isDesktop`,3,!1),a=F(null),o=k(()=>g(a)??r.user),s=F(``),l=F(``),f=F(``),p=F(``),m=F(!1),_=F(!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 j(){if(!g(_)){E(_,!0),E(p,``),E(m,!1);try{let e=await we({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 M(){E(f,``)}var P=ni(),ee=B(P),te=B(ee);He(te,{get id(){return g(o).id},get name(){return g(v)},get src(){return g(f)},size:52,loading:`eager`,fetchPriority:`auto`});var L=S(te,2),ne=B(L),R=B(ne,!0);H(ne);var z=S(ne,2),re=B(z,!0);H(z),H(L),w(2),H(ee);var ie=S(ee,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 me=S(pe,2),he=e=>{var t=$r();n(`click`,t,M),u(e,t)};N(me,e=>{g(f)&&e(he)}),H(fe),H(W);var ge=S(W,4),_e=S(B(ge),2),ve=B(_e);O(ve),H(_e),H(ge);var ye=S(ge,2),be=S(B(ye),2),xe=B(be);O(xe),H(be),H(ye);var G=S(ye,2),Se=S(B(G),2),Ce=B(Se),Te=B(Ce);Te.value=Te.__value=`left`;var Ee=S(Te);Ee.value=Ee.__value=`right`,H(Ce);var K;y(Ce),H(Se),H(G);var De=S(G,2),Oe=S(B(De),2),ke=B(Oe),q=B(ke);q.value=q.__value=`left`;var Ae=S(q);Ae.value=Ae.__value=`right`,H(ke);var je;y(ke),H(Oe),H(De),Qr(S(De,4),{get user(){return g(o)},get isDesktop(){return i()},get onChanged(){return r.onBrowserNotificationsChanged}}),H(ie);var J=S(ie,2),Me=B(J),Ne=e=>{var t=ei();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)},Pe=e=>{u(e,ti())};N(Me,e=>{g(p)?e(Ne):e(Pe,-1)});var Y=S(Me,2),X=B(Y,!0);H(Y),H(J),H(P),d(()=>{c(R,g(v)),c(re,g(T)?`@${g(T)}`:`No handle set`),I(ve,r.hideCommentary),I(xe,r.hideToolCalls),K!==(K=r.userAlign)&&(Ce.value=(Ce.__value=r.userAlign)??``,oe(Ce,r.userAlign)),je!==(je=r.otherAlign)&&(ke.value=(ke.__value=r.otherAlign)??``,oe(ke,r.otherAlign)),Y.disabled=g(_),c(X,g(_)?`Saving...`:`Save profile`)}),h(`submit`,P,e=>{e.preventDefault(),j()}),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`,ve,e=>r.onHideCommentary(e.currentTarget.checked)),n(`change`,xe,e=>r.onHideToolCalls(e.currentTarget.checked)),n(`change`,Ce,e=>r.onUserAlign(e.currentTarget.value===`right`?`right`:`left`)),n(`change`,ke,e=>r.onOtherAlign(e.currentTarget.value===`right`?`right`:`left`)),u(e,P),A()}U([`click`,`change`]);var ii=o(`

      `),ai=o(``),oi=o(`

      Desktop

      Mobile push

      Send push notifications to your phone via Pushover.

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

      `);function si(e,n){b(n,!0);let r=x(n,`isDesktop`,3,!1),i=F(null),a=k(()=>g(i)??n.user),o=F(!1),s=F(``),l=F(``),f=F(!1),p=F(!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 we({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 _=oi(),v=B(_),y=S(B(v),2);Qr(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),j=B(D);O(j),H(D),H(w);var M=S(w,2),P=S(B(M),2),I=B(P);O(I),H(P),H(M),H(v);var ee=S(v,2),te=B(ee),L=e=>{var t=ii();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)},ne=e=>{u(e,ai())};N(te,e=>{g(l)?e(L):e(ne,-1)});var R=S(te,2),z=B(R,!0);H(R),H(ee),H(_),d(()=>{R.disabled=g(p),c(z,g(p)?`Saving...`:`Save notifications`)}),h(`submit`,_,e=>{e.preventDefault(),m()}),T(j,()=>g(o),e=>E(o,e)),ae(I,()=>g(s),e=>E(s,e)),u(e,_),A()}var ci=o(`

      Loading…

      `),li=o(`

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

        `),mi=o(`
        `),hi=o(`

        Account

        My bots

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

        `,1);function $(e,t){b(t,!0);let r=F(ne([])),i=F(`loading`),a=F(``);re(()=>{o()});async function o(){E(i,`loading`);try{E(r,await Xe(),!0),E(i,`ready`)}catch(e){E(i,`error`),E(a,Ze(e),!0)}}function s(e){t.onClose(),ce(Te(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 _=hi(),v=S(M(_),2),y=e=>{u(e,ci())},x=e=>{var t=li(),n=B(t,!0);H(t),d(()=>c(n,g(a))),u(e,t)},C=e=>{u(e,ui())},w=e=>{var t=mi();l(t,21,()=>g(h),e=>e.workspace.id,(e,t)=>{var r=pi(),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=fi(),i=B(r),a=B(i),o=e=>{var n=di();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)};N(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)};N(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,_),A()}U([`click`]);var gi=o(``),_i=o(``),vi=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 yi(e,r){b(r,!0);let i=k(()=>r.user.display_name||r.user.handle||`You`),a=k(()=>(g(i)[0]??`Y`).toUpperCase()),o=F(ne(Se())),s=F(ne(be())),f=F(ne(_e())),p=F(ne(pe()));t(()=>{r.user.appearance_preferences,E(o,Se(),!0),E(s,be(),!0),E(f,_e(),!0),E(p,pe(),!0)});function m(e){E(o,e,!0),he(e)}function h(e){E(s,e,!0),me(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=vi(),T=S(M(x),2),D=B(T),O=S(B(D),2),j=B(O),N=B(j),P=B(N,!0);H(N);var I=S(N,2),ee=B(I),te=B(ee),L=B(te,!0);H(te),w(2),H(ee),w(2),H(I),H(j);var z=S(j,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,()=>ye,e=>e.id,(e,t,r)=>{var i=gi();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,ye.length,g(r),e=>m(ye[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 we=S(W,2);l(we,23,()=>Ce,e=>e.id,(e,t,r)=>{var i=_i();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,Ce.length,g(r),e=>h(Ce[e].id))),u(e,i)}),H(we),H(de),H(ue);var Te=S(ue,2),Ee=S(B(Te),2);l(Ee,23,()=>ge,e=>e.id,(e,t,r)=>{var i=gi();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,ge.length,g(r),e=>_(ge[e].id))),u(e,i)}),H(Ee),H(Te);var K=S(Te,2),De=S(B(K),2);l(De,23,()=>G,e=>e.id,(e,t,r)=>{var i=gi();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,G.length,g(r),e=>v(G[e].id))),u(e,i)}),H(De),H(K),H(U),H(T),d(e=>{R(D,`data-layout`,g(f)),R(D,`data-density`,g(p)),c(P,g(a)),c(L,g(i)),c(ie,g(a)),c(se,g(i)),c(fe,e)},[()=>Ce.find(e=>e.id===g(s))?.label]),u(e,x),A()}U([`click`,`keydown`]);var bi=o(` `,1),xi=o(` `,1),Si=o(` `,1),Ci=o(` `,1),wi=o(`
      • `),Ti=o(`
      • `),Ei=o(`

          `),Di=o(`

          Loading...

          `),Oi=o(`

          `),ki=o(`

          Account

          Profile settings

          How you appear across ClickClack.

          `,1),Ai=o(`

          Account

          Notifications

          Decide when and how ClickClack should reach you.

          `,1),ji=o(``);function Mi(e,r){b(r,!0);let i=x(r,`workspaces`,19,()=>[]),o=x(r,`initialSection`,3,K),s=x(r,`isDesktop`,3,!1),f=F(ne(K)),p=F(null),m=k(()=>g(p)?.id===r.user.id?g(p):r.user),_=F(`ready`),v=F(``);t(()=>{E(f,o(),!0)}),re(()=>{y()});async function y(){E(_,`loading`);try{let e=await we();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(Te(e.route_id||e.id,t))}var j=ji();h(`keydown`,te,D);var P=B(j),I=B(P),ee=S(I,2),L=B(ee),z=S(B(L),2);l(z,21,()=>De,e=>e.id,(e,t)=>{var r=wi(),i=B(r);let a;var o=B(i),s=e=>{var n=bi(),r=M(n);He(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=xi(),r=S(M(n),2),i=B(r,!0);H(r),d(()=>c(i,g(t).label)),u(e,n)},p=e=>{var n=Si(),r=S(M(n),2),i=B(r,!0);H(r),d(()=>c(i,g(t).label)),u(e,n)},h=e=>{var n=Ci(),r=S(M(n),2),i=B(r,!0);H(r),d(()=>c(i,g(t).label)),u(e,n)};N(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(L),l(S(L,2),17,i,e=>e.id,(e,t)=>{var r=Ei(),i=B(r),o=B(i);H(i);var s=S(i,2);l(s,21,()=>Ee,e=>e.id,(e,r)=>{var i=a(),o=M(i),s=e=>{var i=Ti(),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||Oe(g(t).role));N(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(ee);var ie=S(ee,2),V=B(ie),ae=e=>{u(e,Di())},oe=e=>{var t=Oi(),n=B(t,!0);H(t),d(()=>c(n,g(v))),u(e,t)},se=e=>{var t=ki();ri(S(M(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)},U=e=>{yi(e,{get user(){return g(m)}})},le=e=>{var t=Ai();si(S(M(t),2),{get user(){return g(m)},get isDesktop(){return s()},onUserUpdated:w,get onBrowserNotificationsChanged(){return r.onBrowserNotificationsChanged}}),u(e,t)},ue=e=>{$(e,{get onClose(){return r.onClose}})};N(V,e=>{g(_)===`loading`?e(ae):g(_)===`error`?e(oe,1):g(f)===`profile`?e(se,2):g(f)===`appearance`?e(U,3):g(f)===`notifications`?e(le,4):g(f)===`bots`&&e(ue,5)}),H(ie),H(P),H(j),n(`click`,j,T),n(`click`,I,function(...e){r.onClose?.apply(this,e)}),u(e,j),A()}U([`click`]);var Ni=o(`
          No thread open Hover any message and tap the bubble to keep side conversations tidy.
          `);function Pi(e){u(e,Ni())}function Fi(e){let t=e?.trim();if(!t)return``;try{let e=new URL(t);return e.protocol===`https:`||e.protocol===`http:`?e.href:``}catch{return``}}var Ii=o(``),Li=o(`

          `,1),Ri=o(``),zi=o(``),Bi=o(``),Vi=o(``),Hi=o(`
          `),Ui=o(`Connecting…`),Wi=o(`
          `);function Gi(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(()=>Fi(t.externalURL));var l=Wi(),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=Li(),r=S(M(n),2),i=B(r,!0);H(r);var a=S(r,2),o=e=>{var t=Ii();d(()=>R(t,`href`,g(s))),u(e,t)};N(a,e=>{g(s)&&e(o)}),d(()=>{R(r,`title`,t.channelTitle),c(i,t.channelTitle)}),u(e,n)};N(T,e=>{t.channelTitle&&e(E)}),H(p);var D=S(p,2),P=S(B(D),2);O(P);var F=S(P,2),I=e=>{var r=Ri();n(`click`,r,function(...e){t.onResetSearch?.apply(this,e)}),u(e,r)};N(F,e=>{t.searchQuery&&e(I)}),w(2),H(D);var ee=S(D,2),te=e=>{var t=Hi(),s=B(t),c=B(s),l=e=>{u(e,zi())},f=e=>{u(e,Bi())},p=e=>{u(e,Vi())};N(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)};N(ee,e=>{i()&&e(te)});var L=S(ee,2),ne=e=>{u(e,Ui())};N(L,e=>{t.connected||e(ne)}),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`),j(P,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`,P,e=>t.onSearchQuery(e.currentTarget.value)),u(e,l),A()}U([`click`,`input`]);var Ki=o(`

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

          `,1),Qi=o(`

          ClickClack

          `),$i=o(``),ea=o(``),ta=o(`

          `);function na(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:Fi(t.selectedChannel?.external_url));var l=ta(),f=B(l),p=B(f),m=e=>{var n=Ki(),r=B(n,!0);H(n),d(e=>c(r,e),[()=>`@${Pe(t.selectedDirect,t.currentUserID)}`]),u(e,n)},_=e=>{var s=Zi(),l=M(s),f=B(l,!0);H(l);var p=S(l,2),m=e=>{var t=Xi(),s=B(t),c=e=>{u(e,qi())},l=e=>{u(e,Ji())},f=e=>{u(e,Yi())};N(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)};N(p,e=>{i()&&e(m)}),d(()=>c(f,`#${t.selectedChannel.name}`)),u(e,s)},v=e=>{u(e,Qi())};N(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 P=S(D,2),F=e=>{var r=$i();n(`click`,r,function(...e){t.onResetSearch?.apply(this,e)}),u(e,r)};N(P,e=>{t.searchQuery&&e(F)}),w(2),H(E);var I=S(E,2),ee=B(I),te=e=>{var t=ea();d(()=>R(t,`href`,g(s))),u(e,t)};N(ee,e=>{g(s)&&e(te)});var L=S(ee,2);let ne;var z=S(L,2);H(I),H(l),d(()=>{c(T,t.workspaceName||`no workspace`),j(D,t.searchQuery),R(L,`title`,t.threadOpen?`Close thread`:`Open a message thread`),R(L,`aria-label`,t.threadOpen?`Close thread`:`Open a message thread`),ne=C(L,1,``,null,ne,{active:t.sidePanelOpen})}),h(`submit`,E,e=>{e.preventDefault(),t.onSearch()}),n(`input`,D,e=>t.onSearchQuery(e.currentTarget.value)),n(`click`,L,function(...e){t.onToggleThread?.apply(this,e)}),n(`click`,z,function(...e){t.onPinnedItems?.apply(this,e)}),u(e,l),A()}U([`click`,`input`]);async function ra(e){return(await W(`/api/workspaces/${e}/bot-commands`)).bot_commands??[]}function ia(e){let t=e.trim().toLowerCase();return t?t.startsWith(`/`)?t:`/${t}`:``}function aa(e){let t=/^(\/\S+)\s*([\s\S]*)$/.exec(e);return t?{command:ia(t[1]),text:t[2].trim()}:null}function oa(e,t){return e.find(e=>!e.revoked_at&&ia(e.command)===t)}async function sa(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 ca=e({default:()=>va}),la=o(``),ua=o(``),da=o(`
          cc
          ClickClack OpenClaw workspace chat

          Welcome.

          Sign in with GitHub to join the guest room.

          `,1),fa=o(``),pa=o(``),ma=o(`
          `),ha=o(``),ga=o(``),_a=o(`
          `,1);function va(e,t){b(t,!1);let i=V(),o=V(),l=V(),p=V(),y=V(),w=V(),T=V(),O=V(),k=V(),j=V(),P=V(),F=V(),I=V(),ne=V(),ae=V(),oe=V(),se=V(),U=V(),le=V(),pe=V(),me=`clickclack:hide-commentary:v1`,he=`clickclack:hide-tool-calls:v1`,ge=`clickclack:user-align:v1`,_e=`clickclack:other-align:v1`,ve=Date.now(),ye=$e?.integratedTitleBar===!0,be=x(t,`routeWorkspaceID`,8,``),xe=x(t,`routeTargetID`,8,``),G=V(null),Se=new Fe(()=>g(G)?.id||``),Ce=new Ae(Ta),Ee=V([]),K=V([]),De=V(null),Oe=new Map,ke=V(!1),q=V([]),J=V([]),Me=V([]),Y=V(``),X=V(``),Z=V(``),Q=V(null),Ie=V(null),Le=V(null),Re=V([]),ze=V([]),Be=V([]),He=V(null),Ue=V([]),We=V(null),qe=V(null),Xe=V(``),Ze=V(null),tt=null,nt=V(null),it=V(null),at=new Set,ot=V(``),st=V(``),ct=V(``),lt=V(``),ut=V(``),dt=V(``),ft=V(null),pt=V(!1),ht=0,gt=0,_t=V(null),yt=V(!1),bt=V(!1),xt=V(`profile`),St=V(!1),Ct=V(!1),Tt=V(``),Et=V(!1),Dt=V(!1),Ot=V(!1),kt=V(`left`),At=V(`left`),Mt=V(`loading`),Pt=V(!1),Ft=V(``),It=V(!1),Lt=``,Rt=``,zt=``,Bt=null,Vt=Promise.resolve(),Ht=V(null),Ut=new Map,Wt=V(new Map),Gt=new Set,Kt=V(`idle`),qt=`idle`,Jt=!1,Yt=!1,Xt=V(!1),Zt=V(!1),Qt=V(!1),$t=V(!1),en=new Map,tn=0,nn=V(``),rn=V(void 0),an=V(``),on=V(!0),sn=V(!1),cn=V(!1),ln=V(!1),un=V(!1),dn=V(null),fn=V(null),pn=V(null),mn=V(null),gn=V(`message`),_n=V([]),bn,Cn=V([]),wn,Tn=V(Date.now()),Dn,kn=V(``),An=0,Mn=0,Nn=0,Pn=0,In=0,Ln=0,Rn=0,zn=0,Bn=0,Hn=0,Un=0,Wn=V(null),Gn,Kn=V(new Set),qn=V(null),Jn=V(``);re(()=>{Zn(),Dn=window.setInterval(()=>{E(Tn,Date.now())},3e4),sr(),rr();let e=window.matchMedia(`(max-width: 820px)`),t=()=>{E(ln,!1),E(un,e.matches)};t();let n=$e?.onNavigate(e=>{ce(e,{keepFocus:!0,noScroll:!0})}),r=$e?.onQuickCompose(()=>Yn());return e.addEventListener(`change`,t),()=>{e.removeEventListener(`change`,t),n?.(),r?.()}});function Yn(){s().then(()=>{(g(gn)===`thread`?g(mn):g(pn))?.focus()})}async function Xn(e){if($e){e.preventDefault(),E(Ft,`Opening GitHub in your browser…`);try{await $e.signInWithGitHub(),E(Ft,`Finish signing in in your browser. ClickClack will complete here automatically.`)}catch{E(Ft,`Could not open your browser. Try again.`)}}}function Zn(){try{let e=window.localStorage.getItem(`clickclack:show-agent-activity:v1`)===`0`;E(Dt,window.localStorage.getItem(me)===`1`||e),E(Ot,window.localStorage.getItem(he)===`1`||e),E(kt,window.localStorage.getItem(ge)===`right`?`right`:`left`),E(At,window.localStorage.getItem(_e)===`right`?`right`:`left`)}catch{E(Dt,!1),E(Ot,!1),E(kt,`left`),E(At,`left`)}Qn()}function Qn(){try{document.documentElement.setAttribute(`data-user-align`,g(kt)),document.documentElement.setAttribute(`data-other-align`,g(At))}catch{}}function $n(e){E(kt,e),Qn();try{window.localStorage.setItem(ge,e)}catch{}}function er(e){E(At,e),Qn();try{window.localStorage.setItem(_e,e)}catch{}}function tr(e){E(Dt,e);try{window.localStorage.setItem(me,e?`1`:`0`)}catch{}}function nr(e){E(Ot,e);try{window.localStorage.setItem(he,e?`1`:`0`)}catch{}}ee(()=>{Bt?.close(),Bt=null,E(It,!1),Nt(),bn&&window.clearInterval(bn),wn&&window.clearInterval(wn),Dn&&window.clearInterval(Dn),Gn&&clearTimeout(Gn),Do(!1,null)});async function rr(){try{let e=await we();if(E(G,e.user),sr(),await dr(),g(Ee).length===0){E(Mt,`create a workspace`);return}await Or(be(),xe()),E(Mt,`ready`)}catch(e){if(e instanceof fe&&(e.status===401||e.status===403)){E(Pt,!0),E(Mt,`auth`);return}E(Mt,e instanceof Error?e.message:`Could not load ClickClack`)}}function ir(){g(G)&&(E(xt,`profile`),E(bt,!0))}function ar(){let e=g(i)?.route_id||g(Y)||be();e&&ce(Te(e))}function or(e){E(G,e),Yi(g(J).map(t=>t.author?.id===e.id?{...t,author:e}:t)),E(Me,g(Me).map(t=>t.author?.id===e.id?{...t,author:e}:t)),g(Q)?.author?.id===e.id&&E(Q,{...g(Q),author:e})}function sr(){if($e){E(Et,lr());return}let e=lr();E(Et,typeof Notification<`u`&&Notification.permission===`granted`&&e),e&&!g(Et)&&ur(!1)}function cr(){return g(G)?.id?`clickclack:browser-notifications-enabled:v1:${g(G).id}`:``}function lr(){let e=cr();if(!e)return!1;try{return window.localStorage.getItem(e)===`enabled`}catch{return!1}}function ur(e){let t=cr();if(!t)return!1;try{return e?window.localStorage.setItem(t,`enabled`):window.localStorage.removeItem(t),!0}catch{return!1}}async function dr(){let e=++Nn,t=await W(`/api/workspaces`);e===Nn&&E(Ee,t.workspaces)}function fr(e=``,t=``){return`${e||``}/${t||``}`}function mr(e=g(Y),t=``){let n=gr(e);if(!n)return`/app`;let r=`/app/${encodeURIComponent(n)}`,i=_r(t);return i?`${r}/${encodeURIComponent(i)}`:r}function hr(e){let t=g(K).find(t=>t.id===e)?.route_id||g(q).find(t=>t.id===e)?.route_id;return t?mr(g(Y),t):!g(Y)||!e?`/app`:`/app/${encodeURIComponent(g(Y))}/${encodeURIComponent(e)}`}function gr(e=g(Y)){return e?g(Ee).find(t=>t.id===e||t.route_id===e)?.route_id||e:``}function _r(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 vr(e=g(Y),t=``,n=!1){let r=mr(e,t);window.location.pathname!==r&&await ce(r,{replaceState:n,noScroll:!0,keepFocus:!0})}function yr(){g(pt)&&Ga(),E(Q,null),E(Ie,null),E(Le,null),E(gn,`message`),E(Me,[]),E(ln,!1)}function br(e=g(Y)){return wr(e)||g(K).find(e=>e.name.toLowerCase()===`guest`)?.id||g(K)[0]?.id||g(q)[0]?.id||``}function xr(e=g(Y)){return g(Ee).find(t=>t.id===e||t.route_id===e)}function Sr(e=g(Y)){let t=xr(e),n=t?.route_id||t?.id||e;return n?`clickclack:last-channel:v1:${n}`:``}function Cr(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 wr(e=g(Y)){let t=Sr(e);if(!t)return``;let n;try{let e=window.localStorage.getItem(t);if(!e)return``;n=Cr(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 Tr(e,t){if(!e||!t)return;let n=g(K).find(e=>e.id===t);if(!n)return;let r=Sr(e);if(r)try{window.localStorage.setItem(r,JSON.stringify({id:n.id,routeID:n.route_id}))}catch{}}function Dr(e){zt===e&&(zt=``,so())}async function Or(e=``,t=``){let n=++An;Se.clear();let r=fr(e,t),i=t.trim()?await Ar(e,t):null;if(n!==An)return;let a=i?g(Ee).find(e=>e.id===i.workspace_id):g(Ee).find(t=>t.id===e||t.route_id===e)||g(Ee)[0];if(!a){$r(``,Qr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`),E(kn,r);return}let o=i?fr(i.workspace_route_id,i.target_route_id):fr(a.route_id,``),s=g(Y)!==a.id;if(s&&(qi(),Ce.clear(),E(Y,a.id),Rn+=1,zn+=1,E(ze,[]),E(Be,[]),E(X,``),E(Z,``),E(Q,null),E(Ie,null),E(Le,null),E(gn,`message`),E(Me,[]),Ga(),oi(),E(on,!0),zt=a.id),(s||g(K).length===0)&&await Pr(!1,!1),n!==An||((s||g(q).length===0)&&await Qa(),s&&await Promise.all([Fr(),Ir(a.id),Lr(a.id)]),n!==An))return;if(i){let e=await kr(i,n);if(n!==An)return;if(!e){yr(),await vr(a.id,br(),!0);return}}if(i?.canonical_path&&window.location.pathname!==i.canonical_path&&(E(kn,o),await ce(i.canonical_path,{replaceState:!0,noScroll:!0,keepFocus:!0}),n!==An))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(nn)===e;if(E(X,e),E(Z,``),Tr(a.id,e),yr(),t){E(kn,o),ri(e),Dr(a.id);return}if(await qr(),n!==An)return;E(kn,o),Dr(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(nn)===e;if(E(Z,e),E(X,``),yr(),t){E(kn,o),ri(e),Dr(a.id);return}if(await qr(),n!==An)return;E(kn,o),Dr(a.id);return}if(i?.target_type===`thread`){let e=await jr(i);if(n!==An)return;if(e){E(kn,o),Dr(a.id);return}}let c=br();if(yr(),!c){E(X,``),E(Z,``),await qr(),E(kn,r),(e!==a.route_id||t)&&await vr(a.id,``,!0),Dr(a.id);return}await vr(a.id,c,!0)}async function kr(e,t){return e.target_type===`channel`?(g(K).some(t=>t.id===e.target_id)||await Pr(!1,!1,!1),t===An&&g(K).some(t=>t.id===e.target_id)):e.target_type===`direct`?(g(q).some(t=>t.id===e.target_id)||(await Qa(),g(q).some(t=>t.id===e.target_id)||$a((await W(`/api/dms/${e.target_id}`)).conversation)),t===An&&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 Pr(!1,!1,!1),t===An&&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 Qa(),g(q).some(t=>t.id===e.parent_id)||$a((await W(`/api/dms/${e.parent_id}`)).conversation)),t===An&&g(q).some(t=>t.id===e.parent_id)):!0}async function Ar(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 jr(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,``),Tr(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(nn)===$();return E(Le,null),E(gn,`thread`),E(ln,!1),await Aa(e.target_id),!r&&g(Q)&&await Ya(g(Q)),!0}async function Mr(){if(!g(ct).trim())return;let e=await W(`/api/workspaces`,{method:`POST`,body:JSON.stringify({name:g(ct)})});E(ct,``),E(sn,!1),E(Ee,[...g(Ee),e.workspace]),E(ln,!1),await Or(e.workspace.route_id||e.workspace.id,``),await vr(e.workspace.id),E(Mt,`ready`)}async function Nr(e){E(ln,!1),await vr(e)}async function Pr(e=!0,t=!0,n=!0){let r=g(Y);if(!r)return;let i=++Pn,a=await W(`/api/workspaces/${r}/channels`);i!==Pn||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(pt)&&Ga(),E(Q,null),E(Le,null),E(gn,`message`),E(Me,[])),e&&await qr())}async function Fr(e=g(Y)){let t=++Ln;if(!e||e!==g(Y)||g(o)!==`owner`&&g(o)!==`moderator`){t===Ln&&E(Re,[]);return}try{let n=await W(`/api/workspaces/${e}/moderation/members`);if(t!==Ln||e!==g(Y))return;E(Re,n.members)}catch{t===Ln&&e===g(Y)&&E(Re,[])}}async function Ir(e=g(Y)){let t=++Rn;if(!e){E(ze,[]);return}try{let n=await W(`/api/workspaces/${e}/slash-commands`);if(t!==Rn||e!==g(Y))return;E(ze,n.slash_commands)}catch{t===Rn&&e===g(Y)&&E(ze,[])}}async function Lr(e=g(Y),t=!1){let n=++zn;if(!e){E(Be,[]);return}try{let t=await ra(e);if(n!==zn||e!==g(Y))return;E(Be,t)}catch(r){let i=n===zn&&e===g(Y);if(i&&E(Be,[]),t&&i)throw r}}function Rr(e){Un+=1,E(He,null)}function zr(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 Br(e,t){if(!g(Y))return;let n=await W(`/api/workspaces/${g(Y)}/moderation/members/${e}`,{method:`PATCH`,body:JSON.stringify(t)});E(Re,[...g(Re).filter(t=>t.user.id!==e),n.member]),await Pr(!1,!1,!1),E(Mt,`ready`)}async function Vr(){if(!g(Y)||!g(lt).trim())return;let e=await W(`/api/workspaces/${g(Y)}/channels`,{method:`POST`,body:JSON.stringify({name:g(lt),kind:`public`})});E(lt,``),E(K,[...g(K),e.channel]),E(St,!1),await vr(g(Y),e.channel.id)}async function Hr(e){E(ln,!1),Tr(g(Y),e);let t=mr(g(Y),e);e===g(X)&&!g(Z)&&window.location.pathname===t||await vr(g(Y),e)}async function Wr(e,t){let n=++Bn;if(E(De,null),!(!e||t))try{let t=await W(`/api/channels/${e}/notification-settings`);if(n!==Bn||e!==g(X)||g(Z))return;Li(e,t.preference),E(De,t.preference)}catch{if(n===Bn&&e===g(X)&&!g(Z)){let t=Ii(e)||`all`;Li(e,t),E(De,t)}}}async function Gr(){let e=g(X);if(!e||g(Z)||g(ke)||!g(De))return;let t=++Bn,n=[`all`,`mentions`,`muted`],r=g(De),i=n[(n.indexOf(r)+1)%n.length];E(De,i),Li(e,i),E(ke,!0);try{await W(`/api/channels/${e}/notification-settings`,{method:`PATCH`,body:JSON.stringify({preference:i})})}catch{Oe.get(e)===i&&Li(e,r),t===Bn&&e===g(X)&&!g(Z)&&E(De,r)}finally{E(ke,!1)}}function Kr(e,t){return e===Mn&&$()===t}async function qr(e=!0){e&&qi();let t=$(),n=++Mn,r=t!==g(nn);oi(),r&&E(on,!0);try{if(!g(Z)&&!g(X)){$r(``,Qr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}let e=await W(Zr(Yr()));if(!Kr(n,t))return;$r(t,Qr(e),`replace`)}finally{Kr(n,t)&&E(on,!1)}}async function Jr(){let e=$();if(!e)return;let t=++Mn;oi(),E(on,!0),Ut.set(e,{atBottom:!0});try{let n=await W(Zr(`limit=100`));if(!Kr(t,e))return;$r(e,Qr(n),`replace`)}finally{Kr(t,e)&&E(on,!1)}}function Yr(){let e=Xr(),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 Xr(){return g(Z)?g(q).find(e=>e.id===g(Z))||{}:g(X)&&g(K).find(e=>e.id===g(X))||{}}function Zr(e){let t=g(Z)?`/api/dms/${g(Z)}/messages`:`/api/channels/${g(X)}/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 $r(e,t,n){let r=li(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};ei(e,c),ri(e,c),Ji(e,r)}function ei(e,t){e&&(g(Wt).delete(e),g(Wt).set(e,t),ti(e),ni(e),E(Wt,new Map(g(Wt))))}function ti(e){let t=g(Wt).size+1;for(;g(Wt).size>8&&t>0;){t--;let n=g(Wt).keys().next().value;if(!n)return;if(n===e){let e=g(Wt).get(n);g(Wt).delete(n),e&&g(Wt).set(n,e);continue}g(Wt).delete(n)}}function ni(e){let t=Ut.size+1;for(;Ut.size>16&&t>0;){t--;let n=Ut.keys().next().value;if(!n)return;if(n===e){let e=Ut.get(n);Ut.delete(n),e&&Ut.set(n,e);continue}Ut.delete(n)}}function ri(e,t=g(Wt).get(e)){e===$()&&(E(Xt,t?.has_older||!1),E(Zt,t?.has_newer||!1))}function ii(e){let t=g(Wt).get(e);!e||!t||(ei(e,{...t,has_newer:!0}),ri(e))}function ai(e,t){e===`older`?(E(Kt,t),E(Qt,t===`loading`)):(qt=t,E($t,t===`loading`))}function oi(){Gt=new Set,E(Kt,`idle`),qt=`idle`,Jt=!1,Yt=!1,E(Qt,!1),E($t,!1)}function si(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 ci(e){let t=new Set,n=Ei(e);if(n>=0){let r=Di(e,g(J),n);r&&t.add(r.id)}let r=Ut.get(e)?.anchorMessageID;r&&t.add(r);let i=Ce.session(e);i&&t.add(i.messageID),g(Q)&&Zi(g(Q),e)&&t.add(g(Q).id),g(dn)&&Zi(g(dn),e)&&t.add(g(dn).id);for(let n of g(J))(n.status===`pending`||n.status===`failed`)&&Zi(n,e)&&t.add(n.id);return t}function li(e,t,n){return Ne(t,n,ci(e))}function ui(){if(g(Kt)!==`idle`){Jt=!0;return}fi()}function di(e=!1){if(qt!==`idle`){e&&(Yt=!0);return}pi()}async function fi(){let e=$(),t=g(Wt).get(e),n=`${e}:older`;if(g(Kt)!==`idle`){Jt=!0;return}if(!e||!t?.has_older||t.oldest_seq<=0||Gt.has(n))return;Gt.add(n),Jt=!1,ai(`older`,`loading`),qi();let r=!1;try{let n=await W(Zr(`before_seq=${encodeURIComponent(String(t.oldest_seq))}&limit=50`));if($()!==e)return;$r(e,{messages:si(n.messages,g(J)),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,ai(`older`,`settling`)}catch(t){$()===e&&E(Mt,t instanceof Error?t.message:`Could not load older messages`)}finally{Gt.delete(n),$()===e&&!r&&ai(`older`,`idle`)}}async function pi(){let e=$(),t=g(Wt).get(e),n=`${e}:newer`;if(qt!==`idle`){Yt=!0;return}if(!e||Gt.has(n))return;if(!t||t.newest_seq<=0){await qr();return}Gt.add(n),Yt=!1,ai(`newer`,`loading`);let r=!1;try{let n=await W(Zr(`after_seq=${encodeURIComponent(String(t.newest_seq))}&limit=50`));if($()!==e)return;if(n.messages.length===0){$r(e,{...t,has_newer:n.has_newer},`append`),r=!0,ai(`newer`,`settling`);return}$r(e,{messages:si(g(J),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,ai(`newer`,`settling`)}catch(t){$()===e&&E(Mt,t instanceof Error?t.message:`Could not load newer messages`)}finally{Gt.delete(n),$()===e&&!r&&ai(`newer`,`idle`)}}function mi(){let e=g(Y),t=$();if(!e||!t)return Promise.resolve();let n=Vt.catch(()=>void 0).then(async()=>{if(g(Y)!==e||$()!==t)return;let n=g(Wt).get(t);if(!n||n.newest_seq<=0){await qr();return}let r=await W(Zr(`after_seq=${encodeURIComponent(String(n.newest_seq))}&limit=50`));if(g(Y)!==e||$()!==t)return;let i=g(Wt).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 _i(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 yi(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 bi(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 xi(e){let t=g(Wt).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),gi(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),_i(e),t):0}function Si(e){let t=g(Wt).get(e);return!t||t.has_newer?0:g(K).find(t=>t.id===e)?gi(e):g(q).find(t=>t.id===e)?_i(e):0}function Ci(e={}){if(!e.all&&Date.now()=0&&!Ui(t,e))return}let n=e.all?Math.max(e.seq||0,xi(t)):e.seq||Si(t);if(!(n<=0)){if(g(q).some(e=>e.id===t)){bi(t,n),e.all&&wi(t,n);return}g(K).some(e=>e.id===t)&&(yi(t,n),e.all&&wi(t,n))}}function wi(e,t){en.delete(e),en=new Map(en),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 Ti(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 Ei(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 Di(e,t,n){for(let r of t){if(!Zi(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 Oi(e,t){if(!e)return;let n=Hi(e);if(vi(e,n)<=0){en.delete(e),en=new Map(en);return}let r=n.last_read_seq||0,i=en.get(e);if(i?.boundarySeq===r&&i.since||!Ui(e,r))return;let a=Di(e,t,r);a&&(en=new Map(en).set(e,{boundarySeq:r,since:Ki(a.created_at)}))}function ki(e,t,n){if(!e||!n)return;let r=en.get(e);r?.boundarySeq===t&&r.since||(en=new Map(en).set(e,{boundarySeq:t,since:Ki(n)}))}function Ai(e){let t=e.payload,n=t.channel_seq??e.seq??t.seq;return typeof n==`number`?n:Number(n)||0}function ji(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 Ni(e){try{let t=await W(`/api/channels/${e}/notification-settings`);return Li(e,t.preference),e===g(X)&&!g(Z)&&!g(ke)&&E(De,t.preference),t.preference}catch{return Oe.get(e)||Ii(e)||`all`}}function Fi(e){return g(G)?.id&&e?`clickclack:channel-notification:v1:${g(G).id}:${e}`:``}function Ii(e){let t=Fi(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 Li(e,t){Oe=new Map(Oe).set(e,t);let n=Fi(e);if(n)try{window.localStorage.setItem(n,t)}catch{}}async function Ri(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(Et)||document.visibilityState===`visible`&&t)return;let i=typeof n.message_id==`string`?n.message_id:`${e.channel_id||``}:${e.seq||Date.now()}`,a=typeof n.author_id==`string`?n.author_id:``,o=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}`);a=e.message.author_id,o=e.message.body}catch{}if(a&&a===g(G)?.id)return;let{channelID:s,dmID:c}=ji(e);if(s){let t=await Ni(s);if(!t||!g(Et))return;let n=!!s&&s===g(X)||!!c&&c===g(Z);if(document.visibilityState===`visible`&&n||t===`muted`||t===`mentions`&&!e.mentioned_user_ids?.includes(g(G)?.id||``))return}let l=g(K).find(e=>e.id===s),u=vo(a)?.display_name||`ClickClack`,d=l?`#${l.name}`:`Direct message`;if($e){$e.notify({body:zi(o),route:hr(s||c),tag:`clickclack:${i}`,title:`${u} in ${d}`});return}if(!(typeof Notification>`u`||Notification.permission!==`granted`))try{let e=new Notification(`${u} in ${d}`,{body:zi(o),tag:`clickclack:${i}`,icon:`/favicon.svg`});e.onclick=()=>{window.focus(),e.close(),s?Hr(s):c&&to(c)}}catch{}}function zi(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 Bi(e){if(e.type!==`message.created`)return!1;let t=Ai(e);if(t<=0)return!1;let{channelID:n,dmID:r}=ji(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 Vi(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 Qa(),g(q).some(e=>e.id===n))}function Hi(e){return g(K).find(t=>t.id===e)||g(q).find(t=>t.id===e)||{}}function Ui(e,t,n=g(Wt)){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 Wi(e,t,n=g(Wt)){let r=en.get(e);if(r?.boundarySeq===t)return r.since;if(!Ui(e,t,n))return``;let i=Di(e,g(J),t);return i?Ki(i.created_at):``}function Ki(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(t)}function qi(){if(!g(nn)||!g(Ht))return;let e=g(Ht).captureState();e&&Ut.set(g(nn),e)}function Ji(e,t){let n=e!==g(nn);E(rn,Ut.get(e));let r=g(J).filter(t=>(t.status===`pending`||t.status===`failed`)&&Zi(t,e)),i=new Map(r.map(e=>[e.id,e])),a=new Map(r.filter(e=>e.nonce).map(e=>[e.nonce,e]));Se.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&&ia.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(J).filter(t=>(t.status===`pending`||t.status===`failed`)&&t.id.startsWith(`tmp_`)&&!s.has(t.id)&&!(t.nonce&&c.has(t.nonce))&&Zi(t,e));E(J,l.length>0?[...o,...l]:o),Ce.reconcile(e,g(J)),E(nn,e),Oi(e,g(J)),n&&(E(_n,[]),E(Cn,[]),Nt())}function Yi(e,t=`append`){let n=$(),r=n?g(Wt).get(n):void 0;if(!n||!r){E(J,e);return}let i=e.filter(e=>Zi(e,n)),a=li(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=Xi(a[0])>Xi(i[0]),u=Xi(a[a.length-1])0)&&await Jr(),await Qi(),Ci({all:!0}),await Qi()}catch(e){E(Mt,e instanceof Error?e.message:`Could not jump to latest messages`)}}let ia=new Map;function ca(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function va(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(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 ya(){let e=g(ot).trim();if(!e)return;if(g(w)&&!g(T)){E(Mt,`This conversation has no active recipient`);return}if(!g(X)&&!g(Z)){E(Mt,`pick or create a channel`);return}Nt(),E(He,null);let t=++Un,n=$(),r=g(Z)?`dm`:`channel`,i=g(dn)&&g(fn)===r?g(dn):null;if(g(X)&&!g(Z)&&!g(_t)&&!i){let r=aa(e),i=r?oa(g(ze),r.command):void 0;if(r&&i){E(ot,``),await ba(g(X),r.command,r.text,e,n,t);return}}let a={body:e,quotedMessageID:i?.id,upload:g(_t)||void 0,workspaceID:g(Y),channelID:g(X)||void 0,directConversationID:g(Z)||void 0,viewKey:$()};E(ot,``),i&&La(),E(_t,null),await Sa(a)}async function ba(e,t,n,r,i,a){try{let r=await sa(e,t,n);if(a!==Un||$()!==i)return;r.text&&r.response_type!==`in_channel`&&E(He,{kind:`ephemeral`,text:r.text})}catch(e){if(console.warn(`slash dispatch failed`,e),a!==Un||$()!==i)return;E(He,{kind:`error`,text:e instanceof fe&&e.message?xa(e):`${t} failed`}),g(ot).trim()||E(ot,r)}}function xa(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 Sa(e,t,n){let r=t??ca(),i=`tmp_${r}`,a=n??i,o=!t&&$()===e.viewKey,s=o&&g(Zt);ia.set(r,e);let c=va(r,e,a);t?Yi(g(J).map(e=>e.id===a?c:e)):$()===e.viewKey&&(Yi([...g(J),c]),ea());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 W(l,{method:`POST`,body:JSON.stringify(u)})).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);let i={...t,nonce:r,status:`failed`,attachments:e.upload?[...t.attachments||[],e.upload]:t.attachments};Yi(g(J).map(e=>e.id===a?i:e));return}ia.delete(r),g(J).findIndex(e=>e.id===a)>=0?Yi(g(J).map(e=>e.id===a?t:e)):g(J).some(e=>e.id===t.id)?Yi(g(J).map(e=>e.id===t.id?t:e)):Zi(t,$())&&!g(J).some(e=>e.id===t.id)&&Yi([...g(J),t]),$()===e.viewKey&&o&&(s&&await Jr(),await ea(),Ci({all:!0,seq:t.channel_seq||0}))}catch(e){console.warn(`send failed`,e),Yi(g(J).map(e=>e.id===a?{...e,status:`failed`}:e))}}function Ca(e){if(!e.nonce)return;let t=ia.get(e.nonce);if(!t){wa(e);return}Sa({...t,viewKey:t.viewKey},e.nonce,e.id)}function wa(e){e.nonce&&ia.delete(e.nonce),Yi(g(J).filter(t=>t.id!==e.id))}async function Ta(e,t){if(e!==g(an))return;t.surface===`timeline`&&g(Ht)?.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 Ea(e){Yi(g(J).map(t=>t.id===e.id?{...t,...e}:t)),E(Me,g(Me).map(t=>t.id===e.id?{...t,...e}:t)),g(Q)?.id===e.id&&E(Q,{...g(Q),...e})}function Da(e){!e.id||e.deleted_at||g(Kn).has(e.id)||(E(qn,e),E(Jn,``))}async function Oa(){let e=g(qn);if(!(!e||g(Kn).has(e.id))){E(Kn,new Set([...g(Kn),e.id])),E(Jn,``);try{let t=(await W(`/api/messages/${e.id}`,{method:`DELETE`})).message;Ce.cancelMessage($(),t.id),Yi(g(J).map(e=>e.id===t.id?{...e,...t}:e)),E(Me,g(Me).map(e=>e.id===t.id?{...e,...t}:e)),g(Q)?.id===t.id&&E(Q,{...g(Q),...t}),g(dn)?.id===t.id&&La(),E(Mt,``),E(qn,null)}catch(e){E(Jn,e instanceof Error?e.message:`Could not delete message`)}finally{let t=new Set(g(Kn));t.delete(e.id),E(Kn,t)}}}async function ka(e){Ga(),await Aa(e.id,e),g(Y)&&g(Q)?.route_id&&window.location.pathname!==mr(g(Y),g(Q).id)&&await vr(g(Y),g(Q).id)}async function Aa(e,t,n=()=>!0){E(qe,null),E(Xe,``),E(Le,null),t&&(E(Q,t),E(gn,`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 Se.seedMessages([i,...a]),Ce.reconcile($(),[i,...a]),E(Q,i),E(gn,`thread`),Yi(g(J).map(e=>e.id===i.id?i:e)),E(Me,a),E(Ie,r.thread_state),!0}async function ja(e){let t=await W(`/api/messages/${e}/thread`),n={...t.root,thread_state:t.thread_state};Se.seedMessages([n]),Yi(g(J).map(e=>e.id===n.id?n:e))}function Ma(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 Na(){let e=g(st).trim();if(!e||!g(Q))return;if(g(w)&&!g(T)){E(Mt,`This direct message has no active recipient`);return}let t=g(dn)&&g(fn)===`thread`?g(dn):null;E(st,``);let n={body:e,nonce:ca()};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&&La(),g(Me).some(e=>e.id===r.message.id)||E(Me,[...g(Me),r.message]),E(Ie,r.thread_state)}function Pa(e,t){E(dn,e),E(fn,t),E(gn,t===`thread`?`thread`:`message`)}function Fa(){return g(qn)!==null||g(We)!==null||g(bt)||g(St)||g(Ct)}function Ia(){return g(gn)===`thread`&&g(Q)&&g(mn)?g(mn):g(pn)}function La(){E(dn,null),E(fn,null)}async function Ra(e){let t=e.quoted_message_id;if(!t)return;if(g(Ht)?.scrollToMessage(t)??!1){await Va(t);return}let n=await W(`/api/messages/${t}`);Zi(n.message,$())&&await Ya(n.message)}async function za(){tn=Date.now()+1200,!(g(I)&&g(Ht)?.scrollToDivider(!1))&&await Ba()}async function Ba(){let e=$();if(!e)return;tn=Date.now()+1200;let t=Ti(e),n=en.get(e),r=(n?.boundarySeq===t?n.boundarySeq:t)+1;r<=0||(await Xa(r),await s(),g(Ht)?.scrollToDivider(!1))}async function Va(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 Ha(){if(!g(Y)||!g(dt).trim()){Ga();return}let e=g(dt).trim();g(qe)&&Eo(),(g(Q)||g(Le))&&No();let t=++gt,n=g(Z)&&g(w)?{workspaceID:g(Y),channelID:``,directConversationID:g(Z),label:`@${Pe(g(w),g(G)?.id)}`}:g(X)&&g(y)?{workspaceID:g(Y),channelID:g(X),directConversationID:``,label:`#${g(y).name}`}:{workspaceID:g(Y),channelID:``,directConversationID:``,label:``};E(pt,!1),ht=0;let r={query:e,scope:n,results:[],nextCursor:null,state:`loading`,error:``,loadingMore:!1,moreError:``,activeResultID:``};E(ft,r);try{let e=await W(`/api/search?${Ua(r).toString()}`);if(t!==gt)return;E(ft,{...r,results:e.results,nextCursor:e.next_cursor,state:`ready`})}catch(e){if(t!==gt)return;E(ft,{...r,state:`error`,error:e instanceof fe?e.message:`Search is unavailable right now.`})}}function Ua(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 Wa(){let e=g(ft);if(!e||e.state!==`ready`||!e.nextCursor||e.loadingMore)return;let t=gt;E(ft,{...e,loadingMore:!0,moreError:``});try{let n=await W(`/api/search?${Ua(e,e.nextCursor).toString()}`);if(t!==gt||!g(ft))return;let r=new Set(g(ft).results.map(e=>e.id));E(ft,{...g(ft),results:[...g(ft).results,...n.results.filter(e=>!r.has(e.id))],nextCursor:n.next_cursor,loadingMore:!1})}catch(e){if(t!==gt||!g(ft))return;E(ft,{...g(ft),loadingMore:!1,moreError:e instanceof fe?e.message:`Couldn’t load more results.`})}}function Ga(){gt+=1,E(dt,``),E(ft,null),E(pt,!1),ht=0}function Ka(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?`@${Pe(t,g(G)?.id)}`:`Direct message`}return``}async function qa(e){let t=g(ft),n=e.channel_id||e.direct_conversation_id||``;if(!(!t||!g(Y)||!n)&&(E(ft,{...t,activeResultID:e.id}),$()!==n&&(await vr(g(Y),n),await Or(g(Y),n)),$()===n)){if(e.parent_message_id){ht=document.querySelector(`.search-results-scroll`)?.scrollTop??0;let t=gt;E(pt,!0);try{if(!await Aa(e.thread_root_id,void 0,()=>t===gt&&g(pt)&&g(ft)?.activeResultID===e.id))return}catch(e){throw E(pt,!1),await s(),e}g(Q)?.route_id&&await vr(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 Va(e.id);return}if(e.channel_seq&&e.channel_seq>0){await Xa(e.channel_seq,e.id);return}await qr()}}async function Ja(){if(!g(ft)||!g(pt))return;let e=$();g(fn)===`thread`&&La(),E(Q,null),E(Le,null),E(gn,`message`),E(Me,[]),E(pt,!1),g(Y)&&e&&await vr(g(Y),e),await s();let t=document.querySelector(`.search-results-scroll`);t&&(t.scrollTop=ht),(g(ft).activeResultID?document.querySelector(`.search-result[data-result-id="${CSS.escape(g(ft).activeResultID)}"]`):null)?.focus({preventScroll:!0})}async function Ya(e){let t=e.channel_seq||0;if(t<=0){await qr();return}await Xa(t,e.id)}async function Xa(e,t=``){let n=$();if(!n)return;t&&Ut.set(n,{atBottom:!1,anchorMessageID:t,anchorPixelOffset:0});let r=n!==g(nn);oi(),r&&E(on,!0);try{let r=await W(Zr(`around_seq=${encodeURIComponent(String(e))}&limit=100`));if($()!==n)return;$r(n,Qr(r),`around`),await s(),t&&(g(Ht)?.scrollToMessage(t),await Va(t))}finally{$()===n&&E(on,!1)}}async function Za(e){let t=e.currentTarget,n=t.files?.[0];if(!n||!g(Y))return;let r=await et(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(_t,a.upload),t.value=``}async function Qa(e=g(Y)){let t=++In;if(!e){E(q,[]);return}let n=await W(`/api/dms?workspace_id=${e}`);t!==In||e!==g(Y)||(E(q,n.conversations),g(Z)&&!g(q).some(e=>e.id===g(Z))&&E(Z,``))}function $a(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 eo(e){let t=e.trim();t&&(await no(t),E(ut,``),E(Ct,!1))}async function to(e){E(ln,!1);let t=mr(g(Y),e);e===g(Z)&&!g(X)&&window.location.pathname===t||await vr(g(Y),e)}async function no(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(ln,!1),await vr(g(Y),n.id);return}let r=await W(`/api/dms`,{method:`POST`,body:JSON.stringify({workspace_id:g(Y),member_ids:[t]})});$a(r.conversation),E(ln,!1),await vr(g(Y),r.conversation.id)}function ro(){Gn&&clearTimeout(Gn),Gn=void 0,E(Wn,null)}function io(e,t){ro(),E(Wn,{conversation:e,restoreRoute:t,title:Pe(e,g(G)?.id)}),Gn=setTimeout(()=>{E(Wn,null),Gn=void 0},8e3)}async function ao(){let e=g(Wn);if(e){ro();try{let t=await W(`/api/dms/${e.conversation.id}/open`,{method:`POST`});$a(t.conversation),e.restoreRoute&&await vr(e.conversation.workspace_id,t.conversation.id),E(Mt,`direct message restored`)}catch(e){E(Mt,e instanceof Error?e.message:`Could not restore direct message`)}}}async function oo(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&&io(t,n),n){yr();let e=g(K)[0]?.id||``;E(Z,``),E(X,e),e&&Tr(g(Y),e),await vr(g(Y),e),await qr()}}function so(){if(Hn+=1,Bt?.close(),Bt=null,E(It,!1),!g(Y))return;let e=g(Y);Bt=je({workspaceID:e,onEvent:lo,onOpen:async(t,n)=>{await co(e,t,Rt===e,n),t()&&(Rt=e,e===g(Y)&&g(Mt)===Lt&&E(Mt,`ready`),Lt=``)},onError:t=>{e===g(Y)&&(Lt=t instanceof Error?t.message:`Could not process realtime event`,E(Mt,Lt))},onStatusChange:e=>{E(It,e)}})}async function co(e,t=()=>!0,n=!0,r=!0){let i=++Hn;if(!e||e!==g(Y)||!t())return;let a=g(Q)?.id||``,o=g(Le)?.kind===`bot`?g(Le).id:``;if(E(_n,[]),E(Cn,[]),!r){await Promise.all([Ir(e),Lr(e,!0)]);return}if(Se.clear(),await Promise.all([dr(),Pr(!1,!1,!1),Qa(e),Fr(e),Ir(e),Lr(e,!0)]),!(i!==Hn||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=br(e);if(t){let n=g(q).some(e=>e.id===t);E(Z,n?t:``),E(X,n?``:t),n||Tr(e,t),await vr(e,t,!0)}}if(!(i!==Hn||e!==g(Y)||!t())&&(await qr(n),!(i!==Hn||e!==g(Y)||!t())&&(a&&g(Q)?.id===a&&await Aa(a,g(Q)),o&&g(Le)?.id===o))){let e=vo(o);E(Le,e&&!e.deleted_at?e:null)}}}async function lo(e){if(e.type===`typing.started`||e.type===`typing.stopped`){ho(e);return}if(e.type===`agent.progress`){go(e);return}if(e.type===`channel.read`||e.type===`dm.read`){po(e);return}if(e.type===`bot_command.updated`){e.workspace_id===g(Y)&&Lr(e.workspace_id,!0).catch(t=>{e.workspace_id===g(Y)&&(E(Mt,t instanceof Error?t.message:`Could not refresh bot commands`),so())});return}if(e.type===`bot.deleted`){e.workspace_id===g(Y)&&await uo(e);return}if(e.type===`bot.membership_removed`){e.workspace_id===g(Y)&&await fo(e);return}if((e.type===`channel.created`||e.type===`channel.updated`)&&e.workspace_id===g(Y)){await Pr(!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 dr(),await Fr(),await Pr(!1,n,n),n){if(await Qa(),t&&(g(q).some(e=>e.id===t)?(E(Z,t),E(X,``)):E(Z,``)),!g(X)&&!g(Z)){$r(``,Qr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}await qr()}return}if(Bi(e))return;let t=e.channel_id===g(X)||e.payload.direct_conversation_id===g(Z);if(t&&(e.type===`reaction.added`||e.type===`reaction.removed`)){Se.applyEvent(e);return}if(Ri(e,t),e.type===`message.created`&&!t&&(await Vi(e)||mo(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&&ia.has(t))return;let n=$i();e.type===`message.created`&&!n?(tn=Date.now()+1200,ii($())):e.type===`message.created`?await mi():await qr(),e.type===`message.created`&&mo(e,n),e.type===`message.created`&&n&&(await Qi(),Ci({all:!0,seq:Ai(e)}))}let n=e.payload.root_message_id||e.payload.message_id;n&&e.type===`thread.state_updated`&&Ma(n,e)?g(Q)?.id===n?await Aa(n,g(Q)):await ja(n):e.type!==`thread.reply_created`&&g(Q)&&n===g(Q).id&&await Aa(g(Q).id,g(Q))}async function uo(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(Re,g(Re).filter(e=>e.user.id!==t)),E(ze,g(ze).filter(e=>e.bot_user_id!==t)),E(Be,g(Be).filter(e=>e.bot.id!==t)),E(_n,g(_n).filter(e=>e.userID!==t)),g(ft)&&E(ft,{...g(ft),results:g(ft).results.map(e=>({...e,author:i(e.author)}))}),g(Le)?.id===t&&E(Le,null);let a=g(Q)?.id||``;await Promise.all([Qa(),Fr(),Ir(),Lr()]),await qr(),a&&await Aa(a)}async function fo(e){let t=e.payload.bot_user_id||``;t&&(E(Re,g(Re).filter(e=>e.user.id!==t)),E(ze,g(ze).filter(e=>e.bot_user_id!==t)),E(Be,g(Be).filter(e=>e.bot.id!==t)),g(Le)?.id===t&&E(Le,null),await Promise.all([Qa(e.workspace_id),Fr(e.workspace_id),Ir(e.workspace_id),Lr(e.workspace_id)]))}function po(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 mo(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=Ai(e),{channelID:o,dmID:s}=ji(e);if(o){let n=o===g(X)&&!g(Z),r=n?t??$i():!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&&ki(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??$i():!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&&ki(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 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.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(_n,g(_n).filter(e=>e.userID!==n));return}let a=vo(n),o=g(_n).filter(e=>e.userID!==n);o.push({userID:n,user:a,expiresAt:Date.now()+yn}),E(_n,o),yo()}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(Cn,g(Cn).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(Cn).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()+Sn;if(!m)E(Cn,[...g(Cn),{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(Cn,g(Cn).map(t=>t.turnId===i?{...t,lines:e,expiresAt:y}:t))}_o()}function _o(){wn||=window.setInterval(()=>{let e=Date.now(),t=g(Cn).filter(t=>t.expiresAt>e);t.length!==g(Cn).length&&E(Cn,t),t.length===0&&wn&&(window.clearInterval(wn),wn=void 0)},1e3)}function vo(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(Me).find(t=>t.author?.id===e)?.author;if(n)return n;if(g(Q)?.author?.id===e)return g(Q).author;let r=g(Re).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 yo(){bn||=window.setInterval(()=>{let e=Date.now(),t=g(_n).filter(t=>t.expiresAt>e);t.length!==g(_n).length&&E(_n,t),t.length===0&&bn&&(window.clearInterval(bn),bn=void 0)},1e3)}function bo(){g(Y)&&(!g(X)&&!g(Z)||jt({workspaceID:g(Y),channelID:g(X)||void 0,directConversationID:g(Z)||void 0}))}function xo(e){!e||e.deleted_at||(Ga(),E(qe,null),E(Xe,``),E(Q,null),E(Le,e),(g(o)===`owner`||g(o)===`moderator`)&&!g(Re).some(t=>t.user.id===e.id)&&Fr())}function So(e){if(e.key===`Escape`&&g(dn)&&g(fn)!==`thread`){e.preventDefault(),La();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),ya())}function Co(e){if(e.key===`Escape`&&g(dn)&&g(fn)===`thread`){e.preventDefault(),La();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Na())}function wo(e,t){Fa()||E(We,{url:e,title:t})}function To(e){E(Ze,document.activeElement instanceof HTMLElement?document.activeElement:null),tt=g(Q)?document.querySelector(`.thread-scroll`)?.scrollTop??null:null,E(Xe,g(an)),E(qe,e),s().then(()=>{document.querySelector(`.artifact-viewer__actions > button:last-child`)?.focus()})}function Eo(){let e=g(Ze),t=g(qe)?.id||``;E(qe,null),E(Xe,``),E(Ze,null),s().then(()=>{if(tt!==null){let e=document.querySelector(`.thread-scroll`);e&&(e.scrollTop=tt)}if(tt=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 Do(e,t){for(let e of at)e.inert=!1;if(at.clear(),!(!e||!g(it)||!t))for(let e of g(it).children)!(e instanceof HTMLElement)||e===t||e.inert||(e.inert=!0,at.add(e))}function Oo(e){if(!g(qe)||!g(un)||e.key!==`Tab`||!g(nt))return;let t=Array.from(g(nt).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(nt).focus();return}let n=t[0],r=t[t.length-1];e.shiftKey&&(document.activeElement===n||!g(nt).contains(document.activeElement))?(e.preventDefault(),r.focus()):!e.shiftKey&&(document.activeElement===r||!g(nt).contains(document.activeElement))&&(e.preventDefault(),n.focus())}function ko(e){let t=e.target;t instanceof HTMLImageElement&&t.closest(`.markdown`)&&(e.preventDefault(),wo(Je(t),t.alt||`Image`))}function Ao(e){let t=g(ot)&&!g(ot).endsWith(` +`)?` +`:``;E(ot,`${g(ot)}${t}${e}`)}function jo(e,t=e){Ao(`${e}${e==="```"?` +code +`:`text`}${t}`)}function Mo(e,t){Ao(`![${t}](${e})`),E(yt,!1),E(Tt,``)}function No(){if(g(qe)){Eo();return}let e=g(Q)!==null,t=g(pt),n=$();Ce.cancel(n,`thread`),g(fn)===`thread`&&La(),E(Q,null),E(Le,null),E(gn,`message`),E(Me,[]),t&&Ga(),(e||t)&&g(Y)&&n&&vr(g(Y),n)}function Po(){g(se)?No():E(Mt,`pick a message to open its thread`)}function Fo(e){if(Oo(e),!e.defaultPrevented){if(e.key===`Escape`){if(e.target instanceof Element&&e.target.closest(`[data-handles-escape]`)||g(We))return;if(Fa())Io();else if(g(ln)){e.preventDefault(),Lo();return}else if(g(qe)){e.preventDefault(),No();return}else if(g(pt)){e.preventDefault(),No();return}else if(g(U)){e.preventDefault(),Ga();return}else if(g(dn)){e.preventDefault(),La();return}else{e.preventDefault(),ta();return}}if(g(ln)&&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}}wt(e,{authRequired:g(Pt),isModalOpen:()=>Fa()||g(ln),messageInput:g(pn),replyInput:g(mn),target:Ia})}}function Io(){g(qn)&&g(Kn).has(g(qn).id)||(E(qn,null),E(Jn,``),E(We,null),E(bt,!1),E(St,!1),E(Ct,!1))}function Lo(){E(ln,!1)}function Ro(){if(g(un)){E(ln,!g(ln));return}E(cn,!g(cn))}_(()=>(g(Ee),g(Y)),()=>{E(i,g(Ee).find(e=>e.id===g(Y)))}),_(()=>g(i),()=>{E(o,g(i)?.role||``)}),_(()=>g(o),()=>{E(l,g(o)===`owner`)}),_(()=>(g(Le),g(Re)),()=>{E(p,g(Le)?g(Re).find(e=>e.user.id===g(Le)?.id):void 0)}),_(()=>(g(K),g(X)),()=>{E(y,g(K).find(e=>e.id===g(X)))}),_(()=>(g(X),g(Z)),()=>{Wr(g(X),g(Z))}),_(()=>(g(q),g(Z)),()=>{E(w,g(q).find(e=>e.id===g(Z)))}),_(()=>g(w),()=>{E(T,g(w)?.can_send??!0)}),_(()=>(g(Z),g(X)),()=>{E(an,g(Z)||g(X)||``)}),_(()=>g(an),()=>{Rr(g(an))}),_(()=>(g(X),g(Be),g(w)),()=>{E(O,g(X)?g(Be):g(w)?g(Be).filter(e=>g(w)?.members?.some(t=>t.id===e.bot.id)):[])}),_(()=>(g(Z),g(q),g(X),g(K)),()=>{E(k,g(Z)?g(q).find(e=>e.id===g(Z))||{}:g(X)&&g(K).find(e=>e.id===g(X))||{})}),_(()=>(g(an),g(k)),()=>{E(j,vi(g(an),g(k)))}),_(()=>(g(Mt),g(K),g(q)),()=>{E(P,g(Mt)===`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(P),()=>{$e?.setUnreadCount(g(P))}),_(()=>g(kn),()=>{$e&&g(kn)&&typeof window<`u`&&$e.setActiveRoute(`${window.location.pathname}${window.location.search}${window.location.hash}`)}),_(()=>(g(j),g(k)),()=>{E(F,g(j)>0&&g(k).last_read_seq||0)}),_(()=>(g(j),g(an),g(F),g(Wt)),()=>{E(I,g(j)>0&&Ui(g(an),g(F),g(Wt)))}),_(()=>(g(j),g(an),g(F),g(Wt)),()=>{E(ne,g(j)>0?Wi(g(an),g(F),g(Wt)):``)}),_(()=>(g(J),g(Dt),g(Ot),g(Tn)),()=>{E(ae,mt(g(J),{hideCommentary:g(Dt),hideToolCalls:g(Ot)},g(Tn)))}),_(()=>g(Cn),()=>{E(oe,g(Cn).some(e=>e.lines.some(e=>!e.finalized)))}),_(()=>(g(qe),g(Xe),g(an)),()=>{g(qe)&&g(Xe)&&g(Xe)!==g(an)&&(E(qe,null),E(Xe,``),E(Ze,null))}),_(()=>(g(Q),g(Le),g(qe)),()=>{E(se,g(Q)!==null||g(Le)!==null||g(qe)!==null)}),_(()=>(g(ft),g(pt)),()=>{E(U,g(ft)!==null&&!g(pt))}),_(()=>(g(un),g(qe),g(nt)),()=>{Do(g(un)&&g(qe)!==null,g(nt))}),_(()=>(g(J),g(q),g(G)),()=>{E(le,Ve(g(J),g(q),g(G)?.id||``))}),_(()=>(g(G),g(le),g(Re),g(w)),()=>{E(Ue,zr(g(G),g(le),g(Re),g(w)))}),_(()=>(g(fn),g(dn),g(J)),()=>{g(fn)===`channel`&&g(dn)&&!g(J).some(e=>e.id===g(dn)?.id)&&La()}),_(()=>(g(fn),g(dn),g(J)),()=>{g(fn)===`dm`&&g(dn)&&!g(J).some(e=>e.id===g(dn)?.id)&&La()}),_(()=>(g(fn),g(dn),g(Q),g(Me)),()=>{g(fn)===`thread`&&g(dn)&&g(Q)&&g(dn).id!==g(Q).id&&!g(Me).some(e=>e.id===g(dn)?.id)&&La()}),_(()=>(g(Mt),g(G),m(be()),m(xe()),g(kn)),()=>{g(Mt)===`ready`&&g(G)&&fr(be(),xe())!==g(kn)&&Or(be(),xe())}),_(()=>(g(yt),g(Tt)),()=>{E(pe,g(yt)?rt.filter(e=>{let t=g(Tt).trim().toLowerCase();return!t||e.title.toLowerCase().includes(t)||e.tags.some(e=>e.includes(t))}):[])}),v(),L();var zo=a();r(`1oa2eo8`,e=>{u(e,la())}),h(`keydown`,te,Fo,!0),h(`pointerdown`,te,function(...e){vt?.apply(this,e)},!0);var Bo=M(zo),Vo=e=>{var t=da(),r=M(t),i=e=>{var t=ua();d(()=>R(t,`data-platform`,(m($e),z(()=>$e.platform)))),u(e,t)};N(r,e=>{ye&&$e&&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(Ft)||`Any GitHub account can join.`)},[()=>(m(ue),z(()=>ue(`/api/auth/github/start`)))]),n(`click`,s,Xn),u(e,t)},Ho=e=>{var t=_a(),r=M(t);let a;var s=B(r),h=e=>{{let t=D(()=>g(y)?g(De):null),n=D(()=>(g(w),m(Pe),g(G),g(y),z(()=>g(w)?`@${Pe(g(w),g(G)?.id)}`:g(y)?`#${g(y).name}`:void 0))),r=D(()=>(g(w),g(y),z(()=>g(w)?void 0:g(y)?.external_url))),a=D(()=>(g(i),z(()=>g(i)?.name)));Gi(e,{get channelNotifPreference(){return g(t)},get channelNotifSaving(){return g(ke)},get channelTitle(){return g(n)},get externalURL(){return g(r)},get connected(){return g(It)},get platform(){return m($e),z(()=>$e.platform)},get searchQuery(){return g(dt)},get sidebarCollapsed(){return g(cn)},get mobileNavOpen(){return g(ln)},get mobileNavigation(){return g(un)},get workspaceName(){return g(a)},onOpenWorkspaceSettings:ar,onResetSearch:Ga,onSearch:()=>void Ha(),onSearchQuery:e=>E(dt,e),onToggleSidebar:Ro,onToggleChannelNotifications:()=>void Gr()})}};N(s,e=>{ye&&$e&&e(h)});var _=S(s,2),v=B(_),b=e=>{u(e,f(`×`))},x=e=>{u(e,fa())};N(v,e=>{g(ln)?e(b):e(x,-1)}),H(_);var k=S(_,2),A=e=>{var t=pa();n(`click`,t,Lo),u(e,t)};N(k,e=>{g(ln)&&e(A)});var P=S(k,2);{let e=D(()=>ye?`/app`:`/`);Vn(P,{get workspaces(){return g(Ee)},get homeHref(){return g(e)},get selectedWorkspaceID(){return g(Y)},get workspaceName(){return g(ct)},get showWorkspaceCreate(){return g(sn)},hrefForWorkspace:e=>mr(e),onSelectWorkspace:e=>void Nr(e),onToggleWorkspaceCreate:()=>E(sn,!g(sn)),onWorkspaceName:e=>E(ct,e),onCreateWorkspace:()=>void Mr()})}var ee=S(P,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(()=>!ye),r=D(()=>(g(Wn),z(()=>g(Wn)?.title)));pr(ee,{get workspaceID(){return g(Y)},get workspaceName(){return g(e)},get workspaceIconURL(){return g(t)},get connected(){return g(It)},get sidebarCollapsed(){return g(cn)},get showHeader(){return g(n)},get channels(){return g(K)},get directConversations(){return g(q)},get recentPeople(){return g(le)},get currentUser(){return g(G)},get selectedChannelID(){return g(X)},get selectedDirectID(){return g(Z)},get selectedProfile(){return g(Le)},onToggleCollapse:Ro,hrefForChannel:e=>mr(g(Y),e),hrefForDirect:e=>mr(g(Y),e),onSelectChannel:e=>void Hr(e),onCreateChannel:()=>E(St,!0),onSelectDirect:e=>void to(e),onCreateDirect:()=>E(Ct,!0),onHideDirect:e=>void oo(e),get hiddenDirectTitle(){return g(r)},onUndoHideDirect:()=>void ao(),onOpenProfile:xo,onOpenSettings:ir,onOpenWorkspaceSettings:ar})}var te=S(ee,2),L=B(te),re=e=>{{let t=D(()=>(g(i),z(()=>g(i)?.name))),n=D(()=>(g(G),z(()=>g(G)?.id))),r=D(()=>g(Q)!==null);na(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(dt)},get sidePanelOpen(){return g(se)},get threadOpen(){return g(r)},get channelNotifPreference(){return g(De)},get channelNotifSaving(){return g(ke)},onSearchQuery:e=>E(dt,e),onSearch:()=>void Ha(),onResetSearch:Ga,onToggleThread:Po,onPinnedItems:()=>E(Mt,`no pinned items`),onToggleChannelNotifications:()=>void Gr()})}};N(L,e=>{ye||e(re)});var V=S(L,2);{let e=D(()=>g(Kt)!==`idle`),t=D(()=>(g(Q),z(()=>g(Q)?.id))),n=D(()=>(g(G),z(()=>g(G)?.id))),r=D(()=>(g(w),g(T),z(()=>!!(g(w)&&!g(T))))),i=D(()=>g(l)&&!g(Z));Ye(V,{get messages(){return g(ae)},get selectedDirect(){return g(w)},get selectedChannel(){return g(y)},get restoreState(){return g(rn)},get viewKey(){return g(nn)},get loading(){return g(on)},get unreadCount(){return g(j)},get unreadBoundarySeq(){return g(F)},get unreadBoundaryLoaded(){return g(I)},get unreadSince(){return g(ne)},get hasOlder(){return g(Xt)},get hasNewer(){return g(Zt)},get loadingOlder(){return g(Qt)},get loadingNewer(){return g($t)},get prepending(){return g(e)},get selectedThreadID(){return g(t)},get currentUserID(){return g(n)},get reactionController(){return Se},get reactionsDisabled(){return g(r)},get canDeleteAnyMessage(){return g(i)},get deletingMessageIDs(){return g(Kn)},onListRef:e=>E(Ht,e),onActivateMessageComposer:()=>E(gn,`message`),onInlineImagePointerUp:ko,onOpenProfile:xo,onReply:Pa,onOpenThread:ka,onJumpToQuote:e=>void Ra(e),onOpenImage:wo,onOpenArtifact:To,onLoadOlder:ui,onLoadNewer:e=>di(e===`wheel`),onJumpToUnread:()=>void za(),onHistorySettled:hi,onReachedBottom:Ci,onMarkRead:e=>{Ci({all:!0,seq:e})},onRetry:Ca,onDiscard:wa,onDeleteMessage:Da,get editController(){return Ce},get editScope(){return g(an)},onMessageEdited:Ea})}var ce=S(V,2);En(ce,{get turns(){return g(Cn)}});var ue=S(ce,2);{let e=D(()=>(g(G),z(()=>g(G)?.id)));xn(ue,{get entries(){return g(_n)},get currentUserID(){return g(e)}})}var W=S(ue,2),fe=B(W);On(fe,{get active(){return g(oe)}});var me=S(fe,2),he=e=>{var t=ma();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(He).kind===`error`}),c(a,(g(He),z(()=>g(He).kind===`ephemeral`?`Only visible to you`:`Command failed`))),c(s,(g(He),z(()=>g(He).text)))}),n(`click`,l,()=>E(He,null)),u(e,t)};N(me,e=>{g(He)&&e(he)});var ge=S(me,2);{let e=D(()=>(g(w),g(T),m(Pe),g(G),g(y),z(()=>g(w)&&!g(T)?`No active recipient`:g(w)?`Message ${Pe(g(w),g(G)?.id)}`:g(y)?`Message #${g(y).name}`:`Pick a channel to start`))),t=D(()=>!!g(w)&&!g(T)),n=D(()=>g(dn)&&g(fn)===(g(Z)?`dm`:`channel`)?g(dn):null),r=D(()=>g(X)?g(ze):[]);Ke(ge,{get value(){return g(ot)},get placeholder(){return g(e)},ariaLabel:`Message body`,submitLabel:`Send`,get disabled(){return g(t)},get pendingUpload(){return g(_t)},get replyTarget(){return g(n)},showUpload:!0,showToolbar:!0,get showGifPicker(){return g(yt)},get gifQuery(){return g(Tt)},get filteredGifs(){return g(pe)},get slashCommands(){return g(r)},get botCommands(){return g(O)},get mentionPeople(){return g(Ue)},onValue:e=>{let t=g(ot);E(ot,e),e.trim()&&e!==t?bo():e.trim()||Nt()},onSubmit:()=>void ya(),onKeydown:So,onFocus:()=>E(gn,`message`),onInputRef:e=>E(pn,e),onUploadFile:Za,onRemoveUpload:()=>E(_t,null),onClearReply:La,onApplyMarkdownWrap:jo,onAppendToComposer:Ao,onToggleGif:()=>E(yt,!g(yt)),onGifQuery:e=>E(Tt,e),onPickGif:Mo})}H(W),H(te);var _e=S(te,2),ve=e=>{var t=ha();hn(B(t),{get upload(){return g(qe)},onClose:Eo}),H(t),ie(t,e=>E(nt,e),()=>g(nt)),d(()=>{t.inert=g(ln),R(t,`role`,g(un)?`dialog`:`complementary`),R(t,`aria-modal`,g(un)?`true`:void 0)}),u(e,t)};N(_e,e=>{g(qe)&&e(ve)});var be=S(_e,2),xe=e=>{{let t=D(()=>g(qe)!==null),n=D(()=>g(ln)||g(qe)!==null);Ur(e,{get session(){return g(ft)},get covered(){return g(t)},get inert(){return g(n)},contextFor:Ka,onClose:Ga,onOpenResult:e=>void qa(e),onLoadMore:()=>void Wa()})}},we=e=>{var t=ga();let n;var r=B(t),a=e=>{{let t=D(()=>g(dn)&&g(fn)===`thread`?g(dn):null),n=D(()=>(g(w),g(T),z(()=>!!(g(w)&&!g(T))))),r=D(()=>g(pt)&&g(ft)?()=>void Ja():void 0),i=D(()=>(g(G),z(()=>g(G)?.id))),a=D(()=>(g(w),g(T),z(()=>!!(g(w)&&!g(T))))),o=D(()=>g(l)&&!g(Z));Qe(e,{get root(){return g(Q)},get replies(){return g(Me)},get threadState(){return g(Ie)},get replyBody(){return g(st)},get replyTarget(){return g(t)},get mentionPeople(){return g(Ue)},get replyDisabled(){return g(n)},onClose:No,get onBack(){return g(r)},onReplyBody:e=>E(st,e),onSubmitReply:()=>void Na(),onReplyKeydown:Co,onReplyFocus:()=>E(gn,`thread`),onReplyInputRef:e=>E(mn,e),get currentUserID(){return g(i)},get reactionController(){return Se},get reactionsDisabled(){return g(a)},onSetReplyTarget:Pa,onClearReply:La,get canDeleteAnyMessage(){return g(o)},get deletingMessageIDs(){return g(Kn)},onDeleteMessage:Da,get editController(){return Ce},get editScope(){return g(an)},onMessageEdited:Ea,onActivateThreadComposer:()=>E(gn,`thread`),onInlineImagePointerUp:ko,onJumpToQuote:e=>void Ra(e),onOpenImage:wo,onOpenArtifact:To})}},s=e=>{{let t=D(()=>(g(i),z(()=>g(i)?.name)));Er(e,{get profile(){return g(Le)},get currentUser(){return g(G)},get workspaceName(){return g(t)},get currentUserRole(){return g(o)},get moderation(){return g(p)},onClose:No,onEdit:ir,onMessage:e=>void no(e),onApprove:e=>void Br(e,{role:`member`,clear_timeout:!0,blocked:!1}),onTimeout:e=>void Br(e,{timeout_minutes:60}),onBlock:e=>void Br(e,{blocked:!0}),onUnblock:e=>void Br(e,{blocked:!1,clear_timeout:!0}),onSetStatus:()=>E(Mt,`status messages are coming soon`)})}},c=e=>{Pi(e,{})};N(r,e=>{g(Q)?e(a):g(Le)?e(s,1):e(c,-1)}),H(t),d(()=>{n=C(t,1,`thread`,null,n,{open:g(se),covered:g(qe)!==null}),t.inert=g(ln)||g(qe)!==null,R(t,`aria-hidden`,g(qe)?`true`:void 0),R(t,`aria-label`,g(Le)?`Profile pane`:`Thread pane`)}),u(e,t)};N(be,e=>{g(U)&&g(ft)?e(xe):e(we,-1)}),H(r),ie(r,e=>E(it,e),()=>g(it));var Te=S(r,2),Oe=e=>{{let t=D(()=>$e!=null);Mi(e,{get user(){return g(G)},get workspaces(){return g(Ee)},get initialSection(){return g(xt)},get hideCommentary(){return g(Dt)},get hideToolCalls(){return g(Ot)},get userAlign(){return g(kt)},get otherAlign(){return g(At)},get isDesktop(){return g(t)},onUserUpdated:or,onHideCommentary:tr,onHideToolCalls:nr,onUserAlign:$n,onOtherAlign:er,onBrowserNotificationsChanged:e=>E(Et,e),onClose:Io})}};N(Te,e=>{g(bt)&&g(G)&&e(Oe)});var Ae=S(Te,2),je=e=>{jn(e,{get channelName(){return g(lt)},status:``,onChannelName:e=>E(lt,e),onClose:Io,onCreate:()=>void Vr()})};N(Ae,e=>{g(St)&&e(je)});var J=S(Ae,2),Ne=e=>{{let t=D(()=>(g(G),z(()=>g(G)?.id)));Fn(e,{get people(){return g(le)},get currentUserID(){return g(t)},get memberID(){return g(ut)},onMemberID:e=>E(ut,e),onClose:Io,onStart:e=>void eo(e)})}};N(J,e=>{g(Ct)&&e(Ne)});var Fe=S(J,2),Re=e=>{{let t=D(()=>(g(Kn),g(qn),z(()=>g(Kn).has(g(qn).id))));vn(e,{get message(){return g(qn)},get deleting(){return g(t)},get error(){return g(Jn)},onClose:Io,onConfirm:()=>void Oa()})}};N(Fe,e=>{g(qn)&&e(Re)});var Be=S(Fe,2),Ve=e=>{Ge(e,{get url(){return g(We),z(()=>g(We).url)},get title(){return g(We),z(()=>g(We).title)},onClose:Io})};N(Be,e=>{g(We)&&e(Ve)}),d(()=>{a=C(r,1,`shell`,null,a,{"desktop-shell":ye,"nav-open":g(ln),"sidebar-collapsed":g(cn),"thread-open":g(se)&&!g(U),"search-open":g(U),"artifact-open":g(qe)!==null}),R(r,`data-connected`,g(It)),R(r,`data-app-ready`,g(It)&&g(Mt)===`ready`),R(_,`aria-expanded`,g(ln)),te.inert=g(ln)}),n(`click`,_,()=>E(ln,!g(ln))),u(e,t)};N(Bo,e=>{g(Pt)?e(Vo):e(Ho,-1)}),u(e,zo),A()}U([`click`]);export{ca as n,va as t}; \ 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.BPwHOykE.js deleted file mode 100644 index 28835b17..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/11.BPwHOykE.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},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/4.DxP4pTu5.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.DxP4pTu5.js new file mode 100644 index 00000000..ca6b45b4 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.DxP4pTu5.js @@ -0,0 +1 @@ +import"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import"../chunks/amAOfu1G.js";import{t as e}from"../chunks/DcXiw1Ro.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.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/index.html b/apps/api/internal/webassets/dist/index.html deleted file mode 100644 index d4594e0e..00000000 --- a/apps/api/internal/webassets/dist/index.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - ClickClack - - - - - - - - - - - - - - - - - - - - -
          - -
          - - diff --git a/apps/web/src/ChatApp.svelte b/apps/web/src/ChatApp.svelte index 8f204253..49492f62 100644 --- a/apps/web/src/ChatApp.svelte +++ b/apps/web/src/ChatApp.svelte @@ -50,12 +50,13 @@ import DesktopTitlebar from "./components/topbar/DesktopTitlebar.svelte"; import Topbar from "./components/topbar/Topbar.svelte"; import { workspaceSettingsPath, type AccountSettingsSectionId } from "./lib/settings"; - import type { Channel, DirectConversation, MemberModeration, Message, MessagePage, RealtimeEvent, RouteTarget, SearchResult, SearchScope, SearchSession, SlashCommand, ThreadState, Upload, User, Workspace, WorkspaceBotCommand } from "./lib/types"; + import type { Channel, ChannelNotificationPreference, DirectConversation, MemberModeration, Message, MessagePage, RealtimeEvent, RouteTarget, SearchResult, SearchScope, SearchSession, SlashCommand, ThreadState, Upload, User, Workspace, WorkspaceBotCommand } from "./lib/types"; import { dispatchSlashCommand, findRegisteredCommand, listBotCommands, splitSlashDraft } from "./lib/commands"; const LIVE_EDGE_TOLERANCE_PX = 96; const LAST_CHANNEL_STORAGE_PREFIX = "clickclack:last-channel:v1:"; const BROWSER_NOTIFICATIONS_STORAGE_PREFIX = "clickclack:browser-notifications-enabled:v1:"; + const CHANNEL_NOTIFICATION_STORAGE_PREFIX = "clickclack:channel-notification:v1:"; const MOBILE_NAV_MEDIA_QUERY = "(max-width: 820px)"; const SHOW_AGENT_ACTIVITY_STORAGE_KEY = "clickclack:show-agent-activity:v1"; const HIDE_COMMENTARY_STORAGE_KEY = "clickclack:hide-commentary:v1"; @@ -73,6 +74,9 @@ const editController = new MessageEditController(revealEditSession); let workspaces: Workspace[] = []; let channels: Channel[] = []; + let channelNotifPreference: ChannelNotificationPreference | null = null; + let channelNotifPreferences = new Map(); + let channelNotifSaving = false; let directConversations: DirectConversation[] = []; let messages: Message[] = []; let replies: Message[] = []; @@ -182,6 +186,7 @@ let moderationMembersLoadSerial = 0; let slashCommandsLoadSerial = 0; let botCommandsLoadSerial = 0; + let channelNotifLoadSerial = 0; let realtimeReconcileSerial = 0; let slashDispatchGeneration = 0; let hiddenDirectUndo: HiddenDirectUndo | null = null; @@ -216,6 +221,7 @@ ? moderationMembers.find((member) => member.user.id === selectedProfile?.id) : undefined; $: selectedChannel = channels.find((channel) => channel.id === selectedChannelID); + $: void loadChannelNotifPreference(selectedChannelID, selectedDirectID); $: selectedDirect = directConversations.find((conversation) => conversation.id === selectedDirectID); $: selectedDirectWritable = selectedDirect?.can_send ?? true; $: activeConversationKey = selectedDirectID || selectedChannelID || ""; @@ -1003,6 +1009,53 @@ await navigateToApp(selectedWorkspaceID, channelID); } + async function loadChannelNotifPreference(channelID: string, directID: string) { + const serial = ++channelNotifLoadSerial; + channelNotifPreference = null; + if (!channelID || directID) return; + try { + const data = await api<{ preference: ChannelNotificationPreference }>( + `/api/channels/${channelID}/notification-settings`, + ); + if (serial !== channelNotifLoadSerial || channelID !== selectedChannelID || selectedDirectID) return; + rememberChannelNotifPreference(channelID, data.preference); + channelNotifPreference = data.preference; + } catch { + if (serial === channelNotifLoadSerial && channelID === selectedChannelID && !selectedDirectID) { + const fallback = storedChannelNotifPreference(channelID) || "all"; + rememberChannelNotifPreference(channelID, fallback); + channelNotifPreference = fallback; + } + } + } + + async function cycleChannelNotifPreference() { + const channelID = selectedChannelID; + if (!channelID || selectedDirectID || channelNotifSaving || !channelNotifPreference) return; + const serial = ++channelNotifLoadSerial; + const cycle: ChannelNotificationPreference[] = ["all", "mentions", "muted"]; + const current = channelNotifPreference; + const next = cycle[(cycle.indexOf(current) + 1) % cycle.length]; + channelNotifPreference = next; + rememberChannelNotifPreference(channelID, next); + channelNotifSaving = true; + try { + await api(`/api/channels/${channelID}/notification-settings`, { + method: "PATCH", + body: JSON.stringify({ preference: next }), + }); + } catch { + if (channelNotifPreferences.get(channelID) === next) { + rememberChannelNotifPreference(channelID, current); + } + if (serial === channelNotifLoadSerial && channelID === selectedChannelID && !selectedDirectID) { + channelNotifPreference = current; + } + } finally { + channelNotifSaving = false; + } + } + function isCurrentMessageLoad(generation: number, targetKey: string): boolean { return generation === messageLoadGeneration && currentConversationKey() === targetKey; } @@ -1617,22 +1670,90 @@ }; } - function maybeShowBrowserNotification(event: RealtimeEvent, affectsActiveView: boolean) { - if (event.type !== "message.created") return; + async function notificationPreferenceForChannel(channelID: string): Promise { + try { + const data = await api<{ preference: ChannelNotificationPreference }>( + `/api/channels/${channelID}/notification-settings`, + ); + rememberChannelNotifPreference(channelID, data.preference); + if (channelID === selectedChannelID && !selectedDirectID && !channelNotifSaving) { + channelNotifPreference = data.preference; + } + return data.preference; + } catch { + // Preserve a last-known restrictive choice; otherwise retain the historical all default. + return channelNotifPreferences.get(channelID) || storedChannelNotifPreference(channelID) || "all"; + } + } + + function channelNotifStorageKey(channelID: string): string { + return user?.id && channelID ? `${CHANNEL_NOTIFICATION_STORAGE_PREFIX}${user.id}:${channelID}` : ""; + } + + function storedChannelNotifPreference(channelID: string): ChannelNotificationPreference | null { + const key = channelNotifStorageKey(channelID); + if (!key) return null; + try { + const value = window.localStorage.getItem(key); + return value === "all" || value === "mentions" || value === "muted" ? value : null; + } catch { + return null; + } + } + + function rememberChannelNotifPreference( + channelID: string, + preference: ChannelNotificationPreference, + ) { + channelNotifPreferences = new Map(channelNotifPreferences).set(channelID, preference); + const key = channelNotifStorageKey(channelID); + if (!key) return; + try { + window.localStorage.setItem(key, preference); + } catch { + // The in-memory value remains authoritative for this session. + } + } + + async function maybeShowBrowserNotification(event: RealtimeEvent, affectsActiveView: boolean) { + if (event.type !== "message.created" && event.type !== "thread.reply_created") return; const payload = event.payload as Record; const kind = typeof payload.kind === "string" ? payload.kind : ""; if (kind === "agent_commentary" || kind === "agent_tool") return; if (!browserNotificationsEnabled) return; if (document.visibilityState === "visible" && affectsActiveView) return; - const authorID = typeof payload.author_id === "string" ? payload.author_id : ""; + const messageID = + typeof payload.message_id === "string" + ? payload.message_id + : `${event.channel_id || ""}:${event.seq || Date.now()}`; + let authorID = typeof payload.author_id === "string" ? payload.author_id : ""; + let rawBody = typeof payload.body === "string" ? payload.body : "New message"; + if (event.type === "thread.reply_created" && typeof payload.message_id === "string") { + try { + const data = await api<{ message: Message }>(`/api/messages/${payload.message_id}`); + authorID = data.message.author_id; + rawBody = data.message.body; + } catch { + // Keep the durable event metadata fallback when message hydration fails. + } + } if (authorID && authorID === user?.id) return; const { channelID, dmID } = messageEventScope(event); + if (channelID) { + const preference = await notificationPreferenceForChannel(channelID); + if (!preference) return; + if (!browserNotificationsEnabled) return; + const stillAffectsActiveView = + (Boolean(channelID) && channelID === selectedChannelID) || + (Boolean(dmID) && dmID === selectedDirectID); + if (document.visibilityState === "visible" && stillAffectsActiveView) return; + if (preference === "muted") return; + if (preference === "mentions" && !event.mentioned_user_ids?.includes(user?.id || "")) return; + } const channel = channels.find((candidate) => candidate.id === channelID); const author = lookupUser(authorID); const authorName = author?.display_name || "ClickClack"; const place = channel ? `#${channelDisplayTitle(channel)}` : "Direct message"; - const rawBody = typeof payload.body === "string" ? payload.body : "New message"; - const messageID = typeof payload.message_id === "string" ? payload.message_id : `${channelID || dmID}:${event.seq || Date.now()}`; if (desktop) { void desktop.notify({ body: notificationBody(rawBody), @@ -2807,7 +2928,7 @@ reactionController.applyEvent(event); return; } - maybeShowBrowserNotification(event, affectsActiveView); + void maybeShowBrowserNotification(event, affectsActiveView); if (event.type === "message.created" && !affectsActiveView) { const loadedConversation = await loadUnknownDirectConversationFromEvent(event); if (!loadedConversation) handleUnreadBump(event); @@ -3431,6 +3552,8 @@ > {#if integratedTitleBar && desktop} void searchMessages()} onSearchQuery={(value) => (searchQuery = value)} onToggleSidebar={handleSidebarCollapse} + onToggleChannelNotifications={() => void cycleChannelNotifPreference()} /> {/if} @@ -3528,11 +3652,14 @@ {searchQuery} {sidePanelOpen} threadOpen={selectedThread !== null} + {channelNotifPreference} + {channelNotifSaving} onSearchQuery={(value) => (searchQuery = value)} onSearch={() => void searchMessages()} onResetSearch={resetSearch} onToggleThread={toggleSidePanelFromTopbar} onPinnedItems={() => (status = "no pinned items")} + onToggleChannelNotifications={() => void cycleChannelNotifPreference()} /> {/if} diff --git a/apps/web/src/components/topbar/DesktopTitlebar.svelte b/apps/web/src/components/topbar/DesktopTitlebar.svelte index 5e675950..9efdc08e 100644 --- a/apps/web/src/components/topbar/DesktopTitlebar.svelte +++ b/apps/web/src/components/topbar/DesktopTitlebar.svelte @@ -1,7 +1,10 @@ + + + + + + + + + + + + + + + + +
          + +
          + + diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/DcXiw1Ro.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/DcXiw1Ro.js deleted file mode 100644 index 557439eb..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/DcXiw1Ro.js +++ /dev/null @@ -1,8 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DGD3aKTU.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 A,h as j,it as M,j as N,k as P,lt as F,m as I,n as ee,nt as te,o as L,ot as ne,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"./CySd1wef.js";import{t as ce}from"./0MLs41xV.js";import{t as le}from"./HclGiUj8.js";import"./xihTtKlq.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,i as ge,l as _e,m as ve,n as ye,o as be,p as xe,r as G,s as Se,t as Ce,u as we}from"./CDuOLCxG.js";import"./D7HZDAvv.js";import{a as Te,i as Ee,n as K,t as De}from"./Qo16U5GS.js";import{t as Oe}from"./OQjxVT6U.js";import"./amAOfu1G.js";import{A as ke,C as q,D as Ae,E as je,F as J,I as Me,L as Ne,M as Pe,N as Y,O as X,P as Z,T as Fe,_ as Q,d as Ie,f as Le,g as Re,h as ze,j as Be,k as Ve,l as He,m as Ue,p as We,u as Ge,v as Ke,w as qe,z as Je}from"./C5AMwlHa.js";import{t as Ye}from"./Cmuxu8Nw.js";import{p as Xe,r as Ze}from"./DFObNPU2.js";import{t as Qe}from"./B_KT8vL7.js";var $e=typeof window>`u`?void 0:window.clickclackDesktop;async function et(e){return e.type.startsWith(`image/`)?tt(e):e.type.startsWith(`video/`)?nt(e):{width:0,height:0,durationMS:0}}function tt(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 nt(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 rt=[{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`]}],it=new Set([`agent_commentary`,`agent_tool`]),at=180*1e3;function ot(e){return e.kind!==void 0&&it.has(e.kind)}function st(e){return e.kind===void 0||e.kind===`message`}function ct(e){return e.author?.id||e.author_id||``}function lt(e){return`${e.channel_id?`channel:${e.channel_id}`:`direct:${e.direct_conversation_id||``}`}\u0000${ct(e)}\u0000${e.turn_id||e.id}`}function ut(e){let t=e.trim(),n=``,r=``,i=t.match(/^\*\*([^*]+)\*\*\s*\n+([\s\S]+)$/),a=t.match(/^\*\*([^*]+)\*\*$/);if(i)n=i[1].trim(),r=ft(i[2]);else if(a)n=a[1].trim();else return dt(t.replace(/\*\*/g,``).trim(),``);return dt(n,r)}function dt(e,t){let n=ft(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 ft(e){return e.replace(/\s+/g,` `).trim()}function pt(e,t,n,r){let i=[];for(let e of t)if(e.kind===`agent_tool`){if(r.hideToolCalls)continue;let t=ut(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 mt(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>at&&(r=!0)}a.set(t,r)}let o=[];for(let n=0;n=Et)&&(Dt.active=!0,Dt.lastPingAt=t,At(e,`typing.started`)),Dt.idleTimer&&window.clearTimeout(Dt.idleTimer),Dt.idleTimer=window.setTimeout(()=>{Dt&&=(Mt(Dt),null)},Tt)}async function Mt(e){e.idleTimer&&window.clearTimeout(e.idleTimer),e.active&&await At(e.scope,`typing.stopped`)}function Nt(){Dt&&=(Mt(Dt),null)}var Pt=2e3,Ft=2*1024*1024;function It(e){let t=document.createElement(`span`);return t.textContent=e,t.innerHTML}function Lt(e,t,n){return!t||e.length>262144?Promise.resolve(It(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(It(e))),Pt);if(a.onmessage=t=>{let n=t.data;`error`in n?s(()=>r(It(e))):s(()=>r(n.html))},a.onerror=()=>s(()=>r(It(e))),n.addEventListener(`abort`,c,{once:!0}),n.aborted){c();return}a.postMessage({source:e,language:t,outputLimit:Ft})})}var Rt=5e3;function zt(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.`))),Rt);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 Bt=16*1024*1024,Vt=1e4,Ht=1e4,Ut=`This PDF page is too large to preview safely. Download the original to open it locally.`;function Wt(e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<1||t<1||e>8192||t>8192||e*t>16777216)throw Error(Ut)}var Gt=``+new URL(`../assets/pdf.worker.CPbhI6B3.mjs`,import.meta.url).href,Kt=o(`
          `),qt=o(`

          Preparing a safe preview.

          `),Jt=o(``),Yt=o(`
          No preview for this file type

          You can still download the original file.

          Download original
          `),Xt=o(`
          `,1),Zt=o(` `),Qt=o(` `),$t=o(` `),en=o(` `),tn=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.

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

          `),on=o(`

          `),sn=o(`

          `),cn=o(`

          Some slide content was omitted by preview limits.

          `),ln=o(`

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

          `,1),un=o(`
          `),dn=o(`
          `),fn=o(`
          `),pn=o(`
           
          `),mn=o(`
          `,1);function hn(e,r){b(r,!0);let o=F(null),s=k(()=>Re(r.upload)),f=F(`preview`),p=F(`idle`),m=F(``),h=F(``),_=F(``),v=F(!1),y=F(``),x=F(null),T=F(1),D=F(1),O=F(!1),j=F(``),I=null,te=!1,L=F(null),ne=F(0),z=F(null),re=F(0),V=1e4,ae=64*1024,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 ${q(r.upload.byte_size)}. Preview is limited to ${q(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=Ie(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 ${q(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){I?.(),I=null,E(x,null),E(h,``),E(_,``),E(v,!1),E(y,``),E(T,1),E(D,1),E(j,``),te=!1,E(L,null),E(ne,0),E(z,null),E(re,0),E(f,`preview`),E(m,``);let t=ze(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(`./DGD3aKTU.js`),__vite__mapDeps([0,1]),import.meta.url);if(e.aborted)return;n.GlobalWorkerOptions.workerSrc=Gt;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.`))},Vt)}),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.`&&(te=!0,I?.(),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;I=()=>{f||(f=!0,l.removeEventListener(`message`,u),d&&d.destroy(),a.destroy(),E(x,null))};let h=n.getDocument({data:c,maxImageSize:Bt,canvasMaxAreaInBytes:Bt*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 zt(g(s),n,e);if(e.aborted)return;E(L,t,!0)}else{let t=await zt(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 Lt(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;I?.(),I=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(j,``),(async()=>{try{if(l=window.setTimeout(()=>{r||(i?.cancel(),c?.cancel(),I?.(),E(p,`error`),E(m,`PDF page rendering took too long and was stopped.`))},Ht),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(j,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));Wt(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,te)throw Error(`PDF page content could not be rendered completely within safety limits.`)}catch(e){!r&&!(e instanceof Error&&e.name===`RenderingCancelledException`)&&(I?.(),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()}}),ee(()=>I?.());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 G=k(()=>{let e=g(L)?.sheets[g(ne)];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 Se=mn(),Ce=M(Se),we=B(Ce),Te=B(we),Ee=B(Te,!0);H(Te);var K=S(Te,2),De=B(K,!0);H(K);var Oe=S(K,2),ke=B(Oe,!0);H(Oe),H(we);var Ae=S(we,2),je=B(Ae),J=e=>{var t=Kt(),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)};N(je,e=>{g(ue)&&e(J)});var Me=S(je,2),Ne=S(Me,2);H(Ae),H(Ce);var Pe=S(Ce,2);let Y;var X=B(Pe),Z=e=>{var t=qt(),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)},Fe=e=>{var t=Jt(),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)},Le=e=>{var t=Yt(),n=S(B(t),6);H(t),d(()=>{R(n,`href`,g(ce)),R(n,`download`,r.upload.filename)}),u(e,t)},Be=e=>{var t=Xt(),r=M(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(j))},[()=>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)},Ve=e=>{var t=rn(),r=M(t),i=B(r),a=B(i);H(i);var o=S(i,4),s=e=>{var t=Zt(),n=B(t);H(t),d(()=>c(n,`${g(L).hiddenSheets??``} hidden ${g(L).hiddenSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};N(o,e=>{g(L).hiddenSheets>0&&e(s)});var f=S(o,2),p=e=>{var t=Zt(),n=B(t);H(t),d(()=>c(n,`${g(L).unsupportedSheets??``} non-worksheet ${g(L).unsupportedSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};N(f,e=>{g(L).unsupportedSheets>0&&e(p)}),H(r);var m=S(r,2),h=B(m),_=B(h),v=B(_);l(S(B(v)),17,()=>g(G).columns,P,(e,t)=>{var n=Qt(),r=B(n,!0);H(n),d(()=>c(r,g(t))),u(e,n)}),H(v),H(_);var y=S(_);l(y,21,()=>g(G).rows,P,(e,t)=>{var n=en(),r=B(n),i=B(r,!0);H(r),l(S(r),17,()=>g(t).values,P,(e,t)=>{var n=$t(),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(y),H(h);var b=S(h,2),x=e=>{u(e,tn())};N(b,e=>{(g(G).clipped||g(L).sheets[g(ne)].truncated)&&e(x)}),H(m);var w=S(m,2);l(w,21,()=>g(L).sheets,P,(e,t,r)=>{var i=nn();let a;var o=B(i,!0);H(i),d(()=>{R(i,`aria-selected`,g(ne)===r),a=C(i,1,``,null,a,{active:g(ne)===r}),c(o,g(t).name)}),n(`click`,i,()=>E(ne,r,!0)),u(e,i)}),H(w),d(()=>{c(a,`${g(L).sheets.length??``} ${g(L).sheets.length===1?`sheet`:`sheets`}`),R(m,`aria-label`,`${g(L).sheets[g(ne)].name} worksheet`)}),u(e,t)},He=e=>{var t=ln(),r=M(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,P,(e,t,n)=>{var r=a(),i=M(r),o=e=>{var n=an(),r=B(n,!0);H(n),d(()=>c(r,g(t))),u(e,n)},s=e=>{var n=on(),r=B(n,!0);H(n),d(()=>c(r,g(t))),u(e,n)};N(i,e=>{n===0?e(o):e(s,-1)}),u(e,r)}),H(m);var h=S(m,4),_=e=>{var t=sn(),n=B(t);H(t),d(()=>c(n,`${g(z).hiddenSlides??``} hidden ${g(z).hiddenSlides===1?`slide`:`slides`} omitted.`)),u(e,t)};N(h,e=>{g(z).hiddenSlides>0&&e(_)});var v=S(h,2),y=e=>{u(e,cn())};N(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=un();i(t,()=>g(_),!0),H(t),u(e,t)},Ke=e=>{var t=dn();i(t,()=>g(_),!0),H(t),u(e,t)},Je=e=>{var t=fn(),n=B(t);i(n,()=>g(y),!0),H(n),H(t),u(e,t)},Ye=e=>{var t=pn(),n=B(t),r=B(n,!0);H(n),H(t),d(()=>c(r,g(h))),u(e,t)};N(X,e=>{g(p)===`loading`?e(Z):g(p)===`error`?e(Fe,1):g(s)===`unsupported`?e(Le,2):g(s)===`pdf`&&g(x)?e(Be,3):g(s)===`spreadsheet`&&g(L)?e(Ve,4):g(s)===`presentation`&&g(z)?e(He,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(Pe),d(e=>{c(Ee,g(U)),R(K,`title`,r.upload.filename),c(De,r.upload.filename),c(ke,e),R(Me,`href`,g(ce)),R(Me,`download`,r.upload.filename),R(Me,`aria-label`,`Download ${r.upload.filename}`),Y=C(Pe,1,`artifact-viewer__body`,null,Y,{"is-pdf":g(s)===`pdf`,"is-office":g(s)===`spreadsheet`||g(s)===`presentation`})},[()=>q(r.upload.byte_size)]),n(`click`,Ne,function(...e){r.onClose?.apply(this,e)}),u(e,Se),A()}U([`click`]);var gn=o(``),_n=o(``);function vn(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=_n(),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);He(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),j=B(O,!0);H(O),H(y),H(_);var M=S(_,2),P=e=>{var t=gn(),n=B(t,!0);H(t),d(()=>c(n,i())),u(e,t)};N(M,e=>{i()&&e(P)});var F=S(M,2),I=B(F),ee=S(I,2),te=B(ee,!0);H(ee),H(F),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(j,t.message.body),I.disabled=r(),ee.disabled=r(),c(te,r()?`Deleting...`:`Delete`)},[()=>Le(t.message.created_at)]),n(`click`,l,o),n(`click`,m,o),n(`click`,I,o),n(`click`,ee,function(...e){t.onConfirm?.apply(this,e)}),u(e,s),A()}U([`click`]);var yn=6500,bn=o(`
          `);function xn(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=bn();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),A()}var Sn=45e3,Cn=o(`
          `),wn=o(`
          `),Tn=o(`
          `);function En(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=M(i),s=e=>{var i=Tn();l(i,21,()=>t.turns,e=>e.turnId,(e,t)=>{var i=wn();l(i,21,()=>g(t).lines,e=>e.id,(e,t)=>{var i=Cn();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)};N(o,e=>{t.turns.length>0&&e(s)}),u(e,i),A()}var Dn=o(`
          Agent is responding…
          `);function On(e,t){var n=Dn();let r;d(()=>r=C(n,1,`typing-indicator agent-responding`,null,r,{visible:t.active})),u(e,n)}var kn=o(`

          `),An=o(``);function jn(e,t){b(t,!0);var r=An(),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=kn(),r=B(n,!0);H(n),d(()=>c(r,t.status)),u(e,n)};N(m,e=>{t.status&&e(g)});var _=S(m,2),v=B(_);w(2),H(_),H(l),H(a),H(r),d(()=>j(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),A()}U([`click`,`input`]);var Mn=o(``),Nn=o(`
          No matching people yet
          `),Pn=o(``);function Fn(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=Pn(),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=Mn(),a=B(i);He(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)},[()=>Y(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,Nn())};N(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(()=>j(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),A()}U([`click`,`input`]);var In=o(``),Ln=o(` `),Rn=o(`
          `),zn=o(`
          `),Bn=o(``);function Vn(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=Bn(),o=B(a),s=S(o,4),f=B(s);l(f,17,()=>t.workspaces,e=>e.id,(e,r)=>{var a=Rn();let o;var s=B(a),l=B(s),f=e=>{var t=In();d(e=>R(t,`src`,e),[()=>de(g(r).icon_url)]),u(e,t)},p=e=>{var t=Ln(),n=B(t,!0);H(t),d(e=>c(n,e),[()=>Me(g(r).name)]),u(e,t)};N(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=zn(),i=B(r);O(i),H(r),d(()=>j(i,t.workspaceName)),h(`submit`,r,e=>{e.preventDefault(),t.onCreateWorkspace()}),n(`input`,i,e=>t.onWorkspaceName(e.currentTarget.value)),u(e,r)};N(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),A()}U([`click`,`input`]);var Hn=o(``),Un=o(` `,1),Wn=o(``),Gn=o(` `),Kn=o(``),qn=o(`
          `),Jn=o(``),Yn=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),Xn=o(`
          `);function Zn(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=Kn();let x;var D=B(b),O=e=>{var r=Un(),o=M(r),s=S(o,2),c=e=>{var r=Hn(),a=B(r),o=S(a,2);H(r),ie(r,e=>E(T,e),()=>g(T)),d(()=>{R(r,`aria-label`,`Move #${t().name}`),a.disabled=g(f)<=0,o.disabled=g(f)<0||g(f)>=i().length-1}),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)};N(s,e=>{g(w)===t().id&&e(c)}),d(()=>{R(o,`aria-label`,`Move #${t().name}`),R(o,`aria-expanded`,g(w)===t().id)}),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)};N(D,e=>{s()&&e(O)});var A=S(D,2);let j;var P=S(B(A),2),F=B(P,!0);H(P);var I=S(P,2),ee=e=>{u(e,Wn())};N(I,e=>{t().external_managed&&e(ee)});var te=S(I,2),L=e=>{var t=Gn(),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)};N(te,e=>{g(l)>0&&!(t().id===r.selectedChannelID&&!r.selectedDirectID)&&e(L)}),H(A),H(b),d(e=>{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(A,`href`,e),j=C(A,1,`nav-item channel`,null,j,{active:t().id===r.selectedChannelID&&!r.selectedDirectID,"has-unread":g(l)>0&&!(t().id===r.selectedChannelID&&!r.selectedDirectID)}),c(F,t().name)},[()=>r.hrefForChannel(t().id)]),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`,A,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=qn();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=F(``),_=F(``),v=F(``),y=F(!0),x=F(!1),w=F(``),T=F(void 0),D,O=F(``),j=F(ne({})),P=k(()=>r.channels.filter(e=>!e.archived_at)),I=k(()=>r.channels.filter(e=>!!e.archived_at)),ee=k(()=>g(P).filter(e=>!e.sidebar_section?.trim())),L=k(()=>{let e=new Map;for(let t of g(P)){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(j)[e];return typeof t==`boolean`?t:e!==f}function se(e){if(E(j,{...g(j),[e]:!oe(e)},!0),r.workspaceID)try{window.localStorage.setItem(V(r.workspaceID),JSON.stringify(g(j)))}catch{}}function U(e){e.key===V(r.workspaceID)&&E(j,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 #${c.name} 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(j,ae(r.workspaceID),!0)}),t(()=>{r.expanded||(E(w,``),pe(),E(x,!1))});var ye=Xn();h(`storage`,te,U);let be;var xe=B(ye),G=B(xe),Se=S(G,2);H(xe);var Ce=S(xe,2),we=B(Ce),Te=e=>{var t=Yn(),n=S(M(t),2);l(n,17,()=>g(ee),e=>e.id,(e,t)=>{i(e,()=>g(t),()=>g(ee),()=>`unsectioned`,()=>!1,()=>!0)});var a=S(n,2);l(a,19,()=>g(L),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(I)}),()=>`sidebar-archived-channels`,()=>!0)};N(s,e=>{g(I).length>0&&e(c)});var d=S(s,2),p=e=>{u(e,Jn())};N(d,e=>{r.channels.length===0&&e(p)}),u(e,t)},Ee=e=>{var t=a();l(M(t),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)};N(we,e=>{r.expanded?e(Te):e(Ee,-1)}),H(Ce);var K=S(Ce,2),De=B(K,!0);H(K),H(ye),d(()=>{be=C(ye,1,`nav-section`,null,be,{collapsed:!r.expanded}),R(G,`aria-expanded`,r.expanded),R(Ce,`hidden`,!r.expanded&&g(z).length===0),c(De,g(O))}),n(`click`,G,function(...e){r.onToggle?.apply(this,e)}),n(`click`,Se,function(...e){r.onCreateChannel?.apply(this,e)}),u(e,ye),A()}U([`focusout`,`click`,`keydown`]);var Qn=o(` `),$n=o(``),er=o(``),tr=o(`
          `),nr=o(``),rr=o(`
          `),ir=o(`
          `);function ar(e,t){b(t,!0);let r=F(``),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=ir();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(()=>Be(g(i),t.currentUserID)),f=k(()=>g(i).unread_count||0),p=k(()=>g(i).id===t.selectedDirectID);var m=tr();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(()=>Z(g(l))?void 0:g(l)?.avatar_url);He(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=Qn(),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=>{u(e,$n())};N(w,e=>{g(f)>0&&!g(p)?e(T):e(E,-1)}),H(_);var D=S(_,2),O=S(D,2),A=e=>{var r=er(),a=B(r);H(r),n(`click`,a,e=>{e.preventDefault(),e.stopPropagation(),s(),t.onHideDirect(g(i).id)}),u(e,r)};N(O,e=>{g(r)===g(i).id&&e(A)}),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),()=>Pe(g(i),t.currentUserID),()=>`Direct message actions for ${Pe(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,nr())};N(x,e=>{t.expanded&&t.conversations.length===0&&e(w)});var T=S(x,2),D=e=>{var r=rr(),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)};N(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),A()}U([`click`,`keydown`]);var or=o(``),sr=o(`Connecting…`),cr=o(`
          `),lr=o(` `),ur=o(``),dr=o(``),fr=o(``);function pr(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=F(ne({...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=F(ne([]));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 j(e){!r.workspaceID||!r.currentUser?.id||e.key===y(r.workspaceID,r.currentUser.id)&&E(v,T(e.newValue),!0)}let M=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 P(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}var I=fr();h(`storage`,te,j);var ee=B(I),L=e=>{var t=cr(),i=B(t),a=B(i),o=e=>{var t=or();d(e=>R(t,`src`,e),[()=>de(r.workspaceIconURL)]),u(e,t)};N(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=>{u(e,sr())};N(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)};N(ee,e=>{i()&&e(L)});var z=S(ee,2),re=B(z);Zn(re,{get workspaceID(){return r.workspaceID},get expanded(){return g(s).channels},get channels(){return g(M)},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);ar(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(()=>ke(r.directConversations,g(t).id));var a=lr();let o;var s=B(a);He(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(!P(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=>{u(e,ur())};N(le,e=>{r.recentPeople.length===0&&e(ue)}),H(U),H(V),H(z);var W=S(z,2),fe=e=>{var t=dr(),i=B(t);He(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} ${Y(r.currentUser.handle)}`,()=>r.currentUser.handle?Y(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)};N(W,e=>{r.currentUser&&e(fe)}),H(I),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,I),A()}U([`click`,`contextmenu`]);var mr=o(` `),hr=o(` `),gr=o(``),_r=o(``),vr=o(`
          User kind
          `),yr=o(`

          `),br=o(`

          Blocked.

          `),xr=o(``),Sr=o(``),Cr=o(``),wr=o(`
          Moderation
          `),Tr=o(`

          Profile

          Active
          Contact information
          Handle
          User ID
          About

          `,1);function Er(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=Tr(),p=M(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);He(B(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`}),H(x);var C=S(x,2),w=B(C),T=B(w),E=B(T),D=B(E,!0);H(E);var O=S(E,2),j=e=>{var t=mr(),n=B(t,!0);H(t),d(()=>c(n,g(r))),u(e,t)};N(O,e=>{g(r)&&e(j)});var P=S(O,2),F=e=>{var n=hr(),r=B(n,!0);H(n),d(e=>c(r,e),[()=>Y(t.profile.handle)]),u(e,n)};N(P,e=>{t.profile.handle&&e(F)}),H(T);var I=S(T,2),ee=e=>{var r=gr();n(`click`,r,function(...e){t.onEdit?.apply(this,e)}),u(e,r)};N(I,e=>{t.currentUser?.id===t.profile.id&&e(ee)}),H(w);var te=S(w,4),L=B(te),ne=e=>{var r=_r();n(`click`,r,()=>t.onMessage(t.profile.id)),u(e,r)};N(L,e=>{t.currentUser?.id!==t.profile.id&&e(ne)});var R=S(L,2);H(te);var z=S(te,2),re=B(z),ie=S(B(re),2),V=e=>{var r=gr();n(`click`,r,function(...e){t.onEdit?.apply(this,e)}),u(e,r)};N(ie,e=>{t.currentUser?.id===t.profile.id&&e(V)}),H(re);var ae=S(re,2),oe=S(B(ae),2),U=S(B(oe),2),ce=B(U,!0);H(U),H(oe),H(ae);var le=S(ae,2),ue=S(B(le),2),de=S(B(ue),2),W=B(de,!0);H(de),H(ue),H(le);var fe=S(le,2),pe=e=>{var t=vr(),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)};N(fe,e=>{t.profile.kind===`bot`&&e(pe)}),H(z);var me=S(z,2),he=S(B(me),2),ge=B(he);H(he),H(me);var _e=S(me,2),ve=e=>{var r=wr(),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=yr(),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)};N(f,e=>{t.moderation.role===`guest`&&t.moderation.post_limit>0&&e(p)});var m=S(f,2),h=e=>{var n=yr(),r=B(n);H(n),d(e=>c(r,`Timed out until ${e??``}.`),[()=>new Date(t.moderation.timeout_until).toLocaleString()]),u(e,n)};N(m,e=>{t.moderation.timeout_until&&e(h)});var _=S(m,2),v=e=>{u(e,br())};N(_,e=>{t.moderation.blocked_at&&e(v)});var y=S(_,2),b=B(y),x=e=>{var r=xr();n(`click`,r,()=>t.onApprove(t.profile.id)),u(e,r)};N(b,e=>{t.moderation.role===`guest`&&e(x)});var C=S(b,2),w=S(C,2),T=e=>{var r=Sr();n(`click`,r,()=>t.onUnblock(t.profile.id)),u(e,r)},E=e=>{var r=Cr();n(`click`,r,()=>t.onBlock(t.profile.id)),u(e,r)};N(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)};N(_e,e=>{g(o)&&t.moderation&&e(ve)}),H(C),H(y),d((e,n)=>{c(_,t.profile.display_name),se(x,`--hue: ${e??``}deg`),c(D,t.profile.display_name),c(ce,n),c(W,t.profile.id),c(ge,`Member of ${(t.workspaceName||`this workspace`)??``}.`)},[()=>X(t.profile.id),()=>t.profile.handle?Y(t.profile.handle):`No handle set`]),n(`click`,v,function(...e){t.onClose?.apply(this,e)}),n(`click`,R,function(...e){t.onSetStatus?.apply(this,e)}),u(e,f),A()}U([`click`]);var Dr=o(` `,1),Or=o(`
          `),kr=o(`
          We couldn’t search messages

          `),Ar=o(`
          No messages found

          Try another word or phrase.

          `),jr=o(`deleted bot`),Mr=o(` `),Nr=o(` `),Pr=o(` `),Fr=o(` Reply in thread`),Ir=o(` `),Lr=o(`
        • `),Rr=o(``),zr=o(``),Br=o(``),Vr=o(`
            `,1),Hr=o(``);function Ur(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…`))},te=e=>{var n=Dr(),r=M(n),i=S(r),a=e=>{var n=f();d(()=>c(n,`in ${t.session.scope.label??``}`)),u(e,n)};N(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)},L=e=>{u(e,f(`Search unavailable`))};N(I,e=>{t.session.state===`loading`?e(ee):t.session.state===`ready`?e(te,1):t.session.state===`error`&&e(L,2)}),H(F);var ne=S(F,2),z=B(ne),re=e=>{u(e,Or())},ie=e=>{var n=kr(),r=S(B(n),4),i=B(r,!0);H(r),H(n),d(()=>c(i,t.session.error)),u(e,n)},V=e=>{u(e,Ar())},ae=e=>{var r=Vr(),i=M(r);l(i,21,()=>t.session.results,e=>e.id,(e,r)=>{let i=k(()=>t.contextFor(g(r)));var o=Lr(),s=B(o);let p;var _=B(s);{let e=k(()=>Z(g(r).author)?void 0:g(r).author.avatar_url);He(_,{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=>{u(e,jr())},E=k(()=>Z(g(r).author)),D=e=>{var t=Mr(),n=B(t,!0);H(t),d(e=>c(n,e),[()=>Y(J(g(r).author))]),u(e,t)},O=k(()=>J(g(r).author));N(w,e=>{g(E)?e(T):g(O)&&e(D,1)});var A=S(w,2),j=B(A,!0);H(A),H(y);var F=S(y,2);l(F,21,()=>m(g(r).snippet,g(r).highlights),P,(e,t)=>{var n=a(),r=M(n),i=e=>{var n=Nr(),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)};N(r,e=>{g(t).highlighted?e(i):e(o,-1)}),u(e,n)}),H(F);var I=S(F,2),ee=B(I),te=e=>{var t=Pr(),n=B(t,!0);H(t),d(()=>c(n,g(i))),u(e,t)};N(ee,e=>{g(i)&&e(te)});var L=S(ee,2),ne=e=>{u(e,Fr())},z=e=>{var t=Ir(),n=S(B(t));H(t),d(()=>c(n,` ${g(r).reply_count??``} ${g(r).reply_count===1?`reply`:`replies`}`)),u(e,t)};N(L,e=>{g(r).parent_message_id?e(ne):g(r).reply_count>0&&e(z,1)}),H(I),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(A,`datetime`,g(r).created_at),c(j,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=Rr(),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=zr(),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=>{u(e,Br())};N(o,e=>{t.session.moreError?e(s):t.session.nextCursor?e(p,1):e(_,-1)}),u(e,r)};N(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(ne),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`,j,function(...e){t.onClose?.apply(this,e)}),u(e,_),A()}U([`click`]);var Wr=`clickclack:browser-notifications-enabled:v1:`;function Gr(e){return`${Wr}${e}`}function Kr(e){if(!e)return!1;try{return window.localStorage.getItem(Gr(e))===`enabled`}catch{return!1}}function qr(e,t){if(!e)return!1;try{return t?window.localStorage.setItem(Gr(e),`enabled`):window.localStorage.removeItem(Gr(e)),!0}catch{return!1}}var Jr=o(`

            Browser notifications are not supported on this device.

            `),Yr=o(`

            Browser notifications are blocked by this browser.

            `),Xr=o(`

            `),Zr=o(`

            Show alerts when ClickClack is in the background.

            `);function Qr(e,r){b(r,!0);let i=x(r,`isDesktop`,3,!1),a=F(!1),o=F(!1),s=F(`default`),l=F(``),f=F(!1);t(()=>{p(r.user.id,i())});function p(e,t){if(t){E(a,!0),E(s,`granted`),E(o,Kr(e),!0),r.onChanged?.(g(o));return}E(a,typeof Notification<`u`),E(s,g(a)?Notification.permission:`unsupported`,!0);let n=Kr(e);E(o,g(s)===`granted`&&n,!0),n&&g(s)!==`granted`&&qr(e,!1),r.onChanged?.(g(o))}async function m(e){if(E(l,``),E(f,!1),!e){qr(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,qr(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,qr(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}qr(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=Zr(),_=B(h),v=B(_),y=B(v,!0);H(v);var w=S(v,4),T=e=>{u(e,Jr())},D=e=>{u(e,Yr())};N(w,e=>{!i()&&!g(a)?e(T):!i()&&g(s)===`denied`&&e(D,1)});var k=S(w,2),j=e=>{var t=Xr();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)};N(k,e=>{g(l)&&e(j)}),H(_);var M=S(_,2),P=B(M);O(P),H(M),H(h),d(()=>{c(y,i()?`Desktop notifications`:`Browser notifications`),R(P,`aria-label`,i()?`Desktop notifications`:`Browser notifications`),P.disabled=!g(a)||g(s)===`denied`,I(P,g(o))}),n(`change`,P,e=>void m(e.currentTarget.checked)),u(e,h),A()}U([`change`]);var $r=o(``),ei=o(`

            `),ti=o(``),ni=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 ri(e,r){b(r,!0);let i=x(r,`isDesktop`,3,!1),a=F(null),o=k(()=>g(a)??r.user),s=F(``),l=F(``),f=F(``),p=F(``),m=F(!1),_=F(!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 j(){if(!g(_)){E(_,!0),E(p,``),E(m,!1);try{let e=await we({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 M(){E(f,``)}var P=ni(),ee=B(P),te=B(ee);He(te,{get id(){return g(o).id},get name(){return g(v)},get src(){return g(f)},size:52,loading:`eager`,fetchPriority:`auto`});var L=S(te,2),ne=B(L),R=B(ne,!0);H(ne);var z=S(ne,2),re=B(z,!0);H(z),H(L),w(2),H(ee);var ie=S(ee,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 me=S(pe,2),he=e=>{var t=$r();n(`click`,t,M),u(e,t)};N(me,e=>{g(f)&&e(he)}),H(fe),H(W);var ge=S(W,4),_e=S(B(ge),2),ve=B(_e);O(ve),H(_e),H(ge);var ye=S(ge,2),be=S(B(ye),2),xe=B(be);O(xe),H(be),H(ye);var G=S(ye,2),Se=S(B(G),2),Ce=B(Se),Te=B(Ce);Te.value=Te.__value=`left`;var Ee=S(Te);Ee.value=Ee.__value=`right`,H(Ce);var K;y(Ce),H(Se),H(G);var De=S(G,2),Oe=S(B(De),2),ke=B(Oe),q=B(ke);q.value=q.__value=`left`;var Ae=S(q);Ae.value=Ae.__value=`right`,H(ke);var je;y(ke),H(Oe),H(De),Qr(S(De,4),{get user(){return g(o)},get isDesktop(){return i()},get onChanged(){return r.onBrowserNotificationsChanged}}),H(ie);var J=S(ie,2),Me=B(J),Ne=e=>{var t=ei();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)},Pe=e=>{u(e,ti())};N(Me,e=>{g(p)?e(Ne):e(Pe,-1)});var Y=S(Me,2),X=B(Y,!0);H(Y),H(J),H(P),d(()=>{c(R,g(v)),c(re,g(T)?`@${g(T)}`:`No handle set`),I(ve,r.hideCommentary),I(xe,r.hideToolCalls),K!==(K=r.userAlign)&&(Ce.value=(Ce.__value=r.userAlign)??``,oe(Ce,r.userAlign)),je!==(je=r.otherAlign)&&(ke.value=(ke.__value=r.otherAlign)??``,oe(ke,r.otherAlign)),Y.disabled=g(_),c(X,g(_)?`Saving...`:`Save profile`)}),h(`submit`,P,e=>{e.preventDefault(),j()}),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`,ve,e=>r.onHideCommentary(e.currentTarget.checked)),n(`change`,xe,e=>r.onHideToolCalls(e.currentTarget.checked)),n(`change`,Ce,e=>r.onUserAlign(e.currentTarget.value===`right`?`right`:`left`)),n(`change`,ke,e=>r.onOtherAlign(e.currentTarget.value===`right`?`right`:`left`)),u(e,P),A()}U([`click`,`change`]);var ii=o(`

            `),ai=o(``),oi=o(`

            Desktop

            Mobile push

            Send push notifications to your phone via Pushover.

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

            `);function si(e,n){b(n,!0);let r=x(n,`isDesktop`,3,!1),i=F(null),a=k(()=>g(i)??n.user),o=F(!1),s=F(``),l=F(``),f=F(!1),p=F(!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 we({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 _=oi(),v=B(_),y=S(B(v),2);Qr(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),j=B(D);O(j),H(D),H(w);var M=S(w,2),P=S(B(M),2),I=B(P);O(I),H(P),H(M),H(v);var ee=S(v,2),te=B(ee),L=e=>{var t=ii();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)},ne=e=>{u(e,ai())};N(te,e=>{g(l)?e(L):e(ne,-1)});var R=S(te,2),z=B(R,!0);H(R),H(ee),H(_),d(()=>{R.disabled=g(p),c(z,g(p)?`Saving...`:`Save notifications`)}),h(`submit`,_,e=>{e.preventDefault(),m()}),T(j,()=>g(o),e=>E(o,e)),ae(I,()=>g(s),e=>E(s,e)),u(e,_),A()}var ci=o(`

            Loading…

            `),li=o(`

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

              `),mi=o(`
              `),hi=o(`

              Account

              My bots

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

              `,1);function $(e,t){b(t,!0);let r=F(ne([])),i=F(`loading`),a=F(``);re(()=>{o()});async function o(){E(i,`loading`);try{E(r,await Xe(),!0),E(i,`ready`)}catch(e){E(i,`error`),E(a,Ze(e),!0)}}function s(e){t.onClose(),ce(Te(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 _=hi(),v=S(M(_),2),y=e=>{u(e,ci())},x=e=>{var t=li(),n=B(t,!0);H(t),d(()=>c(n,g(a))),u(e,t)},C=e=>{u(e,ui())},w=e=>{var t=mi();l(t,21,()=>g(h),e=>e.workspace.id,(e,t)=>{var r=pi(),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=fi(),i=B(r),a=B(i),o=e=>{var n=di();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)};N(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)};N(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,_),A()}U([`click`]);var gi=o(``),_i=o(``),vi=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 yi(e,r){b(r,!0);let i=k(()=>r.user.display_name||r.user.handle||`You`),a=k(()=>(g(i)[0]??`Y`).toUpperCase()),o=F(ne(Se())),s=F(ne(be())),f=F(ne(_e())),p=F(ne(pe()));t(()=>{r.user.appearance_preferences,E(o,Se(),!0),E(s,be(),!0),E(f,_e(),!0),E(p,pe(),!0)});function m(e){E(o,e,!0),he(e)}function h(e){E(s,e,!0),me(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=vi(),T=S(M(x),2),D=B(T),O=S(B(D),2),j=B(O),N=B(j),P=B(N,!0);H(N);var I=S(N,2),ee=B(I),te=B(ee),L=B(te,!0);H(te),w(2),H(ee),w(2),H(I),H(j);var z=S(j,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,()=>ye,e=>e.id,(e,t,r)=>{var i=gi();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,ye.length,g(r),e=>m(ye[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 we=S(W,2);l(we,23,()=>Ce,e=>e.id,(e,t,r)=>{var i=_i();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,Ce.length,g(r),e=>h(Ce[e].id))),u(e,i)}),H(we),H(de),H(ue);var Te=S(ue,2),Ee=S(B(Te),2);l(Ee,23,()=>ge,e=>e.id,(e,t,r)=>{var i=gi();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,ge.length,g(r),e=>_(ge[e].id))),u(e,i)}),H(Ee),H(Te);var K=S(Te,2),De=S(B(K),2);l(De,23,()=>G,e=>e.id,(e,t,r)=>{var i=gi();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,G.length,g(r),e=>v(G[e].id))),u(e,i)}),H(De),H(K),H(U),H(T),d(e=>{R(D,`data-layout`,g(f)),R(D,`data-density`,g(p)),c(P,g(a)),c(L,g(i)),c(ie,g(a)),c(se,g(i)),c(fe,e)},[()=>Ce.find(e=>e.id===g(s))?.label]),u(e,x),A()}U([`click`,`keydown`]);var bi=o(` `,1),xi=o(` `,1),Si=o(` `,1),Ci=o(` `,1),wi=o(`
            • `),Ti=o(`
            • `),Ei=o(`

                `),Di=o(`

                Loading...

                `),Oi=o(`

                `),ki=o(`

                Account

                Profile settings

                How you appear across ClickClack.

                `,1),Ai=o(`

                Account

                Notifications

                Decide when and how ClickClack should reach you.

                `,1),ji=o(``);function Mi(e,r){b(r,!0);let i=x(r,`workspaces`,19,()=>[]),o=x(r,`initialSection`,3,K),s=x(r,`isDesktop`,3,!1),f=F(ne(K)),p=F(null),m=k(()=>g(p)?.id===r.user.id?g(p):r.user),_=F(`ready`),v=F(``);t(()=>{E(f,o(),!0)}),re(()=>{y()});async function y(){E(_,`loading`);try{let e=await we();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(Te(e.route_id||e.id,t))}var j=ji();h(`keydown`,te,D);var P=B(j),I=B(P),ee=S(I,2),L=B(ee),z=S(B(L),2);l(z,21,()=>De,e=>e.id,(e,t)=>{var r=wi(),i=B(r);let a;var o=B(i),s=e=>{var n=bi(),r=M(n);He(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=xi(),r=S(M(n),2),i=B(r,!0);H(r),d(()=>c(i,g(t).label)),u(e,n)},p=e=>{var n=Si(),r=S(M(n),2),i=B(r,!0);H(r),d(()=>c(i,g(t).label)),u(e,n)},h=e=>{var n=Ci(),r=S(M(n),2),i=B(r,!0);H(r),d(()=>c(i,g(t).label)),u(e,n)};N(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(L),l(S(L,2),17,i,e=>e.id,(e,t)=>{var r=Ei(),i=B(r),o=B(i);H(i);var s=S(i,2);l(s,21,()=>Ee,e=>e.id,(e,r)=>{var i=a(),o=M(i),s=e=>{var i=Ti(),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||Oe(g(t).role));N(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(ee);var ie=S(ee,2),V=B(ie),ae=e=>{u(e,Di())},oe=e=>{var t=Oi(),n=B(t,!0);H(t),d(()=>c(n,g(v))),u(e,t)},se=e=>{var t=ki();ri(S(M(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)},U=e=>{yi(e,{get user(){return g(m)}})},le=e=>{var t=Ai();si(S(M(t),2),{get user(){return g(m)},get isDesktop(){return s()},onUserUpdated:w,get onBrowserNotificationsChanged(){return r.onBrowserNotificationsChanged}}),u(e,t)},ue=e=>{$(e,{get onClose(){return r.onClose}})};N(V,e=>{g(_)===`loading`?e(ae):g(_)===`error`?e(oe,1):g(f)===`profile`?e(se,2):g(f)===`appearance`?e(U,3):g(f)===`notifications`?e(le,4):g(f)===`bots`&&e(ue,5)}),H(ie),H(P),H(j),n(`click`,j,T),n(`click`,I,function(...e){r.onClose?.apply(this,e)}),u(e,j),A()}U([`click`]);var Ni=o(`
                No thread open Hover any message and tap the bubble to keep side conversations tidy.
                `);function Pi(e){u(e,Ni())}function Fi(e){let t=e?.trim();if(!t)return``;try{let e=new URL(t);return e.protocol===`https:`||e.protocol===`http:`?e.href:``}catch{return``}}var Ii=o(``),Li=o(`

                `,1),Ri=o(``),zi=o(``),Bi=o(``),Vi=o(``),Hi=o(`
                `),Ui=o(`Connecting…`),Wi=o(`
                `);function Gi(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(()=>Fi(t.externalURL));var l=Wi(),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=Li(),r=S(M(n),2),i=B(r,!0);H(r);var a=S(r,2),o=e=>{var t=Ii();d(()=>R(t,`href`,g(s))),u(e,t)};N(a,e=>{g(s)&&e(o)}),d(()=>{R(r,`title`,t.channelTitle),c(i,t.channelTitle)}),u(e,n)};N(T,e=>{t.channelTitle&&e(E)}),H(p);var D=S(p,2),P=S(B(D),2);O(P);var F=S(P,2),I=e=>{var r=Ri();n(`click`,r,function(...e){t.onResetSearch?.apply(this,e)}),u(e,r)};N(F,e=>{t.searchQuery&&e(I)}),w(2),H(D);var ee=S(D,2),te=e=>{var t=Hi(),s=B(t),c=B(s),l=e=>{u(e,zi())},f=e=>{u(e,Bi())},p=e=>{u(e,Vi())};N(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)};N(ee,e=>{i()&&e(te)});var L=S(ee,2),ne=e=>{u(e,Ui())};N(L,e=>{t.connected||e(ne)}),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`),j(P,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`,P,e=>t.onSearchQuery(e.currentTarget.value)),u(e,l),A()}U([`click`,`input`]);var Ki=o(`

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

                `,1),Qi=o(`

                ClickClack

                `),$i=o(``),ea=o(``),ta=o(`

                `);function na(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:Fi(t.selectedChannel?.external_url));var l=ta(),f=B(l),p=B(f),m=e=>{var n=Ki(),r=B(n,!0);H(n),d(e=>c(r,e),[()=>`@${Pe(t.selectedDirect,t.currentUserID)}`]),u(e,n)},_=e=>{var s=Zi(),l=M(s),f=B(l,!0);H(l);var p=S(l,2),m=e=>{var t=Xi(),s=B(t),c=e=>{u(e,qi())},l=e=>{u(e,Ji())},f=e=>{u(e,Yi())};N(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)};N(p,e=>{i()&&e(m)}),d(()=>c(f,`#${t.selectedChannel.name}`)),u(e,s)},v=e=>{u(e,Qi())};N(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 P=S(D,2),F=e=>{var r=$i();n(`click`,r,function(...e){t.onResetSearch?.apply(this,e)}),u(e,r)};N(P,e=>{t.searchQuery&&e(F)}),w(2),H(E);var I=S(E,2),ee=B(I),te=e=>{var t=ea();d(()=>R(t,`href`,g(s))),u(e,t)};N(ee,e=>{g(s)&&e(te)});var L=S(ee,2);let ne;var z=S(L,2);H(I),H(l),d(()=>{c(T,t.workspaceName||`no workspace`),j(D,t.searchQuery),R(L,`title`,t.threadOpen?`Close thread`:`Open a message thread`),R(L,`aria-label`,t.threadOpen?`Close thread`:`Open a message thread`),ne=C(L,1,``,null,ne,{active:t.sidePanelOpen})}),h(`submit`,E,e=>{e.preventDefault(),t.onSearch()}),n(`input`,D,e=>t.onSearchQuery(e.currentTarget.value)),n(`click`,L,function(...e){t.onToggleThread?.apply(this,e)}),n(`click`,z,function(...e){t.onPinnedItems?.apply(this,e)}),u(e,l),A()}U([`click`,`input`]);async function ra(e){return(await W(`/api/workspaces/${e}/bot-commands`)).bot_commands??[]}function ia(e){let t=e.trim().toLowerCase();return t?t.startsWith(`/`)?t:`/${t}`:``}function aa(e){let t=/^(\/\S+)\s*([\s\S]*)$/.exec(e);return t?{command:ia(t[1]),text:t[2].trim()}:null}function oa(e,t){return e.find(e=>!e.revoked_at&&ia(e.command)===t)}async function sa(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 ca=e({default:()=>va}),la=o(``),ua=o(``),da=o(`
                cc
                ClickClack OpenClaw workspace chat

                Welcome.

                Sign in with GitHub to join the guest room.

                `,1),fa=o(``),pa=o(``),ma=o(`
                `),ha=o(``),ga=o(``),_a=o(`
                `,1);function va(e,t){b(t,!1);let i=V(),o=V(),l=V(),p=V(),y=V(),w=V(),T=V(),O=V(),k=V(),j=V(),P=V(),F=V(),I=V(),ne=V(),ae=V(),oe=V(),se=V(),U=V(),le=V(),pe=V(),me=`clickclack:hide-commentary:v1`,he=`clickclack:hide-tool-calls:v1`,ge=`clickclack:user-align:v1`,_e=`clickclack:other-align:v1`,ve=Date.now(),ye=$e?.integratedTitleBar===!0,be=x(t,`routeWorkspaceID`,8,``),xe=x(t,`routeTargetID`,8,``),G=V(null),Se=new Fe(()=>g(G)?.id||``),Ce=new Ae(Ta),Ee=V([]),K=V([]),De=V(null),Oe=new Map,ke=V(!1),q=V([]),J=V([]),Me=V([]),Y=V(``),X=V(``),Z=V(``),Q=V(null),Ie=V(null),Le=V(null),Re=V([]),ze=V([]),Be=V([]),He=V(null),Ue=V([]),We=V(null),qe=V(null),Xe=V(``),Ze=V(null),tt=null,nt=V(null),it=V(null),at=new Set,ot=V(``),st=V(``),ct=V(``),lt=V(``),ut=V(``),dt=V(``),ft=V(null),pt=V(!1),ht=0,gt=0,_t=V(null),yt=V(!1),bt=V(!1),xt=V(`profile`),St=V(!1),Ct=V(!1),Tt=V(``),Et=V(!1),Dt=V(!1),Ot=V(!1),kt=V(`left`),At=V(`left`),Mt=V(`loading`),Pt=V(!1),Ft=V(``),It=V(!1),Lt=``,Rt=``,zt=``,Bt=null,Vt=Promise.resolve(),Ht=V(null),Ut=new Map,Wt=V(new Map),Gt=new Set,Kt=V(`idle`),qt=`idle`,Jt=!1,Yt=!1,Xt=V(!1),Zt=V(!1),Qt=V(!1),$t=V(!1),en=new Map,tn=0,nn=V(``),rn=V(void 0),an=V(``),on=V(!0),sn=V(!1),cn=V(!1),ln=V(!1),un=V(!1),dn=V(null),fn=V(null),pn=V(null),mn=V(null),gn=V(`message`),_n=V([]),bn,Cn=V([]),wn,Tn=V(Date.now()),Dn,kn=V(``),An=0,Mn=0,Nn=0,Pn=0,In=0,Ln=0,Rn=0,zn=0,Bn=0,Hn=0,Un=0,Wn=V(null),Gn,Kn=V(new Set),qn=V(null),Jn=V(``);re(()=>{Zn(),Dn=window.setInterval(()=>{E(Tn,Date.now())},3e4),sr(),rr();let e=window.matchMedia(`(max-width: 820px)`),t=()=>{E(ln,!1),E(un,e.matches)};t();let n=$e?.onNavigate(e=>{ce(e,{keepFocus:!0,noScroll:!0})}),r=$e?.onQuickCompose(()=>Yn());return e.addEventListener(`change`,t),()=>{e.removeEventListener(`change`,t),n?.(),r?.()}});function Yn(){s().then(()=>{(g(gn)===`thread`?g(mn):g(pn))?.focus()})}async function Xn(e){if($e){e.preventDefault(),E(Ft,`Opening GitHub in your browser…`);try{await $e.signInWithGitHub(),E(Ft,`Finish signing in in your browser. ClickClack will complete here automatically.`)}catch{E(Ft,`Could not open your browser. Try again.`)}}}function Zn(){try{let e=window.localStorage.getItem(`clickclack:show-agent-activity:v1`)===`0`;E(Dt,window.localStorage.getItem(me)===`1`||e),E(Ot,window.localStorage.getItem(he)===`1`||e),E(kt,window.localStorage.getItem(ge)===`right`?`right`:`left`),E(At,window.localStorage.getItem(_e)===`right`?`right`:`left`)}catch{E(Dt,!1),E(Ot,!1),E(kt,`left`),E(At,`left`)}Qn()}function Qn(){try{document.documentElement.setAttribute(`data-user-align`,g(kt)),document.documentElement.setAttribute(`data-other-align`,g(At))}catch{}}function $n(e){E(kt,e),Qn();try{window.localStorage.setItem(ge,e)}catch{}}function er(e){E(At,e),Qn();try{window.localStorage.setItem(_e,e)}catch{}}function tr(e){E(Dt,e);try{window.localStorage.setItem(me,e?`1`:`0`)}catch{}}function nr(e){E(Ot,e);try{window.localStorage.setItem(he,e?`1`:`0`)}catch{}}ee(()=>{Bt?.close(),Bt=null,E(It,!1),Nt(),bn&&window.clearInterval(bn),wn&&window.clearInterval(wn),Dn&&window.clearInterval(Dn),Gn&&clearTimeout(Gn),Do(!1,null)});async function rr(){try{let e=await we();if(E(G,e.user),sr(),await dr(),g(Ee).length===0){E(Mt,`create a workspace`);return}await Or(be(),xe()),E(Mt,`ready`)}catch(e){if(e instanceof fe&&(e.status===401||e.status===403)){E(Pt,!0),E(Mt,`auth`);return}E(Mt,e instanceof Error?e.message:`Could not load ClickClack`)}}function ir(){g(G)&&(E(xt,`profile`),E(bt,!0))}function ar(){let e=g(i)?.route_id||g(Y)||be();e&&ce(Te(e))}function or(e){E(G,e),Yi(g(J).map(t=>t.author?.id===e.id?{...t,author:e}:t)),E(Me,g(Me).map(t=>t.author?.id===e.id?{...t,author:e}:t)),g(Q)?.author?.id===e.id&&E(Q,{...g(Q),author:e})}function sr(){if($e){E(Et,lr());return}let e=lr();E(Et,typeof Notification<`u`&&Notification.permission===`granted`&&e),e&&!g(Et)&&ur(!1)}function cr(){return g(G)?.id?`clickclack:browser-notifications-enabled:v1:${g(G).id}`:``}function lr(){let e=cr();if(!e)return!1;try{return window.localStorage.getItem(e)===`enabled`}catch{return!1}}function ur(e){let t=cr();if(!t)return!1;try{return e?window.localStorage.setItem(t,`enabled`):window.localStorage.removeItem(t),!0}catch{return!1}}async function dr(){let e=++Nn,t=await W(`/api/workspaces`);e===Nn&&E(Ee,t.workspaces)}function fr(e=``,t=``){return`${e||``}/${t||``}`}function mr(e=g(Y),t=``){let n=gr(e);if(!n)return`/app`;let r=`/app/${encodeURIComponent(n)}`,i=_r(t);return i?`${r}/${encodeURIComponent(i)}`:r}function hr(e){let t=g(K).find(t=>t.id===e)?.route_id||g(q).find(t=>t.id===e)?.route_id;return t?mr(g(Y),t):!g(Y)||!e?`/app`:`/app/${encodeURIComponent(g(Y))}/${encodeURIComponent(e)}`}function gr(e=g(Y)){return e?g(Ee).find(t=>t.id===e||t.route_id===e)?.route_id||e:``}function _r(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 vr(e=g(Y),t=``,n=!1){let r=mr(e,t);window.location.pathname!==r&&await ce(r,{replaceState:n,noScroll:!0,keepFocus:!0})}function yr(){g(pt)&&Ga(),E(Q,null),E(Ie,null),E(Le,null),E(gn,`message`),E(Me,[]),E(ln,!1)}function br(e=g(Y)){return wr(e)||g(K).find(e=>e.name.toLowerCase()===`guest`)?.id||g(K)[0]?.id||g(q)[0]?.id||``}function xr(e=g(Y)){return g(Ee).find(t=>t.id===e||t.route_id===e)}function Sr(e=g(Y)){let t=xr(e),n=t?.route_id||t?.id||e;return n?`clickclack:last-channel:v1:${n}`:``}function Cr(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 wr(e=g(Y)){let t=Sr(e);if(!t)return``;let n;try{let e=window.localStorage.getItem(t);if(!e)return``;n=Cr(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 Tr(e,t){if(!e||!t)return;let n=g(K).find(e=>e.id===t);if(!n)return;let r=Sr(e);if(r)try{window.localStorage.setItem(r,JSON.stringify({id:n.id,routeID:n.route_id}))}catch{}}function Dr(e){zt===e&&(zt=``,so())}async function Or(e=``,t=``){let n=++An;Se.clear();let r=fr(e,t),i=t.trim()?await Ar(e,t):null;if(n!==An)return;let a=i?g(Ee).find(e=>e.id===i.workspace_id):g(Ee).find(t=>t.id===e||t.route_id===e)||g(Ee)[0];if(!a){$r(``,Qr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`),E(kn,r);return}let o=i?fr(i.workspace_route_id,i.target_route_id):fr(a.route_id,``),s=g(Y)!==a.id;if(s&&(qi(),Ce.clear(),E(Y,a.id),Rn+=1,zn+=1,E(ze,[]),E(Be,[]),E(X,``),E(Z,``),E(Q,null),E(Ie,null),E(Le,null),E(gn,`message`),E(Me,[]),Ga(),oi(),E(on,!0),zt=a.id),(s||g(K).length===0)&&await Pr(!1,!1),n!==An||((s||g(q).length===0)&&await Qa(),s&&await Promise.all([Fr(),Ir(a.id),Lr(a.id)]),n!==An))return;if(i){let e=await kr(i,n);if(n!==An)return;if(!e){yr(),await vr(a.id,br(),!0);return}}if(i?.canonical_path&&window.location.pathname!==i.canonical_path&&(E(kn,o),await ce(i.canonical_path,{replaceState:!0,noScroll:!0,keepFocus:!0}),n!==An))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(nn)===e;if(E(X,e),E(Z,``),Tr(a.id,e),yr(),t){E(kn,o),ri(e),Dr(a.id);return}if(await qr(),n!==An)return;E(kn,o),Dr(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(nn)===e;if(E(Z,e),E(X,``),yr(),t){E(kn,o),ri(e),Dr(a.id);return}if(await qr(),n!==An)return;E(kn,o),Dr(a.id);return}if(i?.target_type===`thread`){let e=await jr(i);if(n!==An)return;if(e){E(kn,o),Dr(a.id);return}}let c=br();if(yr(),!c){E(X,``),E(Z,``),await qr(),E(kn,r),(e!==a.route_id||t)&&await vr(a.id,``,!0),Dr(a.id);return}await vr(a.id,c,!0)}async function kr(e,t){return e.target_type===`channel`?(g(K).some(t=>t.id===e.target_id)||await Pr(!1,!1,!1),t===An&&g(K).some(t=>t.id===e.target_id)):e.target_type===`direct`?(g(q).some(t=>t.id===e.target_id)||(await Qa(),g(q).some(t=>t.id===e.target_id)||$a((await W(`/api/dms/${e.target_id}`)).conversation)),t===An&&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 Pr(!1,!1,!1),t===An&&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 Qa(),g(q).some(t=>t.id===e.parent_id)||$a((await W(`/api/dms/${e.parent_id}`)).conversation)),t===An&&g(q).some(t=>t.id===e.parent_id)):!0}async function Ar(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 jr(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,``),Tr(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(nn)===$();return E(Le,null),E(gn,`thread`),E(ln,!1),await Aa(e.target_id),!r&&g(Q)&&await Ya(g(Q)),!0}async function Mr(){if(!g(ct).trim())return;let e=await W(`/api/workspaces`,{method:`POST`,body:JSON.stringify({name:g(ct)})});E(ct,``),E(sn,!1),E(Ee,[...g(Ee),e.workspace]),E(ln,!1),await Or(e.workspace.route_id||e.workspace.id,``),await vr(e.workspace.id),E(Mt,`ready`)}async function Nr(e){E(ln,!1),await vr(e)}async function Pr(e=!0,t=!0,n=!0){let r=g(Y);if(!r)return;let i=++Pn,a=await W(`/api/workspaces/${r}/channels`);i!==Pn||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(pt)&&Ga(),E(Q,null),E(Le,null),E(gn,`message`),E(Me,[])),e&&await qr())}async function Fr(e=g(Y)){let t=++Ln;if(!e||e!==g(Y)||g(o)!==`owner`&&g(o)!==`moderator`){t===Ln&&E(Re,[]);return}try{let n=await W(`/api/workspaces/${e}/moderation/members`);if(t!==Ln||e!==g(Y))return;E(Re,n.members)}catch{t===Ln&&e===g(Y)&&E(Re,[])}}async function Ir(e=g(Y)){let t=++Rn;if(!e){E(ze,[]);return}try{let n=await W(`/api/workspaces/${e}/slash-commands`);if(t!==Rn||e!==g(Y))return;E(ze,n.slash_commands)}catch{t===Rn&&e===g(Y)&&E(ze,[])}}async function Lr(e=g(Y),t=!1){let n=++zn;if(!e){E(Be,[]);return}try{let t=await ra(e);if(n!==zn||e!==g(Y))return;E(Be,t)}catch(r){let i=n===zn&&e===g(Y);if(i&&E(Be,[]),t&&i)throw r}}function Rr(e){Un+=1,E(He,null)}function zr(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 Br(e,t){if(!g(Y))return;let n=await W(`/api/workspaces/${g(Y)}/moderation/members/${e}`,{method:`PATCH`,body:JSON.stringify(t)});E(Re,[...g(Re).filter(t=>t.user.id!==e),n.member]),await Pr(!1,!1,!1),E(Mt,`ready`)}async function Vr(){if(!g(Y)||!g(lt).trim())return;let e=await W(`/api/workspaces/${g(Y)}/channels`,{method:`POST`,body:JSON.stringify({name:g(lt),kind:`public`})});E(lt,``),E(K,[...g(K),e.channel]),E(St,!1),await vr(g(Y),e.channel.id)}async function Hr(e){E(ln,!1),Tr(g(Y),e);let t=mr(g(Y),e);e===g(X)&&!g(Z)&&window.location.pathname===t||await vr(g(Y),e)}async function Wr(e,t){let n=++Bn;if(E(De,null),!(!e||t))try{let t=await W(`/api/channels/${e}/notification-settings`);if(n!==Bn||e!==g(X)||g(Z))return;Li(e,t.preference),E(De,t.preference)}catch{if(n===Bn&&e===g(X)&&!g(Z)){let t=Ii(e)||`all`;Li(e,t),E(De,t)}}}async function Gr(){let e=g(X);if(!e||g(Z)||g(ke)||!g(De))return;let t=++Bn,n=[`all`,`mentions`,`muted`],r=g(De),i=n[(n.indexOf(r)+1)%n.length];E(De,i),Li(e,i),E(ke,!0);try{await W(`/api/channels/${e}/notification-settings`,{method:`PATCH`,body:JSON.stringify({preference:i})})}catch{Oe.get(e)===i&&Li(e,r),t===Bn&&e===g(X)&&!g(Z)&&E(De,r)}finally{E(ke,!1)}}function Kr(e,t){return e===Mn&&$()===t}async function qr(e=!0){e&&qi();let t=$(),n=++Mn,r=t!==g(nn);oi(),r&&E(on,!0);try{if(!g(Z)&&!g(X)){$r(``,Qr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}let e=await W(Zr(Yr()));if(!Kr(n,t))return;$r(t,Qr(e),`replace`)}finally{Kr(n,t)&&E(on,!1)}}async function Jr(){let e=$();if(!e)return;let t=++Mn;oi(),E(on,!0),Ut.set(e,{atBottom:!0});try{let n=await W(Zr(`limit=100`));if(!Kr(t,e))return;$r(e,Qr(n),`replace`)}finally{Kr(t,e)&&E(on,!1)}}function Yr(){let e=Xr(),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 Xr(){return g(Z)?g(q).find(e=>e.id===g(Z))||{}:g(X)&&g(K).find(e=>e.id===g(X))||{}}function Zr(e){let t=g(Z)?`/api/dms/${g(Z)}/messages`:`/api/channels/${g(X)}/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 $r(e,t,n){let r=li(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};ei(e,c),ri(e,c),Ji(e,r)}function ei(e,t){e&&(g(Wt).delete(e),g(Wt).set(e,t),ti(e),ni(e),E(Wt,new Map(g(Wt))))}function ti(e){let t=g(Wt).size+1;for(;g(Wt).size>8&&t>0;){t--;let n=g(Wt).keys().next().value;if(!n)return;if(n===e){let e=g(Wt).get(n);g(Wt).delete(n),e&&g(Wt).set(n,e);continue}g(Wt).delete(n)}}function ni(e){let t=Ut.size+1;for(;Ut.size>16&&t>0;){t--;let n=Ut.keys().next().value;if(!n)return;if(n===e){let e=Ut.get(n);Ut.delete(n),e&&Ut.set(n,e);continue}Ut.delete(n)}}function ri(e,t=g(Wt).get(e)){e===$()&&(E(Xt,t?.has_older||!1),E(Zt,t?.has_newer||!1))}function ii(e){let t=g(Wt).get(e);!e||!t||(ei(e,{...t,has_newer:!0}),ri(e))}function ai(e,t){e===`older`?(E(Kt,t),E(Qt,t===`loading`)):(qt=t,E($t,t===`loading`))}function oi(){Gt=new Set,E(Kt,`idle`),qt=`idle`,Jt=!1,Yt=!1,E(Qt,!1),E($t,!1)}function si(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 ci(e){let t=new Set,n=Ei(e);if(n>=0){let r=Di(e,g(J),n);r&&t.add(r.id)}let r=Ut.get(e)?.anchorMessageID;r&&t.add(r);let i=Ce.session(e);i&&t.add(i.messageID),g(Q)&&Zi(g(Q),e)&&t.add(g(Q).id),g(dn)&&Zi(g(dn),e)&&t.add(g(dn).id);for(let n of g(J))(n.status===`pending`||n.status===`failed`)&&Zi(n,e)&&t.add(n.id);return t}function li(e,t,n){return Ne(t,n,ci(e))}function ui(){if(g(Kt)!==`idle`){Jt=!0;return}fi()}function di(e=!1){if(qt!==`idle`){e&&(Yt=!0);return}pi()}async function fi(){let e=$(),t=g(Wt).get(e),n=`${e}:older`;if(g(Kt)!==`idle`){Jt=!0;return}if(!e||!t?.has_older||t.oldest_seq<=0||Gt.has(n))return;Gt.add(n),Jt=!1,ai(`older`,`loading`),qi();let r=!1;try{let n=await W(Zr(`before_seq=${encodeURIComponent(String(t.oldest_seq))}&limit=50`));if($()!==e)return;$r(e,{messages:si(n.messages,g(J)),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,ai(`older`,`settling`)}catch(t){$()===e&&E(Mt,t instanceof Error?t.message:`Could not load older messages`)}finally{Gt.delete(n),$()===e&&!r&&ai(`older`,`idle`)}}async function pi(){let e=$(),t=g(Wt).get(e),n=`${e}:newer`;if(qt!==`idle`){Yt=!0;return}if(!e||Gt.has(n))return;if(!t||t.newest_seq<=0){await qr();return}Gt.add(n),Yt=!1,ai(`newer`,`loading`);let r=!1;try{let n=await W(Zr(`after_seq=${encodeURIComponent(String(t.newest_seq))}&limit=50`));if($()!==e)return;if(n.messages.length===0){$r(e,{...t,has_newer:n.has_newer},`append`),r=!0,ai(`newer`,`settling`);return}$r(e,{messages:si(g(J),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,ai(`newer`,`settling`)}catch(t){$()===e&&E(Mt,t instanceof Error?t.message:`Could not load newer messages`)}finally{Gt.delete(n),$()===e&&!r&&ai(`newer`,`idle`)}}function mi(){let e=g(Y),t=$();if(!e||!t)return Promise.resolve();let n=Vt.catch(()=>void 0).then(async()=>{if(g(Y)!==e||$()!==t)return;let n=g(Wt).get(t);if(!n||n.newest_seq<=0){await qr();return}let r=await W(Zr(`after_seq=${encodeURIComponent(String(n.newest_seq))}&limit=50`));if(g(Y)!==e||$()!==t)return;let i=g(Wt).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 _i(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 yi(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 bi(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 xi(e){let t=g(Wt).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),gi(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),_i(e),t):0}function Si(e){let t=g(Wt).get(e);return!t||t.has_newer?0:g(K).find(t=>t.id===e)?gi(e):g(q).find(t=>t.id===e)?_i(e):0}function Ci(e={}){if(!e.all&&Date.now()=0&&!Ui(t,e))return}let n=e.all?Math.max(e.seq||0,xi(t)):e.seq||Si(t);if(!(n<=0)){if(g(q).some(e=>e.id===t)){bi(t,n),e.all&&wi(t,n);return}g(K).some(e=>e.id===t)&&(yi(t,n),e.all&&wi(t,n))}}function wi(e,t){en.delete(e),en=new Map(en),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 Ti(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 Ei(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 Di(e,t,n){for(let r of t){if(!Zi(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 Oi(e,t){if(!e)return;let n=Hi(e);if(vi(e,n)<=0){en.delete(e),en=new Map(en);return}let r=n.last_read_seq||0,i=en.get(e);if(i?.boundarySeq===r&&i.since||!Ui(e,r))return;let a=Di(e,t,r);a&&(en=new Map(en).set(e,{boundarySeq:r,since:Ki(a.created_at)}))}function ki(e,t,n){if(!e||!n)return;let r=en.get(e);r?.boundarySeq===t&&r.since||(en=new Map(en).set(e,{boundarySeq:t,since:Ki(n)}))}function Ai(e){let t=e.payload,n=t.channel_seq??e.seq??t.seq;return typeof n==`number`?n:Number(n)||0}function ji(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 Ni(e){try{let t=await W(`/api/channels/${e}/notification-settings`);return Li(e,t.preference),e===g(X)&&!g(Z)&&!g(ke)&&E(De,t.preference),t.preference}catch{return Oe.get(e)||Ii(e)||`all`}}function Fi(e){return g(G)?.id&&e?`clickclack:channel-notification:v1:${g(G).id}:${e}`:``}function Ii(e){let t=Fi(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 Li(e,t){Oe=new Map(Oe).set(e,t);let n=Fi(e);if(n)try{window.localStorage.setItem(n,t)}catch{}}async function Ri(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(Et)||document.visibilityState===`visible`&&t)return;let i=typeof n.message_id==`string`?n.message_id:`${e.channel_id||``}:${e.seq||Date.now()}`,a=typeof n.author_id==`string`?n.author_id:``,o=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}`);a=e.message.author_id,o=e.message.body}catch{}if(a&&a===g(G)?.id)return;let{channelID:s,dmID:c}=ji(e);if(s){let t=await Ni(s);if(!t||!g(Et))return;let n=!!s&&s===g(X)||!!c&&c===g(Z);if(document.visibilityState===`visible`&&n||t===`muted`||t===`mentions`&&!e.mentioned_user_ids?.includes(g(G)?.id||``))return}let l=g(K).find(e=>e.id===s),u=vo(a)?.display_name||`ClickClack`,d=l?`#${l.name}`:`Direct message`;if($e){$e.notify({body:zi(o),route:hr(s||c),tag:`clickclack:${i}`,title:`${u} in ${d}`});return}if(!(typeof Notification>`u`||Notification.permission!==`granted`))try{let e=new Notification(`${u} in ${d}`,{body:zi(o),tag:`clickclack:${i}`,icon:`/favicon.svg`});e.onclick=()=>{window.focus(),e.close(),s?Hr(s):c&&to(c)}}catch{}}function zi(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 Bi(e){if(e.type!==`message.created`)return!1;let t=Ai(e);if(t<=0)return!1;let{channelID:n,dmID:r}=ji(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 Vi(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 Qa(),g(q).some(e=>e.id===n))}function Hi(e){return g(K).find(t=>t.id===e)||g(q).find(t=>t.id===e)||{}}function Ui(e,t,n=g(Wt)){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 Wi(e,t,n=g(Wt)){let r=en.get(e);if(r?.boundarySeq===t)return r.since;if(!Ui(e,t,n))return``;let i=Di(e,g(J),t);return i?Ki(i.created_at):``}function Ki(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(t)}function qi(){if(!g(nn)||!g(Ht))return;let e=g(Ht).captureState();e&&Ut.set(g(nn),e)}function Ji(e,t){let n=e!==g(nn);E(rn,Ut.get(e));let r=g(J).filter(t=>(t.status===`pending`||t.status===`failed`)&&Zi(t,e)),i=new Map(r.map(e=>[e.id,e])),a=new Map(r.filter(e=>e.nonce).map(e=>[e.nonce,e]));Se.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&&ia.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(J).filter(t=>(t.status===`pending`||t.status===`failed`)&&t.id.startsWith(`tmp_`)&&!s.has(t.id)&&!(t.nonce&&c.has(t.nonce))&&Zi(t,e));E(J,l.length>0?[...o,...l]:o),Ce.reconcile(e,g(J)),E(nn,e),Oi(e,g(J)),n&&(E(_n,[]),E(Cn,[]),Nt())}function Yi(e,t=`append`){let n=$(),r=n?g(Wt).get(n):void 0;if(!n||!r){E(J,e);return}let i=e.filter(e=>Zi(e,n)),a=li(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=Xi(a[0])>Xi(i[0]),u=Xi(a[a.length-1])0)&&await Jr(),await Qi(),Ci({all:!0}),await Qi()}catch(e){E(Mt,e instanceof Error?e.message:`Could not jump to latest messages`)}}let ia=new Map;function ca(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function va(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(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 ya(){let e=g(ot).trim();if(!e)return;if(g(w)&&!g(T)){E(Mt,`This conversation has no active recipient`);return}if(!g(X)&&!g(Z)){E(Mt,`pick or create a channel`);return}Nt(),E(He,null);let t=++Un,n=$(),r=g(Z)?`dm`:`channel`,i=g(dn)&&g(fn)===r?g(dn):null;if(g(X)&&!g(Z)&&!g(_t)&&!i){let r=aa(e),i=r?oa(g(ze),r.command):void 0;if(r&&i){E(ot,``),await ba(g(X),r.command,r.text,e,n,t);return}}let a={body:e,quotedMessageID:i?.id,upload:g(_t)||void 0,workspaceID:g(Y),channelID:g(X)||void 0,directConversationID:g(Z)||void 0,viewKey:$()};E(ot,``),i&&La(),E(_t,null),await Sa(a)}async function ba(e,t,n,r,i,a){try{let r=await sa(e,t,n);if(a!==Un||$()!==i)return;r.text&&r.response_type!==`in_channel`&&E(He,{kind:`ephemeral`,text:r.text})}catch(e){if(console.warn(`slash dispatch failed`,e),a!==Un||$()!==i)return;E(He,{kind:`error`,text:e instanceof fe&&e.message?xa(e):`${t} failed`}),g(ot).trim()||E(ot,r)}}function xa(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 Sa(e,t,n){let r=t??ca(),i=`tmp_${r}`,a=n??i,o=!t&&$()===e.viewKey,s=o&&g(Zt);ia.set(r,e);let c=va(r,e,a);t?Yi(g(J).map(e=>e.id===a?c:e)):$()===e.viewKey&&(Yi([...g(J),c]),ea());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 W(l,{method:`POST`,body:JSON.stringify(u)})).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);let i={...t,nonce:r,status:`failed`,attachments:e.upload?[...t.attachments||[],e.upload]:t.attachments};Yi(g(J).map(e=>e.id===a?i:e));return}ia.delete(r),g(J).findIndex(e=>e.id===a)>=0?Yi(g(J).map(e=>e.id===a?t:e)):g(J).some(e=>e.id===t.id)?Yi(g(J).map(e=>e.id===t.id?t:e)):Zi(t,$())&&!g(J).some(e=>e.id===t.id)&&Yi([...g(J),t]),$()===e.viewKey&&o&&(s&&await Jr(),await ea(),Ci({all:!0,seq:t.channel_seq||0}))}catch(e){console.warn(`send failed`,e),Yi(g(J).map(e=>e.id===a?{...e,status:`failed`}:e))}}function Ca(e){if(!e.nonce)return;let t=ia.get(e.nonce);if(!t){wa(e);return}Sa({...t,viewKey:t.viewKey},e.nonce,e.id)}function wa(e){e.nonce&&ia.delete(e.nonce),Yi(g(J).filter(t=>t.id!==e.id))}async function Ta(e,t){if(e!==g(an))return;t.surface===`timeline`&&g(Ht)?.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 Ea(e){Yi(g(J).map(t=>t.id===e.id?{...t,...e}:t)),E(Me,g(Me).map(t=>t.id===e.id?{...t,...e}:t)),g(Q)?.id===e.id&&E(Q,{...g(Q),...e})}function Da(e){!e.id||e.deleted_at||g(Kn).has(e.id)||(E(qn,e),E(Jn,``))}async function Oa(){let e=g(qn);if(!(!e||g(Kn).has(e.id))){E(Kn,new Set([...g(Kn),e.id])),E(Jn,``);try{let t=(await W(`/api/messages/${e.id}`,{method:`DELETE`})).message;Ce.cancelMessage($(),t.id),Yi(g(J).map(e=>e.id===t.id?{...e,...t}:e)),E(Me,g(Me).map(e=>e.id===t.id?{...e,...t}:e)),g(Q)?.id===t.id&&E(Q,{...g(Q),...t}),g(dn)?.id===t.id&&La(),E(Mt,``),E(qn,null)}catch(e){E(Jn,e instanceof Error?e.message:`Could not delete message`)}finally{let t=new Set(g(Kn));t.delete(e.id),E(Kn,t)}}}async function ka(e){Ga(),await Aa(e.id,e),g(Y)&&g(Q)?.route_id&&window.location.pathname!==mr(g(Y),g(Q).id)&&await vr(g(Y),g(Q).id)}async function Aa(e,t,n=()=>!0){E(qe,null),E(Xe,``),E(Le,null),t&&(E(Q,t),E(gn,`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 Se.seedMessages([i,...a]),Ce.reconcile($(),[i,...a]),E(Q,i),E(gn,`thread`),Yi(g(J).map(e=>e.id===i.id?i:e)),E(Me,a),E(Ie,r.thread_state),!0}async function ja(e){let t=await W(`/api/messages/${e}/thread`),n={...t.root,thread_state:t.thread_state};Se.seedMessages([n]),Yi(g(J).map(e=>e.id===n.id?n:e))}function Ma(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 Na(){let e=g(st).trim();if(!e||!g(Q))return;if(g(w)&&!g(T)){E(Mt,`This direct message has no active recipient`);return}let t=g(dn)&&g(fn)===`thread`?g(dn):null;E(st,``);let n={body:e,nonce:ca()};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&&La(),g(Me).some(e=>e.id===r.message.id)||E(Me,[...g(Me),r.message]),E(Ie,r.thread_state)}function Pa(e,t){E(dn,e),E(fn,t),E(gn,t===`thread`?`thread`:`message`)}function Fa(){return g(qn)!==null||g(We)!==null||g(bt)||g(St)||g(Ct)}function Ia(){return g(gn)===`thread`&&g(Q)&&g(mn)?g(mn):g(pn)}function La(){E(dn,null),E(fn,null)}async function Ra(e){let t=e.quoted_message_id;if(!t)return;if(g(Ht)?.scrollToMessage(t)??!1){await Va(t);return}let n=await W(`/api/messages/${t}`);Zi(n.message,$())&&await Ya(n.message)}async function za(){tn=Date.now()+1200,!(g(I)&&g(Ht)?.scrollToDivider(!1))&&await Ba()}async function Ba(){let e=$();if(!e)return;tn=Date.now()+1200;let t=Ti(e),n=en.get(e),r=(n?.boundarySeq===t?n.boundarySeq:t)+1;r<=0||(await Xa(r),await s(),g(Ht)?.scrollToDivider(!1))}async function Va(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 Ha(){if(!g(Y)||!g(dt).trim()){Ga();return}let e=g(dt).trim();g(qe)&&Eo(),(g(Q)||g(Le))&&No();let t=++gt,n=g(Z)&&g(w)?{workspaceID:g(Y),channelID:``,directConversationID:g(Z),label:`@${Pe(g(w),g(G)?.id)}`}:g(X)&&g(y)?{workspaceID:g(Y),channelID:g(X),directConversationID:``,label:`#${g(y).name}`}:{workspaceID:g(Y),channelID:``,directConversationID:``,label:``};E(pt,!1),ht=0;let r={query:e,scope:n,results:[],nextCursor:null,state:`loading`,error:``,loadingMore:!1,moreError:``,activeResultID:``};E(ft,r);try{let e=await W(`/api/search?${Ua(r).toString()}`);if(t!==gt)return;E(ft,{...r,results:e.results,nextCursor:e.next_cursor,state:`ready`})}catch(e){if(t!==gt)return;E(ft,{...r,state:`error`,error:e instanceof fe?e.message:`Search is unavailable right now.`})}}function Ua(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 Wa(){let e=g(ft);if(!e||e.state!==`ready`||!e.nextCursor||e.loadingMore)return;let t=gt;E(ft,{...e,loadingMore:!0,moreError:``});try{let n=await W(`/api/search?${Ua(e,e.nextCursor).toString()}`);if(t!==gt||!g(ft))return;let r=new Set(g(ft).results.map(e=>e.id));E(ft,{...g(ft),results:[...g(ft).results,...n.results.filter(e=>!r.has(e.id))],nextCursor:n.next_cursor,loadingMore:!1})}catch(e){if(t!==gt||!g(ft))return;E(ft,{...g(ft),loadingMore:!1,moreError:e instanceof fe?e.message:`Couldn’t load more results.`})}}function Ga(){gt+=1,E(dt,``),E(ft,null),E(pt,!1),ht=0}function Ka(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?`@${Pe(t,g(G)?.id)}`:`Direct message`}return``}async function qa(e){let t=g(ft),n=e.channel_id||e.direct_conversation_id||``;if(!(!t||!g(Y)||!n)&&(E(ft,{...t,activeResultID:e.id}),$()!==n&&(await vr(g(Y),n),await Or(g(Y),n)),$()===n)){if(e.parent_message_id){ht=document.querySelector(`.search-results-scroll`)?.scrollTop??0;let t=gt;E(pt,!0);try{if(!await Aa(e.thread_root_id,void 0,()=>t===gt&&g(pt)&&g(ft)?.activeResultID===e.id))return}catch(e){throw E(pt,!1),await s(),e}g(Q)?.route_id&&await vr(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 Va(e.id);return}if(e.channel_seq&&e.channel_seq>0){await Xa(e.channel_seq,e.id);return}await qr()}}async function Ja(){if(!g(ft)||!g(pt))return;let e=$();g(fn)===`thread`&&La(),E(Q,null),E(Le,null),E(gn,`message`),E(Me,[]),E(pt,!1),g(Y)&&e&&await vr(g(Y),e),await s();let t=document.querySelector(`.search-results-scroll`);t&&(t.scrollTop=ht),(g(ft).activeResultID?document.querySelector(`.search-result[data-result-id="${CSS.escape(g(ft).activeResultID)}"]`):null)?.focus({preventScroll:!0})}async function Ya(e){let t=e.channel_seq||0;if(t<=0){await qr();return}await Xa(t,e.id)}async function Xa(e,t=``){let n=$();if(!n)return;t&&Ut.set(n,{atBottom:!1,anchorMessageID:t,anchorPixelOffset:0});let r=n!==g(nn);oi(),r&&E(on,!0);try{let r=await W(Zr(`around_seq=${encodeURIComponent(String(e))}&limit=100`));if($()!==n)return;$r(n,Qr(r),`around`),await s(),t&&(g(Ht)?.scrollToMessage(t),await Va(t))}finally{$()===n&&E(on,!1)}}async function Za(e){let t=e.currentTarget,n=t.files?.[0];if(!n||!g(Y))return;let r=await et(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(_t,a.upload),t.value=``}async function Qa(e=g(Y)){let t=++In;if(!e){E(q,[]);return}let n=await W(`/api/dms?workspace_id=${e}`);t!==In||e!==g(Y)||(E(q,n.conversations),g(Z)&&!g(q).some(e=>e.id===g(Z))&&E(Z,``))}function $a(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 eo(e){let t=e.trim();t&&(await no(t),E(ut,``),E(Ct,!1))}async function to(e){E(ln,!1);let t=mr(g(Y),e);e===g(Z)&&!g(X)&&window.location.pathname===t||await vr(g(Y),e)}async function no(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(ln,!1),await vr(g(Y),n.id);return}let r=await W(`/api/dms`,{method:`POST`,body:JSON.stringify({workspace_id:g(Y),member_ids:[t]})});$a(r.conversation),E(ln,!1),await vr(g(Y),r.conversation.id)}function ro(){Gn&&clearTimeout(Gn),Gn=void 0,E(Wn,null)}function io(e,t){ro(),E(Wn,{conversation:e,restoreRoute:t,title:Pe(e,g(G)?.id)}),Gn=setTimeout(()=>{E(Wn,null),Gn=void 0},8e3)}async function ao(){let e=g(Wn);if(e){ro();try{let t=await W(`/api/dms/${e.conversation.id}/open`,{method:`POST`});$a(t.conversation),e.restoreRoute&&await vr(e.conversation.workspace_id,t.conversation.id),E(Mt,`direct message restored`)}catch(e){E(Mt,e instanceof Error?e.message:`Could not restore direct message`)}}}async function oo(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&&io(t,n),n){yr();let e=g(K)[0]?.id||``;E(Z,``),E(X,e),e&&Tr(g(Y),e),await vr(g(Y),e),await qr()}}function so(){if(Hn+=1,Bt?.close(),Bt=null,E(It,!1),!g(Y))return;let e=g(Y);Bt=je({workspaceID:e,onEvent:lo,onOpen:async(t,n)=>{await co(e,t,Rt===e,n),t()&&(Rt=e,e===g(Y)&&g(Mt)===Lt&&E(Mt,`ready`),Lt=``)},onError:t=>{e===g(Y)&&(Lt=t instanceof Error?t.message:`Could not process realtime event`,E(Mt,Lt))},onStatusChange:e=>{E(It,e)}})}async function co(e,t=()=>!0,n=!0,r=!0){let i=++Hn;if(!e||e!==g(Y)||!t())return;let a=g(Q)?.id||``,o=g(Le)?.kind===`bot`?g(Le).id:``;if(E(_n,[]),E(Cn,[]),!r){await Promise.all([Ir(e),Lr(e,!0)]);return}if(Se.clear(),await Promise.all([dr(),Pr(!1,!1,!1),Qa(e),Fr(e),Ir(e),Lr(e,!0)]),!(i!==Hn||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=br(e);if(t){let n=g(q).some(e=>e.id===t);E(Z,n?t:``),E(X,n?``:t),n||Tr(e,t),await vr(e,t,!0)}}if(!(i!==Hn||e!==g(Y)||!t())&&(await qr(n),!(i!==Hn||e!==g(Y)||!t())&&(a&&g(Q)?.id===a&&await Aa(a,g(Q)),o&&g(Le)?.id===o))){let e=vo(o);E(Le,e&&!e.deleted_at?e:null)}}}async function lo(e){if(e.type===`typing.started`||e.type===`typing.stopped`){ho(e);return}if(e.type===`agent.progress`){go(e);return}if(e.type===`channel.read`||e.type===`dm.read`){po(e);return}if(e.type===`bot_command.updated`){e.workspace_id===g(Y)&&Lr(e.workspace_id,!0).catch(t=>{e.workspace_id===g(Y)&&(E(Mt,t instanceof Error?t.message:`Could not refresh bot commands`),so())});return}if(e.type===`bot.deleted`){e.workspace_id===g(Y)&&await uo(e);return}if(e.type===`bot.membership_removed`){e.workspace_id===g(Y)&&await fo(e);return}if((e.type===`channel.created`||e.type===`channel.updated`)&&e.workspace_id===g(Y)){await Pr(!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 dr(),await Fr(),await Pr(!1,n,n),n){if(await Qa(),t&&(g(q).some(e=>e.id===t)?(E(Z,t),E(X,``)):E(Z,``)),!g(X)&&!g(Z)){$r(``,Qr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}await qr()}return}if(Bi(e))return;let t=e.channel_id===g(X)||e.payload.direct_conversation_id===g(Z);if(t&&(e.type===`reaction.added`||e.type===`reaction.removed`)){Se.applyEvent(e);return}if(Ri(e,t),e.type===`message.created`&&!t&&(await Vi(e)||mo(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&&ia.has(t))return;let n=$i();e.type===`message.created`&&!n?(tn=Date.now()+1200,ii($())):e.type===`message.created`?await mi():await qr(),e.type===`message.created`&&mo(e,n),e.type===`message.created`&&n&&(await Qi(),Ci({all:!0,seq:Ai(e)}))}let n=e.payload.root_message_id||e.payload.message_id;n&&e.type===`thread.state_updated`&&Ma(n,e)?g(Q)?.id===n?await Aa(n,g(Q)):await ja(n):e.type!==`thread.reply_created`&&g(Q)&&n===g(Q).id&&await Aa(g(Q).id,g(Q))}async function uo(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(Re,g(Re).filter(e=>e.user.id!==t)),E(ze,g(ze).filter(e=>e.bot_user_id!==t)),E(Be,g(Be).filter(e=>e.bot.id!==t)),E(_n,g(_n).filter(e=>e.userID!==t)),g(ft)&&E(ft,{...g(ft),results:g(ft).results.map(e=>({...e,author:i(e.author)}))}),g(Le)?.id===t&&E(Le,null);let a=g(Q)?.id||``;await Promise.all([Qa(),Fr(),Ir(),Lr()]),await qr(),a&&await Aa(a)}async function fo(e){let t=e.payload.bot_user_id||``;t&&(E(Re,g(Re).filter(e=>e.user.id!==t)),E(ze,g(ze).filter(e=>e.bot_user_id!==t)),E(Be,g(Be).filter(e=>e.bot.id!==t)),g(Le)?.id===t&&E(Le,null),await Promise.all([Qa(e.workspace_id),Fr(e.workspace_id),Ir(e.workspace_id),Lr(e.workspace_id)]))}function po(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 mo(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=Ai(e),{channelID:o,dmID:s}=ji(e);if(o){let n=o===g(X)&&!g(Z),r=n?t??$i():!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&&ki(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??$i():!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&&ki(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 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.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(_n,g(_n).filter(e=>e.userID!==n));return}let a=vo(n),o=g(_n).filter(e=>e.userID!==n);o.push({userID:n,user:a,expiresAt:Date.now()+yn}),E(_n,o),yo()}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(Cn,g(Cn).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(Cn).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()+Sn;if(!m)E(Cn,[...g(Cn),{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(Cn,g(Cn).map(t=>t.turnId===i?{...t,lines:e,expiresAt:y}:t))}_o()}function _o(){wn||=window.setInterval(()=>{let e=Date.now(),t=g(Cn).filter(t=>t.expiresAt>e);t.length!==g(Cn).length&&E(Cn,t),t.length===0&&wn&&(window.clearInterval(wn),wn=void 0)},1e3)}function vo(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(Me).find(t=>t.author?.id===e)?.author;if(n)return n;if(g(Q)?.author?.id===e)return g(Q).author;let r=g(Re).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 yo(){bn||=window.setInterval(()=>{let e=Date.now(),t=g(_n).filter(t=>t.expiresAt>e);t.length!==g(_n).length&&E(_n,t),t.length===0&&bn&&(window.clearInterval(bn),bn=void 0)},1e3)}function bo(){g(Y)&&(!g(X)&&!g(Z)||jt({workspaceID:g(Y),channelID:g(X)||void 0,directConversationID:g(Z)||void 0}))}function xo(e){!e||e.deleted_at||(Ga(),E(qe,null),E(Xe,``),E(Q,null),E(Le,e),(g(o)===`owner`||g(o)===`moderator`)&&!g(Re).some(t=>t.user.id===e.id)&&Fr())}function So(e){if(e.key===`Escape`&&g(dn)&&g(fn)!==`thread`){e.preventDefault(),La();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),ya())}function Co(e){if(e.key===`Escape`&&g(dn)&&g(fn)===`thread`){e.preventDefault(),La();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Na())}function wo(e,t){Fa()||E(We,{url:e,title:t})}function To(e){E(Ze,document.activeElement instanceof HTMLElement?document.activeElement:null),tt=g(Q)?document.querySelector(`.thread-scroll`)?.scrollTop??null:null,E(Xe,g(an)),E(qe,e),s().then(()=>{document.querySelector(`.artifact-viewer__actions > button:last-child`)?.focus()})}function Eo(){let e=g(Ze),t=g(qe)?.id||``;E(qe,null),E(Xe,``),E(Ze,null),s().then(()=>{if(tt!==null){let e=document.querySelector(`.thread-scroll`);e&&(e.scrollTop=tt)}if(tt=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 Do(e,t){for(let e of at)e.inert=!1;if(at.clear(),!(!e||!g(it)||!t))for(let e of g(it).children)!(e instanceof HTMLElement)||e===t||e.inert||(e.inert=!0,at.add(e))}function Oo(e){if(!g(qe)||!g(un)||e.key!==`Tab`||!g(nt))return;let t=Array.from(g(nt).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(nt).focus();return}let n=t[0],r=t[t.length-1];e.shiftKey&&(document.activeElement===n||!g(nt).contains(document.activeElement))?(e.preventDefault(),r.focus()):!e.shiftKey&&(document.activeElement===r||!g(nt).contains(document.activeElement))&&(e.preventDefault(),n.focus())}function ko(e){let t=e.target;t instanceof HTMLImageElement&&t.closest(`.markdown`)&&(e.preventDefault(),wo(Je(t),t.alt||`Image`))}function Ao(e){let t=g(ot)&&!g(ot).endsWith(` -`)?` -`:``;E(ot,`${g(ot)}${t}${e}`)}function jo(e,t=e){Ao(`${e}${e==="```"?` -code -`:`text`}${t}`)}function Mo(e,t){Ao(`![${t}](${e})`),E(yt,!1),E(Tt,``)}function No(){if(g(qe)){Eo();return}let e=g(Q)!==null,t=g(pt),n=$();Ce.cancel(n,`thread`),g(fn)===`thread`&&La(),E(Q,null),E(Le,null),E(gn,`message`),E(Me,[]),t&&Ga(),(e||t)&&g(Y)&&n&&vr(g(Y),n)}function Po(){g(se)?No():E(Mt,`pick a message to open its thread`)}function Fo(e){if(Oo(e),!e.defaultPrevented){if(e.key===`Escape`){if(e.target instanceof Element&&e.target.closest(`[data-handles-escape]`)||g(We))return;if(Fa())Io();else if(g(ln)){e.preventDefault(),Lo();return}else if(g(qe)){e.preventDefault(),No();return}else if(g(pt)){e.preventDefault(),No();return}else if(g(U)){e.preventDefault(),Ga();return}else if(g(dn)){e.preventDefault(),La();return}else{e.preventDefault(),ta();return}}if(g(ln)&&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}}wt(e,{authRequired:g(Pt),isModalOpen:()=>Fa()||g(ln),messageInput:g(pn),replyInput:g(mn),target:Ia})}}function Io(){g(qn)&&g(Kn).has(g(qn).id)||(E(qn,null),E(Jn,``),E(We,null),E(bt,!1),E(St,!1),E(Ct,!1))}function Lo(){E(ln,!1)}function Ro(){if(g(un)){E(ln,!g(ln));return}E(cn,!g(cn))}_(()=>(g(Ee),g(Y)),()=>{E(i,g(Ee).find(e=>e.id===g(Y)))}),_(()=>g(i),()=>{E(o,g(i)?.role||``)}),_(()=>g(o),()=>{E(l,g(o)===`owner`)}),_(()=>(g(Le),g(Re)),()=>{E(p,g(Le)?g(Re).find(e=>e.user.id===g(Le)?.id):void 0)}),_(()=>(g(K),g(X)),()=>{E(y,g(K).find(e=>e.id===g(X)))}),_(()=>(g(X),g(Z)),()=>{Wr(g(X),g(Z))}),_(()=>(g(q),g(Z)),()=>{E(w,g(q).find(e=>e.id===g(Z)))}),_(()=>g(w),()=>{E(T,g(w)?.can_send??!0)}),_(()=>(g(Z),g(X)),()=>{E(an,g(Z)||g(X)||``)}),_(()=>g(an),()=>{Rr(g(an))}),_(()=>(g(X),g(Be),g(w)),()=>{E(O,g(X)?g(Be):g(w)?g(Be).filter(e=>g(w)?.members?.some(t=>t.id===e.bot.id)):[])}),_(()=>(g(Z),g(q),g(X),g(K)),()=>{E(k,g(Z)?g(q).find(e=>e.id===g(Z))||{}:g(X)&&g(K).find(e=>e.id===g(X))||{})}),_(()=>(g(an),g(k)),()=>{E(j,vi(g(an),g(k)))}),_(()=>(g(Mt),g(K),g(q)),()=>{E(P,g(Mt)===`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(P),()=>{$e?.setUnreadCount(g(P))}),_(()=>g(kn),()=>{$e&&g(kn)&&typeof window<`u`&&$e.setActiveRoute(`${window.location.pathname}${window.location.search}${window.location.hash}`)}),_(()=>(g(j),g(k)),()=>{E(F,g(j)>0&&g(k).last_read_seq||0)}),_(()=>(g(j),g(an),g(F),g(Wt)),()=>{E(I,g(j)>0&&Ui(g(an),g(F),g(Wt)))}),_(()=>(g(j),g(an),g(F),g(Wt)),()=>{E(ne,g(j)>0?Wi(g(an),g(F),g(Wt)):``)}),_(()=>(g(J),g(Dt),g(Ot),g(Tn)),()=>{E(ae,mt(g(J),{hideCommentary:g(Dt),hideToolCalls:g(Ot)},g(Tn)))}),_(()=>g(Cn),()=>{E(oe,g(Cn).some(e=>e.lines.some(e=>!e.finalized)))}),_(()=>(g(qe),g(Xe),g(an)),()=>{g(qe)&&g(Xe)&&g(Xe)!==g(an)&&(E(qe,null),E(Xe,``),E(Ze,null))}),_(()=>(g(Q),g(Le),g(qe)),()=>{E(se,g(Q)!==null||g(Le)!==null||g(qe)!==null)}),_(()=>(g(ft),g(pt)),()=>{E(U,g(ft)!==null&&!g(pt))}),_(()=>(g(un),g(qe),g(nt)),()=>{Do(g(un)&&g(qe)!==null,g(nt))}),_(()=>(g(J),g(q),g(G)),()=>{E(le,Ve(g(J),g(q),g(G)?.id||``))}),_(()=>(g(G),g(le),g(Re),g(w)),()=>{E(Ue,zr(g(G),g(le),g(Re),g(w)))}),_(()=>(g(fn),g(dn),g(J)),()=>{g(fn)===`channel`&&g(dn)&&!g(J).some(e=>e.id===g(dn)?.id)&&La()}),_(()=>(g(fn),g(dn),g(J)),()=>{g(fn)===`dm`&&g(dn)&&!g(J).some(e=>e.id===g(dn)?.id)&&La()}),_(()=>(g(fn),g(dn),g(Q),g(Me)),()=>{g(fn)===`thread`&&g(dn)&&g(Q)&&g(dn).id!==g(Q).id&&!g(Me).some(e=>e.id===g(dn)?.id)&&La()}),_(()=>(g(Mt),g(G),m(be()),m(xe()),g(kn)),()=>{g(Mt)===`ready`&&g(G)&&fr(be(),xe())!==g(kn)&&Or(be(),xe())}),_(()=>(g(yt),g(Tt)),()=>{E(pe,g(yt)?rt.filter(e=>{let t=g(Tt).trim().toLowerCase();return!t||e.title.toLowerCase().includes(t)||e.tags.some(e=>e.includes(t))}):[])}),v(),L();var zo=a();r(`1oa2eo8`,e=>{u(e,la())}),h(`keydown`,te,Fo,!0),h(`pointerdown`,te,function(...e){vt?.apply(this,e)},!0);var Bo=M(zo),Vo=e=>{var t=da(),r=M(t),i=e=>{var t=ua();d(()=>R(t,`data-platform`,(m($e),z(()=>$e.platform)))),u(e,t)};N(r,e=>{ye&&$e&&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(Ft)||`Any GitHub account can join.`)},[()=>(m(ue),z(()=>ue(`/api/auth/github/start`)))]),n(`click`,s,Xn),u(e,t)},Ho=e=>{var t=_a(),r=M(t);let a;var s=B(r),h=e=>{{let t=D(()=>g(y)?g(De):null),n=D(()=>(g(w),m(Pe),g(G),g(y),z(()=>g(w)?`@${Pe(g(w),g(G)?.id)}`:g(y)?`#${g(y).name}`:void 0))),r=D(()=>(g(w),g(y),z(()=>g(w)?void 0:g(y)?.external_url))),a=D(()=>(g(i),z(()=>g(i)?.name)));Gi(e,{get channelNotifPreference(){return g(t)},get channelNotifSaving(){return g(ke)},get channelTitle(){return g(n)},get externalURL(){return g(r)},get connected(){return g(It)},get platform(){return m($e),z(()=>$e.platform)},get searchQuery(){return g(dt)},get sidebarCollapsed(){return g(cn)},get mobileNavOpen(){return g(ln)},get mobileNavigation(){return g(un)},get workspaceName(){return g(a)},onOpenWorkspaceSettings:ar,onResetSearch:Ga,onSearch:()=>void Ha(),onSearchQuery:e=>E(dt,e),onToggleSidebar:Ro,onToggleChannelNotifications:()=>void Gr()})}};N(s,e=>{ye&&$e&&e(h)});var _=S(s,2),v=B(_),b=e=>{u(e,f(`×`))},x=e=>{u(e,fa())};N(v,e=>{g(ln)?e(b):e(x,-1)}),H(_);var k=S(_,2),A=e=>{var t=pa();n(`click`,t,Lo),u(e,t)};N(k,e=>{g(ln)&&e(A)});var P=S(k,2);{let e=D(()=>ye?`/app`:`/`);Vn(P,{get workspaces(){return g(Ee)},get homeHref(){return g(e)},get selectedWorkspaceID(){return g(Y)},get workspaceName(){return g(ct)},get showWorkspaceCreate(){return g(sn)},hrefForWorkspace:e=>mr(e),onSelectWorkspace:e=>void Nr(e),onToggleWorkspaceCreate:()=>E(sn,!g(sn)),onWorkspaceName:e=>E(ct,e),onCreateWorkspace:()=>void Mr()})}var ee=S(P,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(()=>!ye),r=D(()=>(g(Wn),z(()=>g(Wn)?.title)));pr(ee,{get workspaceID(){return g(Y)},get workspaceName(){return g(e)},get workspaceIconURL(){return g(t)},get connected(){return g(It)},get sidebarCollapsed(){return g(cn)},get showHeader(){return g(n)},get channels(){return g(K)},get directConversations(){return g(q)},get recentPeople(){return g(le)},get currentUser(){return g(G)},get selectedChannelID(){return g(X)},get selectedDirectID(){return g(Z)},get selectedProfile(){return g(Le)},onToggleCollapse:Ro,hrefForChannel:e=>mr(g(Y),e),hrefForDirect:e=>mr(g(Y),e),onSelectChannel:e=>void Hr(e),onCreateChannel:()=>E(St,!0),onSelectDirect:e=>void to(e),onCreateDirect:()=>E(Ct,!0),onHideDirect:e=>void oo(e),get hiddenDirectTitle(){return g(r)},onUndoHideDirect:()=>void ao(),onOpenProfile:xo,onOpenSettings:ir,onOpenWorkspaceSettings:ar})}var te=S(ee,2),L=B(te),re=e=>{{let t=D(()=>(g(i),z(()=>g(i)?.name))),n=D(()=>(g(G),z(()=>g(G)?.id))),r=D(()=>g(Q)!==null);na(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(dt)},get sidePanelOpen(){return g(se)},get threadOpen(){return g(r)},get channelNotifPreference(){return g(De)},get channelNotifSaving(){return g(ke)},onSearchQuery:e=>E(dt,e),onSearch:()=>void Ha(),onResetSearch:Ga,onToggleThread:Po,onPinnedItems:()=>E(Mt,`no pinned items`),onToggleChannelNotifications:()=>void Gr()})}};N(L,e=>{ye||e(re)});var V=S(L,2);{let e=D(()=>g(Kt)!==`idle`),t=D(()=>(g(Q),z(()=>g(Q)?.id))),n=D(()=>(g(G),z(()=>g(G)?.id))),r=D(()=>(g(w),g(T),z(()=>!!(g(w)&&!g(T))))),i=D(()=>g(l)&&!g(Z));Ye(V,{get messages(){return g(ae)},get selectedDirect(){return g(w)},get selectedChannel(){return g(y)},get restoreState(){return g(rn)},get viewKey(){return g(nn)},get loading(){return g(on)},get unreadCount(){return g(j)},get unreadBoundarySeq(){return g(F)},get unreadBoundaryLoaded(){return g(I)},get unreadSince(){return g(ne)},get hasOlder(){return g(Xt)},get hasNewer(){return g(Zt)},get loadingOlder(){return g(Qt)},get loadingNewer(){return g($t)},get prepending(){return g(e)},get selectedThreadID(){return g(t)},get currentUserID(){return g(n)},get reactionController(){return Se},get reactionsDisabled(){return g(r)},get canDeleteAnyMessage(){return g(i)},get deletingMessageIDs(){return g(Kn)},onListRef:e=>E(Ht,e),onActivateMessageComposer:()=>E(gn,`message`),onInlineImagePointerUp:ko,onOpenProfile:xo,onReply:Pa,onOpenThread:ka,onJumpToQuote:e=>void Ra(e),onOpenImage:wo,onOpenArtifact:To,onLoadOlder:ui,onLoadNewer:e=>di(e===`wheel`),onJumpToUnread:()=>void za(),onHistorySettled:hi,onReachedBottom:Ci,onMarkRead:e=>{Ci({all:!0,seq:e})},onRetry:Ca,onDiscard:wa,onDeleteMessage:Da,get editController(){return Ce},get editScope(){return g(an)},onMessageEdited:Ea})}var ce=S(V,2);En(ce,{get turns(){return g(Cn)}});var ue=S(ce,2);{let e=D(()=>(g(G),z(()=>g(G)?.id)));xn(ue,{get entries(){return g(_n)},get currentUserID(){return g(e)}})}var W=S(ue,2),fe=B(W);On(fe,{get active(){return g(oe)}});var me=S(fe,2),he=e=>{var t=ma();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(He).kind===`error`}),c(a,(g(He),z(()=>g(He).kind===`ephemeral`?`Only visible to you`:`Command failed`))),c(s,(g(He),z(()=>g(He).text)))}),n(`click`,l,()=>E(He,null)),u(e,t)};N(me,e=>{g(He)&&e(he)});var ge=S(me,2);{let e=D(()=>(g(w),g(T),m(Pe),g(G),g(y),z(()=>g(w)&&!g(T)?`No active recipient`:g(w)?`Message ${Pe(g(w),g(G)?.id)}`:g(y)?`Message #${g(y).name}`:`Pick a channel to start`))),t=D(()=>!!g(w)&&!g(T)),n=D(()=>g(dn)&&g(fn)===(g(Z)?`dm`:`channel`)?g(dn):null),r=D(()=>g(X)?g(ze):[]);Ke(ge,{get value(){return g(ot)},get placeholder(){return g(e)},ariaLabel:`Message body`,submitLabel:`Send`,get disabled(){return g(t)},get pendingUpload(){return g(_t)},get replyTarget(){return g(n)},showUpload:!0,showToolbar:!0,get showGifPicker(){return g(yt)},get gifQuery(){return g(Tt)},get filteredGifs(){return g(pe)},get slashCommands(){return g(r)},get botCommands(){return g(O)},get mentionPeople(){return g(Ue)},onValue:e=>{let t=g(ot);E(ot,e),e.trim()&&e!==t?bo():e.trim()||Nt()},onSubmit:()=>void ya(),onKeydown:So,onFocus:()=>E(gn,`message`),onInputRef:e=>E(pn,e),onUploadFile:Za,onRemoveUpload:()=>E(_t,null),onClearReply:La,onApplyMarkdownWrap:jo,onAppendToComposer:Ao,onToggleGif:()=>E(yt,!g(yt)),onGifQuery:e=>E(Tt,e),onPickGif:Mo})}H(W),H(te);var _e=S(te,2),ve=e=>{var t=ha();hn(B(t),{get upload(){return g(qe)},onClose:Eo}),H(t),ie(t,e=>E(nt,e),()=>g(nt)),d(()=>{t.inert=g(ln),R(t,`role`,g(un)?`dialog`:`complementary`),R(t,`aria-modal`,g(un)?`true`:void 0)}),u(e,t)};N(_e,e=>{g(qe)&&e(ve)});var be=S(_e,2),xe=e=>{{let t=D(()=>g(qe)!==null),n=D(()=>g(ln)||g(qe)!==null);Ur(e,{get session(){return g(ft)},get covered(){return g(t)},get inert(){return g(n)},contextFor:Ka,onClose:Ga,onOpenResult:e=>void qa(e),onLoadMore:()=>void Wa()})}},we=e=>{var t=ga();let n;var r=B(t),a=e=>{{let t=D(()=>g(dn)&&g(fn)===`thread`?g(dn):null),n=D(()=>(g(w),g(T),z(()=>!!(g(w)&&!g(T))))),r=D(()=>g(pt)&&g(ft)?()=>void Ja():void 0),i=D(()=>(g(G),z(()=>g(G)?.id))),a=D(()=>(g(w),g(T),z(()=>!!(g(w)&&!g(T))))),o=D(()=>g(l)&&!g(Z));Qe(e,{get root(){return g(Q)},get replies(){return g(Me)},get threadState(){return g(Ie)},get replyBody(){return g(st)},get replyTarget(){return g(t)},get mentionPeople(){return g(Ue)},get replyDisabled(){return g(n)},onClose:No,get onBack(){return g(r)},onReplyBody:e=>E(st,e),onSubmitReply:()=>void Na(),onReplyKeydown:Co,onReplyFocus:()=>E(gn,`thread`),onReplyInputRef:e=>E(mn,e),get currentUserID(){return g(i)},get reactionController(){return Se},get reactionsDisabled(){return g(a)},onSetReplyTarget:Pa,onClearReply:La,get canDeleteAnyMessage(){return g(o)},get deletingMessageIDs(){return g(Kn)},onDeleteMessage:Da,get editController(){return Ce},get editScope(){return g(an)},onMessageEdited:Ea,onActivateThreadComposer:()=>E(gn,`thread`),onInlineImagePointerUp:ko,onJumpToQuote:e=>void Ra(e),onOpenImage:wo,onOpenArtifact:To})}},s=e=>{{let t=D(()=>(g(i),z(()=>g(i)?.name)));Er(e,{get profile(){return g(Le)},get currentUser(){return g(G)},get workspaceName(){return g(t)},get currentUserRole(){return g(o)},get moderation(){return g(p)},onClose:No,onEdit:ir,onMessage:e=>void no(e),onApprove:e=>void Br(e,{role:`member`,clear_timeout:!0,blocked:!1}),onTimeout:e=>void Br(e,{timeout_minutes:60}),onBlock:e=>void Br(e,{blocked:!0}),onUnblock:e=>void Br(e,{blocked:!1,clear_timeout:!0}),onSetStatus:()=>E(Mt,`status messages are coming soon`)})}},c=e=>{Pi(e,{})};N(r,e=>{g(Q)?e(a):g(Le)?e(s,1):e(c,-1)}),H(t),d(()=>{n=C(t,1,`thread`,null,n,{open:g(se),covered:g(qe)!==null}),t.inert=g(ln)||g(qe)!==null,R(t,`aria-hidden`,g(qe)?`true`:void 0),R(t,`aria-label`,g(Le)?`Profile pane`:`Thread pane`)}),u(e,t)};N(be,e=>{g(U)&&g(ft)?e(xe):e(we,-1)}),H(r),ie(r,e=>E(it,e),()=>g(it));var Te=S(r,2),Oe=e=>{{let t=D(()=>$e!=null);Mi(e,{get user(){return g(G)},get workspaces(){return g(Ee)},get initialSection(){return g(xt)},get hideCommentary(){return g(Dt)},get hideToolCalls(){return g(Ot)},get userAlign(){return g(kt)},get otherAlign(){return g(At)},get isDesktop(){return g(t)},onUserUpdated:or,onHideCommentary:tr,onHideToolCalls:nr,onUserAlign:$n,onOtherAlign:er,onBrowserNotificationsChanged:e=>E(Et,e),onClose:Io})}};N(Te,e=>{g(bt)&&g(G)&&e(Oe)});var Ae=S(Te,2),je=e=>{jn(e,{get channelName(){return g(lt)},status:``,onChannelName:e=>E(lt,e),onClose:Io,onCreate:()=>void Vr()})};N(Ae,e=>{g(St)&&e(je)});var J=S(Ae,2),Ne=e=>{{let t=D(()=>(g(G),z(()=>g(G)?.id)));Fn(e,{get people(){return g(le)},get currentUserID(){return g(t)},get memberID(){return g(ut)},onMemberID:e=>E(ut,e),onClose:Io,onStart:e=>void eo(e)})}};N(J,e=>{g(Ct)&&e(Ne)});var Fe=S(J,2),Re=e=>{{let t=D(()=>(g(Kn),g(qn),z(()=>g(Kn).has(g(qn).id))));vn(e,{get message(){return g(qn)},get deleting(){return g(t)},get error(){return g(Jn)},onClose:Io,onConfirm:()=>void Oa()})}};N(Fe,e=>{g(qn)&&e(Re)});var Be=S(Fe,2),Ve=e=>{Ge(e,{get url(){return g(We),z(()=>g(We).url)},get title(){return g(We),z(()=>g(We).title)},onClose:Io})};N(Be,e=>{g(We)&&e(Ve)}),d(()=>{a=C(r,1,`shell`,null,a,{"desktop-shell":ye,"nav-open":g(ln),"sidebar-collapsed":g(cn),"thread-open":g(se)&&!g(U),"search-open":g(U),"artifact-open":g(qe)!==null}),R(r,`data-connected`,g(It)),R(r,`data-app-ready`,g(It)&&g(Mt)===`ready`),R(_,`aria-expanded`,g(ln)),te.inert=g(ln)}),n(`click`,_,()=>E(ln,!g(ln))),u(e,t)};N(Bo,e=>{g(Pt)?e(Vo):e(Ho,-1)}),u(e,zo),A()}U([`click`]);export{ca as n,va as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/DrtpMgQM.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/DrtpMgQM.js new file mode 100644 index 00000000..2c57c15d --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/DrtpMgQM.js @@ -0,0 +1,8 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DGD3aKTU.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 I,nt as te,o as L,ot as ne,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"./CySd1wef.js";import{n as ce}from"./DGQW1sK7.js";import{t as le}from"./HclGiUj8.js";import"./xihTtKlq.js";import"./M3UdkkP6.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 G,t as Ce,u as we}from"./DiELhALK.js";import{a as Te,i as Ee,n as K,t as De}from"./Qo16U5GS.js";import{t as Oe}from"./OQjxVT6U.js";import"./amAOfu1G.js";import{A as ke,C as q,D as Ae,E as je,F as J,I as Me,L as Ne,M as Pe,N as Y,O as X,P as Z,T as Fe,_ as Q,d as Ie,f as Le,g as Re,h as ze,j as Be,k as Ve,l as He,m as Ue,p as We,u as Ge,v as Ke,w as qe,z as Je}from"./C5AMwlHa.js";import{n as Ye,t as Xe}from"./DlGnnCJo.js";import{t as Ze}from"./CEzVcVFQ.js";import{p as Qe,r as $e}from"./DFObNPU2.js";import{t as et}from"./B_KT8vL7.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=180*1e3;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=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(()=>Re(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,te=!1,L=P(null),ne=P(0),z=P(null),re=P(0),V=1e4,ae=64*1024,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 ${q(r.upload.byte_size)}. Preview is limited to ${q(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=Ie(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 ${q(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,``),te=!1,E(L,null),E(ne,0),E(z,null),E(re,0),E(f,`preview`),E(m,``);let t=ze(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(`./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([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.`&&(te=!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(L,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,te)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()}}),I(()=>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(L)?.sheets[g(ne)];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 G=gn(),Ce=j(G),we=B(Ce),Te=B(we),Ee=B(Te,!0);H(Te);var K=S(Te,2),De=B(K,!0);H(K);var Oe=S(K,2),ke=B(Oe,!0);H(Oe),H(we);var Ae=S(we,2),je=B(Ae),J=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(je,e=>{g(ue)&&e(J)});var Me=S(je,2),Ne=S(Me,2);H(Ae),H(Ce);var Pe=S(Ce,2);let Y;var X=B(Pe),Z=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)},Fe=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)},Le=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)},Be=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)},Ve=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(L).hiddenSheets??``} hidden ${g(L).hiddenSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};M(o,e=>{g(L).hiddenSheets>0&&e(s)});var f=S(o,2),p=e=>{var t=$t(),n=B(t);H(t),d(()=>c(n,`${g(L).unsupportedSheets??``} non-worksheet ${g(L).unsupportedSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};M(f,e=>{g(L).unsupportedSheets>0&&e(p)}),H(r);var m=S(r,2),h=B(m),_=B(h),v=B(_);l(S(B(v)),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 y=S(_);l(y,21,()=>g(Se).rows,N,(e,t)=>{var n=nn(),r=B(n),i=B(r,!0);H(r),l(S(r),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(y),H(h);var b=S(h,2),x=e=>{u(e,rn())};M(b,e=>{(g(Se).clipped||g(L).sheets[g(ne)].truncated)&&e(x)}),H(m);var w=S(m,2);l(w,21,()=>g(L).sheets,N,(e,t,r)=>{var i=an();let a;var o=B(i,!0);H(i),d(()=>{R(i,`aria-selected`,g(ne)===r),a=C(i,1,``,null,a,{active:g(ne)===r}),c(o,g(t).name)}),n(`click`,i,()=>E(ne,r,!0)),u(e,i)}),H(w),d(()=>{c(a,`${g(L).sheets.length??``} ${g(L).sheets.length===1?`sheet`:`sheets`}`),R(m,`aria-label`,`${g(L).sheets[g(ne)].name} worksheet`)}),u(e,t)},He=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=>{u(e,un())};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(X,e=>{g(p)===`loading`?e(Z):g(p)===`error`?e(Fe,1):g(s)===`unsupported`?e(Le,2):g(s)===`pdf`&&g(x)?e(Be,3):g(s)===`spreadsheet`&&g(L)?e(Ve,4):g(s)===`presentation`&&g(z)?e(He,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(Pe),d(e=>{c(Ee,g(U)),R(K,`title`,r.upload.filename),c(De,r.upload.filename),c(ke,e),R(Me,`href`,g(ce)),R(Me,`download`,r.upload.filename),R(Me,`aria-label`,`Download ${r.upload.filename}`),Y=C(Pe,1,`artifact-viewer__body`,null,Y,{"is-pdf":g(s)===`pdf`,"is-office":g(s)===`spreadsheet`||g(s)===`presentation`})},[()=>q(r.upload.byte_size)]),n(`click`,Ne,function(...e){r.onClose?.apply(this,e)}),u(e,G),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);He(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),I=S(F,2),te=B(I,!0);H(I),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(),I.disabled=r(),c(te,r()?`Deleting...`:`Delete`)},[()=>Le(t.message.created_at)]),n(`click`,l,o),n(`click`,m,o),n(`click`,F,o),n(`click`,I,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);He(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)},[()=>Y(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)}),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),[()=>Me(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),I=e=>{u(e,Kn())};M(F,e=>{t().external_managed&&e(I)});var te=S(F,2),L=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(te,e=>{g(l)>0&&!(t().id===r.selectedChannelID&&!r.selectedDirectID)&&e(L)}),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(ne({})),N=k(()=>r.channels.filter(e=>!e.archived_at)),F=k(()=>r.channels.filter(e=>!!e.archived_at)),I=k(()=>g(N).filter(e=>!e.sidebar_section?.trim())),L=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`,te,U);let be;var xe=B(ye),Se=B(xe),G=S(Se,2);H(xe);var Ce=S(xe,2),we=B(Ce),Te=e=>{var t=Zn(),n=S(j(t),2);l(n,17,()=>g(I),e=>e.id,(e,t)=>{i(e,()=>g(t),()=>g(I),()=>`unsectioned`,()=>!1,()=>!0)});var a=S(n,2);l(a,19,()=>g(L),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)},Ee=e=>{var t=a();l(j(t),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(we,e=>{r.expanded?e(Te):e(Ee,-1)}),H(Ce);var K=S(Ce,2),De=B(K,!0);H(K),H(ye),d(()=>{be=C(ye,1,`nav-section`,null,be,{collapsed:!r.expanded}),R(Se,`aria-expanded`,r.expanded),R(Ce,`hidden`,!r.expanded&&g(z).length===0),c(De,g(O))}),n(`click`,Se,function(...e){r.onToggle?.apply(this,e)}),n(`click`,G,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(()=>Be(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(()=>Z(g(l))?void 0:g(l)?.avatar_url);He(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=>{u(e,tr())};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),()=>Pe(g(i),t.currentUserID),()=>`Direct message actions for ${Pe(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=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(ne({...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(ne([]));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`,te,A);var I=B(F),L=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=>{u(e,lr())};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(I,e=>{i()&&e(L)});var z=S(I,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(()=>ke(r.directConversations,g(t).id));var a=dr();let o;var s=B(a);He(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=>{u(e,fr())};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);He(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} ${Y(r.currentUser.handle)}`,()=>r.currentUser.handle?Y(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);He(B(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`}),H(x);var C=S(x,2),w=B(C),T=B(w),E=B(T),D=B(E,!0);H(E);var O=S(E,2),A=e=>{var t=gr(),n=B(t,!0);H(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=B(n,!0);H(n),d(e=>c(r,e),[()=>Y(t.profile.handle)]),u(e,n)};M(N,e=>{t.profile.handle&&e(P)}),H(T);var F=S(T,2),I=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(I)}),H(w);var te=S(w,4),L=B(te),ne=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(ne)});var R=S(L,2);H(te);var z=S(te,2),re=B(z),ie=S(B(re),2),V=e=>{var r=vr();n(`click`,r,function(...e){t.onEdit?.apply(this,e)}),u(e,r)};M(ie,e=>{t.currentUser?.id===t.profile.id&&e(V)}),H(re);var ae=S(re,2),oe=S(B(ae),2),U=S(B(oe),2),ce=B(U,!0);H(U),H(oe),H(ae);var le=S(ae,2),ue=S(B(le),2),de=S(B(ue),2),W=B(de,!0);H(de),H(ue),H(le);var fe=S(le,2),pe=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(fe,e=>{t.profile.kind===`bot`&&e(pe)}),H(z);var me=S(z,2),he=S(B(me),2),ge=B(he);H(he),H(me);var _e=S(me,2),ve=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=>{u(e,Sr())};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(_e,e=>{g(o)&&t.moderation&&e(ve)}),H(C),H(y),d((e,n)=>{c(_,t.profile.display_name),se(x,`--hue: ${e??``}deg`),c(D,t.profile.display_name),c(ce,n),c(W,t.profile.id),c(ge,`Member of ${(t.workspaceName||`this workspace`)??``}.`)},[()=>X(t.profile.id),()=>t.profile.handle?Y(t.profile.handle):`No handle set`]),n(`click`,v,function(...e){t.onClose?.apply(this,e)}),n(`click`,R,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{u(e,f(`Searching messages…`))},te=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)},L=e=>{u(e,f(`Search unavailable`))};M(F,e=>{t.session.state===`loading`?e(I):t.session.state===`ready`?e(te,1):t.session.state===`error`&&e(L,2)}),H(P);var ne=S(P,2),z=B(ne),re=e=>{u(e,Ar())},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=>{u(e,Mr())},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(()=>Z(g(r).author)?void 0:g(r).author.avatar_url);He(_,{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=>{u(e,Nr())},E=k(()=>Z(g(r).author)),D=e=>{var t=Pr(),n=B(t,!0);H(t),d(e=>c(n,e),[()=>Y(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=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),I=B(F),te=e=>{var t=Ir(),n=B(t,!0);H(t),d(()=>c(n,g(i))),u(e,t)};M(I,e=>{g(i)&&e(te)});var L=S(I,2),ne=e=>{u(e,Lr())},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(L,e=>{g(r).parent_message_id?e(ne):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=>{u(e,Hr())};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(ne),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=>{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=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(),I=B(N),te=B(I);He(te,{get id(){return g(o).id},get name(){return g(v)},get src(){return g(f)},size:52,loading:`eager`,fetchPriority:`auto`});var L=S(te,2),ne=B(L),R=B(ne,!0);H(ne);var z=S(ne,2),re=B(z,!0);H(z),H(L),w(2),H(I);var ie=S(I,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 G=S(be,2),Ce=S(B(G),2),we=B(Ce),Te=B(we);Te.value=Te.__value=`left`;var Ee=S(Te);Ee.value=Ee.__value=`right`,H(we);var K;y(we),H(Ce),H(G);var De=S(G,2),Oe=S(B(De),2),ke=B(Oe),q=B(ke);q.value=q.__value=`left`;var Ae=S(q);Ae.value=Ae.__value=`right`,H(ke);var je;y(ke),H(Oe),H(De),ei(S(De,4),{get user(){return g(o)},get isDesktop(){return i()},get onChanged(){return r.onBrowserNotificationsChanged}}),H(ie);var J=S(ie,2),Me=B(J),Ne=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)},Pe=e=>{u(e,ri())};M(Me,e=>{g(p)?e(Ne):e(Pe,-1)});var Y=S(Me,2),X=B(Y,!0);H(Y),H(J),H(N),d(()=>{c(R,g(v)),c(re,g(T)?`@${g(T)}`:`No handle set`),F(ye,r.hideCommentary),F(Se,r.hideToolCalls),K!==(K=r.userAlign)&&(we.value=(we.__value=r.userAlign)??``,oe(we,r.userAlign)),je!==(je=r.otherAlign)&&(ke.value=(ke.__value=r.otherAlign)??``,oe(ke,r.otherAlign)),Y.disabled=g(_),c(X,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`,we,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()}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 I=S(v,2),te=B(I),L=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)},ne=e=>{u(e,si())};M(te,e=>{g(l)?e(L):e(ne,-1)});var R=S(te,2),z=B(R,!0);H(R),H(I),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(`
                    `),$=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(ne([])),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(Te(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 _=$(),v=S(j(_),2),y=e=>{u(e,ui())},x=e=>{var t=di(),n=B(t,!0);H(t),d(()=>c(n,g(a))),u(e,t)},C=e=>{u(e,fi())},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 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(ne(pe())),s=P(ne(G())),f=P(ne(we())),p=P(ne(ve()));t(()=>{r.user.appearance_preferences,E(o,pe(),!0),E(s,G(),!0),E(f,we(),!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=bi(),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),I=B(F),te=B(I),L=B(te,!0);H(te),w(2),H(I),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=vi();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,()=>Ce,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}),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,Ce.length,g(r),e=>h(Ce[e].id))),u(e,i)}),H(me),H(de),H(ue);var Te=S(ue,2),Ee=S(B(Te),2);l(Ee,23,()=>_e,e=>e.id,(e,t,r)=>{var i=vi();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(Ee),H(Te);var K=S(Te,2),De=S(B(K),2);l(De,23,()=>Se,e=>e.id,(e,t,r)=>{var i=vi();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(De),H(K),H(U),H(T),d(e=>{R(D,`data-layout`,g(f)),R(D,`data-density`,g(p)),c(N,g(a)),c(L,g(i)),c(ie,g(a)),c(se,g(i)),c(fe,e)},[()=>Ce.find(e=>e.id===g(s))?.label]),u(e,x),ee()}U([`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,K),s=x(r,`isDesktop`,3,!1),f=P(ne(K)),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(Te(e.route_id||e.id,t))}var A=Ni();h(`keydown`,te,D);var N=B(A),F=B(N),I=S(F,2),L=B(I),z=S(B(L),2);l(z,21,()=>De,e=>e.id,(e,t)=>{var r=Ei(),i=B(r);let a;var o=B(i),s=e=>{var n=Si(),r=j(n);He(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=Ci(),r=S(j(n),2),i=B(r,!0);H(r),d(()=>c(i,g(t).label)),u(e,n)},p=e=>{var n=wi(),r=S(j(n),2),i=B(r,!0);H(r),d(()=>c(i,g(t).label)),u(e,n)},h=e=>{var n=Ti(),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(L),l(S(L,2),17,i,e=>e.id,(e,t)=>{var r=Oi(),i=B(r),o=B(i);H(i);var s=S(i,2);l(s,21,()=>Ee,e=>e.id,(e,r)=>{var i=a(),o=j(i),s=e=>{var i=Di(),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||Oe(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(I);var ie=S(I,2),V=B(ie),ae=e=>{u(e,ki())},oe=e=>{var t=Ai(),n=B(t,!0);H(t),d(()=>c(n,g(v))),u(e,t)},se=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)},U=e=>{xi(e,{get user(){return g(m)}})},le=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)},ue=e=>{_i(e,{get onClose(){return r.onClose}})};M(V,e=>{g(_)===`loading`?e(ae):g(_)===`error`?e(oe,1):g(f)===`profile`?e(se,2):g(f)===`appearance`?e(U,3):g(f)===`notifications`?e(le,4):g(f)===`bots`&&e(ue,5)}),H(ie),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 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(``),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=Ri(),r=S(j(n),2),i=B(r,!0);H(r);var a=S(r,2),o=e=>{var t=Li();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 I=S(D,2),te=e=>{var t=Ui(),s=B(t),c=B(s),l=e=>{u(e,Bi())},f=e=>{u(e,Vi())},p=e=>{u(e,Hi())};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(I,e=>{i()&&e(te)});var L=S(I,2),ne=e=>{u(e,Wi())};M(L,e=>{t.connected||e(ne)}),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),[()=>`@${Pe(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=>{u(e,Ji())},l=e=>{u(e,Yi())},f=e=>{u(e,Xi())};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=>{u(e,$i())};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),I=B(F),te=e=>{var t=ta();d(()=>R(t,`href`,g(s))),u(e,t)};M(I,e=>{g(s)&&e(te)});var L=S(I,2);let ne;var z=S(L,2);H(F),H(l),d(()=>{c(T,t.workspaceName||`no workspace`),A(D,t.searchQuery),R(L,`title`,t.threadOpen?`Close thread`:`Open a message thread`),R(L,`aria-label`,t.threadOpen?`Close thread`:`Open a message thread`),ne=C(L,1,``,null,ne,{active:t.sidePanelOpen})}),h(`submit`,E,e=>{e.preventDefault(),t.onSearch()}),n(`input`,D,e=>t.onSearchQuery(e.currentTarget.value)),n(`click`,L,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:()=>ya}),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(`
                      `),ga=o(``),_a=o(``),va=o(`
                      `,1);function ya(e,t){b(t,!1);let i=V(),o=V(),l=V(),p=V(),y=V(),w=V(),T=V(),O=V(),k=V(),A=V(),N=V(),P=V(),F=V(),ne=V(),ae=V(),oe=V(),se=V(),U=V(),le=V(),pe=V(),he=`clickclack:hide-commentary:v1`,ge=`clickclack:hide-tool-calls:v1`,_e=`clickclack:user-align:v1`,ve=`clickclack:other-align:v1`,ye=Date.now(),be=tt?.integratedTitleBar===!0,xe=x(t,`routeWorkspaceID`,8,``),Se=x(t,`routeTargetID`,8,``),G=V(null),Ce=new Fe(()=>g(G)?.id||``),we=new Ae(Da),Ee=V([]),K=V([]),De=V(null),Oe=new Map,ke=V(!1),q=V([]),J=V([]),Me=V([]),Y=V(``),X=V(``),Z=V(``),Q=V(null),Ie=V(null),Le=V(null),Re=V([]),ze=V([]),Be=V([]),He=V(null),Ue=V([]),We=V(null),qe=V(null),Ye=V(``),Qe=V(null),$e=null,rt=V(null),it=V(null),ot=new Set,st=V(``),ct=V(``),lt=V(``),ut=V(``),dt=V(``),ft=V(``),pt=V(null),mt=V(!1),ht=0,_t=0,vt=V(null),yt=V(!1),xt=V(!1),St=V(`profile`),Ct=V(!1),wt=V(!1),Tt=V(``),Dt=V(!1),Ot=V(!1),kt=V(!1),At=V(`left`),jt=V(`left`),Mt=V(`loading`),Pt=V(!1),It=V(``),Lt=V(!1),Rt=``,zt=``,Bt=``,Vt=null,Ht=Promise.resolve(),Ut=V(null),Wt=new Map,Gt=V(new Map),Kt=new Set,qt=V(`idle`),Jt=`idle`,Yt=!1,Xt=!1,Zt=V(!1),Qt=V(!1),$t=V(!1),en=V(!1),tn=new Map,nn=0,rn=V(``),an=V(void 0),on=V(``),sn=V(!0),cn=V(!1),ln=V(!1),un=V(!1),dn=V(!1),fn=V(null),pn=V(null),mn=V(null),hn=V(null),gn=V(`message`),vn=V([]),yn,Sn=V([]),Tn,En=V(Date.now()),Dn,kn=V(``),jn=0,Mn=0,Pn=0,Fn=0,In=0,Rn=0,zn=0,Bn=0,Vn=0,Hn=0,Wn=0,Gn=V(null),Kn,qn=V(new Set),Jn=V(null),Yn=V(``);re(()=>{Qn(),Dn=window.setInterval(()=>{E(En,Date.now())},3e4),cr(),ir();let e=window.matchMedia(`(max-width: 820px)`),t=()=>{E(un,!1),E(dn,e.matches)};t();let n=tt?.onNavigate(e=>{ce(e,{keepFocus:!0,noScroll:!0})}),r=tt?.onQuickCompose(()=>Xn());return e.addEventListener(`change`,t),()=>{e.removeEventListener(`change`,t),n?.(),r?.()}});function Xn(){s().then(()=>{(g(gn)===`thread`?g(hn):g(mn))?.focus()})}async function Zn(e){if(tt){e.preventDefault(),E(It,`Opening GitHub in your browser…`);try{await tt.signInWithGitHub(),E(It,`Finish signing in in your browser. ClickClack will complete here automatically.`)}catch{E(It,`Could not open your browser. Try again.`)}}}function Qn(){try{let e=window.localStorage.getItem(`clickclack:show-agent-activity:v1`)===`0`;E(Ot,window.localStorage.getItem(he)===`1`||e),E(kt,window.localStorage.getItem(ge)===`1`||e),E(At,window.localStorage.getItem(_e)===`right`?`right`:`left`),E(jt,window.localStorage.getItem(ve)===`right`?`right`:`left`)}catch{E(Ot,!1),E(kt,!1),E(At,`left`),E(jt,`left`)}$n()}function $n(){try{document.documentElement.setAttribute(`data-user-align`,g(At)),document.documentElement.setAttribute(`data-other-align`,g(jt))}catch{}}function er(e){E(At,e),$n();try{window.localStorage.setItem(_e,e)}catch{}}function tr(e){E(jt,e),$n();try{window.localStorage.setItem(ve,e)}catch{}}function nr(e){E(Ot,e);try{window.localStorage.setItem(he,e?`1`:`0`)}catch{}}function rr(e){E(kt,e);try{window.localStorage.setItem(ge,e?`1`:`0`)}catch{}}I(()=>{Vt?.close(),Vt=null,E(Lt,!1),Ft(),yn&&window.clearInterval(yn),Tn&&window.clearInterval(Tn),Dn&&window.clearInterval(Dn),Kn&&clearTimeout(Kn),ko(!1,null)});async function ir(){try{let e=await me();if(E(G,e.user),cr(),await fr(),g(Ee).length===0){E(Mt,`create a workspace`);return}await kr(xe(),Se()),E(Mt,`ready`)}catch(e){if(e instanceof fe&&(e.status===401||e.status===403)){E(Pt,!0),E(Mt,`auth`);return}E(Mt,e instanceof Error?e.message:`Could not load ClickClack`)}}function ar(){g(G)&&(E(St,`profile`),E(xt,!0))}function or(){let e=g(i)?.route_id||g(Y)||xe();e&&ce(Te(e))}function sr(e){E(G,e),Zi(g(J).map(t=>t.author?.id===e.id?{...t,author:e}:t)),E(Me,g(Me).map(t=>t.author?.id===e.id?{...t,author:e}:t)),g(Q)?.author?.id===e.id&&E(Q,{...g(Q),author:e})}function cr(){if(tt){E(Dt,ur());return}let e=ur();E(Dt,typeof Notification<`u`&&Notification.permission===`granted`&&e),e&&!g(Dt)&&dr(!1)}function lr(){return g(G)?.id?`clickclack:browser-notifications-enabled:v1:${g(G).id}`:``}function ur(){let e=lr();if(!e)return!1;try{return window.localStorage.getItem(e)===`enabled`}catch{return!1}}function dr(e){let t=lr();if(!t)return!1;try{return e?window.localStorage.setItem(t,`enabled`):window.localStorage.removeItem(t),!0}catch{return!1}}async function fr(){let e=++Pn,t=await W(`/api/workspaces`);e===Pn&&E(Ee,t.workspaces)}function pr(e=``,t=``){return`${e||``}/${t||``}`}function mr(e=g(Y),t=``){let n=_r(e);if(!n)return`/app`;let r=`/app/${encodeURIComponent(n)}`,i=vr(t);return i?`${r}/${encodeURIComponent(i)}`:r}function gr(e){let t=g(K).find(t=>t.id===e)?.route_id||g(q).find(t=>t.id===e)?.route_id;return t?mr(g(Y),t):!g(Y)||!e?`/app`:`/app/${encodeURIComponent(g(Y))}/${encodeURIComponent(e)}`}function _r(e=g(Y)){return e?g(Ee).find(t=>t.id===e||t.route_id===e)?.route_id||e:``}function vr(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 yr(e=g(Y),t=``,n=!1){let r=mr(e,t);window.location.pathname!==r&&await ce(r,{replaceState:n,noScroll:!0,keepFocus:!0})}function br(){g(mt)&&qa(),E(Q,null),E(Ie,null),E(Le,null),E(gn,`message`),E(Me,[]),E(un,!1)}function xr(e=g(Y)){return Tr(e)||g(K).find(e=>e.name.toLowerCase()===`guest`)?.id||g(K)[0]?.id||g(q)[0]?.id||``}function Sr(e=g(Y)){return g(Ee).find(t=>t.id===e||t.route_id===e)}function Cr(e=g(Y)){let t=Sr(e),n=t?.route_id||t?.id||e;return n?`clickclack:last-channel:v1:${n}`:``}function wr(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 Tr(e=g(Y)){let t=Cr(e);if(!t)return``;let n;try{let e=window.localStorage.getItem(t);if(!e)return``;n=wr(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 Er(e,t){if(!e||!t)return;let n=g(K).find(e=>e.id===t);if(!n)return;let r=Cr(e);if(r)try{window.localStorage.setItem(r,JSON.stringify({id:n.id,routeID:n.route_id}))}catch{}}function Dr(e){Bt===e&&(Bt=``,lo())}async function kr(e=``,t=``){let n=++jn;Ce.clear();let r=pr(e,t),i=t.trim()?await jr(e,t):null;if(n!==jn)return;let a=i?g(Ee).find(e=>e.id===i.workspace_id):g(Ee).find(t=>t.id===e||t.route_id===e)||g(Ee)[0];if(!a){ei(``,$r({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`),E(kn,r);return}let o=i?pr(i.workspace_route_id,i.target_route_id):pr(a.route_id,``),s=g(Y)!==a.id;if(s&&(Yi(),we.clear(),E(Y,a.id),zn+=1,Bn+=1,E(ze,[]),E(Be,[]),E(X,``),E(Z,``),E(Q,null),E(Ie,null),E(Le,null),E(gn,`message`),E(Me,[]),qa(),si(),E(sn,!0),Bt=a.id),(s||g(K).length===0)&&await Fr(!1,!1),n!==jn||((s||g(q).length===0)&&await eo(),s&&await Promise.all([Ir(),Lr(a.id),Rr(a.id)]),n!==jn))return;if(i){let e=await Ar(i,n);if(n!==jn)return;if(!e){br(),await yr(a.id,xr(),!0);return}}if(i?.canonical_path&&window.location.pathname!==i.canonical_path&&(E(kn,o),await ce(i.canonical_path,{replaceState:!0,noScroll:!0,keepFocus:!0}),n!==jn))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(rn)===e;if(E(X,e),E(Z,``),Er(a.id,e),br(),t){E(kn,o),ii(e),Dr(a.id);return}if(await Jr(),n!==jn)return;E(kn,o),Dr(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(rn)===e;if(E(Z,e),E(X,``),br(),t){E(kn,o),ii(e),Dr(a.id);return}if(await Jr(),n!==jn)return;E(kn,o),Dr(a.id);return}if(i?.target_type===`thread`){let e=await Mr(i);if(n!==jn)return;if(e){E(kn,o),Dr(a.id);return}}let c=xr();if(br(),!c){E(X,``),E(Z,``),await Jr(),E(kn,r),(e!==a.route_id||t)&&await yr(a.id,``,!0),Dr(a.id);return}await yr(a.id,c,!0)}async function Ar(e,t){return e.target_type===`channel`?(g(K).some(t=>t.id===e.target_id)||await Fr(!1,!1,!1),t===jn&&g(K).some(t=>t.id===e.target_id)):e.target_type===`direct`?(g(q).some(t=>t.id===e.target_id)||(await eo(),g(q).some(t=>t.id===e.target_id)||to((await W(`/api/dms/${e.target_id}`)).conversation)),t===jn&&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 Fr(!1,!1,!1),t===jn&&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 eo(),g(q).some(t=>t.id===e.parent_id)||to((await W(`/api/dms/${e.parent_id}`)).conversation)),t===jn&&g(q).some(t=>t.id===e.parent_id)):!0}async function jr(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 Mr(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,``),Er(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(rn)===$();return E(Le,null),E(gn,`thread`),E(un,!1),await Ma(e.target_id),!r&&g(Q)&&await Za(g(Q)),!0}async function Nr(){if(!g(lt).trim())return;let e=await W(`/api/workspaces`,{method:`POST`,body:JSON.stringify({name:g(lt)})});E(lt,``),E(cn,!1),E(Ee,[...g(Ee),e.workspace]),E(un,!1),await kr(e.workspace.route_id||e.workspace.id,``),await yr(e.workspace.id),E(Mt,`ready`)}async function Pr(e){E(un,!1),await yr(e)}async function Fr(e=!0,t=!0,n=!0){let r=g(Y);if(!r)return;let i=++Fn,a=await W(`/api/workspaces/${r}/channels`);i!==Fn||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(mt)&&qa(),E(Q,null),E(Le,null),E(gn,`message`),E(Me,[])),e&&await Jr())}async function Ir(e=g(Y)){let t=++Rn;if(!e||e!==g(Y)||g(o)!==`owner`&&g(o)!==`moderator`){t===Rn&&E(Re,[]);return}try{let n=await W(`/api/workspaces/${e}/moderation/members`);if(t!==Rn||e!==g(Y))return;E(Re,n.members)}catch{t===Rn&&e===g(Y)&&E(Re,[])}}async function Lr(e=g(Y)){let t=++zn;if(!e){E(ze,[]);return}try{let n=await W(`/api/workspaces/${e}/slash-commands`);if(t!==zn||e!==g(Y))return;E(ze,n.slash_commands)}catch{t===zn&&e===g(Y)&&E(ze,[])}}async function Rr(e=g(Y),t=!1){let n=++Bn;if(!e){E(Be,[]);return}try{let t=await ia(e);if(n!==Bn||e!==g(Y))return;E(Be,t)}catch(r){let i=n===Bn&&e===g(Y);if(i&&E(Be,[]),t&&i)throw r}}function zr(e){Wn+=1,E(He,null)}function Br(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 Vr(e,t){if(!g(Y))return;let n=await W(`/api/workspaces/${g(Y)}/moderation/members/${e}`,{method:`PATCH`,body:JSON.stringify(t)});E(Re,[...g(Re).filter(t=>t.user.id!==e),n.member]),await Fr(!1,!1,!1),E(Mt,`ready`)}async function Hr(){if(!g(Y)||!g(ut).trim())return;let e=await W(`/api/workspaces/${g(Y)}/channels`,{method:`POST`,body:JSON.stringify({name:g(ut),kind:`public`})});E(ut,``),E(K,[...g(K),e.channel]),E(Ct,!1),await yr(g(Y),e.channel.id)}async function Ur(e){E(un,!1),Er(g(Y),e);let t=mr(g(Y),e);e===g(X)&&!g(Z)&&window.location.pathname===t||await yr(g(Y),e)}async function Wr(e,t){let n=++Vn;if(E(De,null),!(!e||t))try{let t=await W(`/api/channels/${e}/notification-settings`);if(n!==Vn||e!==g(X)||g(Z))return;zi(e,t.preference),E(De,t.preference)}catch{if(n===Vn&&e===g(X)&&!g(Z)){let t=Ri(e)||`all`;zi(e,t),E(De,t)}}}async function Kr(){let e=g(X);if(!e||g(Z)||g(ke)||!g(De))return;let t=++Vn,n=[`all`,`mentions`,`muted`],r=g(De),i=n[(n.indexOf(r)+1)%n.length];E(De,i),zi(e,i),E(ke,!0);try{await W(`/api/channels/${e}/notification-settings`,{method:`PATCH`,body:JSON.stringify({preference:i})})}catch{Oe.get(e)===i&&zi(e,r),t===Vn&&e===g(X)&&!g(Z)&&E(De,r)}finally{E(ke,!1)}}function qr(e,t){return e===Mn&&$()===t}async function Jr(e=!0){e&&Yi();let t=$(),n=++Mn,r=t!==g(rn);si(),r&&E(sn,!0);try{if(!g(Z)&&!g(X)){ei(``,$r({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}let e=await W(Qr(Xr()));if(!qr(n,t))return;ei(t,$r(e),`replace`)}finally{qr(n,t)&&E(sn,!1)}}async function Yr(){let e=$();if(!e)return;let t=++Mn;si(),E(sn,!0),Wt.set(e,{atBottom:!0});try{let n=await W(Qr(`limit=100`));if(!qr(t,e))return;ei(e,$r(n),`replace`)}finally{qr(t,e)&&E(sn,!1)}}function Xr(){let e=Zr(),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 Zr(){return g(Z)?g(q).find(e=>e.id===g(Z))||{}:g(X)&&g(K).find(e=>e.id===g(X))||{}}function Qr(e){let t=g(Z)?`/api/dms/${g(Z)}/messages`:`/api/channels/${g(X)}/messages`;return e?`${t}?${e}`:t}function $r(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 ei(e,t,n){let r=ui(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};ti(e,c),ii(e,c),Xi(e,r)}function ti(e,t){e&&(g(Gt).delete(e),g(Gt).set(e,t),ni(e),ri(e),E(Gt,new Map(g(Gt))))}function ni(e){let t=g(Gt).size+1;for(;g(Gt).size>8&&t>0;){t--;let n=g(Gt).keys().next().value;if(!n)return;if(n===e){let e=g(Gt).get(n);g(Gt).delete(n),e&&g(Gt).set(n,e);continue}g(Gt).delete(n)}}function ri(e){let t=Wt.size+1;for(;Wt.size>16&&t>0;){t--;let n=Wt.keys().next().value;if(!n)return;if(n===e){let e=Wt.get(n);Wt.delete(n),e&&Wt.set(n,e);continue}Wt.delete(n)}}function ii(e,t=g(Gt).get(e)){e===$()&&(E(Zt,t?.has_older||!1),E(Qt,t?.has_newer||!1))}function ai(e){let t=g(Gt).get(e);!e||!t||(ti(e,{...t,has_newer:!0}),ii(e))}function oi(e,t){e===`older`?(E(qt,t),E($t,t===`loading`)):(Jt=t,E(en,t===`loading`))}function si(){Kt=new Set,E(qt,`idle`),Jt=`idle`,Yt=!1,Xt=!1,E($t,!1),E(en,!1)}function ci(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 li(e){let t=new Set,n=Di(e);if(n>=0){let r=Oi(e,g(J),n);r&&t.add(r.id)}let r=Wt.get(e)?.anchorMessageID;r&&t.add(r);let i=we.session(e);i&&t.add(i.messageID),g(Q)&&$i(g(Q),e)&&t.add(g(Q).id),g(fn)&&$i(g(fn),e)&&t.add(g(fn).id);for(let n of g(J))(n.status===`pending`||n.status===`failed`)&&$i(n,e)&&t.add(n.id);return t}function ui(e,t,n){return Ne(t,n,li(e))}function di(){if(g(qt)!==`idle`){Yt=!0;return}pi()}function fi(e=!1){if(Jt!==`idle`){e&&(Xt=!0);return}mi()}async function pi(){let e=$(),t=g(Gt).get(e),n=`${e}:older`;if(g(qt)!==`idle`){Yt=!0;return}if(!e||!t?.has_older||t.oldest_seq<=0||Kt.has(n))return;Kt.add(n),Yt=!1,oi(`older`,`loading`),Yi();let r=!1;try{let n=await W(Qr(`before_seq=${encodeURIComponent(String(t.oldest_seq))}&limit=50`));if($()!==e)return;ei(e,{messages:ci(n.messages,g(J)),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,oi(`older`,`settling`)}catch(t){$()===e&&E(Mt,t instanceof Error?t.message:`Could not load older messages`)}finally{Kt.delete(n),$()===e&&!r&&oi(`older`,`idle`)}}async function mi(){let e=$(),t=g(Gt).get(e),n=`${e}:newer`;if(Jt!==`idle`){Xt=!0;return}if(!e||Kt.has(n))return;if(!t||t.newest_seq<=0){await Jr();return}Kt.add(n),Xt=!1,oi(`newer`,`loading`);let r=!1;try{let n=await W(Qr(`after_seq=${encodeURIComponent(String(t.newest_seq))}&limit=50`));if($()!==e)return;if(n.messages.length===0){ei(e,{...t,has_newer:n.has_newer},`append`),r=!0,oi(`newer`,`settling`);return}ei(e,{messages:ci(g(J),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,oi(`newer`,`settling`)}catch(t){$()===e&&E(Mt,t instanceof Error?t.message:`Could not load newer messages`)}finally{Kt.delete(n),$()===e&&!r&&oi(`newer`,`idle`)}}function hi(){let e=g(Y),t=$();if(!e||!t)return Promise.resolve();let n=Ht.catch(()=>void 0).then(async()=>{if(g(Y)!==e||$()!==t)return;let n=g(Gt).get(t);if(!n||n.newest_seq<=0){await Jr();return}let r=await W(Qr(`after_seq=${encodeURIComponent(String(n.newest_seq))}&limit=50`));if(g(Y)!==e||$()!==t)return;let i=g(Gt).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 vi(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 yi(e,t){return e&&t.unread_count||0}async function bi(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 xi(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 Si(e){let t=g(Gt).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),_i(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),vi(e),t):0}function Ci(e){let t=g(Gt).get(e);return!t||t.has_newer?0:g(K).find(t=>t.id===e)?_i(e):g(q).find(t=>t.id===e)?vi(e):0}function wi(e={}){if(!e.all&&Date.now()=0&&!Gi(t,e))return}let n=e.all?Math.max(e.seq||0,Si(t)):e.seq||Ci(t);if(!(n<=0)){if(g(q).some(e=>e.id===t)){xi(t,n),e.all&&Ti(t,n);return}g(K).some(e=>e.id===t)&&(bi(t,n),e.all&&Ti(t,n))}}function Ti(e,t){tn.delete(e),tn=new Map(tn),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 Ei(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 Di(e){let t=g(K).find(t=>t.id===e);if(t)return yi(e,t)>0?t.last_read_seq||0:-1;let n=g(q).find(t=>t.id===e);return n&&yi(e,n)>0?n.last_read_seq||0:-1}function Oi(e,t,n){for(let r of t){if(!$i(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 ki(e,t){if(!e)return;let n=Wi(e);if(yi(e,n)<=0){tn.delete(e),tn=new Map(tn);return}let r=n.last_read_seq||0,i=tn.get(e);if(i?.boundarySeq===r&&i.since||!Gi(e,r))return;let a=Oi(e,t,r);a&&(tn=new Map(tn).set(e,{boundarySeq:r,since:Ji(a.created_at)}))}function Ai(e,t,n){if(!e||!n)return;let r=tn.get(e);r?.boundarySeq===t&&r.since||(tn=new Map(tn).set(e,{boundarySeq:t,since:Ji(n)}))}function ji(e){let t=e.payload,n=t.channel_seq??e.seq??t.seq;return typeof n==`number`?n:Number(n)||0}function Mi(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 Ni(e){try{let t=await W(`/api/channels/${e}/notification-settings`);return zi(e,t.preference),e===g(X)&&!g(Z)&&!g(ke)&&E(De,t.preference),t.preference}catch{return Ri(e)||`all`}}function Fi(e){return g(G)?.id&&e?`clickclack:channel-notification:v1:${g(G).id}:${e}`:``}function Li(e){let t=Fi(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 Ri(e){return Oe.get(e)||Li(e)}function zi(e,t){Oe=new Map(Oe).set(e,t);let n=Fi(e);if(n)try{window.localStorage.setItem(n,t)}catch{}}async function Bi(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(Dt)||document.visibilityState===`visible`&&t)return;let i=typeof n.message_id==`string`?n.message_id:`${e.channel_id||``}:${e.seq||Date.now()}`,a=typeof n.author_id==`string`?n.author_id:``,o=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}`);a=e.message.author_id,o=e.message.body}catch{}if(a&&a===g(G)?.id)return;let{channelID:s,dmID:c}=Mi(e);if(s){let t=await Ni(s);if(!t||!g(Dt))return;let n=!!s&&s===g(X)||!!c&&c===g(Z);if(document.visibilityState===`visible`&&n||t===`muted`||t===`mentions`&&!e.mentioned_user_ids?.includes(g(G)?.id||``))return}if(!g(Dt)||document.visibilityState===`visible`&&(s&&s===g(X)||c&&c===g(Z)))return;let l=g(K).find(e=>e.id===s),u=bo(a)?.display_name||`ClickClack`,d=l?`#${Xe(l)}`:`Direct message`;if(tt){tt.notify({body:Vi(o),route:gr(s||c),tag:`clickclack:${i}`,title:`${u} in ${d}`});return}if(!(typeof Notification>`u`||Notification.permission!==`granted`))try{let e=new Notification(`${u} in ${d}`,{body:Vi(o),tag:`clickclack:${i}`,icon:`/favicon.svg`});e.onclick=()=>{window.focus(),e.close(),s?Ur(s):c&&ro(c)}}catch{}}function Vi(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 Hi(e){if(e.type!==`message.created`)return!1;let t=ji(e);if(t<=0)return!1;let{channelID:n,dmID:r}=Mi(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 Ui(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 eo(),g(q).some(e=>e.id===n))}function Wi(e){return g(K).find(t=>t.id===e)||g(q).find(t=>t.id===e)||{}}function Gi(e,t,n=g(Gt)){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 qi(e,t,n=g(Gt)){let r=tn.get(e);if(r?.boundarySeq===t)return r.since;if(!Gi(e,t,n))return``;let i=Oi(e,g(J),t);return i?Ji(i.created_at):``}function Ji(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(t)}function Yi(){if(!g(rn)||!g(Ut))return;let e=g(Ut).captureState();e&&Wt.set(g(rn),e)}function Xi(e,t){let n=e!==g(rn);E(an,Wt.get(e));let r=g(J).filter(t=>(t.status===`pending`||t.status===`failed`)&&$i(t,e)),i=new Map(r.map(e=>[e.id,e])),a=new Map(r.filter(e=>e.nonce).map(e=>[e.nonce,e]));Ce.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&&la.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(J).filter(t=>(t.status===`pending`||t.status===`failed`)&&t.id.startsWith(`tmp_`)&&!s.has(t.id)&&!(t.nonce&&c.has(t.nonce))&&$i(t,e));E(J,l.length>0?[...o,...l]:o),we.reconcile(e,g(J)),E(rn,e),ki(e,g(J)),n&&(E(vn,[]),E(Sn,[]),Ft())}function Zi(e,t=`append`){let n=$(),r=n?g(Gt).get(n):void 0;if(!n||!r){E(J,e);return}let i=e.filter(e=>$i(e,n)),a=ui(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=Qi(a[0])>Qi(i[0]),u=Qi(a[a.length-1])0)&&await Yr(),await ea(),wi({all:!0}),await ea()}catch(e){E(Mt,e instanceof Error?e.message:`Could not jump to latest messages`)}}let la=new Map;function ya(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function ba(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(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 xa(){let e=g(st).trim();if(!e)return;if(g(w)&&!g(T)){E(Mt,`This conversation has no active recipient`);return}if(!g(X)&&!g(Z)){E(Mt,`pick or create a channel`);return}Ft(),E(He,null);let t=++Wn,n=$(),r=g(Z)?`dm`:`channel`,i=g(fn)&&g(pn)===r?g(fn):null;if(g(X)&&!g(Z)&&!g(vt)&&!i){let r=oa(e),i=r?sa(g(ze),r.command):void 0;if(r&&i){E(st,``),await Sa(g(X),r.command,r.text,e,n,t);return}}let a={body:e,quotedMessageID:i?.id,upload:g(vt)||void 0,workspaceID:g(Y),channelID:g(X)||void 0,directConversationID:g(Z)||void 0,viewKey:$()};E(st,``),i&&za(),E(vt,null),await wa(a)}async function Sa(e,t,n,r,i,a){try{let r=await ca(e,t,n);if(a!==Wn||$()!==i)return;r.text&&r.response_type!==`in_channel`&&E(He,{kind:`ephemeral`,text:r.text})}catch(e){if(console.warn(`slash dispatch failed`,e),a!==Wn||$()!==i)return;E(He,{kind:`error`,text:e instanceof fe&&e.message?Ca(e):`${t} failed`}),g(st).trim()||E(st,r)}}function Ca(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 wa(e,t,n){let r=t??ya(),i=`tmp_${r}`,a=n??i,o=!t&&$()===e.viewKey,s=o&&g(Qt);la.set(r,e);let c=ba(r,e,a);t?Zi(g(J).map(e=>e.id===a?c:e)):$()===e.viewKey&&(Zi([...g(J),c]),na());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 W(l,{method:`POST`,body:JSON.stringify(u)})).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);let i={...t,nonce:r,status:`failed`,attachments:e.upload?[...t.attachments||[],e.upload]:t.attachments};Zi(g(J).map(e=>e.id===a?i:e));return}la.delete(r),g(J).findIndex(e=>e.id===a)>=0?Zi(g(J).map(e=>e.id===a?t:e)):g(J).some(e=>e.id===t.id)?Zi(g(J).map(e=>e.id===t.id?t:e)):$i(t,$())&&!g(J).some(e=>e.id===t.id)&&Zi([...g(J),t]),$()===e.viewKey&&o&&(s&&await Yr(),await na(),wi({all:!0,seq:t.channel_seq||0}))}catch(e){console.warn(`send failed`,e),Zi(g(J).map(e=>e.id===a?{...e,status:`failed`}:e))}}function Ta(e){if(!e.nonce)return;let t=la.get(e.nonce);if(!t){Ea(e);return}wa({...t,viewKey:t.viewKey},e.nonce,e.id)}function Ea(e){e.nonce&&la.delete(e.nonce),Zi(g(J).filter(t=>t.id!==e.id))}async function Da(e,t){if(e!==g(on))return;t.surface===`timeline`&&g(Ut)?.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 Oa(e){Zi(g(J).map(t=>t.id===e.id?{...t,...e}:t)),E(Me,g(Me).map(t=>t.id===e.id?{...t,...e}:t)),g(Q)?.id===e.id&&E(Q,{...g(Q),...e})}function ka(e){!e.id||e.deleted_at||g(qn).has(e.id)||(E(Jn,e),E(Yn,``))}async function Aa(){let e=g(Jn);if(!(!e||g(qn).has(e.id))){E(qn,new Set([...g(qn),e.id])),E(Yn,``);try{let t=(await W(`/api/messages/${e.id}`,{method:`DELETE`})).message;we.cancelMessage($(),t.id),Zi(g(J).map(e=>e.id===t.id?{...e,...t}:e)),E(Me,g(Me).map(e=>e.id===t.id?{...e,...t}:e)),g(Q)?.id===t.id&&E(Q,{...g(Q),...t}),g(fn)?.id===t.id&&za(),E(Mt,``),E(Jn,null)}catch(e){E(Yn,e instanceof Error?e.message:`Could not delete message`)}finally{let t=new Set(g(qn));t.delete(e.id),E(qn,t)}}}async function ja(e){qa(),await Ma(e.id,e),g(Y)&&g(Q)?.route_id&&window.location.pathname!==mr(g(Y),g(Q).id)&&await yr(g(Y),g(Q).id)}async function Ma(e,t,n=()=>!0){E(qe,null),E(Ye,``),E(Le,null),t&&(E(Q,t),E(gn,`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 Ce.seedMessages([i,...a]),we.reconcile($(),[i,...a]),E(Q,i),E(gn,`thread`),Zi(g(J).map(e=>e.id===i.id?i:e)),E(Me,a),E(Ie,r.thread_state),!0}async function Na(e){let t=await W(`/api/messages/${e}/thread`),n={...t.root,thread_state:t.thread_state};Ce.seedMessages([n]),Zi(g(J).map(e=>e.id===n.id?n:e))}function Pa(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 Fa(){let e=g(ct).trim();if(!e||!g(Q))return;if(g(w)&&!g(T)){E(Mt,`This direct message has no active recipient`);return}let t=g(fn)&&g(pn)===`thread`?g(fn):null;E(ct,``);let n={body:e,nonce:ya()};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&&za(),g(Me).some(e=>e.id===r.message.id)||E(Me,[...g(Me),r.message]),E(Ie,r.thread_state)}function Ia(e,t){E(fn,e),E(pn,t),E(gn,t===`thread`?`thread`:`message`)}function La(){return g(Jn)!==null||g(We)!==null||g(xt)||g(Ct)||g(wt)}function Ra(){return g(gn)===`thread`&&g(Q)&&g(hn)?g(hn):g(mn)}function za(){E(fn,null),E(pn,null)}async function Ba(e){let t=e.quoted_message_id;if(!t)return;if(g(Ut)?.scrollToMessage(t)??!1){await Ua(t);return}let n=await W(`/api/messages/${t}`);$i(n.message,$())&&await Za(n.message)}async function Va(){nn=Date.now()+1200,!(g(F)&&g(Ut)?.scrollToDivider(!1))&&await Ha()}async function Ha(){let e=$();if(!e)return;nn=Date.now()+1200;let t=Ei(e),n=tn.get(e),r=(n?.boundarySeq===t?n.boundarySeq:t)+1;r<=0||(await Qa(r),await s(),g(Ut)?.scrollToDivider(!1))}async function Ua(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 Wa(){if(!g(Y)||!g(ft).trim()){qa();return}let e=g(ft).trim();g(qe)&&Oo(),(g(Q)||g(Le))&&Fo();let t=++_t,n=g(Z)&&g(w)?{workspaceID:g(Y),channelID:``,directConversationID:g(Z),label:`@${Pe(g(w),g(G)?.id)}`}:g(X)&&g(y)?{workspaceID:g(Y),channelID:g(X),directConversationID:``,label:`#${Xe(g(y))}`}:{workspaceID:g(Y),channelID:``,directConversationID:``,label:``};E(mt,!1),ht=0;let r={query:e,scope:n,results:[],nextCursor:null,state:`loading`,error:``,loadingMore:!1,moreError:``,activeResultID:``};E(pt,r);try{let e=await W(`/api/search?${Ga(r).toString()}`);if(t!==_t)return;E(pt,{...r,results:e.results,nextCursor:e.next_cursor,state:`ready`})}catch(e){if(t!==_t)return;E(pt,{...r,state:`error`,error:e instanceof fe?e.message:`Search is unavailable right now.`})}}function Ga(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 Ka(){let e=g(pt);if(!e||e.state!==`ready`||!e.nextCursor||e.loadingMore)return;let t=_t;E(pt,{...e,loadingMore:!0,moreError:``});try{let n=await W(`/api/search?${Ga(e,e.nextCursor).toString()}`);if(t!==_t||!g(pt))return;let r=new Set(g(pt).results.map(e=>e.id));E(pt,{...g(pt),results:[...g(pt).results,...n.results.filter(e=>!r.has(e.id))],nextCursor:n.next_cursor,loadingMore:!1})}catch(e){if(t!==_t||!g(pt))return;E(pt,{...g(pt),loadingMore:!1,moreError:e instanceof fe?e.message:`Couldn’t load more results.`})}}function qa(){_t+=1,E(ft,``),E(pt,null),E(mt,!1),ht=0}function Ja(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?`@${Pe(t,g(G)?.id)}`:`Direct message`}return``}async function Ya(e){let t=g(pt),n=e.channel_id||e.direct_conversation_id||``;if(!(!t||!g(Y)||!n)&&(E(pt,{...t,activeResultID:e.id}),$()!==n&&(await yr(g(Y),n),await kr(g(Y),n)),$()===n)){if(e.parent_message_id){ht=document.querySelector(`.search-results-scroll`)?.scrollTop??0;let t=_t;E(mt,!0);try{if(!await Ma(e.thread_root_id,void 0,()=>t===_t&&g(mt)&&g(pt)?.activeResultID===e.id))return}catch(e){throw E(mt,!1),await s(),e}g(Q)?.route_id&&await yr(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 Ua(e.id);return}if(e.channel_seq&&e.channel_seq>0){await Qa(e.channel_seq,e.id);return}await Jr()}}async function Xa(){if(!g(pt)||!g(mt))return;let e=$();g(pn)===`thread`&&za(),E(Q,null),E(Le,null),E(gn,`message`),E(Me,[]),E(mt,!1),g(Y)&&e&&await yr(g(Y),e),await s();let t=document.querySelector(`.search-results-scroll`);t&&(t.scrollTop=ht),(g(pt).activeResultID?document.querySelector(`.search-result[data-result-id="${CSS.escape(g(pt).activeResultID)}"]`):null)?.focus({preventScroll:!0})}async function Za(e){let t=e.channel_seq||0;if(t<=0){await Jr();return}await Qa(t,e.id)}async function Qa(e,t=``){let n=$();if(!n)return;t&&Wt.set(n,{atBottom:!1,anchorMessageID:t,anchorPixelOffset:0});let r=n!==g(rn);si(),r&&E(sn,!0);try{let r=await W(Qr(`around_seq=${encodeURIComponent(String(e))}&limit=100`));if($()!==n)return;ei(n,$r(r),`around`),await s(),t&&(g(Ut)?.scrollToMessage(t),await Ua(t))}finally{$()===n&&E(sn,!1)}}async function $a(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(vt,a.upload),t.value=``}async function eo(e=g(Y)){let t=++In;if(!e){E(q,[]);return}let n=await W(`/api/dms?workspace_id=${e}`);t!==In||e!==g(Y)||(E(q,n.conversations),g(Z)&&!g(q).some(e=>e.id===g(Z))&&E(Z,``))}function to(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 no(e){let t=e.trim();t&&(await io(t),E(dt,``),E(wt,!1))}async function ro(e){E(un,!1);let t=mr(g(Y),e);e===g(Z)&&!g(X)&&window.location.pathname===t||await yr(g(Y),e)}async function io(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(un,!1),await yr(g(Y),n.id);return}let r=await W(`/api/dms`,{method:`POST`,body:JSON.stringify({workspace_id:g(Y),member_ids:[t]})});to(r.conversation),E(un,!1),await yr(g(Y),r.conversation.id)}function ao(){Kn&&clearTimeout(Kn),Kn=void 0,E(Gn,null)}function oo(e,t){ao(),E(Gn,{conversation:e,restoreRoute:t,title:Pe(e,g(G)?.id)}),Kn=setTimeout(()=>{E(Gn,null),Kn=void 0},8e3)}async function so(){let e=g(Gn);if(e){ao();try{let t=await W(`/api/dms/${e.conversation.id}/open`,{method:`POST`});to(t.conversation),e.restoreRoute&&await yr(e.conversation.workspace_id,t.conversation.id),E(Mt,`direct message restored`)}catch(e){E(Mt,e instanceof Error?e.message:`Could not restore direct message`)}}}async function co(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&&oo(t,n),n){br();let e=g(K)[0]?.id||``;E(Z,``),E(X,e),e&&Er(g(Y),e),await yr(g(Y),e),await Jr()}}function lo(){if(Hn+=1,Vt?.close(),Vt=null,E(Lt,!1),!g(Y))return;let e=g(Y);Vt=je({workspaceID:e,onEvent:fo,onOpen:async(t,n)=>{await uo(e,t,zt===e,n),t()&&(zt=e,e===g(Y)&&g(Mt)===Rt&&E(Mt,`ready`),Rt=``)},onError:t=>{e===g(Y)&&(Rt=t instanceof Error?t.message:`Could not process realtime event`,E(Mt,Rt))},onStatusChange:e=>{E(Lt,e)}})}async function uo(e,t=()=>!0,n=!0,r=!0){let i=++Hn;if(!e||e!==g(Y)||!t())return;let a=g(Q)?.id||``,o=g(Le)?.kind===`bot`?g(Le).id:``;if(E(vn,[]),E(Sn,[]),!r){await Promise.all([Lr(e),Rr(e,!0)]);return}if(Ce.clear(),await Promise.all([fr(),Fr(!1,!1,!1),eo(e),Ir(e),Lr(e),Rr(e,!0)]),!(i!==Hn||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=xr(e);if(t){let n=g(q).some(e=>e.id===t);E(Z,n?t:``),E(X,n?``:t),n||Er(e,t),await yr(e,t,!0)}}if(!(i!==Hn||e!==g(Y)||!t())&&(await Jr(n),!(i!==Hn||e!==g(Y)||!t())&&(a&&g(Q)?.id===a&&await Ma(a,g(Q)),o&&g(Le)?.id===o))){let e=bo(o);E(Le,e&&!e.deleted_at?e:null)}}}async function fo(e){if(e.type===`typing.started`||e.type===`typing.stopped`){_o(e);return}if(e.type===`agent.progress`){vo(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)&&Rr(e.workspace_id,!0).catch(t=>{e.workspace_id===g(Y)&&(E(Mt,t instanceof Error?t.message:`Could not refresh bot commands`),lo())});return}if(e.type===`bot.deleted`){e.workspace_id===g(Y)&&await po(e);return}if(e.type===`bot.membership_removed`){e.workspace_id===g(Y)&&await mo(e);return}if((e.type===`channel.created`||e.type===`channel.updated`)&&e.workspace_id===g(Y)){await Fr(!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 fr(),await Ir(),await Fr(!1,n,n),n){if(await eo(),t&&(g(q).some(e=>e.id===t)?(E(Z,t),E(X,``)):E(Z,``)),!g(X)&&!g(Z)){ei(``,$r({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}await Jr()}return}if(Hi(e))return;let t=e.channel_id===g(X)||e.payload.direct_conversation_id===g(Z);if(t&&(e.type===`reaction.added`||e.type===`reaction.removed`)){Ce.applyEvent(e);return}if(Bi(e,t),e.type===`message.created`&&!t&&(await Ui(e)||go(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&&la.has(t))return;let n=ta();e.type===`message.created`&&!n?(nn=Date.now()+1200,ai($())):e.type===`message.created`?await hi():await Jr(),e.type===`message.created`&&go(e,n),e.type===`message.created`&&n&&(await ea(),wi({all:!0,seq:ji(e)}))}let n=e.payload.root_message_id||e.payload.message_id;n&&e.type===`thread.state_updated`&&Pa(n,e)?g(Q)?.id===n?await Ma(n,g(Q)):await Na(n):e.type!==`thread.reply_created`&&g(Q)&&n===g(Q).id&&await Ma(g(Q).id,g(Q))}async function po(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(Re,g(Re).filter(e=>e.user.id!==t)),E(ze,g(ze).filter(e=>e.bot_user_id!==t)),E(Be,g(Be).filter(e=>e.bot.id!==t)),E(vn,g(vn).filter(e=>e.userID!==t)),g(pt)&&E(pt,{...g(pt),results:g(pt).results.map(e=>({...e,author:i(e.author)}))}),g(Le)?.id===t&&E(Le,null);let a=g(Q)?.id||``;await Promise.all([eo(),Ir(),Lr(),Rr()]),await Jr(),a&&await Ma(a)}async function mo(e){let t=e.payload.bot_user_id||``;t&&(E(Re,g(Re).filter(e=>e.user.id!==t)),E(ze,g(ze).filter(e=>e.bot_user_id!==t)),E(Be,g(Be).filter(e=>e.bot.id!==t)),g(Le)?.id===t&&E(Le,null),await Promise.all([eo(e.workspace_id),Ir(e.workspace_id),Lr(e.workspace_id),Rr(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 go(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=ji(e),{channelID:o,dmID:s}=Mi(e);if(o){let n=o===g(X)&&!g(Z),r=n?t??ta():!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&&Ai(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??ta():!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&&Ai(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 _o(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(vn,g(vn).filter(e=>e.userID!==n));return}let a=bo(n),o=g(vn).filter(e=>e.userID!==n);o.push({userID:n,user:a,expiresAt:Date.now()+xn}),E(vn,o),xo()}function vo(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(Sn,g(Sn).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(Sn).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(Sn,[...g(Sn),{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(Sn,g(Sn).map(t=>t.turnId===i?{...t,lines:e,expiresAt:y}:t))}yo()}function yo(){Tn||=window.setInterval(()=>{let e=Date.now(),t=g(Sn).filter(t=>t.expiresAt>e);t.length!==g(Sn).length&&E(Sn,t),t.length===0&&Tn&&(window.clearInterval(Tn),Tn=void 0)},1e3)}function bo(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(Me).find(t=>t.author?.id===e)?.author;if(n)return n;if(g(Q)?.author?.id===e)return g(Q).author;let r=g(Re).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 xo(){yn||=window.setInterval(()=>{let e=Date.now(),t=g(vn).filter(t=>t.expiresAt>e);t.length!==g(vn).length&&E(vn,t),t.length===0&&yn&&(window.clearInterval(yn),yn=void 0)},1e3)}function So(){g(Y)&&(!g(X)&&!g(Z)||Nt({workspaceID:g(Y),channelID:g(X)||void 0,directConversationID:g(Z)||void 0}))}function Co(e){!e||e.deleted_at||(qa(),E(qe,null),E(Ye,``),E(Q,null),E(Le,e),(g(o)===`owner`||g(o)===`moderator`)&&!g(Re).some(t=>t.user.id===e.id)&&Ir())}function wo(e){if(e.key===`Escape`&&g(fn)&&g(pn)!==`thread`){e.preventDefault(),za();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),xa())}function To(e){if(e.key===`Escape`&&g(fn)&&g(pn)===`thread`){e.preventDefault(),za();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Fa())}function Eo(e,t){La()||E(We,{url:e,title:t})}function Do(e){E(Qe,document.activeElement instanceof HTMLElement?document.activeElement:null),$e=g(Q)?document.querySelector(`.thread-scroll`)?.scrollTop??null:null,E(Ye,g(on)),E(qe,e),s().then(()=>{document.querySelector(`.artifact-viewer__actions > button:last-child`)?.focus()})}function Oo(){let e=g(Qe),t=g(qe)?.id||``;E(qe,null),E(Ye,``),E(Qe,null),s().then(()=>{if($e!==null){let e=document.querySelector(`.thread-scroll`);e&&(e.scrollTop=$e)}if($e=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 ko(e,t){for(let e of ot)e.inert=!1;if(ot.clear(),!(!e||!g(it)||!t))for(let e of g(it).children)!(e instanceof HTMLElement)||e===t||e.inert||(e.inert=!0,ot.add(e))}function Ao(e){if(!g(qe)||!g(dn)||e.key!==`Tab`||!g(rt))return;let t=Array.from(g(rt).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(rt).focus();return}let n=t[0],r=t[t.length-1];e.shiftKey&&(document.activeElement===n||!g(rt).contains(document.activeElement))?(e.preventDefault(),r.focus()):!e.shiftKey&&(document.activeElement===r||!g(rt).contains(document.activeElement))&&(e.preventDefault(),n.focus())}function jo(e){let t=e.target;t instanceof HTMLImageElement&&t.closest(`.markdown`)&&(e.preventDefault(),Eo(Je(t),t.alt||`Image`))}function Mo(e){let t=g(st)&&!g(st).endsWith(` +`)?` +`:``;E(st,`${g(st)}${t}${e}`)}function No(e,t=e){Mo(`${e}${e==="```"?` +code +`:`text`}${t}`)}function Po(e,t){Mo(`![${t}](${e})`),E(yt,!1),E(Tt,``)}function Fo(){if(g(qe)){Oo();return}let e=g(Q)!==null,t=g(mt),n=$();we.cancel(n,`thread`),g(pn)===`thread`&&za(),E(Q,null),E(Le,null),E(gn,`message`),E(Me,[]),t&&qa(),(e||t)&&g(Y)&&n&&yr(g(Y),n)}function Io(){g(se)?Fo():E(Mt,`pick a message to open its thread`)}function Lo(e){if(Ao(e),!e.defaultPrevented){if(e.key===`Escape`){if(e.target instanceof Element&&e.target.closest(`[data-handles-escape]`)||g(We))return;if(La())Ro();else if(g(un)){e.preventDefault(),zo();return}else if(g(qe)){e.preventDefault(),Fo();return}else if(g(mt)){e.preventDefault(),Fo();return}else if(g(U)){e.preventDefault(),qa();return}else if(g(fn)){e.preventDefault(),za();return}else{e.preventDefault(),aa();return}}if(g(un)&&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(Pt),isModalOpen:()=>La()||g(un),messageInput:g(mn),replyInput:g(hn),target:Ra})}}function Ro(){g(Jn)&&g(qn).has(g(Jn).id)||(E(Jn,null),E(Yn,``),E(We,null),E(xt,!1),E(Ct,!1),E(wt,!1))}function zo(){E(un,!1)}function Bo(){if(g(dn)){E(un,!g(un));return}E(ln,!g(ln))}_(()=>(g(Ee),g(Y)),()=>{E(i,g(Ee).find(e=>e.id===g(Y)))}),_(()=>g(i),()=>{E(o,g(i)?.role||``)}),_(()=>g(o),()=>{E(l,g(o)===`owner`)}),_(()=>(g(Le),g(Re)),()=>{E(p,g(Le)?g(Re).find(e=>e.user.id===g(Le)?.id):void 0)}),_(()=>(g(K),g(X)),()=>{E(y,g(K).find(e=>e.id===g(X)))}),_(()=>(g(X),g(Z)),()=>{Wr(g(X),g(Z))}),_(()=>(g(q),g(Z)),()=>{E(w,g(q).find(e=>e.id===g(Z)))}),_(()=>g(w),()=>{E(T,g(w)?.can_send??!0)}),_(()=>(g(Z),g(X)),()=>{E(on,g(Z)||g(X)||``)}),_(()=>g(on),()=>{zr(g(on))}),_(()=>(g(X),g(Be),g(w)),()=>{E(O,g(X)?g(Be):g(w)?g(Be).filter(e=>g(w)?.members?.some(t=>t.id===e.bot.id)):[])}),_(()=>(g(Z),g(q),g(X),g(K)),()=>{E(k,g(Z)?g(q).find(e=>e.id===g(Z))||{}:g(X)&&g(K).find(e=>e.id===g(X))||{})}),_(()=>(g(on),g(k)),()=>{E(A,yi(g(on),g(k)))}),_(()=>(g(Mt),g(K),g(q)),()=>{E(N,g(Mt)===`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(N),()=>{tt?.setUnreadCount(g(N))}),_(()=>g(kn),()=>{tt&&g(kn)&&typeof window<`u`&&tt.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(on),g(P),g(Gt)),()=>{E(F,g(A)>0&&Gi(g(on),g(P),g(Gt)))}),_(()=>(g(A),g(on),g(P),g(Gt)),()=>{E(ne,g(A)>0?qi(g(on),g(P),g(Gt)):``)}),_(()=>(g(J),g(Ot),g(kt),g(En)),()=>{E(ae,gt(g(J),{hideCommentary:g(Ot),hideToolCalls:g(kt)},g(En)))}),_(()=>g(Sn),()=>{E(oe,g(Sn).some(e=>e.lines.some(e=>!e.finalized)))}),_(()=>(g(qe),g(Ye),g(on)),()=>{g(qe)&&g(Ye)&&g(Ye)!==g(on)&&(E(qe,null),E(Ye,``),E(Qe,null))}),_(()=>(g(Q),g(Le),g(qe)),()=>{E(se,g(Q)!==null||g(Le)!==null||g(qe)!==null)}),_(()=>(g(pt),g(mt)),()=>{E(U,g(pt)!==null&&!g(mt))}),_(()=>(g(dn),g(qe),g(rt)),()=>{ko(g(dn)&&g(qe)!==null,g(rt))}),_(()=>(g(J),g(q),g(G)),()=>{E(le,Ve(g(J),g(q),g(G)?.id||``))}),_(()=>(g(G),g(le),g(Re),g(w)),()=>{E(Ue,Br(g(G),g(le),g(Re),g(w)))}),_(()=>(g(pn),g(fn),g(J)),()=>{g(pn)===`channel`&&g(fn)&&!g(J).some(e=>e.id===g(fn)?.id)&&za()}),_(()=>(g(pn),g(fn),g(J)),()=>{g(pn)===`dm`&&g(fn)&&!g(J).some(e=>e.id===g(fn)?.id)&&za()}),_(()=>(g(pn),g(fn),g(Q),g(Me)),()=>{g(pn)===`thread`&&g(fn)&&g(Q)&&g(fn).id!==g(Q).id&&!g(Me).some(e=>e.id===g(fn)?.id)&&za()}),_(()=>(g(Mt),g(G),m(xe()),m(Se()),g(kn)),()=>{g(Mt)===`ready`&&g(G)&&pr(xe(),Se())!==g(kn)&&kr(xe(),Se())}),_(()=>(g(yt),g(Tt)),()=>{E(pe,g(yt)?at.filter(e=>{let t=g(Tt).trim().toLowerCase();return!t||e.title.toLowerCase().includes(t)||e.tags.some(e=>e.includes(t))}):[])}),v(),L();var Vo=a();r(`1oa2eo8`,e=>{u(e,ua())}),h(`keydown`,te,Lo,!0),h(`pointerdown`,te,function(...e){bt?.apply(this,e)},!0);var Ho=j(Vo),Uo=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=>{be&&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(It)||`Any GitHub account can join.`)},[()=>(m(ue),z(()=>ue(`/api/auth/github/start`)))]),n(`click`,s,Zn),u(e,t)},Wo=e=>{var t=va(),r=j(t);let a;var s=B(r),h=e=>{{let t=D(()=>g(y)?g(De):null),n=D(()=>(g(w),m(Pe),g(G),g(y),m(Xe),z(()=>g(w)?`@${Pe(g(w),g(G)?.id)}`:g(y)?`#${Xe(g(y))}`:void 0))),r=D(()=>(g(w),g(y),z(()=>g(w)?void 0:g(y)?.external_url))),a=D(()=>(g(i),z(()=>g(i)?.name)));Ki(e,{get channelNotifPreference(){return g(t)},get channelNotifSaving(){return g(ke)},get channelTitle(){return g(n)},get externalURL(){return g(r)},get connected(){return g(Lt)},get platform(){return m(tt),z(()=>tt.platform)},get searchQuery(){return g(ft)},get sidebarCollapsed(){return g(ln)},get mobileNavOpen(){return g(un)},get mobileNavigation(){return g(dn)},get workspaceName(){return g(a)},onOpenWorkspaceSettings:or,onResetSearch:qa,onSearch:()=>void Wa(),onSearchQuery:e=>E(ft,e),onToggleSidebar:Bo,onToggleChannelNotifications:()=>void Kr()})}};M(s,e=>{be&&tt&&e(h)});var _=S(s,2),v=B(_),b=e=>{u(e,f(`×`))},x=e=>{u(e,pa())};M(v,e=>{g(un)?e(b):e(x,-1)}),H(_);var k=S(_,2),ee=e=>{var t=ma();n(`click`,t,zo),u(e,t)};M(k,e=>{g(un)&&e(ee)});var N=S(k,2);{let e=D(()=>be?`/app`:`/`);Un(N,{get workspaces(){return g(Ee)},get homeHref(){return g(e)},get selectedWorkspaceID(){return g(Y)},get workspaceName(){return g(lt)},get showWorkspaceCreate(){return g(cn)},hrefForWorkspace:e=>mr(e),onSelectWorkspace:e=>void Pr(e),onToggleWorkspaceCreate:()=>E(cn,!g(cn)),onWorkspaceName:e=>E(lt,e),onCreateWorkspace:()=>void Nr()})}var I=S(N,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(()=>!be),r=D(()=>(g(Gn),z(()=>g(Gn)?.title)));hr(I,{get workspaceID(){return g(Y)},get workspaceName(){return g(e)},get workspaceIconURL(){return g(t)},get connected(){return g(Lt)},get sidebarCollapsed(){return g(ln)},get showHeader(){return g(n)},get channels(){return g(K)},get directConversations(){return g(q)},get recentPeople(){return g(le)},get currentUser(){return g(G)},get selectedChannelID(){return g(X)},get selectedDirectID(){return g(Z)},get selectedProfile(){return g(Le)},onToggleCollapse:Bo,hrefForChannel:e=>mr(g(Y),e),hrefForDirect:e=>mr(g(Y),e),onSelectChannel:e=>void Ur(e),onCreateChannel:()=>E(Ct,!0),onSelectDirect:e=>void ro(e),onCreateDirect:()=>E(wt,!0),onHideDirect:e=>void co(e),get hiddenDirectTitle(){return g(r)},onUndoHideDirect:()=>void so(),onOpenProfile:Co,onOpenSettings:ar,onOpenWorkspaceSettings:or})}var te=S(I,2),L=B(te),re=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(w)},get selectedChannel(){return g(y)},get workspaceName(){return g(t)},get currentUserID(){return g(n)},get searchQuery(){return g(ft)},get sidePanelOpen(){return g(se)},get threadOpen(){return g(r)},get channelNotifPreference(){return g(De)},get channelNotifSaving(){return g(ke)},onSearchQuery:e=>E(ft,e),onSearch:()=>void Wa(),onResetSearch:qa,onToggleThread:Io,onPinnedItems:()=>E(Mt,`no pinned items`),onToggleChannelNotifications:()=>void Kr()})}};M(L,e=>{be||e(re)});var V=S(L,2);{let e=D(()=>g(qt)!==`idle`),t=D(()=>(g(Q),z(()=>g(Q)?.id))),n=D(()=>(g(G),z(()=>g(G)?.id))),r=D(()=>(g(w),g(T),z(()=>!!(g(w)&&!g(T))))),i=D(()=>g(l)&&!g(Z));Ze(V,{get messages(){return g(ae)},get selectedDirect(){return g(w)},get selectedChannel(){return g(y)},get restoreState(){return g(an)},get viewKey(){return g(rn)},get loading(){return g(sn)},get unreadCount(){return g(A)},get unreadBoundarySeq(){return g(P)},get unreadBoundaryLoaded(){return g(F)},get unreadSince(){return g(ne)},get hasOlder(){return g(Zt)},get hasNewer(){return g(Qt)},get loadingOlder(){return g($t)},get loadingNewer(){return g(en)},get prepending(){return g(e)},get selectedThreadID(){return g(t)},get currentUserID(){return g(n)},get reactionController(){return Ce},get reactionsDisabled(){return g(r)},get canDeleteAnyMessage(){return g(i)},get deletingMessageIDs(){return g(qn)},onListRef:e=>E(Ut,e),onActivateMessageComposer:()=>E(gn,`message`),onInlineImagePointerUp:jo,onOpenProfile:Co,onReply:Ia,onOpenThread:ja,onJumpToQuote:e=>void Ba(e),onOpenImage:Eo,onOpenArtifact:Do,onLoadOlder:di,onLoadNewer:e=>fi(e===`wheel`),onJumpToUnread:()=>void Va(),onHistorySettled:gi,onReachedBottom:wi,onMarkRead:e=>{wi({all:!0,seq:e})},onRetry:Ta,onDiscard:Ea,onDeleteMessage:ka,get editController(){return we},get editScope(){return g(on)},onMessageEdited:Oa})}var ce=S(V,2);On(ce,{get turns(){return g(Sn)}});var ue=S(ce,2);{let e=D(()=>(g(G),z(()=>g(G)?.id)));Cn(ue,{get entries(){return g(vn)},get currentUserID(){return g(e)}})}var W=S(ue,2),fe=B(W);An(fe,{get active(){return g(oe)}});var me=S(fe,2),he=e=>{var t=ha();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(He).kind===`error`}),c(a,(g(He),z(()=>g(He).kind===`ephemeral`?`Only visible to you`:`Command failed`))),c(s,(g(He),z(()=>g(He).text)))}),n(`click`,l,()=>E(He,null)),u(e,t)};M(me,e=>{g(He)&&e(he)});var ge=S(me,2);{let e=D(()=>(g(w),g(T),m(Pe),g(G),g(y),m(Xe),z(()=>g(w)&&!g(T)?`No active recipient`:g(w)?`Message ${Pe(g(w),g(G)?.id)}`:g(y)?`Message #${Xe(g(y))}`:`Pick a channel to start`))),t=D(()=>!!g(w)&&!g(T)),n=D(()=>g(fn)&&g(pn)===(g(Z)?`dm`:`channel`)?g(fn):null),r=D(()=>g(X)?g(ze):[]);Ke(ge,{get value(){return g(st)},get placeholder(){return g(e)},ariaLabel:`Message body`,submitLabel:`Send`,get disabled(){return g(t)},get pendingUpload(){return g(vt)},get replyTarget(){return g(n)},showUpload:!0,showToolbar:!0,get showGifPicker(){return g(yt)},get gifQuery(){return g(Tt)},get filteredGifs(){return g(pe)},get slashCommands(){return g(r)},get botCommands(){return g(O)},get mentionPeople(){return g(Ue)},onValue:e=>{let t=g(st);E(st,e),e.trim()&&e!==t?So():e.trim()||Ft()},onSubmit:()=>void xa(),onKeydown:wo,onFocus:()=>E(gn,`message`),onInputRef:e=>E(mn,e),onUploadFile:$a,onRemoveUpload:()=>E(vt,null),onClearReply:za,onApplyMarkdownWrap:No,onAppendToComposer:Mo,onToggleGif:()=>E(yt,!g(yt)),onGifQuery:e=>E(Tt,e),onPickGif:Po})}H(W),H(te);var _e=S(te,2),ve=e=>{var t=ga();_n(B(t),{get upload(){return g(qe)},onClose:Oo}),H(t),ie(t,e=>E(rt,e),()=>g(rt)),d(()=>{t.inert=g(un),R(t,`role`,g(dn)?`dialog`:`complementary`),R(t,`aria-modal`,g(dn)?`true`:void 0)}),u(e,t)};M(_e,e=>{g(qe)&&e(ve)});var ye=S(_e,2),xe=e=>{{let t=D(()=>g(qe)!==null),n=D(()=>g(un)||g(qe)!==null);Gr(e,{get session(){return g(pt)},get covered(){return g(t)},get inert(){return g(n)},contextFor:Ja,onClose:qa,onOpenResult:e=>void Ya(e),onLoadMore:()=>void Ka()})}},Se=e=>{var t=_a();let n;var r=B(t),a=e=>{{let t=D(()=>g(fn)&&g(pn)===`thread`?g(fn):null),n=D(()=>(g(w),g(T),z(()=>!!(g(w)&&!g(T))))),r=D(()=>g(mt)&&g(pt)?()=>void Xa():void 0),i=D(()=>(g(G),z(()=>g(G)?.id))),a=D(()=>(g(w),g(T),z(()=>!!(g(w)&&!g(T))))),o=D(()=>g(l)&&!g(Z));et(e,{get root(){return g(Q)},get replies(){return g(Me)},get threadState(){return g(Ie)},get replyBody(){return g(ct)},get replyTarget(){return g(t)},get mentionPeople(){return g(Ue)},get replyDisabled(){return g(n)},onClose:Fo,get onBack(){return g(r)},onReplyBody:e=>E(ct,e),onSubmitReply:()=>void Fa(),onReplyKeydown:To,onReplyFocus:()=>E(gn,`thread`),onReplyInputRef:e=>E(hn,e),get currentUserID(){return g(i)},get reactionController(){return Ce},get reactionsDisabled(){return g(a)},onSetReplyTarget:Ia,onClearReply:za,get canDeleteAnyMessage(){return g(o)},get deletingMessageIDs(){return g(qn)},onDeleteMessage:ka,get editController(){return we},get editScope(){return g(on)},onMessageEdited:Oa,onActivateThreadComposer:()=>E(gn,`thread`),onInlineImagePointerUp:jo,onJumpToQuote:e=>void Ba(e),onOpenImage:Eo,onOpenArtifact:Do})}},s=e=>{{let t=D(()=>(g(i),z(()=>g(i)?.name)));Or(e,{get profile(){return g(Le)},get currentUser(){return g(G)},get workspaceName(){return g(t)},get currentUserRole(){return g(o)},get moderation(){return g(p)},onClose:Fo,onEdit:ar,onMessage:e=>void io(e),onApprove:e=>void Vr(e,{role:`member`,clear_timeout:!0,blocked:!1}),onTimeout:e=>void Vr(e,{timeout_minutes:60}),onBlock:e=>void Vr(e,{blocked:!0}),onUnblock:e=>void Vr(e,{blocked:!1,clear_timeout:!0}),onSetStatus:()=>E(Mt,`status messages are coming soon`)})}},c=e=>{Ii(e,{})};M(r,e=>{g(Q)?e(a):g(Le)?e(s,1):e(c,-1)}),H(t),d(()=>{n=C(t,1,`thread`,null,n,{open:g(se),covered:g(qe)!==null}),t.inert=g(un)||g(qe)!==null,R(t,`aria-hidden`,g(qe)?`true`:void 0),R(t,`aria-label`,g(Le)?`Profile pane`:`Thread pane`)}),u(e,t)};M(ye,e=>{g(U)&&g(pt)?e(xe):e(Se,-1)}),H(r),ie(r,e=>E(it,e),()=>g(it));var Te=S(r,2),Oe=e=>{{let t=D(()=>tt!=null);Pi(e,{get user(){return g(G)},get workspaces(){return g(Ee)},get initialSection(){return g(St)},get hideCommentary(){return g(Ot)},get hideToolCalls(){return g(kt)},get userAlign(){return g(At)},get otherAlign(){return g(jt)},get isDesktop(){return g(t)},onUserUpdated:sr,onHideCommentary:nr,onHideToolCalls:rr,onUserAlign:er,onOtherAlign:tr,onBrowserNotificationsChanged:e=>E(Dt,e),onClose:Ro})}};M(Te,e=>{g(xt)&&g(G)&&e(Oe)});var Ae=S(Te,2),je=e=>{Nn(e,{get channelName(){return g(ut)},status:``,onChannelName:e=>E(ut,e),onClose:Ro,onCreate:()=>void Hr()})};M(Ae,e=>{g(Ct)&&e(je)});var J=S(Ae,2),Ne=e=>{{let t=D(()=>(g(G),z(()=>g(G)?.id)));Ln(e,{get people(){return g(le)},get currentUserID(){return g(t)},get memberID(){return g(dt)},onMemberID:e=>E(dt,e),onClose:Ro,onStart:e=>void no(e)})}};M(J,e=>{g(wt)&&e(Ne)});var Fe=S(J,2),Re=e=>{{let t=D(()=>(g(qn),g(Jn),z(()=>g(qn).has(g(Jn).id))));bn(e,{get message(){return g(Jn)},get deleting(){return g(t)},get error(){return g(Yn)},onClose:Ro,onConfirm:()=>void Aa()})}};M(Fe,e=>{g(Jn)&&e(Re)});var Be=S(Fe,2),Ve=e=>{Ge(e,{get url(){return g(We),z(()=>g(We).url)},get title(){return g(We),z(()=>g(We).title)},onClose:Ro})};M(Be,e=>{g(We)&&e(Ve)}),d(()=>{a=C(r,1,`shell`,null,a,{"desktop-shell":be,"nav-open":g(un),"sidebar-collapsed":g(ln),"thread-open":g(se)&&!g(U),"search-open":g(U),"artifact-open":g(qe)!==null}),R(r,`data-connected`,g(Lt)),R(r,`data-app-ready`,g(Lt)&&g(Mt)===`ready`),R(_,`aria-expanded`,g(un)),te.inert=g(un)}),n(`click`,_,()=>E(un,!g(un))),u(e,t)};M(Ho,e=>{g(Pt)?e(Uo):e(Wo,-1)}),u(e,Vo),ee()}U([`click`]);export{la as n,ya as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/DtafmpxM.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/DtafmpxM.js deleted file mode 100644 index 3a022af7..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/DtafmpxM.js +++ /dev/null @@ -1,8 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DGD3aKTU.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 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(`
                    • `),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/entry/app.rLUFGSPX.js b/apps/api/internal/webassets/dist/_app/immutable/entry/app.zCoQxOM9.js similarity index 79% rename from apps/api/internal/webassets/dist/_app/immutable/entry/app.rLUFGSPX.js rename to apps/api/internal/webassets/dist/_app/immutable/entry/app.zCoQxOM9.js index 7872360f..31f6bee4 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/entry/app.rLUFGSPX.js +++ b/apps/api/internal/webassets/dist/_app/immutable/entry/app.zCoQxOM9.js @@ -1,2 +1,2 @@ -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 +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.C0rsxTEJ.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.CDRQdhFP.css","../nodes/1.D9ztfcFH.js","../chunks/DwaZ0FH6.js","../nodes/2.0ohoWLGr.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../nodes/3.KwItg-Vh.js","../chunks/HclGiUj8.js","../chunks/amAOfu1G.js","../nodes/4.CGzjFC-f.js","../chunks/DrtpMgQM.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.BNBiSBSW.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.CSW_tWWX.js","../nodes/12.C4NQqdC3.js","../assets/12.hzXFZBW8.css","../nodes/13.Bi7m_8XS.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.C0rsxTEJ.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.KwItg-Vh.js`),__vite__mapDeps([15,1,2,16,5,17]),import.meta.url),()=>T(()=>import(`../nodes/4.CGzjFC-f.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.BNBiSBSW.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.CSW_tWWX.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.C4NQqdC3.js`),__vite__mapDeps([38,1,2,5,8,7,20,21,22,23,24,39]),import.meta.url),()=>T(()=>import(`../nodes/13.Bi7m_8XS.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/nodes/0.DNzuMmb4.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/0.C0rsxTEJ.js similarity index 100% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/0.DNzuMmb4.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/0.C0rsxTEJ.js diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/11.CSW_tWWX.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/11.CSW_tWWX.js new file mode 100644 index 00000000..10ba1aa2 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/11.CSW_tWWX.js @@ -0,0 +1 @@ +import{_t as e,gt as t}from"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/DrtpMgQM.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.C4NQqdC3.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/12.C4NQqdC3.js new file mode 100644 index 00000000..d60d6ac6 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/12.C4NQqdC3.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/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.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=>{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/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.Bi7m_8XS.js similarity index 97% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/13.utPVEaYE.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/13.Bi7m_8XS.js index cb1eb785..207461f8 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/13.utPVEaYE.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/13.Bi7m_8XS.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/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.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=>{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 diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/3.BlUkYxRF.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.KwItg-Vh.js similarity index 90% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/3.BlUkYxRF.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/3.KwItg-Vh.js index 967b038b..972ff7bd 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/3.BlUkYxRF.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.KwItg-Vh.js @@ -1,2 +1,2 @@ -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 +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/DrtpMgQM.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/DrtpMgQM.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/4.CV83zLxh.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.CGzjFC-f.js similarity index 63% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/4.CV83zLxh.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/4.CGzjFC-f.js index 85ac1b3c..94b9967d 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/4.CV83zLxh.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.CGzjFC-f.js @@ -1 +1 @@ -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 +import"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import"../chunks/amAOfu1G.js";import{t as e}from"../chunks/DrtpMgQM.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.DxP4pTu5.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.DxP4pTu5.js deleted file mode 100644 index ca6b45b4..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/4.DxP4pTu5.js +++ /dev/null @@ -1 +0,0 @@ -import"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import"../chunks/amAOfu1G.js";import{t as e}from"../chunks/DcXiw1Ro.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.BNBiSBSW.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/5.BNBiSBSW.js new file mode 100644 index 00000000..90c6db0b --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/5.BNBiSBSW.js @@ -0,0 +1 @@ +import{_t as e,gt as t}from"../chunks/CySd1wef.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/DrtpMgQM.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/index.html b/apps/api/internal/webassets/dist/index.html new file mode 100644 index 00000000..21214d30 --- /dev/null +++ b/apps/api/internal/webassets/dist/index.html @@ -0,0 +1,139 @@ + + + + + + + + ClickClack + + + + + + + + + + + + + + + + + + + + +
                            + +
                            + + diff --git a/apps/web/src/ChatApp.svelte b/apps/web/src/ChatApp.svelte index 49492f62..c55855d9 100644 --- a/apps/web/src/ChatApp.svelte +++ b/apps/web/src/ChatApp.svelte @@ -957,15 +957,15 @@ ): User[] { const people = new Map(); for (const member of members) { - if (member.user.id && !member.user.deleted_at) people.set(member.user.id, member.user); + if (member.user.id && member.user.handle?.trim() && !member.user.deleted_at) people.set(member.user.id, member.user); } for (const person of direct?.members || []) { - if (person.id && !person.deleted_at) people.set(person.id, person); + if (person.id && person.handle?.trim() && !person.deleted_at) people.set(person.id, person); } for (const person of recent) { - if (person.id && !person.deleted_at) people.set(person.id, person); + if (person.id && person.handle?.trim() && !person.deleted_at) people.set(person.id, person); } - if (currentUser?.id) people.set(currentUser.id, currentUser); + if (currentUser?.id && currentUser.handle?.trim()) people.set(currentUser.id, currentUser); return [...people.values()].slice(0, 24); } @@ -1022,7 +1022,7 @@ channelNotifPreference = data.preference; } catch { if (serial === channelNotifLoadSerial && channelID === selectedChannelID && !selectedDirectID) { - const fallback = storedChannelNotifPreference(channelID) || "all"; + const fallback = lastKnownChannelNotifPreference(channelID) || "all"; rememberChannelNotifPreference(channelID, fallback); channelNotifPreference = fallback; } @@ -1682,7 +1682,7 @@ return data.preference; } catch { // Preserve a last-known restrictive choice; otherwise retain the historical all default. - return channelNotifPreferences.get(channelID) || storedChannelNotifPreference(channelID) || "all"; + return lastKnownChannelNotifPreference(channelID) || "all"; } } @@ -1701,6 +1701,10 @@ } } + function lastKnownChannelNotifPreference(channelID: string): ChannelNotificationPreference | null { + return channelNotifPreferences.get(channelID) || storedChannelNotifPreference(channelID); + } + function rememberChannelNotifPreference( channelID: string, preference: ChannelNotificationPreference, @@ -1750,6 +1754,13 @@ if (preference === "muted") return; if (preference === "mentions" && !event.mentioned_user_ids?.includes(user?.id || "")) return; } + if (!browserNotificationsEnabled) return; + if (document.visibilityState === "visible") { + const stillAffectsActiveView = + (Boolean(channelID) && channelID === selectedChannelID) || + (Boolean(dmID) && dmID === selectedDirectID); + if (stillAffectsActiveView) return; + } const channel = channels.find((candidate) => candidate.id === channelID); const author = lookupUser(authorID); const authorName = author?.display_name || "ClickClack"; diff --git a/apps/web/src/components/embed/EmbedChannelView.svelte b/apps/web/src/components/embed/EmbedChannelView.svelte index 254b0524..d13228ba 100644 --- a/apps/web/src/components/embed/EmbedChannelView.svelte +++ b/apps/web/src/components/embed/EmbedChannelView.svelte @@ -67,11 +67,11 @@ const mentionPeople = $derived.by(() => { const people = new Map(); for (const message of messages) { - if (message.author?.id && !message.author.deleted_at) { + if (message.author?.id && message.author.handle?.trim() && !message.author.deleted_at) { people.set(message.author.id, message.author); } } - if (user?.id) people.set(user.id, user); + if (user?.id && user.handle?.trim()) people.set(user.id, user); return [...people.values()].slice(0, 24); }); diff --git a/apps/web/src/components/embed/EmbedThreadView.svelte b/apps/web/src/components/embed/EmbedThreadView.svelte index d7d86038..07ea66f1 100644 --- a/apps/web/src/components/embed/EmbedThreadView.svelte +++ b/apps/web/src/components/embed/EmbedThreadView.svelte @@ -68,14 +68,14 @@ const mentionPeople = $derived.by(() => { const people = new Map(); for (const person of directConversation?.members ?? []) { - if (person.id && !person.deleted_at) people.set(person.id, person); + if (person.id && person.handle?.trim() && !person.deleted_at) people.set(person.id, person); } for (const message of root ? [root, ...replies] : replies) { - if (message.author?.id && !message.author.deleted_at) { + if (message.author?.id && message.author.handle?.trim() && !message.author.deleted_at) { people.set(message.author.id, message.author); } } - if (user?.id) people.set(user.id, user); + if (user?.id && user.handle?.trim()) people.set(user.id, user); return [...people.values()].slice(0, 24); }); From 4608f047910ba22655a0a4bb926c9abb49875d48 Mon Sep 17 00:00:00 2001 From: Jacqueline Henriksen Date: Wed, 29 Jul 2026 13:15:31 -0700 Subject: [PATCH 03/13] test: cover channel notification settings API --- .../httpapi/channel_notifications_test.go | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 apps/api/internal/httpapi/channel_notifications_test.go 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) +} From d6ab40057386707d41d4c87d619ea6e71f81f9fb Mon Sep 17 00:00:00 2001 From: Kushida Date: Sun, 2 Aug 2026 09:18:28 +0300 Subject: [PATCH 04/13] fix: enforce bot topic workspace scope (#136) Closes a cross-workspace authorization gap on bot topic endpoints and adds regression coverage. Co-authored-by: Kushida --- CHANGELOG.md | 1 + apps/api/internal/httpapi/authz_test.go | 9 +++++++++ apps/api/internal/httpapi/server.go | 14 ++++++++++++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09aec871..26c051b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## 0.2.2 - Unreleased +- Fixed bot topic endpoints accepting cross-workspace list and create operations by enforcing the token workspace scope. Thanks @ShiroKSH. - 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/apps/api/internal/httpapi/authz_test.go b/apps/api/internal/httpapi/authz_test.go index 8e3c2c72..ef954e95 100644 --- a/apps/api/internal/httpapi/authz_test.go +++ b/apps/api/internal/httpapi/authz_test.go @@ -214,6 +214,15 @@ 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) diff --git a/apps/api/internal/httpapi/server.go b/apps/api/internal/httpapi/server.go index bfa4805d..326f3efa 100644 --- a/apps/api/internal/httpapi/server.go +++ b/apps/api/internal/httpapi/server.go @@ -901,7 +901,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 +920,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 +933,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) } From b8293987baa5fe6d030c9f7d8a074ddefe511ead Mon Sep 17 00:00:00 2001 From: Jacqueline Henriksen Date: Sun, 2 Aug 2026 00:06:47 -0700 Subject: [PATCH 05/13] fix(web): render right-aligned Markdown correctly (#135) Fixes right-aligned Markdown lists and blockquotes and adds production-browser regression coverage with isolated appearance state. Co-authored-by: Jacqueline Henriksen --- CHANGELOG.md | 1 + apps/api/internal/webassets/dist/200.html | 8 +- .../dist/_app/immutable/assets/0.DMQbOJlk.css | 1 - .../dist/_app/immutable/assets/0._gf-j6gS.css | 1 + .../{app.rLUFGSPX.js => app.ddMYdzGz.js} | 4 +- .../nodes/{0.DNzuMmb4.js => 0.Bdv0azaR.js} | 0 apps/api/internal/webassets/dist/index.html | 8 +- apps/web/src/styles/messages.css | 72 +++++++++ tests/e2e/chat.spec.ts | 137 +++++++++++++++++- tests/e2e/message-reactions.spec.ts | 4 +- 10 files changed, 222 insertions(+), 14 deletions(-) delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/assets/0.DMQbOJlk.css create mode 100644 apps/api/internal/webassets/dist/_app/immutable/assets/0._gf-j6gS.css rename apps/api/internal/webassets/dist/_app/immutable/entry/{app.rLUFGSPX.js => app.ddMYdzGz.js} (96%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{0.DNzuMmb4.js => 0.Bdv0azaR.js} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26c051b3..7adc0920 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## 0.2.2 - Unreleased - 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/apps/api/internal/webassets/dist/200.html b/apps/api/internal/webassets/dist/200.html index d3360759..ec476b8f 100644 --- a/apps/api/internal/webassets/dist/200.html +++ b/apps/api/internal/webassets/dist/200.html @@ -103,15 +103,15 @@ - + - + - +
                            @@ -125,7 +125,7 @@ Promise.all([ import("/_app/immutable/entry/start.BJgyZiDJ.js"), - import("/_app/immutable/entry/app.rLUFGSPX.js") + import("/_app/immutable/entry/app.ddMYdzGz.js") ]).then(([kit, app]) => { kit.start(app, element); }); 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/0._gf-j6gS.css b/apps/api/internal/webassets/dist/_app/immutable/assets/0._gf-j6gS.css new file mode 100644 index 00000000..1fe17e17 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/assets/0._gf-j6gS.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}@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: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/entry/app.rLUFGSPX.js b/apps/api/internal/webassets/dist/_app/immutable/entry/app.ddMYdzGz.js similarity index 96% rename from apps/api/internal/webassets/dist/_app/immutable/entry/app.rLUFGSPX.js rename to apps/api/internal/webassets/dist/_app/immutable/entry/app.ddMYdzGz.js index 7872360f..ef697946 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/entry/app.rLUFGSPX.js +++ b/apps/api/internal/webassets/dist/_app/immutable/entry/app.ddMYdzGz.js @@ -1,2 +1,2 @@ -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 +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.Bdv0azaR.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._gf-j6gS.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.Bdv0azaR.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/nodes/0.DNzuMmb4.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/0.Bdv0azaR.js similarity index 100% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/0.DNzuMmb4.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/0.Bdv0azaR.js diff --git a/apps/api/internal/webassets/dist/index.html b/apps/api/internal/webassets/dist/index.html index d4594e0e..ae60094a 100644 --- a/apps/api/internal/webassets/dist/index.html +++ b/apps/api/internal/webassets/dist/index.html @@ -103,17 +103,17 @@ - + - + - + @@ -128,7 +128,7 @@ Promise.all([ import("./_app/immutable/entry/start.BJgyZiDJ.js"), - import("./_app/immutable/entry/app.rLUFGSPX.js") + import("./_app/immutable/entry/app.ddMYdzGz.js") ]).then(([kit, app]) => { kit.start(app, element); }); diff --git a/apps/web/src/styles/messages.css b/apps/web/src/styles/messages.css index b6e9641c..5a33f359 100644 --- a/apps/web/src/styles/messages.css +++ b/apps/web/src/styles/messages.css @@ -876,6 +876,78 @@ 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 { + padding-left: 0; + padding-right: 12px; + border-left: 0; + border-right: 3px solid var(--accent); +} + :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; diff --git a/tests/e2e/chat.spec.ts b/tests/e2e/chat.spec.ts index 300a1bee..40f1c487 100644 --- a/tests/e2e/chat.spec.ts +++ b/tests/e2e/chat.spec.ts @@ -46,7 +46,11 @@ async function clickclackAsync(args: string[], env: NodeJS.ProcessEnv = {}): Pro return stdout.trim(); } -async function createGeneralChannelRoute(page: Page, label: string): Promise { +async function createGeneralChannelRoute( + page: Page, + label: string, + isolatedUser = false, +): Promise { const suffix = randomUUID().replaceAll("-", "").slice(0, 12); const workspaceResponse = await page.request.post("/api/workspaces", { data: { name: `${label} ${suffix}` }, @@ -55,6 +59,28 @@ async function createGeneralChannelRoute(page: Page, label: string): Promise { await expect.poll(() => messageSide(agentMessage)).toBe("right"); }); +test("keeps Markdown lists and blockquotes inside right-aligned messages", async ({ page }) => { + const route = await createGeneralChannelRoute(page, "Right aligned Markdown", true); + const markdownBody = [ + "Right-aligned Markdown:", + "", + "- Chat ID: `channel`", + " - Nested message ID: `message`", + "", + "- First paragraph stays with its marker.", + "", + " Second paragraph stays readable.", + "", + "> Quoted context stays on the message side.", + "", + "1. Ordered parent", + " 1. Ordered nested", + ].join("\n"); + + await page.goto(route); + await waitForAppReady(page); + await page.evaluate(() => { + localStorage.removeItem("clickclack:message-layout:v1"); + document.documentElement.removeAttribute("data-message-layout"); + }); + await expect(page.locator("html")).not.toHaveAttribute("data-message-layout"); + await expect(page.getByRole("heading", { name: "#general" })).toBeVisible(); + await page.getByLabel("Message body").fill(markdownBody); + await page.getByRole("button", { name: "Send" }).click(); + + await page.getByRole("button", { name: /Account settings for/ }).click(); + const settings = page.getByLabel("Account settings"); + const userAlign = settings.getByLabel("Your message alignment"); + await userAlign.selectOption("right"); + await expect(page.locator("html")).toHaveAttribute("data-user-align", "right"); + + const row = page.locator(".message-row", { + has: page.getByText("Right-aligned Markdown:", { exact: true }), + }); + const group = row.locator( + "xpath=ancestor::*[contains(concat(' ', normalize-space(@class), ' '), ' message-group ')][1]", + ); + await expect(group).toHaveClass(/is-self/); + const markdown = row.locator(":scope > .message-content > .markdown"); + await expect(markdown).toBeVisible(); + await expect(markdown.locator("ul")).toHaveCount(2); + await expect(markdown.locator("ol")).toHaveCount(2); + await expect(markdown.locator("blockquote")).toHaveCount(1); + + const layout = await markdown.evaluate((element) => { + const list = element.querySelector(":scope > ul"); + const nestedList = element.querySelector(":scope > ul > li > ul"); + const looseItem = element.querySelector(":scope > ul > li:nth-child(2)"); + const orderedList = element.querySelector(":scope > ol"); + const nestedOrderedList = element.querySelector(":scope > ol > li > ol"); + const quote = element.querySelector("blockquote"); + if (!list || !nestedList || !looseItem || !orderedList || !nestedOrderedList || !quote) { + throw new Error("Expected nested and loose Markdown lists and blockquote"); + } + const listStyle = getComputedStyle(list); + const nestedListStyle = getComputedStyle(nestedList); + const orderedListStyle = getComputedStyle(orderedList); + const nestedOrderedListStyle = getComputedStyle(nestedOrderedList); + const firstParagraph = looseItem.querySelector(":scope > p:first-child"); + if (!firstParagraph) throw new Error("Expected loose list paragraph"); + const quoteStyle = getComputedStyle(quote); + const firstItem = list.querySelector("li"); + if (!firstItem) throw new Error("Expected Markdown list item"); + const messageRect = element.getBoundingClientRect(); + const listRect = list.getBoundingClientRect(); + const itemRect = firstItem.getBoundingClientRect(); + return { + textAlign: getComputedStyle(element).textAlign, + listPaddingLeft: listStyle.paddingLeft, + listPaddingRight: listStyle.paddingRight, + listStylePosition: listStyle.listStylePosition, + nestedListPaddingRight: nestedListStyle.paddingRight, + nestedListStylePosition: nestedListStyle.listStylePosition, + orderedListPaddingRight: orderedListStyle.paddingRight, + nestedOrderedListPaddingRight: nestedOrderedListStyle.paddingRight, + looseFirstParagraphDisplay: getComputedStyle(firstParagraph).display, + listRightInset: messageRect.right - listRect.right, + itemRightInset: listRect.right - itemRect.right, + quoteBorderLeft: quoteStyle.borderLeftWidth, + quoteBorderRight: quoteStyle.borderRightWidth, + quotePaddingLeft: quoteStyle.paddingLeft, + quotePaddingRight: quoteStyle.paddingRight, + }; + }); + expect(layout).toEqual({ + textAlign: "right", + listPaddingLeft: "0px", + listPaddingRight: "0px", + listStylePosition: "inside", + nestedListPaddingRight: "22px", + nestedListStylePosition: "inside", + orderedListPaddingRight: "0px", + nestedOrderedListPaddingRight: "22px", + looseFirstParagraphDisplay: "inline", + listRightInset: expect.any(Number), + itemRightInset: 0, + quoteBorderLeft: "0px", + quoteBorderRight: "3px", + quotePaddingLeft: "0px", + quotePaddingRight: "12px", + }); + expect(layout.listRightInset).toBeLessThanOrEqual(1); + expect(layout.itemRightInset).toBe(0); +}); + test("browser notifications require explicit profile opt-in", async ({ page }) => { const meResponse = await page.request.get("/api/me"); const me = (await meResponse.json()) as { user: { id: string } }; diff --git a/tests/e2e/message-reactions.spec.ts b/tests/e2e/message-reactions.spec.ts index 0269817d..26c35a95 100644 --- a/tests/e2e/message-reactions.spec.ts +++ b/tests/e2e/message-reactions.spec.ts @@ -555,8 +555,8 @@ test("touch action sheets remain usable in short landscape viewports", async ({ }; }); expect(geometry.top).toBeGreaterThanOrEqual(0); - // 1px tolerance: fractional viewport heights round the sheet's bottom edge. - expect(geometry.bottom).toBeLessThanOrEqual(geometry.viewportHeight + 1); + // 2px tolerance: fractional viewport heights round the sheet's bottom edge. + expect(geometry.bottom).toBeLessThanOrEqual(geometry.viewportHeight + 2); expect(geometry.scrollHeight).toBeGreaterThan(geometry.clientHeight); expect(geometry.overflowY).toBe("auto"); From 3205c07468abde6cd5513e84ef7a04a15aa9e6e1 Mon Sep 17 00:00:00 2001 From: Krasimir Kralev <263465593+KrasimirKralev@users.noreply.github.com> Date: Sun, 2 Aug 2026 10:14:42 +0300 Subject: [PATCH 06/13] test(store): cover appearance-preferences patch normalization (#113) Adds direct characterization coverage for appearance preference normalization, validation, nil preservation, and empty-patch detection. Co-authored-by: Krasimir Kralev --- apps/api/internal/store/appearance_test.go | 141 +++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 apps/api/internal/store/appearance_test.go 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 +} From 5ef70272d82e350b864a6c05afbdf3f74d98af65 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 2 Aug 2026 00:39:11 -0700 Subject: [PATCH 07/13] chore(deps): update dependencies (#139) Refreshes application, build, CI, container, and desktop dependencies; aligns pnpm 11.19.0 across every build path; and regenerates the embedded production bundle on current main. --- .github/workflows/ci.yml | 12 +- .github/workflows/crabbox-hydrate.yml | 4 +- .github/workflows/desktop.yml | 4 +- .github/workflows/fakeco-aws.yml | 4 +- .github/workflows/pages.yml | 2 +- .github/workflows/release.yml | 8 +- CHANGELOG.md | 1 + Dockerfile | 4 +- Dockerfile.cloudflare | 4 +- apps/api/internal/webassets/dist/200.html | 20 +- ...r.CPbhI6B3.mjs => pdf.worker.CLesOks4.mjs} | 2275 ++++++++++------- .../dist/_app/immutable/chunks/-xOSXMZB.js | 3 + .../dist/_app/immutable/chunks/70DTYTnm.js | 1 + .../dist/_app/immutable/chunks/9dGTdiTk.js | 1 + .../dist/_app/immutable/chunks/BLSaiFbc.js | 54 + .../chunks/{Da4vmQqB.js => Bbndfbji.js} | 4 +- .../chunks/{C1AJ2Jv0.js => BfeYhzix.js} | 6 +- .../dist/_app/immutable/chunks/Bp8Mp-Fv.js | 8 + .../dist/_app/immutable/chunks/BuFlayix.js | 1 - .../dist/_app/immutable/chunks/C5AMwlHa.js | 66 - .../dist/_app/immutable/chunks/CEzVcVFQ.js | 1 - .../dist/_app/immutable/chunks/CQx5QjGd.js | 66 + .../dist/_app/immutable/chunks/CaEGKmxL.js | 1 - .../dist/_app/immutable/chunks/CgfADbOh.js | 1 + .../dist/_app/immutable/chunks/CySd1wef.js | 3 - .../dist/_app/immutable/chunks/DGD3aKTU.js | 54 - .../dist/_app/immutable/chunks/DGQW1sK7.js | 1 - .../chunks/{DwaZ0FH6.js => DHjIYvi9.js} | 2 +- .../dist/_app/immutable/chunks/D_KmntYi.js | 1 + .../dist/_app/immutable/chunks/DhjMpuoL.js | 1 + .../dist/_app/immutable/chunks/Dt-HX3Vu.js | 1 + .../dist/_app/immutable/chunks/DtafmpxM.js | 8 - .../chunks/{B_KT8vL7.js => DzgF6O2k.js} | 2 +- .../dist/_app/immutable/chunks/M3UdkkP6.js | 1 - .../dist/_app/immutable/chunks/TGuBgvYP.js | 1 + .../chunks/{DiELhALK.js => UXt3B2YI.js} | 2 +- .../dist/_app/immutable/chunks/YGHvv9X0.js | 1 - .../dist/_app/immutable/chunks/amAOfu1G.js | 1 - .../dist/_app/immutable/entry/app.B4wbC3r8.js | 2 + .../dist/_app/immutable/entry/app.ddMYdzGz.js | 2 - .../_app/immutable/entry/start.BJgyZiDJ.js | 1 - .../_app/immutable/entry/start.CfWZRA5o.js | 1 + .../dist/_app/immutable/nodes/0.Bdv0azaR.js | 1 - .../dist/_app/immutable/nodes/0.DA0bPGL_.js | 1 + .../nodes/{1.D9ztfcFH.js => 1.DkQGCXRB.js} | 2 +- .../nodes/{10.BBRfY8ZD.js => 10.CV597x3Q.js} | 4 +- .../nodes/{11.BPwHOykE.js => 11.kJoaGQaD.js} | 2 +- .../nodes/{12.Cki_evoH.js => 12.KgPeLlw_.js} | 2 +- .../nodes/{13.utPVEaYE.js => 13.C2YhQ6tc.js} | 2 +- .../nodes/{2.0ohoWLGr.js => 2.Ayui9IWo.js} | 2 +- .../dist/_app/immutable/nodes/3.BlUkYxRF.js | 2 - .../dist/_app/immutable/nodes/3.D4Jf3P48.js | 2 + .../dist/_app/immutable/nodes/4.CV83zLxh.js | 1 - .../dist/_app/immutable/nodes/4.CyNrL36j.js | 1 + .../dist/_app/immutable/nodes/5.C04PopFT.js | 1 - .../dist/_app/immutable/nodes/5.Dcaanc3h.js | 1 + .../nodes/{6.B4FM4ibZ.js => 6.D1H8DGKr.js} | 2 +- .../nodes/{7.B9isd4ex.js => 7.DTpk_RMZ.js} | 6 +- .../nodes/{8.B3XUUK_I.js => 8.B26ibrzQ.js} | 24 +- .../nodes/{9.Cv5gLiPb.js => 9.CpLl__D-.js} | 2 +- ...wR42_5.js => highlight.worker-fd4HibZ7.js} | 6 +- .../workers/office.worker-CgZC2A2b.js | 12 + .../workers/office.worker-Dh-Qjtqs.js | 12 - apps/api/internal/webassets/dist/index.html | 24 +- apps/desktop/package.json | 2 +- apps/web/package.json | 16 +- examples/bot-ts/package.json | 2 +- go.mod | 14 +- go.sum | 32 +- package.json | 12 +- pnpm-lock.yaml | 1435 ++++++----- 71 files changed, 2385 insertions(+), 1876 deletions(-) rename apps/api/internal/webassets/dist/_app/immutable/assets/{pdf.worker.CPbhI6B3.mjs => pdf.worker.CLesOks4.mjs} (98%) create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/-xOSXMZB.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/70DTYTnm.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/9dGTdiTk.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/BLSaiFbc.js rename apps/api/internal/webassets/dist/_app/immutable/chunks/{Da4vmQqB.js => Bbndfbji.js} (75%) rename apps/api/internal/webassets/dist/_app/immutable/chunks/{C1AJ2Jv0.js => BfeYhzix.js} (86%) create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/Bp8Mp-Fv.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/BuFlayix.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/C5AMwlHa.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/CEzVcVFQ.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/CQx5QjGd.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/CaEGKmxL.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/CgfADbOh.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/CySd1wef.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/DGD3aKTU.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/DGQW1sK7.js rename apps/api/internal/webassets/dist/_app/immutable/chunks/{DwaZ0FH6.js => DHjIYvi9.js} (80%) create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/D_KmntYi.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/DhjMpuoL.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/Dt-HX3Vu.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/DtafmpxM.js rename apps/api/internal/webassets/dist/_app/immutable/chunks/{B_KT8vL7.js => DzgF6O2k.js} (52%) delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/M3UdkkP6.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/TGuBgvYP.js rename apps/api/internal/webassets/dist/_app/immutable/chunks/{DiELhALK.js => UXt3B2YI.js} (92%) delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/YGHvv9X0.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/amAOfu1G.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/entry/app.B4wbC3r8.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/entry/app.ddMYdzGz.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/entry/start.BJgyZiDJ.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/entry/start.CfWZRA5o.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/0.Bdv0azaR.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/0.DA0bPGL_.js rename apps/api/internal/webassets/dist/_app/immutable/nodes/{1.D9ztfcFH.js => 1.DkQGCXRB.js} (66%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{10.BBRfY8ZD.js => 10.CV597x3Q.js} (90%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{11.BPwHOykE.js => 11.kJoaGQaD.js} (54%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{12.Cki_evoH.js => 12.KgPeLlw_.js} (80%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{13.utPVEaYE.js => 13.C2YhQ6tc.js} (89%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{2.0ohoWLGr.js => 2.Ayui9IWo.js} (84%) delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/3.BlUkYxRF.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/3.D4Jf3P48.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/4.CV83zLxh.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/4.CyNrL36j.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/5.C04PopFT.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/5.Dcaanc3h.js rename apps/api/internal/webassets/dist/_app/immutable/nodes/{6.B4FM4ibZ.js => 6.D1H8DGKr.js} (78%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{7.B9isd4ex.js => 7.DTpk_RMZ.js} (50%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{8.B3XUUK_I.js => 8.B26ibrzQ.js} (77%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{9.Cv5gLiPb.js => 9.CpLl__D-.js} (80%) rename apps/api/internal/webassets/dist/_app/immutable/workers/{highlight.worker-DQwR42_5.js => highlight.worker-fd4HibZ7.js} (57%) create mode 100644 apps/api/internal/webassets/dist/_app/immutable/workers/office.worker-CgZC2A2b.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/workers/office.worker-Dh-Qjtqs.js 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 7adc0920..ddb0f578 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## 0.2.2 - Unreleased +- 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. 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/webassets/dist/200.html b/apps/api/internal/webassets/dist/200.html index ec476b8f..fe399965 100644 --- a/apps/api/internal/webassets/dist/200.html +++ b/apps/api/internal/webassets/dist/200.html @@ -98,17 +98,17 @@ } } 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.ddMYdzGz.js") + import("/_app/immutable/entry/start.CfWZRA5o.js"), + import("/_app/immutable/entry/app.B4wbC3r8.js") ]).then(([kit, app]) => { kit.start(app, element); }); 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/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/Bp8Mp-Fv.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/Bp8Mp-Fv.js new file mode 100644 index 00000000..5b343e32 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/Bp8Mp-Fv.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 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"./-xOSXMZB.js";import{n as ue}from"./9dGTdiTk.js";import{t as de}from"./HclGiUj8.js";import"./xihTtKlq.js";import"./DhjMpuoL.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"./UXt3B2YI.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"./D_KmntYi.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"./CQx5QjGd.js";import{n as Xe,t as Ze}from"./DlGnnCJo.js";import{t as Qe}from"./TGuBgvYP.js";import{p as $e,r as et}from"./DFObNPU2.js";import{t as tt}from"./DzgF6O2k.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=18e4;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=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(()=>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=65536,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(`./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([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(_),y=S(R(v));l(y,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 b=S(_);l(b,21,()=>g(we).rows,N,(e,t)=>{var n=nn(),r=R(n),i=R(r,!0);B(r);var a=S(r);l(a,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(b),B(h);var x=S(h,2),w=e=>{var t=rn();u(e,t)};M(x,e=>{(g(we).clipped||g(re).sheets[g(ie)].truncated)&&e(w)}),B(m);var T=S(m,2);l(T,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(T),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=>{var t=un();u(e,t)};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=>{var t=Fn();u(e,t)};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=>{var t=Kn();u(e,t)};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=>{var t=Xn();u(e,t)};M(d,e=>{r.channels.length===0&&e(p)}),u(e,t)},Oe=e=>{var t=a(),n=j(t);l(n,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=>{var t=tr();u(e,t)};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=>{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=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=>{var t=lr();u(e,t)};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=>{var t=fr();u(e,t)};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),C=R(x);Z(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`}),B(x);var w=S(x,2),T=R(w),E=R(T),D=R(E),O=R(D,!0);B(D);var A=S(D,2),N=e=>{var t=gr(),n=R(t,!0);B(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=R(n,!0);B(n),d(e=>c(r,e),[()=>X(t.profile.handle)]),u(e,n)};M(P,e=>{t.profile.handle&&e(F)}),B(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)}),B(T);var re=S(T,4),ie=R(re),I=e=>{var r=yr();n(`click`,r,()=>t.onMessage(t.profile.id)),u(e,r)};M(ie,e=>{t.currentUser?.id!==t.profile.id&&e(I)});var L=S(ie,2);B(re);var ae=S(re,2),oe=R(ae),z=S(R(oe),2),se=e=>{var r=vr();n(`click`,r,function(...e){t.onEdit?.apply(this,e)}),u(e,r)};M(z,e=>{t.currentUser?.id===t.profile.id&&e(se)}),B(oe);var ce=S(oe,2),V=S(R(ce),2),ue=S(R(V),2),de=R(ue,!0);B(ue),B(V),B(ce);var fe=S(ce,2),pe=S(R(fe),2),H=S(R(pe),2),me=R(H,!0);B(H),B(pe),B(fe);var he=S(fe,2),ge=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(he,e=>{t.profile.kind===`bot`&&e(ge)}),B(ae);var _e=S(ae,2),ve=S(R(_e),2),ye=R(ve);B(ve),B(_e);var be=S(_e,2),xe=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=>{var t=Sr();u(e,t)};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(be,e=>{g(o)&&t.moderation&&e(xe)}),B(w),B(y),d((e,n)=>{c(_,t.profile.display_name),le(x,`--hue: ${e??``}deg`),c(O,t.profile.display_name),c(de,n),c(me,t.profile.id),c(ye,`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`,L,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(`
                              1. `),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)},re=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(re,2)}),B(P);var ie=S(P,2),L=R(ie),ae=e=>{var t=Ar();u(e,t)},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=>{var t=Mr();u(e,t)},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=>{var t=Nr();u(e,t)},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=>{var t=Lr();u(e,t)},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=>{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(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=>{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=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=>{var t=ri();u(e,t)};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=>{var t=si();u(e,t)};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=>{var t=ui();u(e,t)},x=e=>{var t=$(),n=R(t,!0);B(t),d(()=>c(n,g(a))),u(e,t)},C=e=>{var t=di();u(e,t)},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);var oe=S(re,2);l(oe,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 z=S(te,2),se=R(z),ce=e=>{var t=ki();u(e,t)},le=e=>{var t=Ai(),n=R(t,!0);B(t),d(()=>c(n,g(v))),u(e,t)},V=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)},de=e=>{xi(e,{get user(){return g(m)}})},fe=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)},pe=e=>{_i(e,{get onClose(){return r.onClose}})};M(se,e=>{g(_)===`loading`?e(ce):g(_)===`error`?e(le,1):g(f)===`profile`?e(V,2):g(f)===`appearance`?e(de,3):g(f)===`notifications`?e(fe,4):g(f)===`bots`&&e(pe,5)}),B(z),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){var t=Fi();u(e,t)}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=>{var t=Bi();u(e,t)};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=>{var t=Gi();u(e,t)};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=>{var t=na();u(e,t)}),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=>{var t=f(`×`);u(e,t)},x=e=>{var t=aa();u(e,t)};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/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`
                                    • ${this.parser.parse(e.tokens)}
                                    • -`}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`
                                    • ${this.parser.parse(e.tokens)}
                                    • +`}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(`
                                    • `),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/TGuBgvYP.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/TGuBgvYP.js new file mode 100644 index 00000000..2f059642 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/TGuBgvYP.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 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"./-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 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"./CQx5QjGd.js";import{t as _e}from"./DlGnnCJo.js";import{t as ve}from"./CgfADbOh.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=>{var t=De();c(e,t)},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(),r=_(S(n),2);t(`click`,r,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=>{var t=X();c(e,t)};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);var oe=_(T,2);s(oe,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||(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=>{var t=u(`@`);c(e,t)},s=e=>{var t=u(`#`);c(e,t)};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=>{var t=u(`Pick a channel to get started.`);c(e,t)};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)});var s=_(n,2);O(ve(s,{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/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/entry/app.B4wbC3r8.js b/apps/api/internal/webassets/dist/_app/immutable/entry/app.B4wbC3r8.js new file mode 100644 index 00000000..7d20da99 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/entry/app.B4wbC3r8.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.DA0bPGL_.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._gf-j6gS.css","../nodes/1.DkQGCXRB.js","../chunks/DHjIYvi9.js","../nodes/2.Ayui9IWo.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../nodes/3.D4Jf3P48.js","../chunks/HclGiUj8.js","../chunks/D_KmntYi.js","../nodes/4.CyNrL36j.js","../chunks/Bp8Mp-Fv.js","../chunks/CQx5QjGd.js","../assets/QuoteBlock.DPxHYHUM.css","../chunks/DlGnnCJo.js","../chunks/TGuBgvYP.js","../chunks/CgfADbOh.js","../chunks/DFObNPU2.js","../chunks/DzgF6O2k.js","../assets/ThreadPanel.DFXp9CyT.css","../assets/ChatApp.nfECkybw.css","../nodes/5.Dcaanc3h.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.kJoaGQaD.js","../nodes/12.KgPeLlw_.js","../assets/12.hzXFZBW8.css","../nodes/13.C2YhQ6tc.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.DA0bPGL_.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.D4Jf3P48.js`),__vite__mapDeps([15,1,2,16,5,17]),import.meta.url),()=>T(()=>import(`../nodes/4.CyNrL36j.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.Dcaanc3h.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.kJoaGQaD.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.KgPeLlw_.js`),__vite__mapDeps([38,1,2,5,8,7,20,21,22,23,24,39]),import.meta.url),()=>T(()=>import(`../nodes/13.C2YhQ6tc.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.ddMYdzGz.js b/apps/api/internal/webassets/dist/_app/immutable/entry/app.ddMYdzGz.js deleted file mode 100644 index ef697946..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/entry/app.ddMYdzGz.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.Bdv0azaR.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._gf-j6gS.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.Bdv0azaR.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.Bdv0azaR.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/0.Bdv0azaR.js deleted file mode 100644 index fece1860..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/0.Bdv0azaR.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/0.DA0bPGL_.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/0.DA0bPGL_.js new file mode 100644 index 00000000..a3175bb5 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/0.DA0bPGL_.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/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.kJoaGQaD.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.kJoaGQaD.js index 28835b17..f1f5ac3b 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/11.BPwHOykE.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/11.kJoaGQaD.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/Bp8Mp-Fv.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.Cki_evoH.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/12.KgPeLlw_.js similarity index 80% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/12.Cki_evoH.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/12.KgPeLlw_.js index 2bb30bae..5fa2dcbf 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/12.Cki_evoH.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/12.KgPeLlw_.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,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 +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/TGuBgvYP.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=>{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/13.utPVEaYE.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/13.C2YhQ6tc.js similarity index 89% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/13.utPVEaYE.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/13.C2YhQ6tc.js index cb1eb785..c2e4ed93 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/13.utPVEaYE.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/13.C2YhQ6tc.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.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=>{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.D4Jf3P48.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.D4Jf3P48.js new file mode 100644 index 00000000..e024dc3b --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.D4Jf3P48.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/Bp8Mp-Fv.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/TGuBgvYP.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/Bp8Mp-Fv.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.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/4.CyNrL36j.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.CyNrL36j.js new file mode 100644 index 00000000..63ff6513 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.CyNrL36j.js @@ -0,0 +1 @@ +import"../chunks/-xOSXMZB.js";import"../chunks/xihTtKlq.js";import"../chunks/D_KmntYi.js";import{t as e}from"../chunks/Bp8Mp-Fv.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.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/5.Dcaanc3h.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/5.Dcaanc3h.js new file mode 100644 index 00000000..48755866 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/5.Dcaanc3h.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/Bp8Mp-Fv.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(`